Adrian Sietsma wrote:

Tim Panton wrote:


...
(amended)


Yes. Quite right, there is a problem here, The way we've implemented this
is that iseq is set to the highest value+1 of all contiguously  received
frames.
So if we see a frame sequence
1,2,4,5 then iseq sticks at 3

but if we get 1,2,3,4,5 then it is 4


-SteveK

You're right, Dimitri. I'm guessing he meant to type the sequence 1,2,4,5,3 which would be illustrative of what happens when you receive out-of-order full frames.


surely 1,2,4,5,3 would stick at 3, according to the def'n above ?


No, it would go to 4 -- I guess the definition isn't clear.

Here's what happens for each frame:

1: OK, acked
2: OK, acked
4: this is out-of-order, ignored (vnak could be sent, but it doesn't really matter)
5: same as 4.
3: This is OK, and gets acked.

The point is, the receiver only ever acks or acts upon full frames when they are the "expected" sequence number. So, when you start the call both sides expect 1 (or zero, I forget). From there on, they only act upon the expected frames, and each time they get one (and act upon it), they expect the next one.

So, frame 3 is still expected when it's received, even though frames 4,5 have already arrived.

I suppose a receiver _could_ store frames 4,5, and then, as soon as it gets frame 3, it could act upon frame 4, then frame 5. This would be an optimization it could make, but which libiax2/chan_iax2 don't presently make.


but if 1,2,3,5,4 then it is 4

If that is so,then how do frames 4 & 5 ever get acked ?

They would be retransmitted, because they are not acked the first time they're sent, and eventually, the retransmits would be acked.

-SteveK

_______________________________________________
--Bandwidth and Colocation provided by Easynews.com --

asterisk-dev mailing list
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-dev

Reply via email to