Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы на вопросы по сетям.docx
Скачиваний:
2
Добавлен:
21.09.2019
Размер:
566.34 Кб
Скачать

1.6.Фрагментация

Все сети накладывают ограничения на размер своих пакетов. Эти пределы вызва- ны различными предпосылками, среди которых есть следующие: 1. Аппаратные (например, размер кадра Ethernet). 2. Операционная система (например, все буферы имеют размер 512 байт). 3. Протоколы (например, количество бит в поле длины пакета). 4. Соответствие какому-либо международному или национальному стандарту. 5. Желание снизить количество пакетов, пересылаемых повторно из-за ошибок передачи. 6. Желание предотвратить ситуацию, когда один пакет слишком долгое время занимает канал. Результатом действия всех этих факторов является то, что разработчики не могут выбирать максимальный размер пакета по своему усмотрению. Максималь- ный размер поля полезной нагрузки варьируется от 48 байт (ATM-ячейки) до 65 515 байт (IP-пакеты), хотя на более высоких уровнях размер поля полезной нагрузки часто бывает больше. Очевидно, возникает проблема, когда большой пакет хочет пройти по сети, в которой максимальный размер пакетов слишком мал. Одно из решений состо- ит в предотвращении возникновения самой проблемы. Другими словами, объе- диненная сеть должна использовать такой алгоритм маршрутизации, который не допускает пересылки пакетов по сетям, которые не могут их принять. Однако это решение вовсе не является решением. Что произойдет, если исходный пакет окажется слишком велик для сети адресата? Алгоритм маршрутизации будет в данном случае бессилен. Следовательно, единственное решение проблемы заключается в разрешении шлюзам разбивать пакеты на фрагменты и посылать каждый фрагмент в виде отдельного межсетевого пакета. Однако, как вам скажет любой родитель маленько- го ребенка, преобразование объекта в небольшие фрагменты существенно проще, чем обратный процесс. (Физики даже дали этому эффекту ломания игрушек спе- циальное название: второй закон термодинамики.) В сетях с коммутацией пакетов также существует проблема с восстановлением пакетов из фрагментов. Для восстановления исходных пакетов из фрагментов применяются две про- тивоположные стратегии. Первая стратегия заключается в том, чтобы фрагмента- ция пакета, вызванная сетью с пакетами малых размеров, оставалась прозрачной для обоих хостов, обменивающихся пакетом. Этот вариант показан на рис. 5.44, а. «Мелкопакетная» сеть имеет шлюзы (скорее всего, это специализированные маршрутизаторы), предоставляющие интерфейсы другим сетям. Когда на такой шлюз приходит пакет слишком большого размера, он разбивается на фрагменты. Каждый фрагмент адресуется одному и тому же выходному шлюзу, восстанавлива- ющему из этих фрагментов исходный пакет. Таким образом, прохождение дан- ных через мелкопакетную сеть оказывается прозрачным. Соседние сети даже не догадываются о том, что у них под боком пакеты страшным образом нарезаются, а потом снова склеиваются. В сетях ATM, например, есть даже специальная аппа- ратура для обеспечения прозрачной фрагментации пакетов (разбивания на ячей- ки) и обратной сборки ячеек в пакеты. В мире ATM фрагментацию называют сег- ментацией. Концепция та же самая, а отличия есть только в некоторых деталях.

