IP маршрутизация

IP Сети

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

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

Подсети

Эта структура отражена в разбиении IP адреса на хост и сетевую части, как объяснено выше. ПО умолчанию, сеть мест назначения получается из сетевой части IP адреса. Таким образом, хосты с идентичными IP адресами сети должны располагаться в пределах одной сети, и наоборот. (2) Имеет смысл предложить подобную схему также и внутри сети, так как она может состоять из набора сотен меньших сетей, где самыми маленькими единицами являются физические сети типа Ethernets. Поэтому, IP позволяет Вам поделить IP сеть на несколько подсетей.

Подсеть принимает ответственность за доставку дэйтаграм для определенного диапазона IP адресов. Как с классами A, B, или C, она идентифицируется сетевой частью IP адресов. Однако, сетевая часть теперь расширена, чтобы включить некоторые биты от хост части. Число битов которые интерпритируются как номер в подсети задается так называемой subnet(подсетевой) маской, или netmask. Это - 32 разрядное число, которое определяет разрядную маску для сетевой части IP адреса. Сеть Groucho Marx Университета - пример такой сети. Она имеет класс B с сетевым номером 149.76.0.0, и netmask поэтому равен 255.255.0.0.

Внутри, сеть GMU состоит из нескольких меньших сетей, типа локальных сетей различных отделов. Так что диапазон IP адресов разбит на 254 подсети, от 149.76.1.0 до 149.76.254.0. Например, отдел теоретической физики имеет номер 149.76.12.0. Университетский оптиковолоконный кабель тоже сеть с собственным номером 149.76.1.0. Эти подсети имеют одинаковый сетевой IP адрес, в то время как третья octet используется, чтобы различать их между собой. Таким образом они будут использовать подсетевую маску 255.255.255.0.

Картинка показывает как 149.76.12.4, адрес quark, интерпритируется по-разному когда адрес принят как обычный адрес сети класса B, и когда используется с подсетью.

Стоит заметить что subnetting (так названа техника создания подсетей) -- чисто внутреннее дело сети. Подсети создаются сетевым владельцем ( или администратором). Часто, подсети создаются чтобы отразить существующие границы, будь они физические (два Ethernets), административные (между двумя отделами) или географические. Однако, эта структура воздействует только на внутреннее поведение сети, и полностью невидима для внешнего мира.

Gateways Subnetting - не только организационная деление, но часто и естественное следствие границ аппаратных средств. Знания хоста о строении данной физической сети, типа Ethernet, являются очень ограниченными: Единственные хосты, с которыми они способны говорить непосредственно, те, что находятся в той же сети. Ко всем другим хостам они могут обращаться только через так называемый gateways. Gateway -- хост который связан с двумя или больше физическими сетями одновременно и конфигурирован так, чтобы перекачивать пакеты между ними.

IP достаточно легко распознать находится ли хост на местной физической сети, различные физические сети должны принадлежать различным IP сетям. Например сетевой номер 149.76.4.0 сохранен для хостов в локальной сети математиков. При посылке дэйтаграм к quark, сетевое программное обеспечение на erdos немедленно видит по IP адресу, 149.76.12.4, что хост места назначения находится в другой физической сети, и поэтому может быть достигнут только через gateway (sophus по умолчанию). Sophus непосредственно связан с двумя отличными подсетями: отделом математики, и университетской магистралью. Они доступы через различные интерфейсы (eth0 и fddi0 соответственно). Но какой IP адрес мы ему назначаем? 149.76.1.0 или 149.76.4.0? Ответ: оба. При разговоре с сервером в локальной сети математиков, sophus использует IP адрес 149.76.4.1, а при разговоре с хостом на магистраль, он должен использовать 149.76.1.4. Таким образом, gateway получает по одному IP адресу на каждую сеть, к которой он подключен. Эти адреса (вместе с netmask) привязаны к интерфейсу через, который обращаются подсети. Таким образом, интерфейсы и адреса sophus связаны так:

---------------------------------------- +-------+-------------+----------------+

| Интерфейс| адрес | Netmask |

+-------+-------------+----------------+ +-------+-------------+----------------+

