Что такое флаги на роутере

Глава 9 IP маршрутизация

Введение

Маршрутизация — это одна из

наиболее важных функций IP. На рисунке 9.1 показана

упрощенная модель того, что реализуется на IP

уровене. Датаграммы, которые должны быть

смаршрутизированы, могут генерироваться как

локальным хостом, так и каким-либо удаленным

хостом. В последнем случае наш хост должен быть

сконфигурирован как маршрутизатор, иначе

датаграммы, получаемые через сетевые интерфейсы

и не предназначенные нашему хосту, будут молча

удалены.

На рисунке 9.1 также показан демон

маршрутизации, который обычно является

пользовательским процессом. Наиболее часто в Unix

системах используются демоны routed и gated. Термин демон (daemon)

означает, что процесс работает «в фоновом

режиме» и его функционирование не оказывает

влияние на систему в целом. Демоны обычно

стартуют, когда система загружается, и живут все

время, пока система работает. Протоколы

маршрутизации, используемые на конкретном хосте,

определяют, как будет происходить обмен

информацией о маршрутах с удаленными

маршрутизаторами. (Заинтересованные читатели

могут обратиться к [Perlman 1992] для

получения более подробной информации.) Мы

вкратце рассмотрим динамическую маршрутизацию и

протокол обмена информацией о маршрутизации (RIP —

Routing Information Protocol) в главе 10. В этой

главе мы рассмотрим, как IP уровень принимает

решения о маршрутизации.

IP уровень обращается к таблице

маршрутизации, которая показана на рисунке 9.1 (на

загруженных хостах подобное обращение может

происходить несколько сот раз в секунду), однако

демон маршрутизации обновляет таблицу

значительно реже (примерно один раз каждые 30

секунд). Таблица маршрутизации также может быть

обновлена, когда принимается ICMP сообщение о

перенаправлении (ICMP redirect), мы увидим это в разделе

«ICMP ошибки перенаправления»,

когда будем рассматривать команду route.

Эта команда обычно исполняется при загрузке

системы и устанавливает некоторые исходные

маршруты. Также в этой главе мы будем

использовать команду netstat, для

просмотра таблиц маршрутизации.

Рисунок 9.1 Действия, выполняемые IP

уровнем.

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

Прежде чем начать обсуждение IP

маршрутизации, необходимо понять, что именно

ядро обновляет в таблице маршрутизации.

Информация, содержащаяся в таблице

маршрутизации, необходима IP уровню для принятия

решения о маршрутизации. В разделе «IP маршрутизация» главы 3 мы

показали, каким образом IP просматривает свою

таблицу маршрутизации.

  1. Поиск совпадающего адреса хоста.
  2. Поиск совпадающего адреса сети.
  3. Поиск пункта по умолчанию. (Пункт по

    умолчанию обычно указывается в таблице

    маршрутизации как сеть с идентификатором сети

    равным нулю.)

Совпавший адрес хоста используется всегда

перед совпавшим адресом сети.

Маршрутизация, осуществляемая IP — процесс

поиска в таблице маршрутизации, определение

интерфейса, куда будет послан пакет, называется механизмом маршрутизации. С другой

стороны, политика маршрутизации

устанавливает правила, по которым решается,

какой маршрут будет внесен в таблицу

маршрутизации. IP осуществляет механизм

маршрутизации, тогда как маршрутизирующий демон

обычно определяет политику маршрутизации.

Простая таблица маршрутизации

Давайте рассмотрим типичные таблицы

маршрутизации. На хосте svr4 мы запустили команду netstat с опцией -r, чтобы

просмотреть таблицу маршрутизации, и с опцией -n,

которая печатает IP адреса в цифровом формате, а

не в виде имен. (Мы сделали это, потому что

некоторые пункты таблицы маршрутизации это сети,

а не хосты. Без опции -n команда netstat просматривает файл /etc/networks,

и берет оттуда имена сетей. При этом может

получиться некоторая путаница, потому что в

выводе команды помимо имен хостов появятся имена

сетей.)

svr4 % netstat -rn

Routing tables

Destination        Gateway

           Flags

      Refcnt  Use     Interface

140.252.13.65      140.252.13.35     UGH

        0       0

       emd0

127.0.0.1          127.0.0.1

         UH

         1       0

       lo0

default            140.252.13.33

     UG         0

       0       emd0

140.252.13.32      140.252.13.34     U

          4

       25043   emd0

В первой строке говорится, что для пункта

назначения 140.252.13.65 (хост slip) шлюз (маршрутизатор),

на который будут посылаться пакеты, это 140.252.13.35

(bsdi). Хост slip подсоединен к bsdi через SLIP канал, а bsdi

находится в той же сети Ethernet, что и данный хост.

Для конкретного маршрута может быть

показано 5 различных флагов.

U

Маршрут активен.

G

Маршрут подключен к шлюзу (маршрутизатору).

Если этот флаг не установлен, считается, что

пункт назначения подключен непосредственно.

H

Маршрут ведет к хосту, что означает, что в

качестве пункта назначения используется полный

адрес хоста. Если этот флаг не установлен, то

маршрут указывает на сеть, что в свою очередь

означает, что пунктом назначения является адрес

сети: идентификатор сети или комбинация

идентификатора сети и идентификатора подсети.

D

Маршрут был создан посредством

перенаправления («ICMP ошибки

перенаправления»).

M

Маршрут был модифицирован посредством

перенаправления («ICMP ошибки

перенаправления»).

Флаг G очень важен, потому что именно этот

флаг определяет различие между непрямым

маршрутом (indirect route) и прямым

маршрутом (direct route). (Флаг G не устанавливается для

прямого маршрута.) Отличие заключается в том, что

у пакета, направляющегося по прямому маршруту, IP

адрес и адрес канального уровня указывают на

конечный пункт назначения (рисунок 3.3). Когда

пакет отправляется по непрямому маршруту, IP

адрес указывает на конечный пункт назначения, а

адрес канального уровня указывает на маршрутизатор

следующей пересылки. Мы видели подобный пример

этого на рисунке 3.4. В этой таблице маршрутизации

мы видим непрямой маршрут (флаг G установлен), при

этом IP адрес пакета, который будет передаваться

по этому маршруту, будет совпадать с IP адресом

конечного пункта назначения (140.252.13.65), а адрес

канального уровня будет указывать на

соответствующий маршрутизатор, IP адрес которого

140.252.13.35.

Очень важно понимать разницу между флагами

G и H. Флаг G определяет различие между прямым и

непрямым маршрутом, как описано выше. Флаг H

указывает на то, что адрес пункта назначения

(первая колонка вывода команды netstat) это полный

адрес хоста. Отсутствие флага H означает, что

адрес назначения это адрес сети (идентификатор

хоста должен быть установлен в 0). При просмотре

таблицы маршрутизации используются следующие

правила: если маршрут указывает на хост он должен

полностью совпадать с IP адресом пункта

назначения, если маршрут указывает на сеть —

сопасть должны идентификаторы сети и любого

идентификатора подсети в адресе пункта

назначения. Большинство версий команды netstat

сначала печатают все пункты, указывающие на

хосты, после чего печатаются пункты, указывающие

на сети.

Колонка счетчика обращений (reference count)

сообщает о количестве использований каждого

маршрута. Протоколы, ориентированные на

соединения, такие как TCP, занимают маршрут все

время, пока соединение установлено. Если

установить Telnet соединение между хостами svr4 и slip,

то счетчик обращений будет установлен в 1. Если

установить еще одно Telnet соединение, счетчик

будет показывать 2, и так далее.

