5.5. Межсетевое взаимодействие

До сих пор мы подразумевали, что существует единая однородная сеть, в которой каждое устройство использует одни и те же протоколы на каждом уровне. К сожалению, это предположение слишком оптимистично. Существует множество различных сетей, включая PAN, LAN, MAN и WAN. Мы уже говорили о сети Ethernet, кабельном интернете, стационарных и мобильных телефонных сетях, сетях стандарта 802.11 и т.д. На каждом уровне этих сетей широко применяются многочисленные протоколы.


5.5.1. Интерсети: общие сведения

В следующих разделах особое внимание будет уделено вопросам, возникающим при объединении двух или более сетей, формирующих объединенную сеть (internetwork), или, проще, интерсеть (internet).

Если бы все использовали одну сетевую технологию, объединять сети было бы намного проще. В большинстве случаев существует доминирующая сеть (например, Ethernet). Некоторые ученые считают разнообразие сетевых технологий временным явлением, которое исчезнет, как только все наконец поймут, как замечательна [вставьте свою любимую сеть]. Однако на это рассчитывать не стоит: история показывает, что такие рассуждения — всего лишь принятие желаемого за действительное. Различные сети решают разные задачи, поэтому, к примеру, Ethernet и спутниковые сети всегда будут отличаться. Создание сетей передачи данных на основе уже существующих систем (кабельной, телефонной или ЛЭП) порождает дополнительные ограничения, которые приводят к расхождению их характеристик. Поэтому нам всегда придется иметь дело с неоднородностью сетей.

Было бы намного проще, если бы нам вообще не пришлось объединять разнообразные сети. Но это также крайне маловероятно. Боб Меткалф выдвинул такой принцип: ценность сети, состоящей из N узлов, пропорциональна числу соединений между узлами, или N2 (Гилдер; Gilder, 1993). Это означает, что чем крупнее сеть, тем выше ее ценность, поскольку она обеспечивает гораздо больше соединений. Поэтому объединение небольших сетей всегда будет иметь смысл.

Главный пример такого объединения — интернет. Цель объединения всех этих сетей — предоставить пользователям из разных сетей возможность общаться. Стоимость услуг провайдера часто зависит от доступной пропускной способности, но на самом деле оплачивается возможность обмена пакетами с другими хостами, также подключенными к интернету. Интернет не приобрел бы такую популярность, если бы пакеты можно было отправлять только хостам, находящимся в том же городе.

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


5.5.2. Различия сетей

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

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

Показатель

Возможные варианты

Предлагаемая служба

Ориентированные на установление соединения или не требующие соединения

Адресация

Разного размера, плоская или иерархическая

Широковещание

Присутствует/отсутствует (то же относится к многоадресной рассылке)

Размер пакета

У каждой сети есть свой максимум

Порядок доставки

Упорядоченная и неупорядоченная доставка

QoS

Присутствует/отсутствует; много разновидностей

Надежность

Различные уровни потерь

Безопасность

Правила секретности, шифрование и т.д.

Параметры

Различные тайм-ауты, спецификация потока и др.

Тарификация

По времени соединения, за пакет, побайтно или никак

Илл. 5.36. Некоторые показатели, по которым сети могут отличаться

Существует еще много различий, к которым необходимо приспособиться. К примеру, как передать пакет группе, некоторые участники которой находятся в сети, не поддерживающей многоадресную рассылку? Различные ограничения по размеру пакета также могут стать серьезной проблемой. Как передать 8000-байтный пакет по сети с максимальным размером пакета 1500 байт? Когда пакеты из ориентированной на соединение сети пересекают сеть, не требующую соединений, их порядок может нарушиться. Для отправителя это может оказаться неприятной неожиданностью — впрочем, как и для получателя.

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

Однако сети могут отличаться и в более сложных вопросах. Самый яркий пример — QoS. Если одна сеть предоставляет хороший уровень обслуживания, а другая — best effort, нельзя гарантировать определенную пропускную способность и задержку для непрерывного трафика в реальном времени. Точнее, это можно сделать, только если вторая сеть работает с низкой загрузкой или почти не используется, что маловероятно. Проблему представляют и механизмы безопасности, но по крайней мере шифрование в целях конфиденциальности и целостности данных можно обеспечить там, где они не поддерживаются. И наконец, разная тарификация может стать причиной неожиданно высоких счетов за обычные операции — ситуация, в которой часто оказываются пользователи мобильных телефонов в зоне роуминга.


