Реализация скользящего окна в протоколе TCP

В протоколе TCP реализована разновидность алгоритма квитирования с использованием окна. Особенность этого алгоритма состоит в том, что, хотя единицей передаваемых данных является сегмент, окно определено на множестве нумерованных байт неструктурированного потока данных, поступающих с верхнего уровня и буферизуемых протоколом TCP.Квитанция посылается только в случае правильного приема данных, отрицательные квитанции не посылаются. Таким образом, отсутствие квитанции означает либо прием искаженного сегмента, либо потерю сегмента, либо потерю квитанции.В качестве квитанции получатель сегмента отсылает ответное сообщение (сегмент), в которое помещает число, на единицу превышающее максимальный номер байта в полученном сегменте. Если размер окна равен W, а последняя квитанция содержала значение N, то отправитель может посылать новые сегменты до тех пор, пока в очередной сегмент не попадет байт с номером N+W. Этот сегмент выходит за рамки окна, и передачу в таком случае необходимо приостановить до прихода следующей квитанции.

Выбор тайм-аута

Выбор времени ожидания (тайм-аута) очередной квитанции является важной задачей, результат решения которой влияет на производительность протокола TCP.

Реакция на перегрузку сети

Варьируя величину окна, можно повлиять на загрузку сети. Чем больше окно, тем большую порцию неподтвержденных данных можно послать в сеть. Если сеть не справляется с нагрузкой, то возникают очереди в промежуточных узлах-маршрутизаторах и в конечных узлах-компьютерах.

При переполнении приемного буфера конечного узла "перегруженный" протокол TCP, отправляя квитанцию, помещает в нее новый, уменьшенный размер окна. Если он совсем отказывается от приема, то в квитанции указывается окно нулевого размера. Однако даже после этого приложение может послать сообщение на отказавшийся от приема порт. Для этого, сообщение должно сопровождаться пометкой "срочно" (бит URG в запросе установлен в 1). В такой ситуации порт обязан принять сегмент, даже если для этого придется вытеснить из буфера уже находящиеся там данные.

Вопрос 23

Все протоколы обмена маршрутной информацией стека TCP/IP относятся к классу адаптивных протоколов, которые в свою очередь делятся на две группы, каждая из которых связана с одним из следующих типов алгоритмов:

  • дистанционно-векторный алгоритм (DistanceVectorAlgorithms, DVA),
  • алгоритм состояния связей (LinkStateAlgorithms, LSA).

В алгоритмах дистанционно-векторного типа каждый маршрутизатор периодически и широковещательно рассылает по сети вектор расстояний от себя до всех известных ему сетей. Под расстоянием обычно понимается число промежуточных маршрутизаторов через которые пакет должен пройти прежде, чем попадет в соответствующую сеть. Может использоваться и другая метрика, учитывающая не только число перевалочных пунктов, но и время прохождения пакетов по связи между соседними маршрутизаторами. Получив вектор от соседнего маршрутизатора, каждый маршрутизатор добавляет к нему информацию об известных ему других сетях, о которых он узнал непосредственно (если они подключены к его портам) или из аналогичных объявлений других маршрутизаторов, а затем снова рассылает новое значение вектора по сети. В конце-концов, каждый маршрутизатор узнает информацию об имеющихся в интерсети сетях и о расстоянии до них через соседние маршрутизаторы.

Дистанционно-векторные алгоритмы хорошо работают только в небольших сетях. В больших сетях они засоряют линии связи интенсивным широковещательным трафиком, к тому же изменения конфигурации могут отрабатываться по этому алгоритму не всегда корректно, так как маршрутизаторы не имеют точного представления о топологии связей в сети, а располагают только обобщенной информацией - вектором дистанций, к тому же полученной через посредников. Работа маршрутизатора в соответствии с дистанционно-векторным протоколом напоминает работу моста, так как точной топологической картины сети такой маршрутизатор не имеет.

Наиболее распространенным протоколом, основанным на дистанционно-векторном алгоритме, является протокол RIP.