Прозрачная фрагментация проста, но, тем не менее, создает некоторые про- блемы. Во-первых, выходной шлюз должен уметь определять момент получения последней части пакета, поэтому каждый фрагмент должен содержать либо поле счетчика, либо признак конца пакета. Во-вторых, все фрагменты должны выхо- дить через один и тот же шлюз. Таким образом, налагается запрет на использова- ние фрагментами различных путей к окончательному получателю, и в результа- те может оказаться потерянной часть производительности. Наконец, процессы фрагментации и последующей сборки пакетов при прохождении каждой сети с малым размером пакетов приводят к дополнительным накладным расходам. Се- тям ATM требуется прозрачная фрагментация. Другая стратегия фрагментации состоит в отказе от восстановления пакета из фрагментов на промежуточных маршрутизаторах. Как только пакет оказывается разбитым на отдельные фрагменты, с каждым фрагментом обращаются как с от- дельным пакетом. Все фрагменты проходят через выходной шлюз (или несколь- ко), как показано на рис. 5.44, б. Задача восстановления оригинального пакета возложена на получающий хост. Так работает IP. С непрозрачной фрагментацией связаны свои проблемы. Например, она тре- бует, чтобы каждый хост мог восстановить пакет из фрагментов. Кроме того, при фрагментации большого пакета возрастают суммарные накладные расходы, так как каждый фрагмент должен иметь заголовок. В то время как в случае прозрач- ной фрагментации лишние заголовки при выходе из мелкопакетной сети исчеза- ли, в данном методе накладные расходы сохраняются на протяжении всего пути. Однако преимущество непрозрачной фрагментации состоит в возможности ис- пользовать для передачи фрагментов несколько различных маршрутов, что по- вышает производительность. Естественно, при использовании модели сцеплен- ных виртуальных каналов это преимущество оказывается бесполезным. Фрагменты пакета должны нумероваться таким образом, чтобы можно было восстановить исходный поток данных. Один из способов нумерации фрагментов состоит в использовании дерева. Если пакет 0 должен быть расщеплен, фрагмен- ты получают номера 0.0, 0.1, 0.2 и т. д. Если эти фрагменты в дальнейшем сами фрагментируются, получающиеся кусочки нумеруются так: 0.0.0, 0.0.1, 0.0.2, ..., 0.1.0, 0.1.1, 0.1.2 и т. д. Если в заголовках зарезервировано достаточно места для случая наиболее глубокого разбиения и при этом отсутствуют дубликаты, то та- кая схема гарантирует правильную сборку пакета получателем независимо от порядка, в котором будут получены отдельные фрагменты. Однако если одна из сетей нечаянно потеряет или удалит один или несколько фрагментов, то понадобится повторная передача всего пакета с тяжелыми по- следствиями для системы нумерации. Представим, что передается пакет длиной 1024 байта. При первой передаче пакета он разбивается на четыре одинаковых фрагмента с номерами 0.0, 0.1, 0.2 и 0.3. Фрагмент 0.1 теряется по дороге, а ос- тальные успешно добираются до получателя. Отправитель не получает подтвер- ждения на переданный пакет и посылает его снова. Но на этот раз срабатывает закон бутерброда (или закон Мерфи): пакет пересылается по другому маршруту и проходит через сеть с 512-байтовым ограничением на размер пакетов, поэтому пакет разбивается всего на два фрагмента. Получив фрагмент с номером 0.1, по- лучатель может подумать, что это — как раз недостающая деталь, и в результате соберет пакет неверно. Совершенно иной и гораздо более совершенный подход к решению данной проблемы состоит в определении размера элементарного фрагмента, достаточно малого, чтобы он мог пройти по любой сети. То есть пакет разбивается на эле- ментарные фрагменты одинакового размера плюс довесок, который может быть только короче всех остальных. Для пущей эффективности межсетевой пакет мо- жет содержать несколько фрагментов. Межсетевой заголовок должен содержать номер исходного пакета и номер (первого) элементарного фрагмента, содержа- щегося в нем. Как обычно, в заголовке должен содержаться признак конца ис- ходного пакета. Такой подход требует включения в заголовок межсетевого пакета двух полей: порядкового номера исходного пакета и порядкового номера фрагмента. Есть впол- не очевидный компромисс между размером элементарного фрагмента и числом бит номера фрагмента. Поскольку размер элементарного пакета выбирается та- ким образом, что он может пройти по любой сети, дальнейшая фрагментация межсетевого пакета не составляет проблемы. Последним пределом является эле- ментарный фрагмент размером с бит или байт, при этом номер фрагмента, содер- жащийся в заголовке пакета, превращается в смещение до этого бита или байта (рис. 5.45).

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