5.5.3. Объединение гетерогенных сетей

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

Идея создания общего уровня для устранения различий между сетями была предложена Серфом и Каном (Cerf and Kahn) в 1974 году. Этот подход имел невероятный успех и нашел применение в протоколах IP и TCP. Почти 40 лет спустя IP стал основой современного интернета. За это достижение в 2004 году Серф и Кан были удостоены премии Тьюринга, которая неофициально считается Нобелевской премией в области информатики. В IP используется универсальный формат пакетов, который распознается всеми маршрутизаторами и может быть передан почти по любой сети. Действие IP распространяется также и на телефонные сети. Кроме того, сегодня этот протокол работает в сенсорных сетях и на малых устройствах, хотя раньше считалось, что это невозможно из-за ограничений на ресурсы.

Мы уже говорили о нескольких устройствах для соединения сетей. Среди них повторители, концентраторы, мосты, коммутаторы и шлюзы. Повторители и концентраторы просто переносят биты с одного кабеля на другой. Чаще всего это аналоговые устройства, не имеющие отношения к протоколам вышележащих уровней. Мосты и коммутаторы работают на канальном уровне. Они могут использоваться для построения сетей, осуществляя по ходу дела минимальные преобразования протоколов, например, между сетями Ethernet со скоростями 10, 100 и 1000 Мбит/с. В этом разделе мы изучим устройства сетевого взаимодействия, работающие на сетевом уровне, то есть маршрутизаторы. Шлюзы — высокоуровневые интеркоммуникационные устройства — будут рассмотрены позднее.

Прежде всего выясним, как взаимодействие через общий сетевой уровень можно использовать для объединения сетей разного типа. На илл. 5.37 (а) изображена интерсеть, состоящая из сетей 802.11, MPLS и Ethernet. Пусть источник в 802.11 хочет отправить пакет получателю в Ethernet. Так как технологии отправки в этих сетях различны и при этом пакету придется пройти через сеть другого типа (MPLS), на границах сетей пакеты должны быть дополнительно обработаны.

Поскольку обычно разные сети используют различные способы адресации, пакет содержит адрес сетевого уровня, который может идентифицировать любой хост трех сетей. Сначала пакет приходит на границу между 802.11 и MPLS. Сеть 802.11 не требует соединения, а MPLS, наоборот, ориентирована на его установление. Это значит, что необходимо создать виртуальный канал. Когда пакет пройдет по этому каналу, он достигнет границы сети Ethernet. На данном этапе пакет может оказаться слишком большим, так как 802.11 работает с более крупными фреймами, чем Ethernet. В таком случае он разделяется на фрагменты, каждый из которых отправляется по отдельности. Фрагменты снова объединяются по прибытии на адрес назначения. Так заканчивается путешествие пакета.

Выполнение протоколов для этого путешествия показано на илл. 5.37 (б). Отправитель получает данные от транспортного уровня и создает пакет с заголовком общего сетевого уровня — в данном случае IP. Адрес получателя в заголовке указывает, что пакет должен быть отправлен через первый маршрутизатор. Пакет вставляется во фрейм 802.11 с адресом этого маршрутизатора и передается. Маршрутизатор извлекает пакет из поля данных и отбрасывает заголовок фрейма. Далее он анализирует содержащийся в пакете IP-адрес. Его нужно найти в таблице маршрутизации. В соответствии с ним принимается решение об отправке пакета на второй маршрутизатор. Для этого нужно установить виртуальный канал MPLS, ведущий ко второму маршрутизатору, а пакет поместить во фрейм с заголовками MPLS. На противоположном конце заголовок MPLS удаляется, и на основании адреса определяется следующий транзитный участок сетевого уровня. Этот участок ведет к получателю. Так как пакет слишком длинный для Ethernet, он делится на две части, каждая из которых помещается в поле данных фрейма Ethernet и передается на адрес назначения. Там заголовки фреймов считываются, и содержимое исходного пакета восстанавливается. Пакет достиг адресата.

Илл. 5.37. (а) Пакет проходит через разные сети. (б) Выполнение протоколов на сетевом и канальном уровнях

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

