Глава 9 | «« Назад |  Оглавление |  Вперед »»

Сетевой уровень.

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

По сети произвольной топологии дейтаграмма перемещается на основании адреса пункта назначения и адреса источника, и делает это независимо от всех остальных дейтаграмм. В качестве примера протоколов сетевого уровня можно привести X.25, IPX, и, конечно, популярнейший на сегодня Internet протокол - IP.

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

Наиболее важный вопрос передачи данных, адресация, может быть решен двумя способами. Во-первых, с использованием совпадающих, во-вторых - различных сетевых и канальных адресов. Первый способ (например, протокол IPX) упрощает администрирование локальной сети. Второй обеспечивает гибкость, независимость от аппаратной части, и логическое единство адресного пространства. Эти преимущества позволили способу адресации, использующему различные сетевые и канальные адрес, получить распространение в сети Интернет (под названием Internet Protocol, IP), практически вытеснив все остальные способы передачи данных.

Все остальные протоколы (кроме ARP/RARP, который часто относят к протоколу канального уровня) используют IP для передачи данных между узлами сети.

Логика передачи пакетов на сетевом уровне

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

Устройства, способные выделять IP дейтаграммы из кадров, определять их маршрут назначения, и упаковывать дейтаграммы опять в кадры канального уровня (обычно, уже другой сети), называются маршрутизаторами (router). Таким образом, упрощенно можно представить Интернет как совокупность сетей разного типа, объединенных посредством маршрутизаторов.

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

При этом для каждой сети, или группы сетей задаются правила (адреса маршрутизатора), в соответствии с которыми должны быть переданы дейтаграммы для достижения узла назначения. Причем в качестве правил могут быть указаны только адреса, до которых может быть проведена непосредственная доставка (next hop routing). Таким образом, на каждом маршрутизаторе задаются только адреса сетей, с которыми он имеет прямую связь, а не полную информацию о маршруте.

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

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

Исходя из такого способа доставки сообщений, удобно, что бы каждый из узлов имел уникальный сетевой адрес, состоящий из двух частей - адреса сети (Net ID) и адреса узла (Host ID). Для установки соответствия между адресами канального и сетевого уровня используется специальный протокол разрешения адресов (Address Resolution Protocol, ARP). При составлении и модификацией таблиц маршрутизации используются RIP (Routing Internet Protocol) и OSPF (Open Shortest Path First), а также протокол межсетевых управляющих сообщений ICMP (Internet Control Message Protocol).

Структура протокольных модулей сети, построенной на основе IP.

Рис. 9.8. Структура протокольных модулей сети, построенной на основе IP

В общем виде схема достаточно сложная (более того, спорная), ее подробное рассмотрение лежит далеко за рамками рассматриваемого в данной книге материала.

Тем не менее, в следующих главах постараемся рассмотреть основные принципы передачи данных на сетевом уровне.

Протокол адресации (IP)

Основными функциями протокола IP можно назвать разделение данных (передаваемых протоколами более высокого уровня) на дейтаграммы для их доставки получателю в другой сети, и сборку блоков данных из дейтаграмм при их получении от других узлов сети. Для этого к данным присоединяется специальный заголовок унифицированного формата, который для используемой в настоящее время четвертой версии IP может иметь длину до 20 байт (пять 32-х битовых слов).

Таб. 9.3. Формат дейтаграммы IP

Версия Длина Тип сервиса Общий размер
Идентификация Флаги Смещение фрагмента
Время жизни Протокол Контрольная сумма заголовка
Адрес отправителя
Адрес получателя
Опции и заполнение
Данные

