Вопрос или проблема
Предположим, что два шлюза существуют в одной и той же сети. Если я правильно понимаю, таблица маршрутизации IP на компьютере отправителя определяет, через какие шлюзы будут передаваться какие пакеты.
Таблицы маршрутизации IP содержат IP-адрес шлюза.
Как используется этот IP-адрес шлюза при отправке IP-пакетов?
Кратко: адрес шлюза хранится только в кадре Ethernet, который содержит TCP/IP-пакет
Трафик сервер->коммутатор->маршрутизатор, а также трафик сервер->коммутатор->сервер, в котором IP-адресация фактически не играет никакой значимой роли. Это мир основного протокола, скорее всего, Ethernet. Итак, это мир, который использует MAC-адресацию.
Таким образом, вам нужно только прояснить, что стандартный шлюз — это IP-адрес. Ну да, в каком-то смысле… то, что показывается человеку… но IP этого шлюза только нужен для того, чтобы сделать одну вещь, а именно спросить: кто здесь имеет 192.168.1.1? Ответ приходит, что шлюз имеет MAC 88:99:aa:bb:cc:dd:ee:ff. (Это запрос/ответ ARP, переводчик между двумя мирами.) MAC — это то, что фактически используется. Пакет отправляется на этот MAC на уровне Ethernet, несмотря на то, что на уровне IP пакет указывает совершенно не связанным адрес назначения IP конечного получателя.
Итак, пакет помечен для отправки в выбранный шлюз путем установки поля “MAC-адрес назначения” в кадре Ethernet. Это поле определяет, какой шлюз в этой сети его получит, если существует несколько шлюзов. (Кадр — это базовая капсула, которая удерживает пакет или часть пакета.)
Обобщение: хотя таблицы маршрутов являются основой IP, их столбец, названный “Следующий переход”, никогда не реализуется с IP-адресацией, когда пакеты передаются по проводу. Следующий переход всегда фактически использует Ethernet, MPLS или другой базовый протокол:
$ ip route show
192.168.98.0/24 через 192.168.99.1 dev eth0
| | |
| <- мир IP -> | <- базовый мир -> |
| | |
Выше, даже когда базовый мир использует фразу 192.168.99.1
, они не имеют в виду это буквально, потому что это концепция мира IP. Формулировка — это вежливость по отношению к пользователям.
Заголовок IP датаграммы содержит только адресную информацию исходного и конечного пунктов. На основе конечного пункта маршрутизатор должен знать, куда передать пакет далее, и эта информация хранится в таблице маршрутизации.
Может быть статическая информация о маршруте для адреса или его подсети, и стандартный шлюз используется для остального. Это обычно имеет место в локальной сети: может быть статическая маршрутизация к другим локальным сетям и стандартный шлюз для остального, т.е. Интернета. В случае нескольких стандартных шлюзов, т.е. маршрутов к 0.0.0.0
или ::
, активный выбирается по его значению Приоритет или Метрика.
Дела усложняются, когда существует несколько маршрутов между конечными пунктами, как это происходит между поставщиками интернет-услуг на уровне Интернета. Существуют несколько методов для обмена информацией между маршрутизаторами: Протокол информации о маршрутах (RIP), Протокол OSPF (OSPF) и Протокол пограничного шлюза (BGP). Независимо от того, как эта информация обменивается, таблица маршрутизации знает следующий переход, и IP-пакет знает только о своем конечном пункте назначения.
Краткий и простой ответ: это не закодировано в пакете, или это целевой адрес Ethernet, в зависимости от того, как вы на это смотрите. Стек IP/Ethernet смотрит на то, какой шлюз обрабатывает адрес назначения IP, отправляет запрос ARP для получения MAC-адреса шлюза, затем отправляет пакет на MAC-адрес шлюза. Затем шлюз перенаправляет пакет и делает то же самое снова. Это предполагает использование сети Ethernet.
Я думаю, я ответил на ваш вопрос. Я однажды задавался тем же вопросом. Ваш вопрос также можно интерпретировать как то, как хост, имея конкретную таблицу маршрутизации, решает, какому шлюзу отправить исходящий пакет.
Одна из возможностей заключается в том, что сеть настроена с протоколом избыточности первого перехода (FRHP), таким как VRRP или HSRP. FHRP имеет виртуальный адрес шлюза, который используют хосты, и трафик, отправленный на виртуальный адрес, перехватывается одним из физических маршрутизаторов, который затем перенаправляет трафик. Если основной маршрутизатор выходит из строя, вторичный маршрутизатор может это определить и взять на себя перенаправление пакетов.
В любом случае пакеты не определяют путь, который они проходят. Каждый пакет передается индивидуально и независимо от других пакетов, основываясь на информации в таблице маршрутизации маршрутизатора, и пакеты к одной и той же цели от одного и того же источника могут идти разными путями, если таблица маршрутизации меняется.
Маршрутизаторы учат маршруты тремя способами:
- Непосредственно подключенные сети
- Статически настроенные маршруты
- Через динамический протокол маршрутизации
Конечно, будет рассмотрена одна деталь, совпадает ли маршрут. Если я отправляю на 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-пакет. (Следовательно, оборудование не ищет такие детали, поскольку их там нет. Поскольку оборудование не ищет такую информацию, было бы нецелесообразно пытаться включать такую информацию.)
RFC 791, страница 11 показывает таблицу в стиле “ASCII ART” с информацией, которая содержится в IP-пакете. После этой таблицы документ показывает подробности (например, раздел “Опции” описан на странице 15).
Ответ или решение
IP-пакеты не имеют встроенной информации о маршруте, который им нужно будет пройти, или о конкретном шлюзе, который следует использовать для передачи данных. Вместо этого они полагаются на оборудование маршрутизации, которое находит оптимальный путь на основе информации, содержащейся в таблицах маршрутизации.
Как работает маршрутизация IP-пакетов
-
Таблицы маршрутизации: На каждом сетевом устройстве, таком как маршрутизатор, хранится таблица маршрутизации, которая содержит информацию о том, как обрабатывать входящие пакеты. Эта таблица включает IP-адреса сети, маски подсетей и адреса следующего шлюза (Next Hop), к которому пакеты должны быть отправлены. Каждый раз, когда IP-пакет доходит до маршрутизатора, он проверяет адрес назначения в заголовке пакета и сравнивает его с записями в своей таблице маршрутизации.
-
Определение следующего шлюза: Если маршрутизатор находит соответствующий маршрут в своей таблице для данного адреса назначения, он определяет, к какому следующему шлюзу (Next Hop), установленному для этого адреса, нужно отправить пакет. Если маршрут не найден, используется шлюз по умолчанию (Default Gateway), который обычно является маршрутизатором, отвечающим за выход за пределы локальной сети.
-
ARP-запрос: IP-адрес шлюза, указанный в таблице маршрутизации, используется для формирования ARP-запроса, который переводит IP-адрес в MAC-адрес. Когда устройство отправляет ARP-запрос с целью выяснить, каков MAC-адрес для определенного IP-адреса (например, 192.168.1.1), получает ответ с MAC-адресом соответствующей сетевой карты шлюза.
-
Отправка Ethernet-рамки: После получения MAC-адреса шлюза, отправитель помещает его в поле назначения MAC-адреса Ethernet-рамки, которая содержит IP-пакет. Таким образом, пакеты, благодаря этому MAC-адресу, направляются на правильный шлюз, который затем повторно обрабатывает пакет в зависимости от его назначения.
Пример маршрутизации с несколькими шлюзами
Когда в сети существует несколько шлюзов, маршрутизаторы могут использовать различные метрики (приоритеты) для определения наилучшего пути. В таких случаях важно, чтобы таблицы маршрутизации были корректно настроены: более специфичные маршруты (например, 192.0.2.0/24) получают более высокий приоритет по сравнению с менее специфичными (например, 0.0.0.0/0). Это означает, что пакеты, соответствующие более узкому диапазону, будут переданы через соответствующий шлюз.
Использование протоколов маршрутизации
На более высоком уровне, маршрутизаторы используют протоколы маршрутизации, такие как RIP, OSPF и BGP, для обмена информацией о маршрутах. Эти протоколы позволяют маршрутизаторам динамически обновлять свои таблицы маршрутизации, что позволяет более эффективно управлять трафиком и находить наилучший маршрут, минимизируя задержки и потери пакетов.
Заключение
В заключение, IP-пакеты сами по себе не содержат информации о маршруте, который им нужно будет пройти. Они просто указывают адрес назначения. Решение о том, какой шлюз использовать, принимается на основе информации, содержащейся в таблицах маршрутизации, ARP-запросов, и метрик, которые помогает маршрутизатору выбрать оптимальный путь для передачи данных. Установление правильного пути происходит на основе логических и динамических механизмов, обеспечивающих устойчивую и быструю маршрутизацию в сети.