Как IP-пакет узнает, какой шлюз выбрать?

11

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

Таблицы IP-маршрутизации содержат IP-адрес шлюза.

Как этот IP-адрес шлюза используется при отправке IP-пакетов?

Саймон Фаршид
источник
1
Пакет не «знает», маршрутизатор решает, в какой шлюз его отправлять, через какой канал существует между маршрутизатором и выбранным шлюзом. (Как показывают ответы, ethernet - это общеизвестный и распространенный уровень 2 для IP-трафика.)
Peter Cordes

Ответы:

14

TL; DR: адрес шлюза сохраняется только в кадре Ethernet, который содержит этот пакет TCP / IP

Трафик сервера-> коммутатора-> маршрутизатора, а также трафик сервера-> коммутатора-> сервера, где IP-адресация фактически не играет никакой значимой роли. Это мир базового протокола, скорее всего, Ethernet. Так что это мир, который работает на MAC-адресации.

Таким образом, вам нужно только устранить путаницу, что шлюз по умолчанию - это IP-адрес. Это вроде ... при запуске ... но этот IP-параметр шлюза необходим только для выполнения одной задачи, а именно: у кого здесь 192.168.1.1? Ответ приходит, что шлюз MAC 88: 99: aa: bb: cc: dd: ee: ff. (Это запрос / ответ ARP, переводчик между двумя мирами.) Пакет направляется к этому MAC на уровне Ethernet, несмотря на то, что он может содержать другое назначение на уровне IP.

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

kubanczyk
источник
2
Я бы пошел дальше и сказал, что это единственный ответ, который на самом деле отвечает на вопрос.
Питер Грин
3
Кроме того, это относится не только к шлюзу по умолчанию, но и к адресу «следующего перехода» для любой записи в таблице маршрутизации.
Питер Грин
2
Конечно, существуют другие протоколы уровня 1/2, отличные от Ethernet. Протоколы IEEE LAN имеют MAC-адреса, но другие протоколы используют что-то или ничего больше.
Рон Мопин
6

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

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

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

Эса Йокинен
источник
1
Также стоит упомянуть маршрутизацию на основе политик, в которой можно выбирать разные таблицы маршрутизации на основе различных критериев, таких как исходный IP-адрес или метка межсетевого экрана.
Братчли
Не забудьте объяснить, что самое длинное совпадение префикса имеет приоритет над всем остальным, когда есть два возможных совпадения.
Рон Мопин
Вопрос не в том, как маршрутизатор пересылает пакет, а в том, как отправитель отправляет его на правильный маршрутизатор.
Бармар
@ Бармар: оригинальная версия этого вопроса могла быть интерпретирована двумя способами, и это ответило на другой. Процесс выбора маршрутизатора на основе таблицы маршрутизации такой же, как и на исходной машине. Поэтому я все еще нахожу этот ответ полезным, в то время как другой снимает один слой вниз. Они дополняют друг друга.
Эса Йокинен,
Я только что проверил историю редактирования. Я не вижу существенной разницы в оригинальной версии. Вопрос в том, как пакет попадает в маршрутизатор, который определяется из таблицы маршрутизации.
Бармар
2

Одна возможность состоит в том, что сеть настроена с протоколом избыточности первого перехода (FRHP), таким как VRRP или HSRP. FHRP имеет адрес виртуального шлюза, который используют хосты, и трафик, отправленный на виртуальный адрес, принимается одним из физических маршрутизаторов, который затем пересылает трафик. Если первичный маршрутизатор дает сбой, вторичный маршрутизатор может определить это и принять пересылку пакетов.


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

Маршрутизаторы изучают маршруты тремя способами:

  1. Непосредственно связанные сети
  2. Статически настроенные маршруты
  3. Через протокол динамической маршрутизации
Рон Мопин
источник
2

Короткий и простой ответ: он не закодирован в пакете или является целевым адресом Ethernet в зависимости от того, как вы на него смотрите. Стек IP / Ethernet проверяет, какой шлюз обрабатывает IP-адрес назначения, отправляет запрос ARP на IP-адрес шлюза, чтобы получить его MAC-адрес, а затем отправляет пакет на MAC-адрес шлюза. Затем шлюз пересылает пакет и снова делает то же самое. Это предполагает сеть Ethernet.

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

Алекс Кэннон
источник
0

Конечно, одна деталь, на которую нужно обратить внимание, - это соответствие маршрута. Если я отправляю на 192.0.2.55/24 и маршрут доступен для трафика на 10.55.0.0/16, то этот маршрут игнорируется, потому что он не применяется.

Следующий критерий, который обычно рассматривается, - это иметь более конкретные маршруты, имеющие приоритет над более общими маршрутами. Под «конкретным» маршрутом я подразумеваю меньшие подсети. Другими словами, большее число при использовании нотации / CIDR и большие маски подсети при использовании нотации «маска подсети». Другими словами, сети назначения с меньшим количеством возможных адресов.

Таким образом, «шлюз по умолчанию», также известный как «последний шлюз», обычно указывает место назначения для всего трафика в сеть 0.0.0.0/0. Любой маршрут для меньшей сети будет «более конкретным» и будет иметь приоритет. Итак, 192.0.2.0/24 будет иметь больший приоритет.

В-третьих, маршруты обычно имеют другое поле, называемое «метрикой», или иногда другое имя, например «приоритет». Если у вас несколько сетей одинакового размера, это может оказать влияние.

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

Где информация о шлюзе, которая должна быть взята, закодирована внутри отправленных IP-пакетов?

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

На странице 11 RFC 791 показана таблица в стиле «ASCII ART» информации, которая находится в IP-пакете. После этой таблицы этот документ показывает подробности (например, раздел «Опции» описан на стр. 15).

TOOGAM
источник