IP-сети - Протоколы межсетевого уровня

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 23:17, 26 января 2015.
Данная статья была согласована с её автором Р.А. Бельферым 28 апреля 2012 года.

__NUMBEREDHEADINGS__

Формат IP-пакета

Основным протоколом межсетевого уровня является протокол IP (Internet Protocol). IP - протокол выполняет функцию продвижения пакета между подсетями. Формат IP-пакета включает поле заголовка этого пакета и поле полезного груза. Под полезным грузом понимается поле, включающее заголовок сообщения транспортного уровня и данные прикладного уровня. В отличие от протоколов прикладного и транспортного уровней протокол IP устанавливается не только на оконечных станциях, но и на всех маршрутизаторах сети. IP - протокол является дейтаграммным ненадежным (без подтверждения) протоколом без установления соединений, т.е. дейтаграммным. Термин “ненадежный” отражает тот факт, что протокол IP не делает ничего, чтобы гарантировать доставку пакета, гарантировать последовательность доставленных пакетов, нет подтверждений, нет контроля ошибок и управления потоками данных. Если пакеты потеряны, то оконечному пункту (хосту) об этом не сообщается, а решением этой проблемы должны заниматься более высокие уровни.

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

IP-пакет состоит из заголовка и инкапсулированного сегмента транспортного уровня. Приведём некоторые поля заголовка пакета IP.

Поле протокола верхнего уровня содержит идентификатор, указывающий какому протоколу верхнего уровня принадлежит информация, размещенная в поле данных пакета. Например, 6 означает, что в пакете находится заголовок протокола TCP, 17 - протокола UDP.

Поле IP - адресов источника и приемника имеют одинаковую длину 4 байта. IP-адреса представляются в в формате десятичного представления с разделительными точками, где каждый байт представляется своим десятичным эквивалентом. Эти четыре десятичных числа разделяются точкой (например, 128.67.38.255). Каждый IP-адреса состоит из двух частей: идентификатора сети (подсети) NETID (network identifier) и идентификатора хоста HOSTID (host identifier). NETID идентифицирует определенную сеть, к которой подключен хост. Маршрутизаторы используют только NETID, который иногда называют префиксом сети. IP-адрес 128.67.38.255 имеет идентификатор сети 128.67 (в двоичном виде третий и четвертый байты – 10000000 и 01000011) и идентификатор хоста 38.255 (в двоичном виде первый и второй байты – 00100110 11111111). В протоколе IP для извлечения идентификатора сети NETID используется маска с использованием слэша (/). В маске каждый бит, которй является частью идентификатора сети NETID, равен 1, а биты, являющиеся частью идентификатора хоста HOSTID, равны 0. Например, 128.67.38.255/16 означает, что первые 16 битов этого адреса – это идентификатор NETID 128.67.0.0. За счет управления битами в маске группа IP-адресов может быть разбита на меньшие сети. Например, добавив 3 бита к 24 разрядной маске сети 3 бита, добавляется 8 новых сетей, каждая из которых содержит меньшее количество идентификаторов хостов.

Для идентификации компьютеров в IP-сетях используют IP-адреса. Однако пользователи пользуются более удобными символьными именами компьютеров. Символьные идентификаторы строятся по иерархическому принципу. Составляющие символьного (или доменного) имени разделяется точкой и перечисляются в следующем порядке: сначала простое имя хоста, затем имя группы хостов (например, имя организации), потом имя более крупной группы (домена) и так далее до имени домена самого высокого уровня (например, домена объединяющего организации по географическому принципу: RU – Россия, UK – Великобритания). Вместо отправки электронной почты на адрес Alla@128.67.38.255 удобнее выглядит адрес: Alla@art.edu.ru. Для преобразования текстовых имен была разработана служба имен доменов DNS (Domain Name System). Для преобразования имени в IP-адрес программа прикладного уровня обращается к процедуре распознавателя, который посылает UDP-пакет DNS-серверу. Этот сервер находит имя в базе данных и возвращает соответствующий IP-адрес вызвавшей его программе прикладного уровня.

Поле общей длины IP - пакета (т.е. заголовка и данных).

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

Контрольная сумма циклического кода заголовка, контрольно-проверочная комбинация (КПК) занимает 2 байта и рассчитывается только по заголовку.