К сожалению, межсетевое взаимодействие не такая простая задача, как может показаться. С появлением мостов предполагалось, что они будут соединять разные типы сетей или, по крайней мере, локальных, преобразовывая фреймы одной LAN во фреймы другой. Однако это не сработало, поскольку трудно преодолеть различия между свойствами LAN: максимальным размером пакета и наличием/отсутствием классов приоритетов. Поэтому сегодня мосты в основном соединяют сети одного типа на канальном уровне; для объединения разных сетей на сетевом уровне используются маршрутизаторы.

Межсетевое взаимодействие успешно применяется в построении крупных сетей, но это возможно только при наличии общего сетевого уровня. Со временем появилось множество различных протоколов. Сложно заставить всех использовать один формат, учитывая, что каждая компания видит коммерческую выгоду в том, чтобы иметь собственный протокол. Помимо IP, который на данный момент является практически универсальным сетевым протоколом, существуют IPX, SNA и AppleTalk. Ни один из них не используется повсеместно, а новые протоколы будут появляться всегда. Наиболее яркий пример —IPv4 и IPv6. И хотя оба они являются версиями IP, они несовместимы (иначе не было бы необходимости в разработке IPv6).

Маршрутизатор, поддерживающий несколько сетевых протоколов, называется многопротокольным маршрутизатором (multiprotocol router). Он должен либо преобразовывать их, либо обеспечивать соединение на вышележащем уровне протокола. Ни один из двух вариантов не отвечает всем требованиям сети. Соединение на более высоком уровне, скажем, с применением TCP, предполагает, что TCP реализован во всех сетях (а это не всегда так). При этом в сетях могут функционировать только приложения, использующие TCP (к ним не относятся многие программы, работающие в реальном времени).

Другой вариант — конвертация пакетов между разными сетями. Однако если пакеты не близки по формату и не имеют одинаковых информационных полей, такое преобразование всегда будет неполным и часто обречено на ошибку. К примеру, длина IPv6-адресов составляет 128 бит. И как бы ни старался маршрутизатор, такой адрес ни за что не поместится в 32-битное поле адреса IPv4. Проблема использования IPv4 и IPv6 в одной сети оказалась серьезным препятствием к внедрению IPv6. (И честно говоря, по этой же причине потребителей так и не удалось убедить в том, что они должны его использовать.) Но еще более серьезные проблемы возникают, если нужно выполнять конвертацию между принципиально разными протоколами — например, между не требующим соединения и ориентированным на его установление. Такие преобразования практически никогда не выполняются. Вероятно, IP работает так хорошо только потому, что служит чем-то вроде наименьшего общего знаменателя. Он не многого требует от сетей, однако предоставляет только уровень обслуживания best effort.


5.5.4. Соединение конечных точек в гетерогенных сетях

Объединение сетей в общем случае является исключительно сложной задачей. Однако существует частный случай, реализация которого вполне осуществима даже для разных сетевых протоколов. Это ситуация, при которой хост-источник и хост-приемник расположены в одинаковых сетях, но между ними находится сеть другого типа. Например, представьте себе международный банк, у которого имеется сеть IPv6 в Париже и такая же — в Лондоне, а между ними находится IPv4, как показано на илл. 5.38.

Илл. 5.38. Туннелирование пакета из Парижа в Лондон

Для решения этой проблемы используется туннелирование (tunneling). Чтобы передать IP-пакет хосту в Лондоне, хост в Париже формирует пакет, содержащий лондонский IPv6-адрес, и отправляет его на многопротокольный маршрутизатор, соединяющий парижскую сеть IPv6 и сеть IPv4. Получив пакет IPv6, маршрутизатор помещает его в другой пакет с IPv4-адресом маршрутизатора, соединяющего сеть IPv4 и лондонскую сеть IPv6. Когда пакет попадает на этот адрес, лондонский многопротокольный маршрутизатор извлекает исходный IPv6-пакет и передает его дальше на хост назначения.

Путь через сеть IPv4 можно рассматривать как большой туннель, идущий от одного многопротокольного маршрутизатора до другого. IPv6-пакет просто перемещается от одного конца туннеля до другого в удобной «коробке». Ему не нужно беспокоиться о взаимодействии с сетью IPv4. Это также касается хостов Парижа и Лондона. Переупаковкой пакета и переадресацией занимаются многопротокольные маршрутизаторы. Для этого им нужно уметь разбираться в IPv6- и IPv4-пакетах. В результате весь путь от одного многопротокольного маршрутизатора до другого работает как один транзитный участок.

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

