Подходы к контролированию перегрузки
В следующем разделе мы детально рассмотрим механизм контроля перегрузки в протоколе TCP, а сейчас займемся изучением двух общих подходов к этому вопросу, наиболее часто встречающихся на практике.
С самой общей точки зрения можно разделить механизмы контроля перегрузки на те, которые реализуются с помощью сетевого уровня, и те, которые целиком реализуются транспортным уровнем.
□ Контроль перегрузки оконечными системами. В этом случае контроль перегрузки полностью осуществляется транспортным уровнем. В функции транспортного уровня входит установление факта перегрузки в сети по характерным признакам «поведения» сети (задержки и потери пакетов). В следующем разделе мы увидим, что протоколу TCP необходимо использовать этот механизм контроля перегрузки, поскольку протокол сетевого уровня IP не предоставляет оконечным системам никакой информации относительно перегрузок в сети. Сигналом о наличии перегрузки для TCP служит потеря сегмента (истечение интервала ожидания или получение тройного подтверждения), реакцией на которую является уменьшение размера окна приема. Мы увидим, что в предлагаемых новых проектах TCP признаком перегрузок является увелрхчение времени оборота.
□ Контроль перегрузок с поддержкой на сетевом уровне. В этом механизме предполагается наличие явной обратной связи, с помощью которой сетевые устройства (маршрутизаторы) информируют оконечные системы о нагрузках в сети. В простейшем случае обратная связь может представлять собой передачу бита, свидетельствующего о наличии или отсутствии перегрузки в маршрутизаторе. Подобный подход был реализован в архитектурах IBM SNA и DEC DECnet, в последнее время предлагается для сетей TCP/IP и применяется в механизме контроля перегрузок ABR сетей ATM (о чем будет рассказано далее). Также возможна и более сложная обратная связь: например, одна из форм ABR-контроля позволяет маршрутизатору указывать оконечной системе скорость передачи в выходной линии связи, которую он способен обеспечить.
При контроле перегрузок с сетевой поддержкой информация о наличии перегрузки передается из сети оконечной системе одним из двух путей, как показано на рис. 3.44. Обратная связь может напрямую связывать маршрутизатор и передающую оконечную систему, либо может использоваться специальное поле в передаваемых пакетах: при возникновении перегрузки маршрутизатор делает соответствующую метку в этом поле и передает пакет далее в направлении принимающей стороны. Получив помеченный пакет, принимающая сторона отсылает передающей стороне уведомление о перегрузке. Обратите внимание на то, что в этой схеме передающая сторона «узнает» о перегрузке не позднее чем по истечении времени оборота.