Поскольку некоторые поля заголовка могут изменяться (например, время жизни), это поле проверяется на каждом маршрутизаторе. Если контрольная сумма неверна, то пакет отбрасывается, как только обнаруживается ошибка.

Принцип маршрутизации

Важнейшей задачей сетевого уровня является маршрутизация — передача пакетов между двумя конечными узлами в составной сети Интернет (т.е. интерсети-internet). Каждую из этих сетей часто называют подсетью. Рассмотрим принципы маршрутизации на примере составной сети, показанной на рис. 1. В этой сети 20 маршрутизаторов объединяют 18 сетей (подсетей) в общую сеть. Здесь S1, S2,...,S20 - это номера сетей. Маршрутизатор имеют несколько портов (минимум два), к которым присоединяются сети. Каждый порт маршрутизатора можно рассматривать как отдельный узел сети: он имеет собственный сетевой адрес и собственный локальный адрес в той подсети, которая к нему подключена. Например, маршрутизатор под номером 1 имеет три порта, к которым подключены сети S1, S2, S3. На рисунке сетевые адреса этих портов обозначены как М1(1), М1(2) и М1(3). Порт М1(1) имеет локальный адрес в сети с номером S1, порт М1(2) - в сети S2, а порт М1(3) - в сети S3. Таким образом, маршрутизатор можно рассматривать как совокупность нескольких узлов, каждый из которых входит в свою сеть. Как единое устройство маршрутизатор не имеет ни отдельного сетевого адреса, ни какого-либо локального адреса.

Рис. 1. Маршрутизация сети Интернет

В сложных составных сетях почти всегда существует несколько маршрутов для передачи пакетов между двумя конечными узлами. Маршрут - это последовательность маршрутизаторов, которые должен пройти пакет от отправителя до получателя. Так, пакет, отправленный из узла А в узел В, может пройти через маршрутизаторы 17, 12, 5, 4 и 1 или маршрутизаторы 17, 13, 7, 6 и З. Нетрудно найти еще несколько маршрутов между узлами А и В.

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

В первом столбце таблицы перечисляются номера сетей, входящих в интерсеть и которые являются сетями назначения IP-пакета. В каждой строке таблицы следом за номером сети указывается сетевой адрес следующего маршрутизатора (более точно, сетевой адрес соответствующего порта следующего маршрутизатора), на который надо направить пакет, чтобы тот передвигался по направлению к сети с данным номером по рациональному маршруту. Когда на маршрутизатор поступает новый пакет, номер сети назначения (профиль сети), извлеченный из поступившего кадра, последовательно сравнивается с номерами сетей в строках таблицы. Строка с совпавшим номером сети указывает, на какой ближайший маршрутизатор следует направить пакет. Например, если на какой-либо порт маршрутизатора 4 поступает пакет, адресованный в сеть S6 (рис.1), то из таблицы маршрутизации маршрутизатора 4 следует, что сетевой адрес следующего маршрутизатора — М2(1), то есть очередным этапом движения данного пакета будет движение к порту 1 маршрутизатора 2. Сетевой адрес выходного порта - М4(1). В четвёртом столбце таблицы маршрутизации маршрутизатора 4 указано расстояние до сети назначения в хопах (число промежуточных маршрутизаторов). Поскольку пакет может быть адресован в любую сеть составной сети, может показаться, что каждая таблица маршрутизации должна иметь записи обо всех сетях, входящих в составную сеть. Но при таком подходе в случае крупной сети объем таблиц маршрутизации может оказаться очень большим, что повлияет на время ее просмотра, потребует много места для хранения и т. п. Поэтому на практике число записей в таблице маршрутизации стараются уменьшить за счет использования специальной записи - «маршрутизатор по умолчанию» (default). Действительно, если принять во внимание топологию составной сети, то в таблицах маршрутизаторов, находящихся на периферии составной сети, достаточно записать номера сетей, непосредственно подсоединенных к данному маршрутизатору или расположенных поблизости, на тупиковых маршрутах. Обо всех же остальных сетях можно сделать в таблице единственную запись, указывающую на маршрутизатор, через который пролегает путь ко всем этим сетям. Такой маршрутизатор называется маршрутизатором по умолчанию, а вместо номера сети в соответствующей строке помещается запись default. В нашем примере таким маршрутизатором по умолчанию для сети S5 является маршрутизатор 5, точнее его порт М5(1). Это означает, что путь из сети S5 почти ко всем сетям большой составной сети пролегает через этот порт маршрутизатора. Перед тем как передать пакет следующему маршрутизатору, текущий маршрутизатор должен определить, на какой из нескольких собственных портов он должен поместить данный пакет. Для этого служит третий столбец таблицы маршрутизации. Еще раз подчеркнем, что каждый порт идентифицируется собственным сетевым адресом. Задачу маршрутизации решают не только промежуточные узлы-маршрутизаторы, но и конечные узлы - компьютеры. На рис. 1 приведена таблица маршрутизации для узла B. Ниже помещена таблица маршрутизации другого конечного узла составной сети - узла A (табл. 1). Компактный вид таблицы маршрутизации отражает тот факт, что все пакеты, направляемые из узла А, либо не выходят за пределы сети S12, либо непременно проходят через порт 1 маршрутизатора 17. Этот маршрутизатор и определен в таблице маршрутизации в качестве маршрутизатора по умолчанию.

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

