3.5.1. Передача пакетов по протоколу SONET
SONET, с которым мы познакомились в главе 2, — это протокол физического уровня, который наиболее часто используется в оптоволоконных каналах, составляющих магистраль различных коммуникационных сетей, включая телефонную. Этот протокол обеспечивает хорошую, строго определенную скорость передачи данных (например, 2,4 Гбит/с в канале OC-48). Поток бит организован в виде пакетов фиксированного размера, которые посылаются каждые 125 мкс, независимо от того, содержат ли они пользовательские данные.
Для передачи пакетов по таким каналам необходим некоторый механизм формирования кадров, способный отличать иногда возникающие пакеты от непрерывного потока бит, в котором они передаются. Для обеспечения такого механизма на IP-маршрутизаторах работает протокол PPP, как показано на рис. 3.16.
Рис. 3.16. Пакеты передаются по протоколу SONET: а — стек протоколов; б — взаимоотношение между кадрами
PPP — это улучшенный вариант более простого протокола под названием SLIP (Serial Line Internet Protocol, интернет-протокол для последовательной линии),
выполняющий обнаружение ошибок, поддерживающий несколько протоколов, разрешающий аутентификацию и имеющий ряд других свойств. Благодаря широкому набору настроек PPP обеспечивает три основных набора методов.
1. Метод формирования кадров, однозначно обозначающий конец одного кадра и начало следующего. Формат кадров также обеспечивает обнаружение ошибок.
2. Протокол управления каналом, позволяющий устанавливать каналы связи, тестировать их, договариваться о параметрах их использования и снова отключать их, когда они не нужны. Этот протокол называется LCP (Link Control Protocol).
3. Способ договориться о параметрах сетевого уровня, который не зависит от используемого протокола сетевого уровня. Для каждого поддерживаемого сетевого уровня этот метод должен иметь свой сетевой протокол управления (NCP, Network Control Protocol).
Чтобы не изобретать велосипед, был выбран формат кадра PPP, близкий к формату кадра HDLC (High-level Data Link Control, высокоуровневый протокол управления каналом) — некогда популярного представителя раннего семейства протоколов.
В отличие от бит-ориентированного протокола HDLC, PPP является байториентированным. В частности, в PPP применяется символьное заполнение, поэтому все кадры состоят из целого числа байт. С помощью протокола PPP невозможно послать кадр, состоящий из 30,25 байт, как это можно было сделать в протоколе HDLC.
Однако практическое значение имеет второе очень важное отличие. HDLC обеспечивает надежную передачу за счет метода скользящего окна, подтверждений и таймаутов — как мы видели выше. PPP также обеспечивает надежную передачу в шумных средах, таких как беспроводные сети; детали протокола определены в стандарте RFC 1663. Однако на практике это применяется редко. Вместо этого в Интернете для обеспечения сервиса без установки соединения и без подтверждений применяется «ненумерованный режим».
Формат кадра PPP показан на рис. 3.17. Все PPP-кадры начинаются со стандартного флагового байта протокола HDLC 0x7E (01111110). Если этот байт встречается в поле Данные (Payload), он предваряется управляющим байтом 0x7D, а следующий за ним байт представляет собой предваряемый байт, сложенный по модулю 2 со значением 0x20 (при этом переключается пятый бит). Например, 0x7D 0x5E — это управляющая последовательность для флагового байта 0x7E. Это означает, что начало и конец кадра можно найти, просто просканировав содержимое на наличие байта 0x7E. Больше он нигде встречаться не будет. Правило удаления заполняющих битов при получении — найти значение 0x7D, удалить его, а следующий байт сложить по модулю 2 со значение 0x20. Кроме того, между кадрами необходим только один флаговый байт. Несколько флаговых байтов могут применяться для заполнения канала, когда кадров с данными для отправки получателю нет.
После стартового кадра идет поле Адрес (Address), которому всегда присваивается двоичное значение 11111111, это означает, что все станции должны принимать этот кадр. Использование такого адреса позволяет избежать необходимости назначения адресов передачи данных.
Рис. 3.17. Полный формат кадра PPP для работы в ненумерованном режиме
За полем адреса следует Управляющее поле (Control), его значение по умолчанию равно 00000011. Это число означает ненумерованный кадр.
Так как в конфигурации по умолчанию поля Адрес и Управляющее поле являются константами, протокол LCP предоставляет возможность двум сторонам договориться о возможности пропускать оба поля и сэкономить, таким образом, по 2 байта на кадр.
Четвертое поле кадра PPP — Протокол (Protocol). Оно определяет тип пакета, содержащегося в поле Данные. Номера, начинающиеся с бита 0, отведены для протокола IP версий 4 и 6 и других протоколов сетевого уровня, таких как IPX и AppleTalk. С бита 1 начинаются коды, используемые для конфигурационных протоколов PPP, включая LCP и различные протоколы NCP для каждого поддерживаемого протокола сетевого уровня. Размер поля Протокол по умолчанию составляет 2 байта, однако путем переговоров с помощью LCP этот размер может быть уменьшен до одного байта. Разработчики, вероятно, перестраховались на случай, если когда-либо будет использоваться более 256 протоколов.
Поле Данные может быть переменной длины, вплоть до некоего оговоренного максимального значения. Если размер не оговорен во время установки соединения при помощи LCP, то по умолчанию используется длина 1500 байт. При необходимости данные пользователя могут дополняться специальными символами.
Следом за полем Данные располагается поле Контрольная сумма (Checksum), которое в обычном состоянии занимает 2 байта, но в случае необходимости по договоренности может занимать 4. 4-байтовая контрольная сумма фактически представляет собой 32-битный код CRC, порождающий многочлен которого показан в соответствующем разделе выше. 2-байтовая контрольная сумма также является стандартным кодом CRC.
Итак, PPP является механизмом формирования кадров, поддерживающим различные протоколы, которым можно пользоваться в различных физических средах. Различные варианты использования PPP в сетях SONET описаны в стандарте RFC 2615 (Malis, Simpson, 1999). Применяется 4-байтовая контрольная сумма, так как она считается основным способом распознавания ошибок передачи на физическом уровне, уровне передачи данных и сетевом уровне. Рекомендуется не сжимать поля Адрес, Управляющее поле и Протокол, так как каналы SONET и так работают на относительно высокой скорости.
Есть и еще одна интересная особенность. Перед тем как попасть в поток данных SONET, полезная информация протокола PPP шифруется (подробнее об этом выше). При шифровании данные складываются по модулю 2 с длинной псевдослучайной последовательностью. Только после этого они пересылаются получателю. Проблема в том, что потоку данных SONET для успешной синхронизации требуется частая смена значений бит. В колебаниях голосового сигнала это происходит естественным образом, но при пересылке данных только пользователь выбирает, какую информацию отправлять, и это может быть, например, длинная последовательность нулей. Благодаря шифрованию вероятность того, что пользователь сам вызовет проблемы, передав длинную последовательность нулей, сводится почти к нулю.
Перед тем как передавать кадры PPP по каналу SONET, необходимо установить и сконфигурировать соединение PPP. Состояния, через которые проходит линия связи при ее установлении, использовании и разъединении, показаны на рис. 3.18.