Уравнения окна перегрузки TCP при медленном старте

Взяв код, управляемый государством, отсюда:

# Initialization
cwnd = MSS  # congestion window in bytes
ssthresh= swin # in bytes

# Ack arrival
if tcp.ack > snd.una :  # new ack, no congestion
  if  cwnd < ssthresh :
    # slow-start : increase quickly cwnd
    # double cwnd  every rtt
    cwnd = cwnd + MSS
  else:
    # congestion avoidance : increase slowly cwnd
    # increase cwnd by one mss every rtt
    cwnd = cwnd+ mss*(mss/cwnd)
else: # duplicate or old ack
  if tcp.ack==snd.una:    # duplicate acknowledgement
    dupacks++
    if dupacks==3:
      retransmitsegment(snd.una)
      ssthresh=max(cwnd/2,2*MSS)
      cwnd=ssthresh
  else:    # ack for old segment, ignored
    dupacks=0

Expiration of the retransmission timer:
 send(snd.una)     # retransmit first lost segment
 sshtresh=max(cwnd/2,2*MSS)
 cwnd=MSS

Есть несколько вещей, которые я не понимаю.

  1. Как cwnd удваивается "экспоненциально" с "cwnd = cwnd + MSS". Мне трудно понять, как это экспоненциальное линейное изменение, когда это просто линейное увеличение.

  2. Я также не понимаю математику "cwnd = cwnd+ mss*(mss/cwnd)". Предполагается, что cwnd увеличивается линейно, как эта формула достигает этого результата, когда она больше похожа на квадратную прогрессию (mss^2/cwnd).

Я немного запутался в том, как эти вычисления выполняют описанные задачи. Кто-нибудь может объяснить, как они это делают?

Спасибо

0 ответов

Вы правы, если вы выполняете формулу только один cwnd = cwnd + MSS это не экспоненциально

Но ключевой момент: сколько раз вы выполняете код? Ответ "при каждом приходе подтверждения".

Итак, сначала cwnd = 1 (MSS)

В следующий раз, когда вы выполните код, вы получили 1 ACK (соответствует первому MSS), поэтому теперь cwnd = 1+ 1 =2 (MSS) Итак, на этом шаге вы отправляете 2 MSS, поэтому вы получите 2 ACK

Итак, в следующий раз, когда вы выполните код дважды cwnd = 2 + 1 =3 cwnd =3 +1 = 4 Итак, на шаге 2 cwnd =4 вы отправите 4 MSS, поэтому вы получите 4 ACKS, и в следующий раз будет выполнено 4 раза

Вот почему это экспоненциально. Надеюсь, это будет полезно.

Дом

Другие вопросы по тегам