Таблица 1. Таблица маршрутизации конечного узла А
Номер сети назначения Сетевой адрес следующего маршрутизатора Сетевой адрес выходного порта Расстояние до сети назначения
S12 - MA 0
default M17(1) MA -

Внутренние и внешний протоколы маршрутизации

Для рассмотрения протоколов маршрутизации необходимо ввести понятие автономной системы. Автономная система AS (Autonomous System) обладает следующими признаками:

  1. AS – это множество маршрутизаторов и сетей (подсетей), управляемых одной организацией.
  2. AS состоит из группы маршрутизаторов, обменивающихся информацией через общий протокол маршрутизации.
  3. За исключением состояния неисправности в AS существует путь между любой парой узлов.

На рис. 2 приведена IP – сеть, состоящая из двух AS. Протокол маршрутизации, который передаёт информацию между маршрутизаторами внутри AS, называется внутренним протоколом маршрутизации IRP (Interior Routing Protocol). При этом алгоритмы маршрутизации, используемые маршрутизаторами различных AS, могут отличаться. Тем не менее, маршрутизаторы в одной AS должны иметь минимальный уровень информации, связанной с сетями других AS, на которые возможна отправка пакетов. Протокол, который используется для передачи информации между маршрутизаторами в различных AS, называется внешним протоколом маршрутизации ERP (Exterior Routing Protocol).

Рис. 2. Внутренний и внешний протоколы маршрутизации

Приведём краткое описание внутренних протоколов RIP и OSPF, а также внешнего протокола маршрутизации BGP. Протоколы RIP и OSPF входят в состав межсетевого уровня архитектуры TCP/IP и выполняют две функции:

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

Протокол RIP

Протокол маршрутной информации RIP (Routing Information Protocol) является внутренним протоколом маршрутизации дистанционно-векторного типа. Определенный в документе RFC 1058 в качестве метрики протокол RIP использует число транзитных маршрутизаторов (хопов). Согласно спецификации, маршрутизатор извлекает информацию о подсети и расстоянии из своей таблицы маршрутизации и передаёт эти данные соседним маршрутам через каждые 30 секунд. Соседний узел, в свою очередь передает информацию соседнему узлу, пока все узлы внутри сети не получат одинаковую информацию о маршрутах. Протокол RIP продолжает оставаться популярным протоколом маршрутизации, поскольку он прост и хорошо подходит для небольших IP-сетей. Однако он имеет множество ограничений, включая следующие.

  1. RIP неприемлем для больших конфигураций (более 15 подсетей). Если разрешить метрики большого размера, то чрезмерно увеличится время формирования таблиц маршрутизации или их коррекции после изменения топологии. Способ обмена таблицами маршрутизации, принятый протоколом RIP, в крупных сетях может привести к перегрузке сети.
  2. В современных сетях использование числа транзитов в качестве метрики маршрутизации не всегда эффективно, т.к. она не берёт в расчёт загрузку каналов передачи, не учитывает разную пропускную способность каналов. Протокол RIP выбирает маршрут через два маршрутизатора через каналы 64Кбит/с, хотя мог бы быть выбран более экономичный маршрут через три маршрутизатора через каналы 2,048 Мбит/с. Этот экономичный выбор обеспечивает протокол OSPF.