Следующая колонка (use) показывает

количество пакетов, прошедших по этому маршруту.

Если запустить программу ping, которая

отправит 5 пакетов, счетчик установится в

значение 5 (Естественно, при условии, что никто

больше не использует этот маршрут). Последняя

колонка интерфейс (interface) сообщает нам имя

локального интерфейса.

Вторая строка в выводе относится к loopback интерфейсу (глава 2, раздел «Интерфейс Loopback»), который

всегда имеет имя lo0. Флаг G не установлен, так как

маршрут не ведет к маршрутизатору. Флаг H

указывает, что адрес назначения (127.0.0.1) это адрес

хоста, а не адрес сети. Когда флаг G не установлен,

это указывает на прямой маршрут, в колонке gateway

указывается IP адрес исходящего интерфейса.

Третья строка вывода описывает маршрут по

умолчанию. Каждый хост должен иметь один или

несколько маршрутов по умолчанию. Этот пункт

указывает на то, что необходимо посылать пакеты

на маршрутизатор 140.252.13.33 (sun), если не был найден

конкретный маршрут. Это означает, что хост svr4

может получить доступ к другим системам в Internet

через маршрутизатор sun (и его SLIP канал)

воспользовавшись этим единственным пунктом

таблицы маршрутизации. Возможность установить

маршрут по умолчанию это одна из наиболее мощных

концепций IP маршрутизации. Флаги для этого

маршрута (UG) говорят о том, что маршрут указывает

на маршрутизатор.

Здесь мы специально

назвали sun маршрутизатором, а не хостом, потому

что когда он работает как маршрутизатор по

умолчанию, используются его функции IP

перенаправления, при этом он не выступает в роли

хоста.

Требования к хостам Host

Requirements RFC указывает, что IP уровень должен

поддерживать несколько маршрутов по умолчанию.

Большинство реализаций, однако, этого не

позволяют. Когда существует несколько маршрутов

по умолчанию, общая техника выбора маршрута

заключается в последовательном многократном

переборе маршрутов. Именно так поступает,

например, Solaris 2.2.

И последняя строка указывает на

подключенный Ethernet. Флаг H не установлен, это

указывает на то, что адрес назначения (140.252.13.32)

это адрес сети, при этом идентификатор хоста

установлен в 0. И действительно, 5 младших битов

установлены в 0 (рисунок 3.11). Это прямой маршрут

(флаг G не установлен), поэтому в колонке gateway

указывается IP адрес исходящего интерфейса.

Существует еще один немаловажный аспект,

оказывающий влияние на маршрутизацию, однако он

не отражен в выводе команды netstat. Это

маска подсети, связанная с адресом назначения

(140.252.13.32). Когда адрес пункта назначения

сравнивается с IP адресом 140.252.13.33, адрес перед

сравнением, логически суммируется с маской

подсети, связанной с этим адресом назначения

(0xffffffe0 из раздела «Пример

подсети» главы 3). Так как ядро знает каждый

интерфейс, связанный с каждым пунктом таблицы

маршрутизации, и так как каждый интерфейс имеет

маску подсети, каждый пункт таблицы

маршрутизации имеет собственную маску подсети.

Сложность таблицы маршрутизации хоста

зависит от топологии сетей, к которым хост имеет

доступ.

  1. Самый простой (однако наименее интересный)

    случай — это когда хост вообще не подключен к

    сетям. Протоколы TCP/IP могут использоваться на

    этом хосте, однако только для общения с самим

    собой! Таблица маршрутизации в данном случае

    содержит единственный пункт соответствующий

    loopbackv интерфейсу.

  2. Хост подключен к одной локальной сети и

    имеет возможность получить доступ к хостам

    только в этой локальной сети. Таблица

    маршрутизации имеет 2 пункта: один для loopback

    интерфейса и один для локальной сети (например,

    Ethernet).

  3. Возможен вариант, когда другие сети

    (например, Internet) доступны через один

    маршрутизатор. В этом случае обычно используется

    пункт по умолчанию, указывающий на этот

    маршрутизатор.

  4. И последнее, когда добавляются маршруты к

    хостам или сетям. Примером этого может служить

    маршрут к хосту slip через маршрутизатор bsdi.

Давайте проследим за тем, что делает IP когда

обращается к таблице маршрутизации, чтобы

смаршрутизировать пакеты на хосте svr4.

  1. Предположим, что адрес назначения

    принадлежит хосту sun, 140.252.13.33. Во-первых,

    осуществляется поиск совпадающего адреса хоста.

    Два пункта хостов в таблице (slip и localhost) не

    совпадают, поэтому поиск в таблице маршрутизации

    осуществляется снова на предмет совпадающего

    адреса сети. Совпадение найдено в пункте 140.252.13.32

    (идентификатор сети и идентификатор подсети

    совпали), поэтому используется интерфейс emd0. Это

    прямой маршрут, поэтому адрес канального уровня

    будет являться адресом назначения.

  2. Предположим, что адрес назначения это адрес

    хоста slip, 140.252.13.65. Первый поиск в таблице

    маршрутизации на предмет совпадающего адреса

    хоста заканчивается успешно. Это непрямой

    маршрут, поэтому IP адрес назначения остается

    140.252.13.65, а адресом канального уровня будет адрес

    канального уровня маршрутизатора 140.252.13.35,

    используется интерфейс emd0.

  3. Теперь мы посылаем датаграмму по Internet на

    хост aw.com (192.207.117.2). Первый поиск в таблице

    маршрутизации на предмет совпадающего адреса

    хоста заканчивается неудачей, поэтому

    осуществляется поиск на предмет совпадающего

    адреса сети. Он также завершается неудачно. И

    последний шаг это поиск пункта по умолчанию,

    который заканчивается успешно. Маршрут является

    непрямым через маршрутизатор 140.252.13.33 с

    использованием интерфейса emd0.

  4. В нашем последнем примере мы послали

    датаграмму на свой собственный хост. Существует 4

    способа сделать это, используя имя хоста, IP адрес

    хоста, loopback имя или loopback IP адрес:

    ftp svr4

    ftp 140.252.13.34

    ftp localhost

    ftp 127.0.0.1

    В двух первых случаях второй поиск в

    таблице маршрутизации приведет к совпадению с

    сетью 140.252.13.32, и пакет посылается через Ethernet

    драйвер. Как мы показали на рисунке 2.4, пакет,

    предназначенный на собственный IP адрес хоста,

    посылается в loopback драйвер, который ставит пакет

    во входную очередь IP.

    В двух следующих случаях указано имя loopback

    интерфейса или его IP адрес, поэтому первый поиск

    в таблице маршрутизации приведет к совпадению

    адреса хоста, и пакет отсылается в loopback драйвер,

    который ставит его во входную очередь IP.

    Во всех четырех случаях пакет отправляется

    в loopback драйвер, однако принимаются два разных

    решения о маршрутизации.

Инициализация таблицы маршрутизации

Мы никогда не упоминали о том, как создаются

пункты в таблице маршрутизации. Когда

инициализируется интерфейс (обычно, когда адрес

интерфейса устанавливается командой ifconfig),

автоматически создается прямой маршрут для

этого интерфейса. Для каналов точка-точка и loopback интерфейса устанавливается

маршрут к хосту (то есть устанавливается флаг H).

Для широковещательных интерфейсов, таких как

Ethernet, маршрутом является сама эта сеть.

Маршруты к хостам или сетям, которые не

подключены непосредственно, должны быть

помещены в таблицу маршрутизации каким-либо иным

образом. Самый распространенный способ создания

маршрутов — с помощью команды route, что