Заголовок дейтаграммы IP имеет следующие поля:

  • Номер версии (Vers) протокола IP.
  • Длина заголовка (Hlen), измеренная в 32-битовых словах. Как правило, заголовок составляет 20 байт (пять 32-битовых слов). Но в теории, он может быть увеличен за счет использования поля Резерва (IP OPTIONS).
  • Тип сервиса (Servise type) задает приоритетность дейтаграммы, и критерий выбора способа доставки. Маршрутизаторы могут использовать это поле (вернее, его первые три бита) для установления очередности обработки сообщений. Для обычного пакета данных значение поля устанавливается равным "0", а для управляющей информации (максимальный приоритет) - "7". Следующие три бита определяют способ доставки. Так, значение "D" (delay) предписывает использовать путь с минимальной задержкой доставки, "T" - для достижения максимальной пропускной способности, "R" - с использованием пути, имеющего максимальную надежность доставки.
  • Общая длина (Total length) с учетом заголовка и поля данных. Надо заметить, что максимальный размер дейтаграммы IP определяется для каждого типа сетей по максимальной единице транспортировки (Maximum Transfer Unit, MTU). Для сети Ethernet она имеет значение, равное 1500 байт, а сеть Х.25 используют MTU в 128 байт.
  • Идентификатор (Identification) используется для определения дейтаграмм, до фрагментации являющихся частями одного блока данных.
  • Флаги (Flags) позволяют управлять фрагментацией данных. Так, установленный бит DF (Do not Fragment) запрещает маршрутизатору разделять данную дейтаграмму, а бит MF (More Fragments) - признак того, что дейтаграмма содержит промежуточный фрагмент.
  • Смещение фрагмента (Fragment offset) используется сборке/разборке частей пакетов при передачах их между сетями с различными величинами максимальной длины дейтаграммы. Для этого указывается в байтах смешение начала фрагмента, вошедшего в дейтаграмму, от начала общего блока данных, подвергнутого фрагментации.
  • Время жизни (Time to live) определяет предельный срок, в течение которого дейтаграмма может перемещаться по сети. При значении этого поля, равном "0", дейтаграмма уничтожается. Время измеряется в секундах, и вычитается на транзитных узлах при передаче (единица вычитается даже в том случае, если передача заняла меньшее время). При современных скоростях передачи, можно считать, что время жизни задается числом транзитных узлов.
  • Идентификатор протокола верхнего уровня (Protocol) указывает на протокол верхнего уровня, которому принадлежит дейтаграмма.
  • Контрольная сумма (Header Checksum), которая рассчитывается по всему заголовку на каждой точке обработки дейтаграммы.
  • Адрес источника (Source IP address) и Адрес назначения (Destination IP address) служат для доставки дейтаграммы, и получения ответа.
  • Резерв (IP options) является необязательным и, как правило, используется на стадии при отладке сети.

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

IP-адрес состоит из 4 байт (одно 32-битное слово), которое принято записывать в десятичном виде. Например, 192.168.0.2 - адрес одного из сетевых адаптеров моего компьютера в маленькой изолированной "квартирной" сети. Если записать этот же адрес в двоичном виде, получится 11000000-10101000-00000000-00000010. Биты, входящие в адрес, часто называют октетами.

Как уже говорилось выше, IP-адрес состоит из двух частей: номера сети и номера узла. Если устройство является частью сети Интерент, то адрес сети назначается согласно рекомендациям одного из подразделений Сетевого Информационного Центра (Network Information Center, NIC). Для независимой (закрытой) сети администратор может назначить адреса самостоятельно.

На практике сложилось, что Интернет-провайдеры сначала получают диапазоны адресов (подсети) в NIC для себя, а далее предоставляют их своим клиентам на тех, или иных условиях.

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

В начале развития сети Интеренет для удобства управления адресным пространством введено деление сетей на классы "Классовая модель", но впоследствии была повсеместно принята "Безклассовая модель" (CIDR).

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

Таб. 9.4. Деление IP сетей на классы

Класс Диапазон значений первого октета Значения адреса в десятичной записи Возможное
кол-во сетей
Возможное
кол-во узлов
A от 00000001-…
до 01111110-…
от 1.ххх.xxx.xxx
до 126.ххх.ххх.ххх
126 16777214
B от 1000000-00000000-…
до 1011111-11111111-…
от 128.0.ххх.ххх
до 191.255.ххх.ххх
16382 65534
C от 1100000-00000000-00000000…
до 1101111-11111111-11111111…
от 192.0.0.ххх
до 223.255.255.ххх
2097150 254
D от 1110000-…
до 1110111-…
от 224.ххх.ххх.ххх
до 239.ххх.ххх.ххх
- 268435456
E от 1111000-…
до 1111111-…
от 240.ххх.ххх.ххх
до 255.ххх.ххх.ххх
- 134217728

Понятно, что адреса класса A предназначены для использования в очень больших сетях общего пользования (например, национальных). Класс B может найти применение в сетях крупных провайдеров или компаний (при американском толковании масштабов). Небольшим провайдерам, или сетям, приходится иметь дело в основном с сетями класса C, которые позволяют адресовать 254 узла. Адреса класса D используются при обращениях к группам машин, а адреса класса E зарезервированы для использования в эксперементальных целях.

В любой сети первый (вернее, нулевой) адрес является номером всей сети и не может быть присвоен никому конкретно. Адрес, являющийся последним в сети, предназначен для широковещательных (broadcasting) сообщений, которые доставляются всем узлам данной сети. Соответственно, эти два адреса недоступны для узлов. Именно поэтому, в сети класса С можно адресовать не 256, а только 254 узла.

