
406 Глава 5. Сетевой уровень
Алгоритмы маршрутизации 407
Второй компромисс — между временем установки соединения и временем об-
работки адреса. Виртуальный канал требует определенных затрат времени на его
установку, однако последующая обработка пакетов для маршрутизатора оказы-
вается проще и быстрее, чем в дейтаграммной подсети.
Виртуальные каналы обладают некоторыми преимуществами, помогающими
им предоставлять гарантированное качество обслуживания и избегать заторов в
подсети, так как ресурсы могут быть зарезервированы заранее, во время установ-
ки соединения. Когда начинают прибывать пакеты, необходимая пропускная спо-
собность и мощность маршрутизатора будут предоставлены. В дейтаграммной
подсети предотвращение заторов реализовать значительно сложнее.
В системах обработки транзакций (например, при запросе магазина на вери-
фикацию кредитной карты) накладные расходы на установку соединения и уда-
ление виртуального канала могут сильно снизить потребительские свойства сети.
Если объем информации, передаваемой во время одного соединения, невелик, то
использование виртуального канала не имеет смысла. Однако в данной ситуации
могут оказаться полезными постоянные виртуальные каналы, установленные
вручную и не разрываемые месяцами и даже годами.
Недостатком виртуальных каналов является их уязвимость в случае выхода
из строя или временного выключения маршрутизатора. Даже если он будет бы-
стро починен и снова включен, все виртуальные каналы, проходившие через не-
го, будут прерваны. Если же в дейтаграммной подсети маршрутизатор выйдет из
строя, то будут потеряны только те пакеты, которые находились в данный мо-
мент на маршрутизаторе (а возможно, лишь некоторые из них, в зависимости от
того, были они подтверждены или нет). Обрыв линии связи для виртуальных ка-
налов является фатальным, а в дейтаграммной системе может оказаться почти
незамеченным. Кроме того, дейтаграммная система позволяет соблюдать баланс
между загрузкой маршрутизаторов и линий связи.
Алгоритмы маршрутизации
Основная функция сетевого уровня заключается в выборе маршрута для пакетов
от начальной до конечной точки. В большинстве сетей пакетам приходится про-
ходить через несколько маршрутизаторов. Единственным исключением являют-
ся широковещательные сети, но даже в них маршрутизация является важным во-
просом, если отправитель и получатель находятся в разных сетях. Алгоритмы
выбора маршрутов и используемые ими структуры данных являются главной це-
лью при проектировании сетевого уровня.
Алгоритм маршрутизации реализуется той частью программного обеспече-
ния сетевого уровня, которая отвечает за выбор выходной линии для отправки
пришедшего пакета. Если подсеть использует дейтаграммную службу, выбор марш-
рута для каждого пакета должен производиться заново, так как оптимальный
маршрут мог измениться. Если подсеть использует виртуальные каналы, мар-
шрут выбирается только при создании нового виртуального канала. После этого
все информационные пакеты следуют по выбранному маршруту. Последний
случай иногда называют сеансовой маршрутизацией, так как маршрут остается
в силе на протяжении всего сеанса связи с пользователем (например, сеанса ре-
гистрации на терминале или передачи файла).
Полезно понимать разницу между маршрутизацией, при которой системе
приходится делать выбор определенного маршрута следования, и пересылкой —
действием, происходящим при получении пакета. Можно представить себе мар-
шрутизатор как устройство, в котором функционируют два процесса. Один из
них обрабатывает приходящие пакеты и выбирает для них по таблице маршру-
тизации исходящую линию. Такой процесс называется пересылкой. Второй про-
цесс отвечает за заполнение и обновление таблиц маршрутизации. Именно здесь
в игру вступает алгоритм маршрутизации.
Вне зависимости от того, отдельно ли выбираются маршруты для каждого па-
кета или же только один раз для соединения, желательно, чтобы алгоритм выбо-
ра маршрута обладал определенными свойствами — корректностью, простотой,
надежностью, устойчивостью, справедливостью и оптимальностью. Правильность
и простота вряд ли требуют комментариев, а вот потребность в надежности не
столь очевидна с первого взгляда. Во время работы большой сети постоянно про-
исходят какие-то отказы аппаратуры и изменения топологии. Алгоритм маршру-
тизации должен уметь справляться с изменениями топологии и трафика без необ-
ходимости прекращения всех задач на всех хостах и перезагрузки сети при каждой
поломке маршрутизатора.
Алгоритм маршрутизации должен также обладать устойчивостью. Существу-
ют алгоритмы выбора маршрута, никогда не приходящие в состояние равнове-
сия, независимо от того, как долго они работают. Такие цели, как справедливость
и оптимальность, могут показаться очевидными — вряд ли кто-нибудь станет воз-
ражать против них, — однако они зачастую оказываются взаимоисключающими.
Для примера рассмотрим ситуацию, показанную на рис. 5.4. Предположим, что
трафик между станциями Аи А', В и В', а также С и С настолько интенсивный,
что горизонтальные линии связи оказываются полностью насыщенными. Чтобы
максимизировать общий поток данных, трафик между станциями X и X' следо-
вало бы совсем отключить. Однако станции X и Х\ скорее всего, имеют другую
точку зрения по данному вопросу. Очевидно, необходим компромисс между
справедливым выделением трафика всем станциям и оптимальным использова-
нием канала в глобальном смысле.
I
А' В' С
Рис. 5.4. Конфликт справедливости и оптимальности