Сеть: сопоставление длинного префикса - PullRequest
17 голосов
/ 18 февраля 2012

маршрутизатор (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

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

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

Спасибо


Спасибо. 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

Step3

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

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

Спасибо

Ответы [ 2 ]

18 голосов
/ 18 февраля 2012

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

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

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

8 голосов
/ 10 января 2017

Краткое вступление:

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

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

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


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

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

m1: 172.58.128.0/17

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

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

м2: 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

м3: 172,58,160,0 / 19

  • Запуск -> 172.58.160.0
  • Окончание -> 172.58.191.255

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

nterface range description table

Примечание:

  • Чем длиннее горизонтальное деление (как в случае м2 & м3), тем точнее префикс & должен быть выбран в случае перекрывающихся диапазонов.
  • Диапазоны 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...