Назад | Перейти на главную страницу

IPv6: различия между «префиксом маршрутизации» и «префиксом ссылки»?

Каковы точные различия между «префиксом маршрутизации» и «префиксом ссылки» для IPv6?
Как эти различия в wirehark-Trace? (если вы наблюдаете Хост с назначенным «префиксом маршрутизации» или Хост с назначенным «префиксом ссылки»).
Как эти различия в протоколе обнаружения соседей? (с точки зрения другого / внешнего Хоста)
Они работают все вместеэти два типа приставок?

Самый простой способ понять разницу между ними - это посмотреть на примере, показывающем иерархическую природу префиксов.

Пример иерархии

Интернет-провайдеру был назначен префикс из RIR (Региональный интернет-реестр), который в этом примере мы предположим, 2001:db8::/32. Этот префикс отличается от префиксов, переданных клиентам, в том смысле, что провайдер должен будет объявить его через BGP другим провайдерам, с которыми он связан.

Теперь интернет-провайдер собирается назначить префиксы клиенту. Сначала они назначают 2001:db8:0:1::/64 к ссылке, соединяющей маршрутизатор ISP с CPE (клиентское оборудование) роутер. Это префикс ссылки потому что он привязан к ссылке. В качестве общей рекомендации все префиксы ссылок в IPv6 должны быть /64.

Маршрутизатор ISP будет отправлять объявления маршрутизатора, объявляя этот префикс, и CPE будет использовать SLAAC для создания адреса для внешнего интерфейса, указывающего на маршрутизатор ISP в пределах /64. Предположим, внешний интерфейс получил IP-адрес. 2001:db8:0:1:42:ff:fe00:42/64 (в этих обозначениях /64 включен, чтобы напомнить нам, какова длина префикса ссылки, но я также мог его пропустить).

Этого префикса канала достаточно для связи маршрутизатора CPE с остальным миром, но он не помогает маршрутизатору CPE поддерживать клиентов в локальной сети, подключенных к его внутреннему интерфейсу. Маршрутизатору CPE нужен префикс для локальной сети, который маршрутизируется через этот маршрутизатор CPE, поэтому он называется маршрутизируемый префикс.

Маршрутизируемый префикс можно настроить статически или через DHCPv6. Точные детали того, как маршрутизатор CPE согласовывает длину префикса с сервером DHCPv6, предоставленным поставщиком Интернет-услуг, выходят за рамки этого ответа. Подробнее об этом может рассказать поиск по делегированию префикса. Предположим, что маршрутизируемый префикс оказывается 2001:db8:1::/48. На маршрутизаторе ISP будет создана запись в таблице маршрутизации, указывающая, что 2001:db8:1::/48 нужно маршрутизировать через шлюз 2001:db8:0:1:42:ff:fe00:42. Эта запись в таблице маршрутизации является определяющей особенностью маршрутизируемого префикса.

Маршрутизатор CPE может иметь несколько внутренних локальных сетей, начиная с /48 он может выделить /64 префикс ссылки на каждую внутреннюю локальную сеть. Если предположить, что одна из локальных сетей была назначена 2001:db8:1:1::/64 в качестве префикса ссылки узел на этой ссылке может получить адрес 2001:db8:1:1::42:ff:fe00:43 через SLAAC. Этот узел может быть беспроводным маршрутизатором, которому требуется префикс для своего беспроводного интерфейса. CPE может назначить 2001:db8:1:100::/60 в качестве префикса маршрутизации для беспроводного маршрутизатора, и беспроводной маршрутизатор может назначить 2001:db8:1:100::/64 как префикс ссылки для беспроводного интерфейса.

Теперь в такой настройке мы имеем иерархию префиксов. Следующие элементы вложены друг под другом:

  • 2001:db8::/32 Объявленный префикс BGP
  • 2001:db8:1::/48 маршрутизируемый префикс
  • 2001:db8:1:100::/60 маршрутизируемый префикс
  • 2001:db8:1:100::/64 префикс ссылки

Как на самом деле обрабатываются пакеты

Когда маршрутизатор ISP получает пакет для 2001:db8:0:1::/64 который является префиксом ссылки, он выполняет обнаружение соседей, чтобы найти MAC-адрес хоста в /64.

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

Когда маршрутизатор ISP получает пакет для 2001:db8:1::/48 который является маршрутизируемым префиксом, он выполняет обнаружение соседей, чтобы найти MAC-адрес шлюза 2001:db8:0:1:42:ff:fe00:42.

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

Работа с отсутствием маршрутизируемого префикса

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

  • Обычно маршрутизируемые префиксы должны быть короче, чем /64, но демон, отвечающий на запросы обнаружения соседей, может создать только "маршрутизируемый" префикс, длина которого превышает /64.
  • Это немного увеличивает задержку из-за дополнительного обхода каждый раз, когда IP-адрес отсутствует в соседнем кэше на маршрутизаторе ISP.
  • Это увеличивает нагрузку на маршрутизатор ISP из-за необходимости более частого обнаружения соседей. Вполне вероятно, что маршрутизатор ISP может пересылать пакеты на уже известный префикс назначения чисто аппаратно, но обнаружение соседей будет выполняться программно.
  • Это увеличивает потребление памяти на маршрутизаторе ISP. Если интернет-провайдер выделяет маршрутизируемый префикс для каждого клиента, он может легко обойтись, имея только одну запись в кэше соседей для каждого клиента. Но с помощью демона ответчика соседей это может превратиться в тысячи записей для каждого клиента.

