[Asterisk-Dev] IAX2 RFC and retries.

Derek Smithies derek at indranet.co.nz
Fri May 20 15:53:20 MST 2005


Hi

> >>>> But this seems not to be the case. I am seeing acks with timestamps
> >>>> that are the time they were sent, not that of the original message.
> >>>>
> >>
> >>
> >>> I think that asterisk _does_ set the timestamp of an ACK to be equal 
> >>> to the timestamp of the frame it's acknowledging, but it's redundant.
> >>>
> >>
> >> This is the sort of thing a formal protocol spec should clear up. 
> >> (Bravo to the developer writing RFC--you'll improve a lot of peoples' 
> >> productivity!)
This issue can be resolved by reading the code. This is not easy. The code 
quality has been discussed before, and I do not wish to revisit that 
discussion.

I found it most helpful to examine the packet dumps of iax2 calls, and 
examine it with ethereal 0.10.10, which has an uptodate iax2 packet 
dissector.

Conclusions: the timestamp of the ACK packet was always equal to the 
timestamp of the packet being acked.

A New packet is acknowledged by an ACCEPT packet. the ACCEPT packet has a 
different timestamp to the new packet.

There is a bit of code which goes:
               if (seqno > -1)
                        fr->oseqno = seqno;     << used for ack frames
                else
                        fr->oseqno = pvt->oseqno++; << ordinary frames

The oseqno of an ACK packet, is equal to the iseqno of the packet being acknowledged.

Derek.
-- 
Derek Smithies Ph.D.                         
IndraNet Technologies Ltd.                
Email: derek at indranet.co.nz         
ph +64 3 365 6485                          
Web: http://www.indranet-technologies.com/  




More information about the asterisk-dev mailing list