Туннелирование широко используется для соединения изолированных хостов и сетей посредством других сетей. В результате появляется новая сеть, которая, по сути, накладывается на старую. Она называется оверлейной сетью (overlay). Использование сетевого протокола с новым свойством (как в нашем примере, где сети IPv6 соединяются через IPv4) — достаточно распространенная причина применения этого метода. Недостатком туннелирования является то, что пакет невозможно доставить на хосты сети-посредника. Однако это становится преимуществом в сетях VPN. Это обычная оверлейная сеть, использующаяся в качестве меры безопасности. Более подробно о VPN мы поговорим в главе 8.

Илл. 5.39. Туннелирование автомобиля из Парижа в Лондон


5.5.5. Межсетевая маршрутизация

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

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

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

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

Следовательно, нам необходим двухуровневый алгоритм маршрутизации. В пределах каждой сети для маршрутизации используется внутридоменный (intradomain), или внутренний, шлюзовый протокол (термин «шлюз» ранее обозначал «маршрутизатор»). Это может быть обычный протокол, учитывающий состояние линий. Между сетями применяется междоменный (interdomain), или внешний, шлюзовый протокол. Сети могут использовать разные внутридоменные протоколы, но междоменный протокол должен быть общим. В интернете используется междоменный протокол пограничной маршрутизации (Border Gateway Protocol, BGP). Мы подробно обсудим его в разделе 5.7.7.

Здесь следует рассказать еще об одном важном понятии. Так как все сети управляются независимо, их часто называют автономными системами (АС). Хорошая умозрительная модель АС — сеть интернет-провайдера. На практике она может состоять из нескольких АС, если они управляются независимо. Но разница не слишком существенна.

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

До сих пор мы практически ничего не рассказали о том, как вычисляются маршруты в интерсети. В интернете ключевым фактором являются коммерческие договоренности между провайдерами. Каждый из них может взимать с других провайдеров плату за передачу трафика. Еще одна особенность — если при межсетевой маршрутизации пересекаются границы государств, в игру могут вступить их законы. Так, в Швеции персональные данные граждан находятся под строжайшей защитой. Все эти внешние предпосылки объединяются в понятие политики маршрутизации (routing policy), в соответствии с которой автономные сети выбирают пути. К этому понятию мы еще вернемся, когда будем говорить о BGP.


5.5.6. Поддержка различных размеров пакета: фрагментация пакета

Все сети и каналы накладывают на размер своих пакетов ограничения, обусловленные разными факторами:


1. Аппаратное обеспечение (например, размер фрейма Ethernet).

2. Операционная система (например, все буферы имеют размер 512 байт).

3. Протоколы (например, количество битов в поле длины пакета).

4. Соответствие какому-либо международному или национальному стандарту.

5. Желание снизить количество пакетов, отправляемых повторно из-за ошибок передачи.

6. Желание предотвратить ситуацию, когда один пакет слишком долгое время занимает канал.

С учетом всех этих факторов разработчики не могут выбирать максимальный размер пакета по своему усмотрению. Максимальный размер поля полезной нагрузки составляет 1500 байт для сети Ethernet и 2272 байта для 802.11. Протокол IP более щедр: размер пакета может достигать 65 515 байт.

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

Одно из решений проблемы состоит в ее предотвращении. Но сделать это непросто. Обычно отправитель не знает, по какому пути будут передаваться данные, а значит, ему неизвестно, какого размера должен быть пакет, чтобы добраться до места назначения. Такой размер пакета называется путевым значением MTU (Path Maximum Transmission Unit — максимальный размер пакета для выбранного пути). Неважно, знает ли отправитель путевое значение MTU. В сети, не требующей соединения (например, в интернете), маршруты в любом случае выбираются независимо. Это означает, что путь может неожиданно измениться, а тогда изменится и путевое значение MTU.

Альтернативное решение — позволить шлюзам разбивать пакеты на фрагменты (fragments) и отправлять каждый из них в виде отдельного пакета сетевого уровня. Однако, как известно любому родителю маленького ребенка, разобрать большой объект на мелкие части существенно проще, чем соединить их обратно. (Физики даже дали этому эффекту специальное название: второй закон термодинамики.) В сетях с коммутацией пакетов также существует проблема объединения фрагментов.