обычно делается из загрузочных файлов при старте

системы. На хосте svr4 были исполнены следующие

команды, которые добавляют пункты, показанные

ранее:

route add default sun 1

route add slip bsdi 1

Третий аргумент (default и slip) это пункты

назначения, четвертый аргумент это

маршрутизатор (gateway) и последний аргумент это

показатель маршрутизации. Команда route использует

показатель маршрутизации следующим образом: она

устанавливает флаг G, если показатель больше чем

0, и не устанавливает флаг G, если показатель равен

0.

К сожалению, совсем

немногие системы содержат команды route в своих

стартовых файлах. В 4.4BSD и BSD/386

это /etc/netstat, в SVR4 — /etc/inet/rc.inet, в Solaris 2.x — /etc/rc2.d/S69inet, в SunOS 4.1.x — /etc/rc.local и в AIX 3.2.2 — /etc/rc.net.

В некоторых системах маршрутизатор по

умолчанию содержится в файле, например, /etc/defaultrouter.

Этот пункт по умолчанию добавляется в таблицу

маршрутизации при каждой перезагрузке.

Существует еще один способ заполнить

таблицу маршрутизации с помощью запуска демона

маршрутизации (см. главу 10) или с

помощью нового протокола определения маршрутов

(раздел «ICMP сообщения поиска

маршрутизатора»).

Более сложные таблицы маршрутизации

Хост sun является маршрутизатором по

умолчанию для всех хостов в нашей подсети, так

как он имеет SLIP канал с дозвоном, который

подключен к Internet (см. рисунок на внутренней

стороне обложки).

sun % netstat -rn

Routing tables

Destination      Gateway

           Flags

    Refcnt  Use      Interface

140.252.13.65    140.252.13.35     UGH

      0       171

      le0

127.0.0.1        127.0.0.1

         UH       1

       766      lo0

140.252.1.183    140.252.1.29      UH

       0       0

        sl0

default          140.252.1.183

     UG       1

       2955     sl0

140.252.13.32    140.252.13.33     U

        8       99551

    le0

Первые два пункта таблицы маршрутизации sun

идентичны первым двум пунктам для хоста svr4:

маршрут, указывающий на хост slip, через

маршрутизатор bsdi и loopback маршрут.

Третья строка отличается. Это прямой

маршрут (флаг G не установлен) на хост (флаг H

установлен), соответствующий каналу точка-точка,

интерфейс SLIP. Если мы посмотрим на вывод команды

ifconfig,

sun % ifconfig sl0

sl0: flags=1051<UP, POINTOPOINT, RUNNING>

        inet 140.252.1.29 —> 140.252.1.183 netmask

ffffff00

то увидим, что адрес назначения в таблице

маршрутизации на другом конце канала точка-точка

(маршрутизатор netb), а адрес маршрутизатора в

действительности это локальный IP адрес

исходящего интерфейса (140.252.1.29). (Раньше мы

говорили, что для прямых маршрутов адрес

маршрутизатора печатается командой netstat как

локальный IP адрес используемого интерфейса.)

Пункт по умолчанию это непрямой маршрут

(флаг G), указывающий на сеть (нет флага H). Адрес

маршрутизатора — 140.252.1.183, (адрес на другом конце

SLIP канала), а не локальный IP адрес SLIP интерфейса

(140.252.1.29) (так как это непрямой маршрут).

Необходимо обратить внимание на то, что

третья и четвертая строки в выводе команды netstat (интерфейс sl0) создаются

программным обеспечением SLIP при установлении

канала SLIP, они удаляются, когда канал SLIP

отключается.

Нет маршрута к пункту назначения

Во всех наших примерах сделано

предположение, что поиск в таблице маршрутизации

заканчивается успешно и будет обнаружено

соответствие, хотя бы с маршрутором по умолчанию.

Что произойдет, если маршрут по умолчанию

отсутствует, и не будет найдено совпадение с

указанным пунктом назначения?

Ответ зависит от того, какого рода IP

датаграмма обрабатывается, то есть была ли она

сгенерирована непосредственно этим хостом или

она должна быть перенаправлена (в том случае,

если хост выступает в роли маршрутизатора). Если

датаграмма была сгенерирована этим хостом,

приложению, которое отправило датаграмму,

возвращается ошибка «хост

недоступен» (host unreachable) или «сеть

недоступна» (network unreachable). Если датаграмма

должна быть перенаправлена, посылающему хосту

возвращается ICMP собщение о недоступности хоста.

Мы рассмотрим эту ошибку в следующем разделе.

ICMP ошибки о недоступности хоста и

сети

ICMP ошибка о недоступности хоста (host unreachable)

отправляется маршрутизатором, когда он получает

IP датаграмму, которую невозможно перенаправить.

(На рисунке 6.10 мы показали формат ICMP сообщений о

недоступности.) Мы сможем пронаблюдать это в

нашей сети, если выключим SLIP канал с дозвоном на

маршрутизаторе sun и попробуем отправить пакет

через SLIP канал с любого другого хоста, указав sun

как маршрутизатор по умолчанию.

Ранние реализации TCP/IP в

BSD генерировали и ошибки о недоступности хоста, и

ошибки о недоступности сети, в зависимости от

того, принадлежал ли пункт назначения локальной

подсети или нет. 4.4BSD генерирует

только ошибку о недоступности хоста.

Обратимся снова к выводу команды netstat

запущенной на маршрутизаторе sun, вывод показан в

предыдущем разделе. Мы видим, что пункт таблицы

маршрутизации, который соответствует SLIP каналу,

добавляется, когда SLIP канал включается, и

удаляется, когда SLIP канал выключается. Это

означает, что когда SLIP канал отключен, маршрута

по умолчанию на sun не существует. Однако мы не

будем пытаться изменить все таблицы

маршрутизации у хостов в нашей маленькой сети,

оставив им возможность самим удалить свои

маршруты по умолчанию. Вместо этого мы посчитаем

ICMP сообщения о недоступности хоста,

сгенерированные sun для любых пакетов, которые он

не может перенаправить.

Мы можем увидеть это, запустив ping

с svr4 на хост, находящийся на другом конце SLIP

канала (в настоящее время этот хост выключен):

svr4 % ping gemini

ICMP Host Unreachable from gateway sun (140.252.13.33)

ICMP Host Unreachable from gateway sun (140.252.13.33)

^?

                                  символ

прерывания

На рисунке 9.2 мы показали вывод команды tcpdump для этого примера. (Команда

запущена на хосте bsdi).

1 0.0

              svr4 >

gemini: icmp: echo request

2 0.00 (0.00)      sun > svr4: icmp: host gemini unreachable

3 0.99 (0.99)      svr4 > gemini: icmp: echo request

4 0.99 (0.00)      sun > svr4: icmp: host gemini unreachable

Рисунок 9.2 Сообщение ICMP о недоступности

хоста в ответ на ping.

Когда маршрутизатор sun обнаруживает, что на

хост gemini нет маршрута, он отвечает на эхо запрос

сообщением о недоступности хоста.

Если мы включим SLIP канал, подключающий нас к

Internet, и попробуем послать ping на несуществующий в

Internet IP адрес, то рано или поздно получим

сообщение об ошибке. Интересно посмотреть, как

далеко уйдет пакет по Internet, перед тем как будет

получена ошибка:

sun % ping 192.82.148.1

              этот IP

адрес не подключен к Internet

PING 192.82.148.1: 56 data bytes

ICMP Host Unreachable from gateway enss142.UT.westnet.net (192.31.39.21)

  for icmp from sun (140.252.1.29) to 192.82.148.1

