[asterisk-dev] extend IAX2 IE proposal

Russell Bryant russell at digium.com
Mon Dec 11 20:28:11 MST 2006


Derek Smithies wrote:
> Well no..
> I am not happy with this. Yes yes, it will work to a size of 4096 bytes or 
> some such size. But what happens if someone wants 20K bytes? Should we 
> not, at this time, think about future requirements? I am thinking of when 
> iax2 is used as an alternative to MSN, and people are doing file transfers 
> over iax2. Or other such large transfers.

If you read Markku's latest proposal, it was changed such that it would support 
up to 255 segments of 253 bytes each, except for the first segment, which would 
have 252 bytes.  That is the one I was responding to.

252 + 254 * 253 = 64514 bytes

It certainly goes large enough, given that the maximum segmented IE length 
approaches the maximum size of a single UDP packet.

> The proposal above is, in my view flawed - it does not go large enough.

See above.

> Worse, there has been no discussion on how it will go on a moderately 
> lossy link. The calculation I put forward a while ago was based on 100 K 
> bytes, and 0.1% loss. Now, on a 1 % lossy link, what happens? audio 
> quality is poor, and they send out a large packet. The packet does not 
> make it through, and all full frames are held up, waiting for this super 
> large packet to go out. Does that mean the link is frozen in an up state, 
> and one cannot send the hangup message?
> 
> Sure, in some countries of the world with ethernet links to each house, 1% 
> is ridiculously high. However, for many others, 1% does happen. 

You are correct that if an IAX2 Full frame gets lost, it will have to be 
retransmitted, and the destination will not be able to process any further Full 
frames until it has been successfully received.  However, that's exactly how it 
is supposed to work.  And, on a lossy link, you can expect some sort of 
performance hit.  It is also worth noting that Asterisk's IAX2 implementation 
uses a "sliding window" for the transmission and receiving of Full frames.  That 
means that just because the lost frame has not been acknowledged, this does not 
mean that further Full frames can not be transmitted.  The receiving side should 
just save them, and not process them until the next expected frame has been 
received.  Once received, it will send an ACK which acknowledges all frames 
received up to the next expected sequence number.

On the topic of holding up the link while transmitting a large packet, this 
isn't something that would be newly introduced into IAX2.  In fact, it is normal 
to have extremely large IAX2 trunk frames which get transmitted a lot more often 
than any signaling frames.

-- 
Russell Bryant
Software Engineer
Digium, Inc.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: russell.vcf
Type: text/x-vcard
Size: 266 bytes
Desc: not available
Url : http://lists.digium.com/pipermail/asterisk-dev/attachments/20061211/d5681f4d/russell.vcf


More information about the asterisk-dev mailing list