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

[dccp] A question about CCID 3



Hi,

I encountered a situation where CCID 3 behaves in a strange way as far
as I understood how it should work. The situation is here:

There is a single half connection between DCCP sender and DCCP receiver
using CCID 3. ECN is not used. Packets are sent in the following way
during the connection:

    DCCP sender                                 DCCP receiver
    -----------                                 -------------
1.  DCCP-Data (seqnum n)   ---> lost
2.  DCCP-Data (seqnum n+1) --->
3.  DCCP-Data (seqnum n+2) --->
4.                                         <--- DCCP_Ack (seqnum p)
5.  DCCP-Ack  (seqnum n+3) --->
6.                                         <--- DCCP_Ack (seqnum p+1)


1. DCCP sender sends a data packet which is lost.
2. and 3. DCCP receiver receives a packet
   (DCCP-Data, DCCP-DataAck or DCCP-Ack)
4. DCCP receiver sends an ACK to the DCCP sender
5. DCCP receiver receives a DCCP-Ack.
   * now DCCP receiver detects a new loss event as three packets with
     a higher sequence number have reached the destination after the
     lost packet (seqnum n).
     (RFC 3448 states that:
     "The loss of a packet is detected by the arrival of at least three
      packets with a higher sequence number than the lost packet.")
6. DCCP receiver sends a DCCP-Ack to the DCCP sender, because a new
   loss event was detected.
   (RFC 3448 states that:
   "A feedback packet should also be sent whenever a
    new loss event is detected without waiting for the end of an RTT")

   Profile for DCCP Congestion Control ID 3 states about Receive Rate
   Option that:
    "This option MUST be sent by the data receiver on all required
     acknowledgements.  Its four data bytes indicate the rate at which
     the receiver has received data since it last sent an
     acknowledgement, in bytes per second."
   and
    "The feedback packets from the receiver contain a Receive Rate
     option specifying the rate at which data packets arrived at the
     receiver since the last feedback packet."

   In the example no data packets have been received by the DCCP
   receiver since the last sent acknowledgement (seqnum p).
   My question is that should the value of Receive Rate Option really
   be 0 in the DCCP-Ack (seqnum p+1)? This means practically that
   the DCCP sender must stop sending data as a result of a single packet
   loss. Or have I misunderstood something?

My second question is that what is included in the packet size in TCP
throughput equation? Is it only the size of user data segment of
DCCP-Data packet or are DCCP and IP packet headers also included in?
And the same question about receive rate calculation in the DCCP
receiver. Are DCCP and IP packet headers included in when calculating
receive rate?


Sampo Luukkainen