Обратившись к рисунку 8.5, мы увидим, что

пакет прошел через шесть маршрутизаторов, перед

тем как было определено, что IP адрес не

существует. Только когда он дошел до пределов NSFNET

магистрали, была выявлена ошибка. Это произошло

из-за того, что шесть маршрутизаторов, которые

перенаправляли пакет, отправляли его на пункт

назначения по умолчанию. И только когда пакет

достиг NSFNET магистрали, маршрутизатор, имеющий

полное представление о каждой сети, подключенной

к Internet, смог определить ошибку. Это иллюстрирует

тот факт, что большинство маршрутизаторов

функционируют, не представляя себе полной

топологии сетей.

[Ford, Rekhter, and Braun 1993] определяет домены маршрутизации верхнего уровня

(top-level routing domain) как маршрутизаторы,

поддерживающие и обрабатывающие информацию о

большинстве узлов Internet и не использующие

маршрутов по умолчанию. В Internet существует пять

доменов маршрутизации верхнего уровня: NFSNET

магистраль, Commercial Internet Exchange (CIX), NASA Science Internet (NSI), SprintLink и European IP Backbone (EBONE).

Перенаправлять или не

перенаправлять

Мы уже несколько раз упоминали

о том, что хост не сможет перенаправить IP

датаграммы, если он специально не

сконфигурирован, чтобы выступать в роли

маршрутизатора. Как осуществляется подобная

конфигурация?

Большинство Berkeley реализаций, имеют

переменную ядра, названную ipforwarding

(или похоже). (См. приложение Е.)

Некоторые системы (BSD/386 и SVR4,

например) перенаправляют датаграммы, если эта

переменная установлена в ненулевое значение. В SunOS 4.1.x определено три значения для

этой переменной: -1 обозначает, что

перенаправление никогда не будет осуществляться

и что никогда нельзя будет сменить значение этой

переменной, 0 обозначает, что перенаправление не

осуществляется, однако значение переменной

устанавливается в 1, когда два или более

интерфейсов активизированы, и 1 обозначает, что

перенаправление осуществляется всегда. У Solaris 2.x также существует три значения, а

именно 0 (перенаправление не осуществляется), 1

(перенаправление осуществляется всегда) и 2

(перенаправление осуществляется только тогда,

когда активизированы два или более интерфейсов).

В более ранних реализациях 4.2BSD

датаграммы перенаправляются по умолчанию. При

этом, если система сконфигурирована неверно,

возникает очень много проблем. Именно поэтому

данная опция ядра должна быть всегда по

умолчанию установлена в значение «без

перенаправления» (never forward), пока системный

администратор специально не включит

перенаправление.

ICMP ошибки перенаправления

ICMP ошибка перенаправления отправляется

маршрутизатором на хост, пославший IP датаграмму,

когда датаграмма должна быть послана на другой

маршрутизатор. Подобная концепция довольно

проста. Мы привели три составные части этой

концепции на рисунке 9.3. Увидеть ICMP

перенаправление можно только когда хост имеет

выбор, на какой маршрутизатор послать пакет.

(Обратитесь к примерам, которые мы приводили на

рисунке 7.6.)

  1. Предположим, что хост посылает IP датаграмму

    на R1. Подобное решение принято потому, что R1 — это

    маршрутизатор по умолчанию для этого хоста.

  2. R1 принимает датаграмму, просматривает свою

    таблицу маршрутизации, и определяет, что маршрутизатором следующей пересылки

    является R2, и именно туда необходимо отправить

    датаграмму. Когда R1 отправляет датаграмму на R2,

    он определяет, что отправляет ее на тот же самый

    интерфейс, с которого датаграмма была получена

    (локальная сеть, к которой подключен хост и два

    маршрутизатора). В этом случае маршрутизатор

    отправляет ошибку перенаправления на хост,

    пославший датаграмму.

  3. R1 посылает ICMP перенаправление на хост,

    сообщая тем самым, что следующие датаграммы

    необходимо посылать на R2 вместо R1.

Рисунок 9.3 Пример ICMP

перенаправления.

Перенаправления используются для того,

чтобы позволить хосту с минимальным знанием о

маршрутах поддерживать и обновлять свою таблицу

маршрутизации. Как правило, формирование таблицы

маршрутизации хоста начинается с создания

маршрута по умолчанию (R1 или R2 из нашего примера

на рисунке 9.3), при этом с использованием

перенаправления хост может обновить свою

таблицу маршрутизации. ICMP перенаправление

позволяет TCP/IP хостам полностью полагаться на

интеллектуальность маршрутизаторов в вопросе

выбора маршрутов. Маршрутизаторы R1 и R2 в нашем

примере должны точно представлять топологию

подключенных сетей, тогда как хосты,

подключенные к локальной сети, могут начинать

свою маршрутизацию с маршрута по умолчанию,

узнавая затем более подробно о новых маршрутах

из принятых перенаправлений.

Пример

Посмотрим ICMP перенаправления в действии на

примере нашей сети (на внутренней стороне

обложки). Мы показали всего три хоста (aix, solaris и

gemini) и два маршрутизатора (gateway и netb) в верхней

части сети, в действительности там более 150

хостов и 10 маршрутизаторов. Большинство хостов

считают gateway маршрутизатором по умолчанию, так

как он предоставляет доступ к Internet.

Как можно получить доступ из подсети 140.252.1 к

нижней подсети (4 нижние хоста на рисунке)?

Во-первых, вспомним, что если на конце SLIP канала

находится единственный хост, используется уполномоченный агент ARP (глава 4, раздел

«Уполномоченный агент ARP»).

Это означает, что для хостов в верхней сети 140.252.1

не требуется специальных средств, для того чтобы

получить доступ к хосту sun (140.252.1.29). Доступ

обеспечит программное обеспечение

уполномоченного агента ARP на netb.

Однако, если на удаленном конце SLIP канала

присутствует сеть, то необходима маршрутизация.

Одно из возможных решений заключается в том,

чтобы каждый хост и маршрутизатор знали о том,

что маршрутизатор netb является шлюзом в сеть

140.252.13. Этого можно добиться путем внесения

статического маршрута в каждую таблицу

маршрутизации на каждом хосте или запустив на

каждом хосте маршрутизирующий демон. Однако

существует более простой способ (метод, который

обычно используется) — использовать ICMP

перенаправление.

Запустим программу ping с хоста solaris в верхней

сети на хост bsdi (140.252.13.35) в нижней сети. Так как

идентификаторы подсети различны, уполномоченный

агент ARP не может быть использован. Предположим,

что статический маршрут не установлен, поэтому

при посылке первого пакета будет использован

маршрут по умолчанию на маршрутизатор gateway. Ниже

мы приводим таблицу маршрутизации, перед тем как

запустили ping:

solaris % netstat -rn

Routing Table:

Destination       Gateway

      Flags  Ref   Use

     Interface

————— ————— ——- — ——- —————

127.0.0.1      127.0.0.1

        UH       0

     848  lo0

140.252.1.0    140.252.1.32     U

        3   15042  le0

224.0.0.0      140.252.1.32     U

        3       0

  le0

default        140.252.1.4

      UG       0

    5747

(Пункт 224.0.0.0 используется для групповой

адресации IP. Мы опишем это в главе 12.)

Если указать опцию -v в командной

строке ping, то будут видны все ICMP

сообщения принятые хостом. Нам необходимо

указать эту опцию, чтобы увидеть сообщения о

перенаправлении, которые будут посланы.

solaris % ping -sv bsdi