| Eth0 | 149.76.4.1 | 255.255.255.0 |

| fddi0 | 149.76.1.4 | 255.255.255.0 |

| Lo | 127.0.0.1 | 255.0.0.0 |

+-------+-------------+----------------+ +-------+-------------+----------------+

Последняя запись описывает loopback интерфейс lo. На картинке изображена топология части сети Groucho Marx Университета (GMU). Хосты, находящиеся в двух подсетях в то же самое время показываются с обоими адресами.

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

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

Теперь сосредоточим наше внимание на том, как IP выбирает gateway при доставке дэйтаграм к определенной сети.

Как мы видели раньше erdos, когда передавал дэйтаграмы для quark, проверил место назначения и нашел, что его нет в местной сети. Поэтому он посылает ее gateway, sophus, который теперь сталкивается с той же самой задачей. Sophus определяет, что quark не находится в сетях, с которыми он непосредственно связан, так что он передает эту дэйтаграм другому gateway, чтобы он перенаправил ее дальше. Правильный выбор был бы niels (gateway Отдела Физики). Но sophus нуждается в некоторой информации чтобы определить подходящий gateway. Для этого используется таблица IP маршрутизации, которая определяет какие сети присоединены с помощью каких gateways. Обязательно должен быть указан маршрут по умолчанию (the default route), по которому будут направляться все пакеты с адресами в неизвестных сетях. Этот gateway связан с сетью 0.0.0.0.. На sophus, эта таблица могла бы напоминать эту:

----------------------------------------- +------------+-------------+------------+

| Сеть | Gateway | Интерфейс |

+------------+-------------+------------+ +------------+-------------+------------+

| 149.76.1.0 | - | Fddi0 |

| 149.76.2.0 | 149.76.1.2 |fddi0 |

| 149.76.3.0 | 149.76.1.3 | fddi0 |

| 149.76.4.0 | - | Eth0 |

| 149.76.5.0 | 149.76.1.5 | fddi0 |

|... | ... | ... |

| 0.0.0.0 | 149.76.1.2 | fddi0

| +------------+-------------+------------+ +------------+-------------+------------+

Маршруты к сетям, с которыми sophus связан непосредственно обозначаются "-" в столбце gateway.

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

В зависимости от размера сети используются различные протоколы маршрутизации. Для маршрутизации в автономной системе (типа университетского городка), лучше подходит RIP, Routing Information Protocol (протокол маршрутной информации), который предложен в BSD демоне. Для маршрутизации между автономными системами используются внешние протоколы маршрутизации типа EGP (Внешний Gateway Протокол), или BGP ( Пограничный Gateway Протокол); они ( а также RIP) были предложены в gated демоне( University of Cornell's).

Метрические значения

Динамическая маршрутизация основанная на RIP выбирает самый лучший маршрут к некоторому хосту или сети, основываясь на наборе "hops"(перелетов), то есть gateways дэйтаграм, рассылаемых перед передачей основной информации. Чем более короткий маршрут, тем лучше RIP его оценивает. Очень длинные маршруты с 16 или больше перелетов рассматриваются как неподходящие и отвергаются.

Чтобы использовать RIP для управления информацией, маршрутизируемой внутри вашей сети, Вы должны запустить gated на всех хостах. Во время загрузки gated проверяет все активные сетевые интерфейсы. Если имеется больше чем один активный интерфейс ( не считая loopback ), это предполагает что хост передает пакеты между несколькими сетями, и будет активно обмениваться маршрутной информацией. Иначе, он будет только пассивно получать RIP пакеты и модернизировать локальную таблицу маршрутизации.

Получив информацию от локальной таблицы маршрутизации, gated вычисляет длину маршрута по так называемому метрическому значению связанному с записью в таблице. Это метрическое значение задается администратором системы при конфигурировании маршрута и должна отражать фактическую трудоемкость использования этого маршрута. Поэтому, размер маршрута к подсети, с которой хост непосредственно связан, должно всегда быть установлено в ноль, в то время как маршрут проходящий через два gateways должен иметь размер два. Однако, обратите внимание на то, что Вы не должны беспокоиться относительно метрик, когда Вы не используете RIP или gated.