Телекоммуникационные технологии.Сети TCP-IP

       

Ложные дубликаты подтверждений


Опять рассмотрим ситуацию, когда узел А находится в медленном старте после установления соединения. А отправляет в В один сегмент (SN=1–1000), но узел В, вместо того чтобы ответить подтверждением ACK SN=1001, отвечает серией сфабрикованных подтверждений ACK SN=1 (рис. 9.15).

Получение дубликатов подтверждений включает на узле А алгоритмы быстрой повторной передачи (fast retransmit) и быстрого восстановления (fast recovery). Последний из них представляет в данном случае особый интерес. Напомним, что алгоритм быстрого восстановления базируется на предположении, что каждый полученный дубликат предыдущего подтверждения, кроме того, что говорит о потере сегмента, также подразумевает, что какой-то другой полноразмерный сегмент покинул сеть. Вследствие этого окно cwnd, измеряемое в полноразмерных сегментах, временно увеличивается на число полученных дубликатов, пока не придет подтверждение, отличное от предыдущих.

Поскольку сам дубликат подтверждения не несет никакой информации о том, получение какого именно сегмента вызвало отправку данного дубликата, ничто не может уберечь отправителя от ложных дубликатов подтверждений, сгенерированных получателем. Таким образом, получатель заставляет отправителя необоснованно увеличить окно cwnd и ускорить отправку данных.


Рис. 9.15 Ложные дубликаты подтверждений

Фактически узел А будет отправлять данные со скоростью, с которой В генерирует дубликаты подтверждений. В какой-то момент в узле А сработает таймер повторной передачи для сегмента SN=1–1000, поскольку он так и не был подтвержден. Узел В отреагирует на это посылкой кумулятивного подтверждения на все полученные к этому моменту данные и переключится на генерацию ложных дубликатов этого последнего подтверждения, снова вынуждая отправителя необоснованно увеличивать cwnd.



Содержание раздела