PING bsdi: 56 data bytes

ICMP Host redirect from gateway gateway (140.252.1.4)

to netb (140.252.1.183) for bsdi (140.252.13.35)

64 bytes from bsdi (140.252.13.35): icmp_seq=0. time=383. ms

64 bytes from bsdi (140.252.13.35): icmp_seq=1. time=364. ms

64 bytes from bsdi (140.252.13.35): icmp_seq=2. time=353. ms

^?

                                      символ

прерывания

—-bsdi PING Statistics—-

4 packets transmitted, 3 packets received, 25% packet loss

round-trip (ms) min/avg/max = 353/366/383

Перед тем как мы получим первый ответ на ping,

хост примет ICMP перенаправление от

маршрутизатора по умолчанию gateway. Если мы затем

посмотрим таблицу маршрутизации, то увидим, что

появился новый маршрут к хосту bsdi. (Этот пункт

выделен жирным шрифтом.)

solaris % netstat -rn

Routing Table:

  Destination       Gateway

       Flags  Ref   Use

     Interface

————— ————— ——— — ——- ————-

127.0.0.1       127.0.0.1

         UH       0

     848  lo0

140.252.13.35   140.252.1.183     UGHD

     0       2

140.252.1.0     140.252.1.32      U

        3   15045  le0

224.0.0.0       140.252.1.32      U

        3       0

  le0

default         140.252.1.4

       UG       0

    5749

Pltcmm мы впервые видиv флаг D, который

означает, что маршрут был установлен с

использованием ICMP перенаправления. Флаг G

обозначает, что это непрямой маршрут к шлюзу (netb),

а флаг H обозначает, что это маршрут к хосту (как

мы и ожидали), а не маршрут к сети.

Так как это маршрут к хосту, добавленный

путем перенаправления, он обслуживает только

хост bsdi. Если затем мы попробуем получить доступ

к хосту svr4, будет сгенерировано еще одно

перенаправление, и будет создан еще один маршрут

к хосту. Точно так же, попытка получить доступ к

хосту slip создаст еще один маршрут. Каждое

перенаправление на конкретный хост приводит к

созданию нового маршрута к хосту. Все три хоста в

подсети (bsdi, svr4 и slip) будут обслуживаться одним

маршрутом к сети, указывающим на маршрутизатор

sun. Однако, ICMP перенаправления создают маршруты к

хостам, а не маршруты к сетям, так как

маршрутизатор, генерирующий перенаправление в

данном примере (gateway), не имеет представления о

структуре подсетей в сети 140.252.13.

Более подробно

На рисунке 9.4 показан формат сообщения ICMP о

перенаправлении. 

Рисунок 9.4 ICMP сообщение о

перенаправлении.

Существуют четыре различных типа сообщений

о перенаправлении, с различными значениями кода

(code), как показано на рисунке 9.5.

код

Описание

0

перенаправление

для сети

1

перенаправление

для хоста

2

перенаправление

для типа сервиса (TOS) и сети

3

перенаправление

для типа сервиса (TOS) и хоста

Рисунок 9.5 Различные значения code для ICMP

перенаправления.

Существуют три IP адреса, которые должен

знать получатель ICMP перенаправления: (1) IP адрес,

который вызвал перенаправление (находится в IP

заголовке, возвращенном как данные в ICMP

сообщении о перенаправлении), (2) IP адрес

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

(является IP адресом источника IP датаграммы,

содержащей перенаправление) и (3) IP адрес

маршрутизатора, который должен быть использован

(находится в байтах с 4-го по 7-ой в ICMP сообщении).

Существует несколько правил, посвященных

ICMP перенаправлениям. Во-первых, перенаправления

генерируются только маршрутизаторами, ни в коем

случае не хостами. Однако, перенаправления могут

быть использованы только хостами, не

маршрутизаторами. Считается, что маршрутизаторы

используют протоколы маршрутизации и

обмениваются таблицами с другими

маршрутизаторами, поэтому они не нуждаются в

перенаправлениях. (Это означает, что на рисунке 9.1

таблица маршрутизации должна быть обновлена

либо с использованием маршрутизирующего демона,

либо с использованием перенаправления, однако не

с использованием и того и другого.)

Когда 4.4BSD функционирует как

маршрутизатор, осуществляются следующие

проверки, причем каждая из них должна быть

истиной, для того чтобы было сгенерировано ICMP

перенаправление.

  1. Исходящий и входящий интерфейс один и тот

    же.

  2. Маршрут, который будет использоваться для

    исходящей датаграммы, не должен быть создан или

    модифицирован с использованием ICMP

    перенаправления. Также он не должен быть

    маршрутом по умолчанию для маршрутизатора.

  3. Датаграмма не должна быть

    смаршрутизирована от источника.

  4. Ядро должно быть сконфигурировано таким

    образом, чтобы посылать перенаправления.

Переменная ядра с

именем ip_sendredirects (или похожим). (См. приложение Е.) Большинство

современных систем (4.4BSD, SunOS 4.1.x, Solaris 2.x и AIX 3.2.2, например)

включают эту переменную по умолчанию. Другие

системы, например, SVR4, имеют эту

переменную по умолчанию выключенной.

В дополнение, хост 4.4BSD, который принимает ICMP

перенаправления, осуществляет некоторые

проверки перед модификацией своей таблицы

маршрутизации. Это предотвращает странное

поведение маршрутизатора или хоста, вызванное

некорректной модификацией таблицы

маршрутизации системы.

  1. Новый маршрутизатор должен быть в

    непосредственно подключенной сети.

  2. Перенаправление должно быть от текущего

    маршрутизатора на указанный пункт назначения.

  3. Перенаправление не может заставить хост

    использовать самого себя в качестве

    маршрутизатора.

  4. Модифицируемый маршрут должен быть

    непрямым маршрутом.

И в заключение стоит повториться, что

маршрутизаторы должны посылать только

перенаправления к хостам (codes 1 или 3 на рисунке 9.5),

а не перенаправления к сетям. Из-за разделения на

подсети не всегда можно однозначно указать,

когда должно быть послано перенаправление к сети

вместо перенаправления к хосту. Некоторые хосты

воспринимают принятое перенаправление к сети

как перенаправление к хосту, в том случае если

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

(type).

ICMP сообщения поиска маршрутизатора

(ICMP Router Discovery Messages)

Ранее в этой главе мы говорили, что одним из

способов инициализации таблицы маршрутизации

является создание статических маршрутов,

которые заносятся в конфигурационные файлы.

Подобный метод часто используется для установки

маршрута по умолчанию. Существует способ,

заключающийся в использовании ICMP объявлений

маршрутизаторов.

Основной принцип заключается в том, что

после загрузки хост рассылает широковещательные

или групповые запросы с требованием сообщить ему

о маршрутизаторе. Один или несколько

маршрутизаторов отвечают с использованием

сообщения об объявлении маршрутизатора. В

дополнение, маршрутизаторы периодически

рассылают широковещательные или групповые

сообщения с объявлением маршрутизатора,

позволяя каждому хосту, который примет эти

сообщения, обновить свои таблицы маршрутизации.

RFC 1256 [Deering 1991] содержит формат этих ICMP

сообщений. На рисунке 9.6 показан формат ICMP

сообщения запроса маршрутизатора. На рисунке 9.7

показан формат ICMP сообщения объявления

маршрутизатора, которое рассылается

маршрутизаторами.

В одном сообщении маршрутизатор может

объявить несколько адресов. Поле количества

адресов. Размер записи адреса — количество

32-битных слов для каждого адреса маршрутизатора,

