Сеть: самый длинный префикс
Маршрутизатор (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
Вы можете помочь мне проверить, правильно ли это сейчас?
Спасибо
Ответы
Ответ 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