Re: Some comments on the draft of 3448/TFRC.bis (Feb 2007)

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

 



Quoting Sally Floyd:
|  Gerrit -
|  
|  > If this is the perspective then it may be better to take the section
|  > regarding accumulation of send credits out of the specification, and
|  > concentrate on the purposes of congestion control instead.
|  > Otherwise it mixes specification with implementation issues, which
|  > will only confuse people.
|  
|  I will try to add some text to Section 4.7 on "Scheduling of Packet
|  Transmissions" making it clear what is a specification (whether
|  MUST, SHOULD, MAY, or no capital letters at all) with pseudocode,
|  and what parts are more implementation-specific.
|  
|  
|  This I would consider specification:
|  
|   From RFC 3448:
|  "It is necessary to be opportunistic about
|  sending data packets so that the correct average rate is maintained
|  despite the course-grain or irregular scheduling of the operating
|  system."
|  
|  This I would consider specification also, with some modification
|  of the language to take out the variables:
|  
|  Additional clarifying text in RFC3448bis:
|  "If the operating system has coarse timer granularity and the
|  transmit rate is high, then TFRC may send short bursts of several
|  packets separated by intervals of the OS timer granularity of t_gran
|  seconds.  However, the TFRC sender is not allowed to accumulate
|  `credits' of more than max(t_ipi, t_gran) time units in packet
|  scheduling, so the sender is not allowed to send arbitrary bursts of
|  packets after idle periods.
|  
|  Most of the rest of that section I will try to clearly label as
|  an implementation-specific discussion.
|  
Thanks for the update. I had actually hoped that the accumulation of send
credits would be taken out of the specification as I don't agree with it. 

It may be that this works on a simulation platform, but in the implementation 
there is the following problem: 

 As per earlier email, the send mechanism works ideally like a token bucket
 filter with a bucket size of zero. 

 Above specification uses a non-zero bucket size floor(t_gran/t_ipi). 

 With off-the-shelf commodity hardware it is easy to get into regions of t_ipi 
 of 1..2 microseconds (using standard Gigabit cards; 10-Gigabit cards are  also 
 already available). With above mechanism the sender is allowed to let a flood
 of  up to 10ms/0.001ms = 1E4 packets onto the network when e.g. t_gran = 10ms. 

One can of course argue about figures and maybe assume that t_gran is 1 millisecond
and t_ipi is 100 microseconds. But this blurs the issue: since a 10ms schedule interval
ends not precisely after 10ms, over time send credit will accrue with a non-zero token 
bucket size; i.e. it is only safe if the sum of accumulated time (due to inaccuracy, slow
application, or idle time) should be less than t_ipi, but not t_gran.


[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