оно всегда установлено в 2. Время жизни —

количество секунд, в течение которого данное

объявление адресов считается действительным. 

Рисунок 9.6 Формат ICMP сообщения

запроса маршрутизатора.

Рисунок 9.7 Формат ICMP

сообщения объявления маршрутизатора.

Затем следует одна или несколько пар IP

адресов. IP адрес должен быть одним из адресов

посылающего маршрутизатора. Уровень

предпочтительности — это 32-битное целое число со

знаком, указывающее на предпочтительность этого

адреса в качестве адреса маршрутизатора по

умолчанию, по сравнению с другими адресами

маршрутизаторов в той же подсети. Большее

значение указывает на большую

предпочтительность адреса. Уровень

предпочтительности 0x80000000 указывает на то, что

соответствующий адрес, несмотря на то что он

объявлен, не должен быть использован получателем

в качестве адреса маршрутизатора по умолчанию.

Обычное значение предпочтительности это 0.

Функционирование маршрутизатора

Когда маршрутизатор стартует, он начинает

периодически рассылать объявления на все

интерфейсы, которые поддерживают групповой и

широковещательный тип адресации. В

действительности эти объявления не

периодические, они рассылаются случайным

образом. Это сделано для того, чтобы объявления

не перемешивались и не синхронизировались с

другими маршрутизаторами в той же подсети.

Обычный интервал между объявлениями составляет

от 450 до 600 секунд. Время жизни по умолчанию для

каждого объявления составляет 30 минут.

Поле времени жизни также используется,

когда интерфейс маршрутизатора выключается. В

этом случае маршрутизатор может передать

последнее объявление с временем жизни,

установленным в 0.

Помимо периодических объявлений,

маршрутизатор отвечает на запросы от хостов. Он

отвечает на запросы объявлением маршрутизатора.

Если в одной подсети существует несколько

маршрутизаторов, задача системного

администратора сконфигурировать уровень

предпочтительности для каждого маршрутизатора.

Например, основной маршрутизатор по умолчанию

должен иметь более высокий уровень

предпочтительности по отношению к запасному

маршрутизатору.

Функционирование хоста

При старте хост обычно посылает три запроса

о поиске маршрутизатора с интервалом в 3 секунды.

После того как принято объявление от

маршрутизатора, запросы прекращаются.

Хост также слушает объявления от

маршрутизатора. Эти объявления могут привести к

смене маршрутизатора по умолчанию для данного

хоста. Если объявление не получено для текущего

маршрута по умолчанию, он может быть удален по

тайм-ауту.

Пока текущий маршрутизатор по умолчанию

функционирует, он отправляет объявления каждые 10

минут с временем жизни в 30 минут. Это означает,

что маршрут по умолчанию в таблице маршрутизации

хоста не будет удален по тайм-ауту, даже если одно

или два объявления будут потеряны.

Реализация

Сообщения о поиске маршрутизатора обычно

генерируются и обрабатываются

пользовательскими процессами (демонами). Поэтому

добавляется еще один программный способ

обновления таблицы маршрутизации к тем, что

показаны на рисунке 9.1, несмотря на то, что он

может добавить или удалить только пункт по

умолчанию. Демон должен быть сконфигурирован

так, чтобы выступать либо в роли маршрутизатора,

либо в роли хоста.

Эти два ICMP сообщения

достаточно новы и поддерживаются не всеми

системами. В нашей сети их поддерживает только Solaris 2.x (демон in.rdisc).

Несмотря на то, что RFC рекомендует использовать

групповую адресацию IP, где это возможно, поиск

маршрутизаторов может осуществляться с

использованием широковещательных сообщений.

Краткие выводы

IP маршрутизация это краеугольный камень, на

котором держится функционирование систем,

использующих TCP/IP, будь то хост или маршрутизатор.

Записи в таблице маршрутизации довольно просты:

до 5 флаговых битов, IP адрес назначения (хост, сеть

или по умолчанию), IP адрес маршрутизатора

следующей пересылки (для непрямого маршрута) или

IP адрес локального интерфейса (для прямого

маршрута) и указатель на используемый локальный

интерфейс. Записи, соответствующие хостам, имеют

более высокий приоритет, чем записи,

соответствующие сетям, а оба типа записей имеют

более высокий приоритет по сравнению с маршрутом

по умолчанию.

Просмотр таблицы маршрутизации

осуществляется для каждой IP датаграммы, которую

система генерирует или пропускает через себя.

Таблица маршрутизации может быть обновлена с

помощью демона маршрутизации или ICMP

перенаправления. По умолчанию система никогда не

пропустит через себя датаграмму, если система не

сконфигурирована как маршрутизатор. Статические

маршруты могут быть добавлены с помощью команды route, а ICMP сообщения поиска

маршрутизатора могут быть использованы для

инициализации и динамического обновления

маршрутов по умолчанию. Хост может запуститься с

очень простой таблицей маршрутизации, которая

динамически обновляется с помощью ICMP

перенаправлений, приходящих с маршрутизатора по

умолчанию.

Эта глава была посвящена тому, как

отдельная система использует свою таблицу

маршрутизации. В следующей главе мы рассмотрим,

как маршрутизаторы обмениваются друг с другом

маршрутной информацией.

Упражнения

  1. Как Вы думаете, почему

    существуют два типа ICMP перенаправлений — на сеть

    и на хост?

  2. Обратитесь к таблице маршрутизации

    хоста svr4, показанной в начале раздела «Принципы

    маршрутизации». Является ли необходимым

    указание маршрута на хост slip (140.252.13.65)? Что

    изменится, если этот пункт будет удален из

    таблицы маршрутизации?

  3. Представьте, что существует кабель

    между 4.2BSD и 4.3BSD хостами.

    Также представьте, что идентификатор сети — 140.1.

    Хост 4.2BSD распознает в качестве

    широковещательных адресов только адреса с

    идентификаторами хостов, установленными во все

    нули (140.1.0.0), тогда как хост 4.3BSD обычно отправляет

    широковещательные сообщения с идентификаторами

    хостов, состоящих из всех единичных битов

    (140.1.255.255). Также, хост 4.2BSD по умолчанию старается

    перенаправить входящие датаграммы, даже если он

    имеет только один интерфейс. Опишите, что

    произойдет, когда хост 4.2BSD получает IP датаграммы

    с адресом назначения 140.1.255.255.

  4. Продолжим предыдущее упражнение.

    Представьте себе, что кто-либо исправил эту

    проблему, добавив запись в ARP кэш на одной из

    систем в подсети 140.1. (воспользовавшись командой arp), сказав при этом, что IP адрес 140.1.255.255

    соответствует Ethernet адресу из всех единичных

    битов (широковещательный запрос Ethernet). Опишите,

    что произойдет в этом случае.

  5. Просмотрите таблицу маршрутизации

    Вашей системы и опишите каждую запись.

  Речь пойдет об обозначениях в окне Interface List и Route List которые отображаются в самой первой колонке.

  Итак, в Interface List статусы выглядят так:

R — Running — интерфейс активен (подключено).  Интерфейс работает, к нему подключен кабель.
R — Slave — подчиненный интерфейс (не подключено).  Интерфейс является подчиненным. Или этому порту назначен Master Port в настройках, или этот порт входит в Bridge.  О разнице между этими коммутациями описано в этой статье.
RS — Running & Slave — активен подчиненный интерфейс (подключено).  Означает что порт подключен и является подчиненным.
X — Disabled — выключено.  Интерфейс выключен.

    В Route List:

X — Disabled — маршрут выключен.
  Никаким образом не влияет на маршрутизацию и на другие маршруты.