Кроме этого, зарезервировано несколько групп адресов специального назначения. Так, сеть класса A с номером 127 (loopback), предназначена для общения компьютера с собой. При посылке данных на этот адрес, они не передаются по сети, а возвращаются протоколам верхнего уровня. Поэтому, узлам запрещено присваивать адреса этой сети, и считается, что она не входит в адресное пространство Интернет.

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

Есть еще одно важное соглашение (RFC 1918) о сетях, которые считаются "частными", т.е. не маршрутизируемыми в сети Интернет. Это блоки адресов от 10.0.0.0 - 10.255.255.255 (сеть класса А), 172.16.0.0-172.31.255.255 (16 сетей класса В), 192.168.0.0-192.168.255.255 (255 сетей класса С). Такие адреса часто используются для маскарадинга, транзитных, или изолированных сетей. В этом случае даже ошибки в маршрутизации не вызовут сбоев в работе других узлов Интернет.

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

В классовой модели старшие биты IP-адреса определяли принадлежность узла к конкретному классу, и соответственно по нему маршрутизаторы определяли размер сети. Для претворения в жизнь технически привлекательного принципа произвольного разделения адресного пространства пришлось ввести 32-битовую маску (netmask) или маску подсети (subnet mask).

Сетевая маска действует по следующему простому принципу:
в позициях, соответствующих номеру сети, биты установлены в 1;
в позициях, соответствующих номеру хоста, биты сброшены в 0.

Таким образом, был разработана "безклассовая модель" адресации (CIDR, Classless Internet Direct Routing, прямая бесклассовая маршрутизация). В ней отсутствуют технические причины разделения сеть-хост в IP-адресе точно по границе октета. И вдобавок, схема может быть иерархической. При этом крупные магистральные маршрутизаторы обрабатывают проходящий трафик в соответствии с правилами для полных сетей, даже не подозревая о том, что они где-то разделены на подсети. Таким образом, нагрузка "перекладывается" на периферийные маршрутизаторы.

Рассмотрим этот вопрос на наиболее распространенном случае разделения сети класса С, например 192.168.25.0 с маской 255.255.255.0 (11111111. 11111111. 11111111.00000000), или, в компактной форме записи, 192.168.25.0/24 (24-количество значащих разрядов маски).

Таб. 9.5. Возможные варианты разделения сети класса С на подсети.

Запись маски Последний октет маски Количество подсетей Количество адресов в подсети Количество значащих разрядов
255.255.255.252 11111100 64 4 30
255.255.255.248 11111000 32 8 29
255.255.255.240 11110000 16 16 28
255.255.255.224 11100000 8 32 27
255.255.255.192 11000000 4 64 26
255.255.255.128 10000000 2 128 25

Нужно иметь в виду, что "нулевой" адрес в каждой подсети (например, 192.168.25.64/255.255.255.192) является собственно адресом сети, а последний (192.168.25.127/255.255.255.192) - бродкастовым. Использовать их для узлов нельзя, и, соответственно, теоретически возможная маска 255.255.255.254 не может быть применена. Вариант с 255.255.255.252 имеет всего 2 реальных адреса, и может быть использован в ограниченном числе случаев.

В остальном, нужно отметить, что возможны самые разные варианты разделения сетей. Так, например, сеть класса "С" можно представить как сумму из 2*4+1*8+1*16+3*32+2*64. Но при этом будет "потеряно" 16 адресов.

Роль подсетей нельзя недооценивать. Например, с точки зрения маршрутизатора адрес 192.168.25.149/255.255.255.128 (192.168.25.149/25) будет выглядеть как номер сети 192.168.25.128 и номер узла 21, что несколько отличается от привычной записи, и может породить серьезные проблемы.

Протокол преобразования адресов ARP (RARP)

Как уже было сказано выше, маршрутизаторы упаковывают дейтаграммы IP в кадры локальных сетей (обычно Ethernet). Для установления соответствия MAC по IP адресу они используют специальный протокол разрешения адреса (Address Resolution Protocol, ARP). Соответственно, для решения обратной задачи (установления IP по известному MAC-адресу) используется реверсивный протокол разрешения адреса (Reverse Address Resolution Protocol, RARP). Классический случай применения RARP - старт рабочей станции, у которой IP-адрес не установлен в явном виде.