Алгоритмы состояния связей обеспечивают каждый маршрутизатор информацией, достаточной для построения точного графа связей сети. Все маршрутизаторы работают на основании одинаковых графов, что делает процесс маршрутизации более устойчивым к изменениям конфигурации. Широковещательная рассылка используется здесь только при изменениях состояния связей, что происходит в надежных сетях не так часто.

Для того, чтобы понять, в каком состоянии находятся линии связи, подключенные к его портам, маршрутизатор периодически обменивается короткими пакетами со своими ближайшими соседями. Этот трафик также широковещательный, но он циркулирует только между соседями и поэтому не так засоряет сеть.

Протокол BGP

BGP (англ. BorderGatewayProtocol, протокол граничного шлюза) — основной протокол динамической маршрутизации в Интернете.

BGP, в отличие от других протоколов динамической маршрутизации, предназначен для обмена информацией о маршрутах не между отдельнымимаршрутизаторами, а между целыми автономными системами, и поэтому, помимо информации о маршрутах в сети, переносит также информацию о маршрутах на автономные системы. BGP не использует технические метрики, а осуществляет выбор наилучшего маршрута исходя из правил, принятых в сети.

BGP поддерживает бесклассовую адресацию и использует суммирование маршрутов для уменьшения таблиц маршрутизации. С 1994 года действует четвёртая версия протокола, все предыдущие версии являются устаревшими.

BGP является протоколом прикладного уровня и функционирует поверх протокола транспортного уровня TCP (порт 179).

BGP, наряду с DNS, является одним из главных механизмов, обеспечивающих функционирование Интернета.

Вопрос 24

ПротоколRIP (RoutingInformationProtocol – протоколмаршрутнойинформации)является внутренним протоколом маршрутизации дистанционно-векторного типа. Будучи простым в реализации, этот протокол чаще всего используется в небольших сетях.

Построение таблицы маршрутизации. Для измерения расстояния до сети стандарты протокола RIPдопускают различные виды метрик: хопы, значение пропускной способности, вносимые задержки, надежность сетей (те соответствующие признакам D,TиR в поле качества сервиса IP-пакета), а также любые комбинации этих метрик. В большинстве реализаций RIPиспользуется простейшая метрика - количество хопов, те количество промежуточных маршрутизаторов, которые нужно преодолеть пакету до сети назначения.

Обмен маршрутной информацией внутри автономной системы по протоколу RIP

 

Протокол RIP на основе своего алгоритма определяет следующие критерии:

•в протоколе RIP необходимо либо доверять участникам обмена, либо предусмотреть механизм обнаружение маршрутных петель;

•для стабильной работы системы маршрутизации и на основе протокола RIP необходимо в качестве максимально возможного расстояния назначить значение 16;

•для устранения проблемы медленной сходимости, когда противоречия в сети возникают из-за того, что информациямедленнораспространяется, необходимоиспользоватьспециальныеметоды (обновленияразделенногогоризонта, замораживания изменений, обратноеисправление)

 

Построение таблицы маршрутизации:

Этап1-создание минимальной таблицы (учитываются только непосредственно подсоединенные сети). Этап2-рассылка минимальной таблицы соседям(после инициализации каждый маршрутизатор начинает посылать своим соседям сообщения протокола RIP, в которых содержится минимальная таблица). Этап3-получение RIP- сообщений от соседей и обработка полученной информации.ПротоколRIPзамещает запись о какой-либо сети только в том случае, если новая информация имеет лучшую метрику (с меньшим расстоянием в хопах). Этап4-рассылка новой таблицы соседям. В сообщение помещаются данные обо всех известных маршрутизатору сетях (непосредственное подключенных и удаленных).Этап5-получение RIP-сообщений от соседей и обработка полученной информации.

 

 

Коды команд сообщений протокола RIP:

1-Запрос на частичную или полную маршрутную информацию; 2- Ответназапрос, содержащийадрессетиирасстояние, взятыеизтаблицымаршрутизацииотправителя; 9- запрос на обновление; 10-ответ на запрос на обновление; 11-подтверждение запроса на обновление