Для восстановления исходных пакетов применяются две противоположные стратегии. Согласно первой, порожденная сетью с малым размером пакетов фрагментация должна быть прозрачной для всех сетей, через которые пакет проходит на пути к адресату. Этот вариант показан на илл. 5.40 (а). Когда на G1 приходит слишком большой пакет, он разбивается на фрагменты. Все они адресуются одному и тому же выходному маршрутизатору G2, который восстанавливает из них исходный пакет. Таким образом, прохождение данных через сеть с небольшим размером пакетов оказывается прозрачным. Соседние сети даже не знают, что произошла фрагментация.

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

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

Илл. 5.40. Фрагментация. (а) Прозрачная. (б) Непрозрачная

Основное преимущество непрозрачной фрагментации состоит в том, что маршрутизаторы выполняют меньше работы. Так работает IP. При этом фрагменты пакета должны нумероваться таким образом, чтобы можно было восстановить исходный поток данных. В случае IP каждому фрагменту сообщается номер, который есть у каждого пакета, абсолютное байтовое смещение внутри пакета и метка, показывающая, является ли этот фрагмент последним в пакете. Пример такой фрагментации представлен на илл. 5.41. Схема очень проста, но обладает рядом важных преимуществ. По прибытии в место назначения фрагменты можно помещать в буфер в любом порядке. Кроме того, при пересечении сети с меньшим значением MTU фрагменты могут быть разбиты на более мелкие части (см. илл. 5.41 (в)). При повторной передаче (если не все фрагменты дошли до адресата) пакет может быть разделен по-другому. И наконец, размер фрагментов может быть произвольным, вплоть до одного байта (плюс заголовок). В любом случае пакет будет восстановлен: номер пакета и смещение помогут расположить данные в правильном прядке, а метка укажет на конец пакета.

К сожалению, у этой схемы есть недостатки. Во-первых, она может быть более затратной, чем прозрачная фрагментация, так как заголовки фрагментов иногда передаются по каналам, где без них можно обойтись. Но настоящая проблема заключается в самом существовании фрагментов. Кент и Могул (Kent and Mogul, 1987) считают, что фрагментация работает в ущерб производительности, так как при утере одного фрагмента теряется весь пакет (не говоря уже о затратах на заголовки). Для хостов фрагментация представляет большую нагрузку, чем предполагалось вначале.

Это возвращает нас к первоначальной идее полного избавления от фрагментации в сети. Стратегия, использующаяся в современном интернете, называется поиском путевого значения MTU (Path MTU discovery) (Могул и Диринг; Mogul and Deering, 1990). При отправке IP-пакета в его заголовке указывается, что фрагментация запрещена. Если маршрутизатор получает слишком большой пакет, он удаляет его и отправляет источнику сообщение об ошибке (илл. 5.42). Используя эту информацию, отправитель перераспределяет данные так, чтобы пакеты смогли пройти через маршрутизатор. Если такая проблема возникнет на одном из следующих маршрутизаторов, процесс повторится.

Илл. 5.41. Фрагментация при элементарном размере 1 байт. (а) Исходный пакет, содержащий 10 байт данных. (б) Фрагменты после прохождения через сеть с максимальным размером пакета 8 байт плюс заголовок. (в) Фрагменты после прохождения через шлюз размера 5

Илл. 5.42. Поиск путевого значения MTU

Преимущество поиска путевого значения MTU состоит в том, что теперь источник знает необходимый размер пакета. При изменении маршрута отправитель узнает новое значение MTU из новых сообщений об ошибке. Однако фрагментация между отправителем и получателем все равно необходима, если только значение MTU не вычислено на более высоком уровне и не передано IP. Чтобы обеспечить передачу такой информации, TCP и IP обычно используются вместе (в виде TCP/IP). И хотя для некоторых протоколов это пока не реализовано, фрагментация все же была перенесена из сети на хосты.

Недостатком этого метода является то, что отправка пакета может вызвать дополнительную задержку. Эта задержка может увеличиться в несколько раз в зависимости от того, сколько раз отправителю придется повторять отправку (меняя размер пакета), прежде чем какие-либо данные достигнут адресата. Возникает вопрос: существуют ли более эффективные схемы? Вероятно, да. Рассмотрим, к примеру, вариант, при котором слишком большие пакеты просто обрезаются. В таком случае адресат узнает путевое значение MTU максимально быстро (по размеру доставленного пакета), а также получает некоторую часть данных.

Загрузка...