Накладные расходы на обработку на маршрутизаторе ISP могут быть серьезной проблемой. Некоторые маршрутизаторы настолько плохо справлялись с потоком пакетов, которые требовали обнаружения соседей, что превратилось в настоящую DoS-атаку и использовали более длинные префиксы ссылок (в /120 - 127 range) использовался как обходной путь для таких DoS-атак.

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

Особые случаи, связанные с ссылками точка-точка

На каналах «точка-точка» (например, в туннелях 6 в 4 и каналах PPP) нет необходимости в обнаружении соседей. Существует только одно направление для отправки пакета по такой ссылке, и перед отправкой пакета не нужно искать аппаратный адрес.

Это означает, что накладные расходы на обнаружение соседей не являются проблемой для такой ссылки. Таким образом, наличие на одном конце связи точка-точка использования большого количества адресов не является проблемой, если конечные точки имеют некоторое соглашение о том, кто какие адреса использует. Отсутствие обнаружения соседей означает, что обнаружение повторяющихся адресов также отсутствует, поэтому, если обе конечные точки попытаются использовать один и тот же адрес, он не будет работать должным образом (если вы не ожидаете, что он будет вести себя как адрес с произвольным использованием).

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

Поскольку большинство адресов в канале «точка-точка» будут просто перенаправлены на другой конец канала без необходимости обнаружения соседей, это очень похоже на маршрутизируемый префикс. Например, если интернет-провайдер назначил 2001: db8: 42 :: / 64 каналу точка-точка, а конечным точкам были назначены адреса 2001: db8: 42 :: 1 и 2001: db8: 42 :: 2, то пакеты будут отправляться на большинство адресов. в 2001 году: db8: 42 :: / 64 будет перенаправляться от провайдера к клиенту точно так же, как если бы это был маршрутизируемый префикс с использованием 2001: db8: 42 :: 2 в качестве шлюза.

Это означает, что возможен определенный взлом. На CPE можно настроить 2001: db8: 42 :: / 64 как префикс ссылки в локальной сети. Чтобы CPE узнал, на каком из двух каналов находится конкретный пункт назначения, необходимо изменить фактическую конфигурацию канала точка-точка с ISP на 2001: db8: 42 :: / 126. Все это будет работать с одним незначительным исключением: хосты в LAN не могут взаимодействовать с четырьмя IP-адресами в 2001 году: db8: 42 :: / 126. Поскольку им, вероятно, и так не нужно было общаться с ними, это не является большой проблемой. Однако не рекомендуется использовать этот прием, правильная конфигурация - получить маршрутизируемый префикс от интернет-провайдера.

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

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

Сценарии использования маршрутизируемого префикса

  • Иерархическая маршрутизация как в моем первом примере, это то, для чего предназначены маршрутизируемые префиксы.
  • VPN / туннели добавить еще один уровень в иерархию маршрутизаторов, нуждающихся в префиксах. Хотя они являются виртуальным, а не реальным оборудованием, они ничем не отличаются с точки зрения адресации и нуждаются в маршрутизируемом префиксе, как и в случае физического соединения.
  • Назначение хосту множества адресов. Есть варианты использования для назначения множества адресов одному хосту. Для нескольких адресов они могут быть просто назначены и обработаны с обнаружением соседей для каждой и такого количества записей в кэше, сколько существует адресов. Но если нужны тысячи адресов, лучше использовать маршрутизируемый префикс.

Более подробный пример последнего пункта - это DNS-рекурсоры. Поскольку я не вижу, чтобы DNSSEC набирал обороты до тех пор, пока мы не закончим борьбу с IPv4, необходимы другие меры против отравления DNS. Были приложены усилия, чтобы получить как можно больше энтропии в запросах. ID и номер порта могут содержать не более 32 бит энтропии, еще несколько битов могут храниться в запросе, если верхний и нижний регистр смешаны в доменном имени, которое необходимо разрешить. Таким образом, вы редко получите более 48 бит. Назначение полного /64 к рекурсору DNS позволит увеличить энтропию на 64 бита за один раз, что больше, чем все остальные усилия вместе взятые.

Префикс связи используется между вашим маршрутизатором и вашим интернет-провайдером.

Префикс маршрутизации используется внутри вашей сети.

Если вы получите маршрутизируемый префикс / 64 от своего интернет-провайдера, тогда ваш маршрутизатор просто будет рекламировать этот префикс в вашей локальной сети. Если у вас есть префикс меньше / 64 (возможно, / 48?), Вам следует подумать о том, как логическим образом разбить этот префикс на подсети, чтобы его использовали все ваши маршрутизаторы в вашей организации.

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

Что касается протокола обнаружения соседей, это также зависит от ссылки. На линии связи между провайдером и вашим маршрутизатором NDP используется для обнаружения MAC-адреса WAN-интерфейса вашего маршрутизатора и MAC-адреса восходящего маршрутизатора вашего интернет-провайдера. В интерфейсе вашей локальной сети NDP используется для обнаружения MAC-адреса хостов в сегменте локальной сети.

Надеюсь это поможет.

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

Поскольку пакет перемещается по Интернету, / 64, на который он нацелен, будет маршрутизируемым префиксом, пока вы не достигнете последнего перехода. Тогда это будет префикс ссылки.

Маршрутизируемые префиксы обычно агрегируются. Многие / 64 можно объединить в один более короткий префикс для уменьшения размера таблиц маршрутизации. На границе между интернет-провайдерами обычно устанавливается максимальная длина префикса / 48.

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