Протокол OSPF

Протокол маршрутизации - OSPF (Open Shortest Path First - выбор кратчайшего пути первым) использует принцип контроля состояния канала, а метрика представляет собой оценку эффективности связи в этом канале. Чем меньше метрика, тем эффективней организация связи. Метрика, оценивающая пропускную способность канала, определяется, например, компанией Cisco, как количество секунд для передачи 100Мбит. Тогда, например,

  • канал типа E1 = 2,048 Мбит/с (глава 3) соответствует метрике 488;
  • канал 64 Кбит/с соответствует метрике 1562.

В этом случае маршрут через три маршрутизатора с каналами типа E1 составит метрику 488+488=976 единиц и является более экономичным по сравнению с маршрутом между двумя маршрутизаторами с каналом 64 Кбит/с (метрика 1562).

При первоначальном построении таблицы маршрутизации маршрутизатор определяет метрику канала на каждом своём интерфейсе. Затем маршрутизатор информирует об этих значениях все другие маршрутизаторы сети. На основании этих данных каждый маршрутизатор строит топографическую карту (базу данных) сети, по которой определяется кратчайший путь к каждой подсети. Данные этих кратчайших маршрутов помещаются в таблицу маршрутизации маршрутизатора. При невозможности передать пакеты к сети назначения (из-за отказа каналов связи, транзитных маршрутизаторов, перегрузках и др.) эти пакеты отбрасываются. Каждая запись в топологической базе данных сети имеет свой срок жизни. С каждой записью связан таймер, который служит для контроля времени жизни записи. Если какая-либо запись в топологической базе данных устаревает, то первый из таких маршрутизаторов запрашивает её новую копию с помощью специального пакета OSPF "Запрос сведений о состоянии каналов" (Link-State Request), на который должен поступить ответ "Корректировка сведений о состоянии каналов" (Link-State Update) или "Уведомление о состоянии канала" (Link-State Acknowledgement) от маршрутизатора непосредственно тестирующего эту связь. Если состояние связей в сети изменилось и произошла корректировка в маршрутизаторе сети, то этот маршрутизатор в широковещательном режиме сообщает всем соседним маршрутизаторам эти изменения. В OSPF передается только часть таблицы маршрутизации, а не вся таблица маршрутизации, как в RIP.

Протокол BGP

Основа работы протокола внешней маршрутизации BGP (Border Gateway Protocol - пограничный шлюзовой протокол) обмен маршрутной информации между маршрутизаторами в нескольких автономных систем AS. Рассмотрим его работу на примере IP-сети из двух AS (рис 2). Вначале на маршрутизаторе R1 в AS1 реализуется внутренний протокол маршрутизации, например OSPF. В результате создаётся таблица маршрутизации в R1. Затем по протоколу TCP (порт 179) R1 посылает сообщение Update на маршрутизатор R5 в AS2. В это сообщение включена следующая информация:

  • идентификатор AS1;
  • IP - адрес маршрутизатора R1;
  • список всех подсетей в AS1, достижимых через R1.

Допустим, что R5 имеет также связь с другим маршрутизатором в другой AS, например, с маршрутизатором R9 в AS3. Маршрутизатор R5 будет передавать информацию, полученную от R1, в R9 в новом сообщении Update. В это сообщение включена следующая информация:

  • список идентификаторов (AS1, AS2);
  • IP - адрес маршрутизатора R5;
  • список всех подсетей в AS1.

Это сообщение информирует маршрутизатор R9 о том, что все подсети AS1 достижимы через R5 и пересекаемыми автономными системами являются AS1 и AS2. Маршрутизатор теперь должен принять решение, является ли этот маршрут к перечисленным подсетям предпочтительным. Он может иметь альтернативные маршруты к некоторым или ко всем этим подсетям, которые по некоторым показателям (производительность, некоторые метрики и др.) сочтёт более предпочтительными. В таком случае R9 включает эту информацию и передаёт список всех подсетей AS1, AS2. Обновлённая таким образом информация распространяется по Интернету, который состоит из большого числа взаимодействующих AS.