[Asterisk-Dev] proposal for channel driver

Alastair Maw al.maw at mxtelecom.com
Fri Jul 2 03:43:37 MST 2004

On 02/07/04 04:01, mark spowage wrote:

> how about some discussion on a "model" channel driver , a model "protocol".
> a. nat friendly as the world is full of nat's these days

IAX2 is about as NAT-friendly as it gets (uses a single UDP port).

The only way to significantly improve NAT traversal is to use a Skype-like 
system where there is a third-party external non-NAT host that helps two 
NATed clients communicate with each other.

> b. easy to code, use the kiss principle

I've written a Java IAX2 stack - it's not all that hard (certainly much 
easier than implementing H.323, probably comparable or slightly simpler 
than SIP). There are some broken things, like the way the CODEC byte is 
specified (why isn't it just the power of two specified in frame.h, rather 
than being the number bit-shifted for the first seven bits, then having a 
flag on the most-significant bit after that, and becoming the power of two 
- originally allowing for only eight CODECs when you have a full byte to 
play with is so obviously braindead :-) ).

> c. provide for the client server model (iax does that)

I don't know what you mean by this in relation to a VoIP protocol... 
everything is just a peer, unless you're a switch.

> d. add on a client to client peer to peer voice streams

IAX2 already does this via transfers. If you want a protocol that has 
signalling separate from voice traffic, use SIP/RTP.

> e. add on aes for security ?

This could be added to IAX2. However, it will add significant latency if 
you wish to be able to cope with dropped packets vaguely elegantly. AES is 
a stream cipher. If you miss a chunk, it will invalidate the rest of the 
decrypt. Of course, you can encrypt each packet individually (not the 
audio stream itself) but that would seriously weaken the encryption. This 
is relative - it'd probably good enough anyway. :)

>  one server could then manage a farm of fxs,fxo,etc boxes

What's an "fxo box"? One can already tie together multiple Asterisk 
servers. If you want to plug in large volumes of fxo/fxs gear you should 
get a channel bank and interface T1/E1 to it.

> f. add on server to server so box on server a can reach box on server b 
> via peer to peer audio if possible.

  - http://www.voip-info.org/tiki-index.php?page=Asterisk+TDMoE

> a php scripted system would allow easy configuration? well some hook for 
> vertical scripting

Scripting for what? Do you mean having a web interface to configure 
Asterisk? (There is work underway on this, please search the list archives 
and contribute if you have the time.)

If you mean writing IVR scripts in PHP, this is already possible:
  - http://apollo.bcwireless.net/~matthewa/phpagi/
  - http://www.voip-info.org/tiki-index.php?page=Asterisk%20AGI%20php

> iax is fixated on routing voice+commands to the asterisk server , not 
> allowing peer to peer voice channels right ?

You can do a transfer to hand off the call to the two clients. Asterisk 
will try to do this by default. This isn't appropriate in many cases, 
though, where you want signalling info to go through your PBX, but audio 
to go peer-to-peer (for call billing or whatever). IAX doesn't allow this 
separation (you have to use something like H.323 or SIP signalling with 
RTP endpoints).



Alastair Maw
Systems Analyst
Tel: +44 (0) 845 666 7778

More information about the asterisk-dev mailing list