Логика передачи пакетов на сетевом уровне
Как было описано выше, взаимодействие на канальном уровне ограничивается локальной сетью, и механизм передачи кадров между разными сетями отсутствует (без их фактического объединения). Поэтому реально кадры Ethernet передают не данные, а дейтаграммы сетевого уровня, которые занимают место данных. Устройства, способные выделять IP дейтаграммы из кадров, определять их маршрут назначения, и упаковывать дейтаграммы опять в кадры канального уровня (обычно, уже другой сети), называются маршрутизаторами (router). Таким образом, упрощенно можно представить Интернет как совокупность сетей разного типа, объединенных посредством маршрутизаторов. Для определения маршрута следования дейтаграммы, используются специальные таблицы маршрутизации, которые могут быть задана администратором (статически), или определена маршрутизатором при помощи специальных (и достаточно сложных) протоколов взаимодействия (динамически). При этом для каждой сети, или группы сетей задаются правила (адреса маршрутизатора), в соответствии с которыми должны быть переданы дейтаграммы для достижения узла назначения. Причем в качестве правил могут быть указаны только адреса, до которых может быть проведена непосредственная доставка (next hop routing). Таким образом, на каждом маршрутизаторе задаются только адреса сетей, с которыми он имеет прямую связь, а не полную информацию о маршруте. Более того, нет необходимости одного "сквозного" протокола для всего пути дейтаграммы. Для ее передачи между компьютерами, которые подключены к разным локальным сетям (подсетям), нужно провести следующие действия.
Исходя из такого способа доставки сообщений, удобно, что бы каждый из узлов имел уникальный сетевой адрес, состоящий из двух частей - адреса сети (Net ID) и адреса узла (Host ID). Для установки соответствия между адресами канального и сетевого уровня используется специальный протокол разрешения адресов (Address Resolution Protocol, ARP). При составлении и модификацией таблиц маршрутизации используются RIP (Routing Internet Protocol) и OSPF (Open Shortest Path First), а также протокол межсетевых управляющих сообщений ICMP (Internet Control Message Protocol). Рис. 9.8. Структура протокольных модулей сети, построенной на основе IP В общем виде схема достаточно сложная (более того, спорная), ее подробное рассмотрение лежит далеко за рамками рассматриваемого в данной книге материала. Тем не менее, в следующих главах постараемся рассмотреть основные принципы передачи данных на сетевом уровне. Протокол адресации (IP) Основными функциями протокола IP можно назвать разделение данных (передаваемых протоколами более высокого уровня) на дейтаграммы для их доставки получателю в другой сети, и сборку блоков данных из дейтаграмм при их получении от других узлов сети. Для этого к данным присоединяется специальный заголовок унифицированного формата, который для используемой в настоящее время четвертой версии IP может иметь длину до 20 байт (пять 32-х битовых слов). Таб. 9.3. Формат дейтаграммы IP
Заголовок дейтаграммы IP имеет следующие поля:
Остановимся подробнее на IP-адресах, по которым происходит доставка дейтаграмм. На практике существует достаточно сложный механизм, позволяющий эффективно организовывать этот процесс. IP-адрес состоит из 4 байт (одно 32-битное слово), которое принято записывать в десятичном виде. Например, 192.168.0.2 - адрес одного из сетевых адаптеров моего компьютера в маленькой изолированной "квартирной" сети. Если записать этот же адрес в двоичном виде, получится 11000000-10101000-00000000-00000010. Биты, входящие в адрес, часто называют октетами. Как уже говорилось выше, IP-адрес состоит из двух частей: номера сети и номера узла. Если устройство является частью сети Интерент, то адрес сети назначается согласно рекомендациям одного из подразделений Сетевого Информационного Центра (Network Information Center, NIC). Для независимой (закрытой) сети администратор может назначить адреса самостоятельно. На практике сложилось, что Интернет-провайдеры сначала получают диапазоны адресов (подсети) в NIC для себя, а далее предоставляют их своим клиентам на тех, или иных условиях. Особо надо отметить, что не только каждый узел сети может иметь несколько адресов. Одному сетевому адаптеру (интерфейсу) могут быть назначены различные адреса, или, наоборот, нескольким интерфейсам - один адрес. Система управления достаточно гибкая, описать все ее возможности сложно. В начале развития сети Интеренет для удобства управления адресным пространством введено деление сетей на классы " Классовая модель ", но впоследствии была повсеместно принята " Безклассовая модель " (CIDR). Рассмотрим классовую модель. В ней граница между сетевой частью IP-адреса, и части, предназначенной для идентификации хостов, всегда проходит по границе октета. Т.е. возможно четыре и только четыре типа сети. Таб. 9.4. Деление IP сетей на классы
Понятно, что адреса класса 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). Сетевая маска действует по следующему простому принципу: Таким образом, был разработана "безклассовая модель" адресации (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. Возможные варианты разделения сети класса С на подсети.
Нужно иметь в виду, что "нулевой" адрес в каждой подсети (например, 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-адрес не установлен в явном виде. Алгоритм работы протокола следующий:
Работа протокола занимает вполне определенное, и часто не малое время, за которое дейтаграмма может быть потеряна (превысит время хранения в кэше сетевого адаптера). Поэтому, маршрутизаторы и рабочие станции с сети хранят таблицу соответствия (ARP-таблицу), по которой отправка производится без посылки ARP-запроса. Кроме IP и МАС-адреса, в таблице хранится возраст записи, что позволяет ее обновлять по определенным условиям. Далее, нужно особо отметить, что во многих операционных системах таблица может быть сформирована вручную администратором сети. Такая возможность часто используется для установления жесткого соответствия MAC и IP адреса узла для ограничения несанкционированного доступа к различным ресурсам. Таб. 9.6. Формат пакета протокола ARP/RARP в Ethernet
В общем случае, форматы локальных адресов различны для разных видов протоколов. Поэтому красивую таблицу с определенными заранее полями составить сложно. Так как длина МАС-адреса в Ethernet составляет 6 байт, а IP - 4 байта, получается, что запрос занимает 28 байт. Мультипротокольная коммутация меток (протокол MPLS) Одно из узких мест IP связано с низкой скоростью маршрутизации данных. Действительно, пограничные рутеры должны прочитывать все заголовки IP-кадров что бы перепрвить их на нужный интерфейс. Конечно, есть много фирменных технологий, ускоряющих процесс... Однако методов, позволяющих ускорить маршрутизацию всей сети сразу не так и много. Наиболее популярным последнее время стал MPLS (разработка Cisco). Принципиальной основой MPLS являются IP-туннели. Для его работы нужна поддержка протокола маршрутизации MP-BGP. Протокол MPLS может работать практически для любого маршрутизируемого транспортного протокола (не только IP). При появлении пакета в виртуальной сети ему присваивается метка, которая не позволяет ему покинуть пределы данной виртуальной сети. Протокол MPLS предоставляет возможность обеспечения значения QoS, гарантирующего более высокую безопасность. Для обеспечения структурирования потоков в пакете создается стек меток, каждая из которых имеет свою зону действия. Формат стека меток представлен на рис. 3 (смотри RFC-3032). В норме стек меток размещается между заголовками сетевого и канального уровней (соответственно L2 и L3). Каждая запись в стеке занимает 4 октета.
Место заголовка МАС может занимать заголовок РРР. В случае работы с сетями АТМ метка может занимать поля VPI и VCI. В свою очередь, стек MPLS выглядит следующим образом:
Полю С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 движется по одному туннелю от его входной точки к выходной.
|