Question about example in RFC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all, I'm looking at the RFC, and I am having trouble understanding this 
example in 7.5.6:

>>>>>
   The final example demonstrates recovery from a half-open connection.

   DCCP A                                           DCCP B
   (GSS=1,GSR=10)                                   (GSS=10,GSR=1)
   (Crash)
   CLOSED                                               OPEN
   REQUEST     -->   DCCP-Request(seq 400)        -->   ???
   !!          <--   DCCP-Sync(seq 11, ack 400)   <--   OPEN
   REQUEST     -->   DCCP-Reset(seq 401, ack 11)  -->   (Abort)
   REQUEST                                              CLOSED
   REQUEST     -->   DCCP-Request(seq 402)        -->   ...
>>>>>

The RFC mandates that sequence invalid packets (in this case, the 
Request), do NOT update GSR, but cause a Sync asking about that same 
sequence number.
In this case, wouldn't "DCCP B" ignore the reset, because it has a bad 
sequence number?


Additionally, won't the Reset cause "DCCP B" to go into TIMEWAIT, and not 
CLOSED?



The best flow I can see for this is the following:

   DCCP A                                           DCCP B
   (GSS=1,GSR=10)                                   (GSS=10,GSR=1)
   (Crash)
   CLOSED                                               OPEN
   REQUEST     -->   DCCP-Request(seq 400)        -->   ???
   !!          <--   DCCP-Sync(seq 11, ack 400)   <--   OPEN
   REQUEST     -->   DCCP-Reset(seq 401, ack 11)  -->   ??? (GSR=1)
===== as mandated for bad sequence Resets, a Sync is sent with the real GSR ====
   !!          <--   DCCP-Sync(seq 11, ack 1)     <--   OPEN
   ackno out of range; ignore

... Now what?

Am I misunderstanding something?

- Oded

[Index of Archives]     [Linux Kernel Development]     [Linux DCCP]     [IETF Annouce]     [Linux Networking]     [Git]     [Security]     [Linux Assembly]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [DDR & Rambus]

  Powered by Linux