Алгоритм работы протокола следующий:

  1. Маршрутизатор, которому необходимо доставить дейтаграмму IP-адреса узлу в локальной сети, формирует ARP-запрос, и вкладывает его в кадр широковещательной рассылки.
  2. Все узлы локальной сети получают кадр с ARP-запросом, и сравнивают указанный там IP-адрес с собственным.
  3. При совпадении адресов, узел формирует ARP-ответ (совпадающий по формату с ARP-запросом), в котором указывает свой IP-адрес и МАС-адрес, и отправляет его маршрутизатору.
  4. После получения кадра маршрутизатор отправляет по MAC-адресу IP-дейтаграмму адресату.

Работа протокола занимает вполне определенное, и часто не малое время, за которое дейтаграмма может быть потеряна (превысит время хранения в кэше сетевого адаптера). Поэтому, маршрутизаторы и рабочие станции с сети хранят таблицу соответствия (ARP-таблицу), по которой отправка производится без посылки ARP-запроса.

Кроме IP и МАС-адреса, в таблице хранится возраст записи, что позволяет ее обновлять по определенным условиям. Далее, нужно особо отметить, что во многих операционных системах таблица может быть сформирована вручную администратором сети. Такая возможность часто используется для установления жесткого соответствия MAC и IP адреса узла для ограничения несанкционированного доступа к различным ресурсам.

Таб. 9.6. Формат пакета протокола ARP/RARP в Ethernet

Тип оборудования (для Ethernet - 1) Тип протокола (для IP-0800)
Длина МАС-адреса Длина IP-адреса Операция. 1-ARP (запрос), 2-ARP (ответ), 3-RARP (запрос), 4-RARP (ответ)
Аппаратный адрес (для Ethernet МАС) отправителя (байты 9-14)
IP-адрес отправителя (байты 15-18)
Аппаратный адрес (для Ethernet МАС) получателя (байты 19-24)
IP-адрес получателя (байты 25-28)

В общем случае, форматы локальных адресов различны для разных видов протоколов. Поэтому красивую таблицу с определенными заранее полями составить сложно. Так как длина МАС-адреса в Ethernet составляет 6 байт, а IP - 4 байта, получается, что запрос занимает 28 байт.

Мультипротокольная коммутация меток (протокол MPLS)

Одно из узких мест IP связано с низкой скоростью маршрутизации данных. Действительно, пограничные рутеры должны прочитывать все заголовки IP-кадров что бы перепрвить их на нужный интерфейс. Конечно, есть много фирменных технологий, ускоряющих процесс... Однако методов, позволяющих ускорить маршрутизацию всей сети сразу не так и много. Наиболее популярным последнее время стал MPLS (разработка Cisco).

Принципиальной основой MPLS являются IP-туннели. Для его работы нужна поддержка протокола маршрутизации MP-BGP. Протокол MPLS может работать практически для любого маршрутизируемого транспортного протокола (не только IP).

При появлении пакета в виртуальной сети ему присваивается метка, которая не позволяет ему покинуть пределы данной виртуальной сети. Протокол MPLS предоставляет возможность обеспечения значения QoS, гарантирующего более высокую безопасность. Для обеспечения структурирования потоков в пакете создается стек меток, каждая из которых имеет свою зону действия. Формат стека меток представлен на рис. 3 (смотри RFC-3032). В норме стек меток размещается между заголовками сетевого и канального уровней (соответственно L2 и L3). Каждая запись в стеке занимает 4 октета.

MAC-заголовок Стек меток MPLS IP-заголовок

Место заголовка МАС может занимать заголовок РРР. В случае работы с сетями АТМ метка может занимать поля VPI и VCI.

В свою очередь, стек MPLS выглядит следующим образом:

CoS
Метка S TTL Стек
20 бит 3 бита 1 бит 8 бит -

Полю СoS соответствует приоритет поля ToS. Поле CoS имеет три бита, что достаточно для поля приоритета IP-заголовка. S - флаг-указатель дна стека меток; TTL - время жизни пакета MPLS.

MPLS представляет собой интеграцию технологий уровней L2 и L3. Управление коммутацией по меткам основывается на базе данных LIB (Label Information Base). Пограничный маршрутизатор MPLS LER (Label Edge Router) удаляет метки из пакетов, когда пакет покидает облако MPLS, у вводит их во входящие пакеты.

Управление трафиком MPLS автоматически устанавливает и поддерживает туннель через опорную сеть. Путь туннеля вычисляется, основываясь на сформулированных требованиях и имеющихся ресурсах (constraint-based routing). IGP автоматически маршрутизирует трафик через эти туннели. Обычно, пакет, проходящий через опорную сеть MPLS движется по одному туннелю от его входной точки к выходной.

Глава 9 | «« Назад |  Оглавление |  Вперед »»