A — Active — Активен.
  Маршрут используется для пересылки пакетов.
D — Dynamic — Динамический маршрут.
  Создан программно, автоматически системой. Не импортируется при импорте и его вручную изменить нельзя.
C — Сonnect — Подключено.
S — Static — Статический маршрут.
 Его можно изменять.
r — RIP route — RIP-маршрут.
  Routing Information Protocol — протокол дистанционно-векторной маршрутизации, который оперирует транзитными участками в качестве метрики маршрутизации.
b — BGP route — BGP маршрут.   Маршрут динамической маршрутизации BGP.
o — OSPF route — OSPF маршрут.   Маршрут динамической маршрутизации OSPF.
m — MME route — MME маршрут.   Маршрут собственного протокола Mikrotik Mesh Made Easy.
B — Blackhole — «Черная дыра»
  Запись в таблице маршрутизации, которая направляет трафик «в никуда». Таким образом, достигается эффект, подобный при использовании брэндмауэра — соответствующие правилу пакеты фактически не достигают пункта назначения.
U — Unreachable — Недоступен.   Пакет идущий по этому маршруту сохраняется, отправителю сообщается о недоступности получателя.
P — Prohibit — Отклонить.
  Пакет отклоняется, отправителю сообщается что пакет отклонен.

  Как вы видите, в случае Route List обозначения суммируются, и получаются опреденные коды типа DAS, AS, DAC, по которым можно сразу определить на основе чего создан данный маршрут и его состояние.

Подписаться на новые статьи.



In the previous article of this series, we discussed about the basic principles of IP routing and the steps involved in IP routing.

In this article we will look a bit closely at some of the other aspects related to IP routing.

Linux IP Routing series: part 1, part 2, part 3 (this article).

Lets start the discussion with the explanation of flags in the routing table entries.

The flags

Following is the list of flags and their significance in the routing table :

  • U : This flag signifies that the route is up
  • G : This flag signifies that the route is to a gateway. If this flag is not present then we can say that the route is to a directly connected destination
  • H : This flag signifies that the route is to a host which means that the destination is a complete host address. If this flag is not present then it can be assumed that the route is to a network and destination would be a network address.
  • D : This flag signifies that this route is created by a redirect.
  • M : This flag signifies that this route is modified by a redirect.

Direct route, Indirect route and the ‘G’ flag

  • A direct route is the one where the destination is directly connected to the forwarding host while in case of an indirect route the destination host is not directly connected to the forwarding host.
  • On a direct route the destination IP address and the link layer address in the datagram are that of the destination host while in case of an indirect route, the destination IP in the datagram remains unchanged but the link layer address changes to that of the next router to which this datagram is being delivered.
  • This is where the ‘G’ flag comes in handy. The ‘G’ flag above signifies that this is an indirect route. For a direct route, the ‘G’ flag is not set.

The ‘G’ flag Vs the ‘H’ flag

Now as we all know that the ‘G’ flag signifies the route. The route could be direct or indirect as explained above.

But the ‘G’ flag should not be confused by the ‘H’ flag. This flag signifies that the destination address in the entry is a host address or a network address.

As already discussed in the previous part of this article series, when the destination IP address from the received datagram is searched in the routing table the first the complete address is matched.

If complete address matching fails then the network ID is matched to see if the routing table has an entry for a network to which the destination IP address of the datagram belongs.

So we see that in case of a complete IP address match the entry would contain ‘H’ flag while in case of network ID match the entry would not contain the ‘H’ flag.

Routing table complexity

A routing table can be fairly straight forward as well as can be really complex. The complexity of a routing table depends on the topology of the network to which the host talks to. Lets consider some practical cases and see how they influence the routing table of a host.

  • A very basic case would be that of a stand alone host that is not at all connected to any network. In this case the TCP/IP stack can still be used by the host but in case of communication to itself only. So in this case the routing table would contain a single entry and that will be of loop back interface.
  • For a host connected to a single LAN, the routing table would contain a couple of entries. One entry (as already discussed above) would that be of loop back interface while the other entry would that be of the LAN .
  • Now, suppose the host is connected to Internet. In this case the router table will contain(besides the loop back entry) an entry for the default router through which the host is connected to the Internet.
  • If the host is connected to various networks through different interfaces then the routing table would contain individual entries for all the different networks to which the host is connected. Besides there will be a loop back entry and there could be a default router entry.

Routing Table Initialization

Till now we have been discussing about the routing table entries, what they contain, their complexity etc. Now lets discuss briefly over the creation of these entries.

  • When an interface is initialized, an entry for a direct route is created in the routing table corresponding to that interface.
  • Routes to networks and hosts that are not directly connected can be added through commands.
  • ‘route’ command is used for this purpose.
  • For example, a basic route command would look like : route add <destination> <gateway> <metric>
  • If the ‘metric’ is non zero then ‘G’ flag is set else not.

This route command can be triggered from the initialization files when the system boots up. The problem here is that there is not one standard file which is used across all the OS’s that contains route command. Under 4.4BSD and BSD/386 it is /etc/netstart, under SVR4 it is /etc/inet/rc.inet, under Solaris 2.x it is /etc/rc2.d/S69inet, SunOS 4.1.x uses /etc/rc.local, and AIX 3.2.2 uses /etc/rc.net.

There are a couple of others ways to initialize a routing table. Like running a routing daemon or to use router discovery protocol but we will not elaborate those in this article.

NOTE: You should also understand how to use the route command effectively.

ICMP host or ICMP network unreachable errors

These errors occur when the host or the network (for which the IP datagram is destined to) are down. For example, suppose host A is connected to host B and link to host B is down.

Then in this case if the host A receives an IP datagram for host B then host A will send a ‘host unreachable’ error back to the host from where this IP datagram originated.

This case assumes that no default router entry exists on host A. Same goes for the ‘network unreachable’ error.

In TCP connection, flags are used to indicate a particular state of connection or to provide some additional useful information like troubleshooting purposes or to handle a control of a particular connection. Most commonly used flags are “SYN”, “ACK” and “FIN”. Each flag corresponds to 1 bit information. 

Types of Flags: 
 

  • Synchronization (SYN) – It is used in first step of connection establishment phase or 3-way handshake process between the two hosts. Only the first packet from sender as well as receiver should have this flag set. This is used for synchronizing sequence number i.e. to tell the other end which sequence number they should accept.
  • Acknowledgement (ACK) – It is used to acknowledge packets which are successful received by the host. The flag is set if the acknowledgement number field contains a valid acknowledgement number. 
    In given below diagram, the receiver sends an ACK = 1 as well as SYN = 1 in the second step of connection establishment to tell sender that it received its initial packet. 
     
  • Finish (FIN) – It is used to request for connection termination i.e. when there is no more data from the sender, it requests for connection termination. This is the last packet sent by sender. It frees the reserved resources and gracefully terminate the connection. 
     
  • Reset (RST) – It is used to terminate the connection if the RST sender feels something is wrong with the TCP connection or that the conversation should not exist. It can get send from receiver side when packet is send to particular host that was not expecting it. 
  • Urgent (URG) – It is used to indicate that the data contained in the packet should be prioritized and handled urgently by the receiver. This flag is used in combination with the Urgent Pointer field to identify the location of the urgent data in the packet.
  • Push (PSH) – It is used to request immediate data delivery to the receiving host, without waiting for additional data to be buffered on the sender’s side. This flag is commonly used in applications such as real-time audio or video streaming.
  • Window (WND) – It is used to communicate the size of the receive window to the sender. The window size is the amount of data that the receiving host is capable of accepting at any given time. The sender should limit the amount of data it sends based on the size of the window advertised by the receiver.
  • Checksum (CHK) – It is used to verify the integrity of the TCP segment during transmission. The checksum is computed over the entire segment, including the header and data fields, and is recalculated at each hop along the network path.
  • Sequence Number (SEQ) – It is a unique number assigned to each segment by the sender to identify the order in which packets should be received by the receiver. The sequence number is used in conjunction with the acknowledgement number to ensure reliable data transfer and to prevent duplicate packets.
  • Acknowledgement Number (ACK) – It is used to acknowledge the receipt of a TCP segment and to communicate the next expected sequence number to the sender. The acknowledgement number field contains the sequence number of the next expected segment, rather than the number of the last received segment.

