Summary from here https://datatracker.ietf.org/doc/html/rfc8257 https://habr.com/ru/articles/474282/

DCTCP (Data Center TCP)

requires modification of 3 components: sender, receiver and device in the middle

DCTCP algorithm

  • switch detects congestion -> set CE codepoint in IP header
  • receiver sends to sender ECN- echo
  • sender reduce TCP congestion window

Congestion Threshold

Packet arrives, the queue length > threshold -> switch use CE codepoint formula depends on switch realization K > (RTT * C) > 7 , C - link rate packets per sec

EC Echo and CWP - Congestion Window Reduced

receiver will send tcp segments with ECE flag until it gets CWR ECN+bits+in+TCP+header+CWR_+Congestion+Window+Reduced+Flag (picture was taken form here https://slideplayer.com/slide/9447501/)

DCTCP variable - DCTCP.CE

  • initialized as false
  • stored in TCB (Transmission Block)

Algorithm (while DCTCP.CE is unchanged, the receiver sends normal delayed ACK)

  • if receiver gets CE codepoint is set and DCTCP.CE = false -> set DCTCP = true, send ack
  • if receiver gets packet without CE code point and DCTCP.CE = true -> set DCTP = false, send ack
  • otherwise ignore CE codepoint

  • implementstion MAY choose to send 2 ACKs : first to normally acknowldge previous packets; second - with ECE echo Screenshot 2023-07-05 at 19 16 31

DCTCP.Alpha (process EC Echo on Sende)

  • stores how many bytes has encounted collision
  • initialized as 1

    DCTCP.Alpha = DCTCP.Alpha (1 - g) + g * M g - number beetween 0 and 1 M - number of bytes that had previous congestion


<
Previous Post
BGP Part 3: Advanced Topics
>
Next Post
BBR