Подтвердить что ты не робот

Сеть: самый длинный префикс

Маршрутизатор (IPv4)

Destination             Interface
0.0.0.0/0               m0
172.58.128.0/17         m1
172.58.128.0/19         m2 
172.58.160.0/19         m3

Мне нужно выбрать, какой интерфейс правильный. Я сделал это:

172.58.218.80 m2
172.58.165.90 m3
172.58.124.36 m1
172.58.169.18 m3  
172.58.155.112 m2
172.59.12.142 m0

Может ли кто-нибудь проверить, правильно ли я это сделал? Beacuse Я действительно не понимаю "самый длинный префиксный матч".

Как я могу узнать, что адрес был "сопоставлен" в таблице маршрутизации?

Спасибо


Спасибо. resmon6

Итак, Step1 преобразуйте его в двоичный.

10101100.00111010.10000000.00000000 172.58.128.0/17  
10101100.00111010.10000000.00000000 172.58.128.0/19         
10101100.00111010.10100000.00000000 172.58.160.0/19

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

10101100.00111010.1    is the prefix for 172.58.128.0/17
10101100.00111010.100  is the prefix for 172.58.128.0/19
10101100.00111010.101  is the prefix for 172.58.160.0/19

Шаг 3

10101100.00111010.11011010.01010000 172.58.218.80 
10101100.00111010.10100101.01011010 172.58.165.90 
10101100.00111010.01111100.00100100 172.58.124.36 
10101100.00111010.10101001.00010010 172.58.169.18  
10101100.00111010.10011011.01110000 172.58.155.112 
10101100.00111011.00001100.10001110 172.59.12.142

-------------------------------------------------------- 
10101100.00111010.1 
10101100.00111010.100 
10101100.00111010.101

Итак, это означает

172.58.218.80 m1
172.58.165.90 m3
172.58.124.36 m0
172.58.169.18 m3
172.58.155.112 m2
172.59.12.142 m0

Вы можете помочь мне проверить, правильно ли это сейчас?

Спасибо

4b9b3361

Ответ 1

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

192.168.100.0/24
192.168.0.0/16

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

11000000.10101000.01100100.00000000   192.168.100.0/24
11000000.10101000.00000000.00000000   192.168.0.0/16

Затем вы используете маску подсети для получения префикса. Используйте количество бит в маске подсети, начиная с левой стороны.

11000000.10101000.01100100   is the prefix for 192.168.100.0/24
11000000.10101000            is the prefix for 192.168.0.0/16

Теперь, когда вы выбираете маршрут для адресата, вы преобразуете IP-адрес назначения в двоичный код и выбираете маршрут с самым длинным префиксом, который соответствует.

Вы можете видеть, что пункт назначения для 192.168.100.50 соответствует префиксам маршрута, поэтому он выбирает более длинный префикс 192.168.100.0/24

192.168.100.50/32 11000000.10101000.01100100.00110010
-----------------------------------------------------
192.168.100.0/24  11000000.10101000.01100100
192.168.0.0/16    11000000.10101000

Я знаю, что подсети могут сбивать с толку сначала, но я не хочу делать вашу работу за вас. Я скажу вам, что это не правильно.

Ответ 2

Краткое введение:

Каждый пакет, входящий в маршрутизатор, имеет IP-адрес назначения. Маршрутизатор перенаправляет пакет на конкретный интерфейс, сопоставляя адрес с списком записей таблицы маршрутизации, обычно называемыми префиксами подсети.

Проблема возникает, когда IP-адрес сопоставляется с более чем одним таким префиксом. В этом случае выбирается самый длинный совпадающий префикс.

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


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

Шаг 1. Для каждого интерфейса определите диапазоны адресов следующим образом.

m1:172.58.128.0/17

Рассмотрим 15 (32-17) битов справа, сделайте их все 0, чтобы получить запуск IP-адреса. Сделайте их все 1, чтобы получить конечный IP-адрес. 1 в последнем октете дает 255 (8 1). 1 в 3-м октете дает 127 (7 1) & добавив это в сетевую маску 128, получаем 255.

  • Начало → 172.58.128.0
  • Окончание → 172.58.255.255

m2: 172.58.128.0/19

Рассмотрим 13 (32-19) битов справа, сделайте их все 0, чтобы получить начиная IP-адрес в этом диапазоне и сделать их все 1, чтобы получить окончание IP-адрес (3-й октет: 128 + 31 [5 1 с] = 159)

  • Начало → 172.58.128.0
  • Окончание → 172.58.159.255

m3: 172.58.160.0/19

  • Начало → 172.58.160.0
  • Окончание → 172.58.191.255

Шаг 2: Постройте простую таблицу с диапазонами интерфейсов следующим образом.

таблица описания диапазона nterface

Примечание:

  • Более длинное горизонтальное деление (как в случае m2 и m3) более конкретное префикс должен быть выбран и должен быть выбран в случае перекрытия диапазонов.
  • Диапазоны m2 и m3 независимы (т.е. не перекрываются), но оба перекрываются с диапазоном m1.
  • В целом, m1, m2 и m3 перекрываются с диапазоном m0 по умолчанию (который включает все IP-адреса).

Шаг 3. Сопоставьте заданные IP-адреса с правильным диапазоном.

    172.58.218.80  -> m1
    172.58.165.90  -> m3
    172.58.124.36  -> m0
    172.58.169.18  -> m3
    172.58.155.112 -> m2
    172.59.12.142  -> m0