Finish (FIN) v/s Reset (RST) – 
 

  • Push (PSH) – Transport layer by default waits for some time for application layer to send enough data equal to maximum segment size so that the number of packets transmitted on network minimizes which is not desirable by some application like interactive applications(chatting). Similarly transport layer at receiver end buffers packets and transmit to application layer if it meets certain criteria. 

    This problem is solved by using PSH. Transport layer sets PSH = 1 and immediately sends the segment to network layer as soon as it receives signal from application layer. Receiver transport layer, on seeing PSH = 1 immediately forwards the data to application layer. 
    In general, it tells the receiver to process these packets as they are received instead of buffering them. 
     

  • Urgent (URG) –Data inside a segment with URG = 1 flag is forwarded to application layer immediately even if there are more data to be given to application layer. It is used to notify the receiver to process the urgent packets before processing all other packets. The receiver will be notified when all known urgent data has been received.

Push (PSH) v/s Urgent (URG) – 
 

Last Updated :
13 Apr, 2023

Like Article

Save Article

В мире компьютерных сетей существует широкий спектр различных протоколов. Один из самых популярных протоколов, используемых для маршрутизации и пересылки данных, — это протокол динамической маршрутизации. Этот протокол позволяет автоматически обновлять информацию о маршрутах и оптимизировать процесс передачи данных.

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

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

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

Route flags могут быть использованы различными протоколами динамической маршрутизации, такими как OSPF (Open Shortest Path First) и BGP (Border Gateway Protocol). Они позволяют оптимизировать передачу данных в компьютерных сетях и обеспечивают более эффективную работу сети в целом. Знание и понимание этих флагов является важным для администраторов сетей, чтобы настроить оптимальные маршруты и обеспечить качественную работу сети.

Содержание

  1. Что такое флаги маршрута: особенности и способы их применения
  2. Роль флагов маршрута в навигации
  3. Как правильно используется флаг маршрута на дороге
  4. Основные типы флагов маршрута и их значения
  5. Популярные методы использования флагов маршрута в городской среде
  6. Советы по обращению с флагами маршрута на трассах и шоссе
  7. Вопрос-ответ
  8. Какие флаги маршрута существуют и для чего они нужны?
  9. Какие флаги маршрута можно использовать для управления приоритетами маршрутизации?
  10. Какой флаг маршрута указывает на наличие нескольких путей к одному и тому же адресу?

Что такое флаги маршрута: особенности и способы их применения

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

Особенности флагов маршрута:

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

Способы применения флагов маршрута:

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

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

Роль флагов маршрута в навигации

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

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

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

Примеры флагов маршрута:

  1. Флаги предупреждения: эти флаги указывают на опасные участки дороги, такие как острые повороты, скользкие дороги или узкие мосты. Они помогают водителям быть более осторожными во время движения по таким участкам.
  2. Флаги достопримечательностей: такие флаги указывают на интересные места, которые стоит посетить во время путешествия, например, исторические памятники, природные достопримечательности или культурные объекты.
  3. Флаги сервисов: такие флаги указывают на наличие различных сервисов на маршруте, таких как отели, заправки, рестораны, больницы и т.д. Они помогают путешественникам планировать остановки и находить необходимые удобства.

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

Как правильно используется флаг маршрута на дороге

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

Вот некоторые примеры и правила, относящиеся к использованию флагов маршрута:

  1. Стрелка вперед: эта стрелка указывает направление движения прямо вперед. Водители должны следовать указанному направлению и не сворачивать на другие дороги, если не указано иное.

  2. Стрелка влево: эта стрелка указывает на необходимость поворота налево. Водители должны быть готовы свернуть налево и уступить дорогу встречным транспортным средствам.

  3. Стрелка вправо: эта стрелка указывает на необходимость поворота направо. Водители должны быть готовы свернуть направо и уступить дорогу пешеходам или встречным транспортным средствам.

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

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

  • Числа и буквы: эти обозначения показывают номер маршрута или указывают на конкретное направление или выход с дороги.

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

Основные типы флагов маршрута и их значения

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

1. Кратчайший маршрут

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

2. Быстрый маршрут

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

3. Велосипедный маршрут

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

4. Пеший маршрут

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

5. Общественный транспорт

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

6. Альтернативные маршруты

Флаг альтернативных маршрутов указывает на необходимость получить несколько вариантов маршрута от начальной до конечной точки. Такой тип маршрута полезен при выборе наиболее оптимального пути из нескольких предложенных вариантов.

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

Популярные методы использования флагов маршрута в городской среде

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

Вот несколько популярных методов использования флагов маршрута в городской среде:

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

  2. Указание направлений движения. Флаги маршрута могут использоваться для указания конкретных направлений движения на дорогах. Например, флаги могут указывать на повороты, развязки или другие маршрутные изменения, чтобы помочь водителям безошибочно выбирать правильный путь.

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

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

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

Советы по обращению с флагами маршрута на трассах и шоссе

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

  1. Соблюдайте правила дорожного движения: Флаги маршрута не являются декоративными элементами, а имеют определенное значение. Водители должны соблюдать все указания, которые дает флаг маршрута.
  2. Знайте основные значения флагов: Существует несколько основных значений флагов маршрута. Красный флаг означает запрет или остановку, желтый флаг предупреждает о возможных опасностях, зеленый флаг указывает на безопасные условия на дороге.
  3. Учитывайте условия погоды: Некоторые флаги маршрута могут быть временно установлены в связи с неблагоприятными погодными условиями. Это может быть связано с обледенением дороги, плохой видимостью или другими проблемами. Будьте внимательны и соблюдайте все указания в таких случаях.
  4. Повторяющиеся флаги маршрута: Иногда флаги маршрута могут повторяться через определенные интервалы. Это делается для того, чтобы подтвердить действие флага и обеспечить более четкое восприятие водителями.
  5. Используйте здравый смысл: Важно помнить, что флаги маршрута не являются абсолютной гарантией безопасности. Водители должны также применять свой здравый смысл и адаптировать свое поведение на дороге в зависимости от ситуации.

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

Вопрос-ответ

Какие флаги маршрута существуют и для чего они нужны?

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

Какие флаги маршрута можно использовать для управления приоритетами маршрутизации?

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

Какой флаг маршрута указывает на наличие нескольких путей к одному и тому же адресу?

Флаг маршрута «MULTIPATH» указывает на наличие нескольких путей к одному и тому же адресу. Это позволяет маршрутизатору использовать несколько путей для доставки пакетов и повысить отказоустойчивость сети. В случае отказа одного пути, маршрутизатор автоматически переключается на другой доступный путь.

  • Что такое роутер с сим картой для дома
  • Что такое уровень firewall в роутере
  • Что такое фильтрация портов в роутере
  • Что такое роутер с модемом для йота и как он работает
  • Что такое универсальный роутер ростелеком