Настройка EIGRP для IPv6: отличия от IPv4-версии, включение на интерфейсах и работа соседств по link-local адресам.
Нужны ли маршрутизируемые IPv6-адреса на транзитных интерфейсах для EIGRP IPv6?
Как включается EIGRP IPv6 на интерфейсе?
Что нужно сделать с Router ID при отсутствии IPv4-адресов?
Какие адреса используются как next-hop в таблице маршрутизации EIGRP IPv6?
Какое приглашение CLI появляется в режиме настройки EIGRP IPv6?
Дальше. С IPv4 более-менее разобрались. Переходим к IPv6. По большому счету EIGRP для IPv6 устроен точно так же, как для IPv4, и команды для настройки IPv6 и EIGRP тоже те же самые, но есть небольшие различия. И мы про эти небольшие различия сейчас поговорим. Во-первых, что общего и что не общего у EIGRP для IPv4 и IPv6? Сам механизм EIGRP состоит из процедуры обмена маршрутами. Понятное дело, она будет немножко различаться для IPv4 и IPv6, просто потому что формат сообщений будет отличаться. Если мы работаем с IPv4 маршрутами, то IPv4 маршрут состоит из 4-байтового адреса и небольшой маски. Если мы говорим про IPv6, то сами индивидуальные сообщения апдейта должны быть побольше для того, чтобы большие адреса передавать.
В IPv6 адреса 128-битные. Во-вторых, EIGRP будет передавать свои пакеты поверх того же самого протокола, который он будет таскать. Если он таскает маршруты для IPv6, то он будет вкладывать сообщения в IPv6. Там точно такой же RTP будет использоваться, точно такой же код вложения 88, но если мы говорим про IPv4 и EIGRP, он отправляет IPv4 пакеты на адрес 224.0.0.10. Если мы говорим про IPv6, EIGRP отправляет мультикастовые сообщения на адрес ff02::a. Дальше. Мы можем сказать, что после того, как сами маршруты отправлены, дальше EIGRP для IPv4 и IPv6 работает одинаково, потому что ничего там не изменилось. Точно так же по каждому маршруту передается вектор метрик. Точно так же мы при установлении соседства
с помощью того самого мультикаста будем обнаруживать соседа, будем запоминать, как мы его знаем, строить вектор до него, и будем при получении апдейта от соседа складывать вектор, как мы знаем соседа, с вектором, что прислал нам сосед, и получать итоговый вектор, как мы можем добраться до той сети, которую прислал сосед через этого самого соседа. Алгоритм работает точно тот же самый. Устанавливаем соседство, сосед присылает какие-то маршруты, мы принимаем такое обновление, складываем один вектор с другим, выбираем лучший, если вдруг пришло несколько разных маршрутов, и ставим его в таблицу маршрутизации. Дальше начинаем анонсировать ровно то, что в нашей таблице маршрутизации есть. Синтаксис по большому счету одинаковый, что для IPv4, что для IPv6. Различия заключаются в тех сценариях, которые основаны на классовой маршрутизации. Та команда network, которая работала с классовыми маршрутами, которая задавала условия access-листа, ее больше нету. Вместо этого просто на интерфейсе в явном виде говорим,
что этот интерфейс участвует в EIGRP. Команда будет иметь вид ipv6 eigrp и дальше номер автономной системы в настройке интерфейса. Например, ipv6 eigrp 65001. Второе отличие EIGRP для IPv4 и EIGRP для IPv6 — это синтаксис самого запуска процесса. Если мы в IPv4 говорили router eigrp, номер автономной системы 65001, то в IPv6 мы будем говорить ipv6 router eigrp 65001. На экзамене будет дополнительный вопрос, связанный с тем, как выглядит приглашение к вводу в ipv6 router. И здесь тоже есть небольшое изменение. В IPv4 приглашение к вводу в контексте роутера выглядит как config-router, а в IPv6 оно выглядит как config-rtr. И еще один маленький нюанс заключается в том, что для работы EIGRP нужен уникальный идентификатор размером 32 бита.
32 бита подозрительно по размеру совпадает с IPv4 адресом. И записывается этот самый идентификатор в форме IPv4 адреса. Это не IP-адрес, это просто некоторое уникальное число, которое должно быть на каждом роутере. Если вдруг каждому роутеру понадобится выпустить что-то совсем уникальное, он будет использовать этот самый router ID в качестве своего собственного уникального идентификатора. Поскольку все IPv4 адреса уникальны, какой-нибудь взятый случайный IP тоже будет уникальным. Если мы запускаем EIGRP для IPv4, то мы можем взять совершенно любой произвольный IP, который у нас на железке есть, и использовать его в качестве router ID. Но если мы запускаем IPv6 router, он тоже так же попытается сделать. Если он найдет хотя бы какой-нибудь IPv4 адрес, он его использует. Но если ни одного IPv4 адреса не будет на устройстве, на котором вы запускаете EIGRP для IPv6, он будет ругаться. Он вам скажет, что не может запуститься,
если нет router ID. В этом случае router ID нужно будет задать вручную. В контексте роутера вы указываете команду eigrp router-id и дальше какой-то номер. На самом деле для IPv4 тоже можно его задать, просто разницы, что вы зададите этот router ID, что не зададите, для IPv4 нет. Количество сценариев, где EIGRP мог бы проверить этот самый router ID, стремится к нулю, причем стремится сильно-сильно снизу. Я знаю, где он используется, но встретить в реальной жизни пользу от этого самого router ID на самом деле нельзя. А вот что касается EIGRP для IPv6, он должен хотя бы каким-то образом этот router ID себе назначить, и просто стартовать не сможет процесс, если никакого идентификатора он себе не смог придумать. Хотя бы какой-нибудь IPv4 адрес должен быть. Если ни одного IPv4 адреса нет, то тогда eigrp router-id надо будет задать вручную.
Итог. Мы запускаем маршрутизацию на роутере, мы запускаем процесс router eigrp, мы указываем router ID, если у нас нет IPv4 адресов, и на всех интерфейсах, на которых мы хотим включить EIGRP маршрутизацию, мы указываем ipv6 eigrp и номер автономной системы. Для работы EIGRP для IPv6 не обязательно иметь маршрутизируемые адреса на интерфейсах. Если у вас есть два роутера, роутер 1 и роутер 2, вот как на картинке, они не обязаны иметь маршрутизируемые IPv6 адреса. Они прекрасно будут работать из-под link-local адресов, установят соседские отношения, обменяются маршрутами и поставят маршруты друг на друга на next hop вот этот самый link-local адрес соседа. Им этого более чем достаточно для корректной работы, и поэтому вы назначать маршрутизируемые IP должны будете только на те интерфейсы, где у вас пользователи сидят. FD01, FD02, FD03 по 64-й маске.
Вот это пользовательские сетки. Здесь вам IP нужны, а вот тут вам IP не нужны, вам достаточно link-local адресов. Маршрутизируемые адреса здесь бесполезны. Также, как и в случае с show ip protocols, show ipv6 protocols будет работать для IPv6, покажет вам номер автономной системы, покажет коэффициенты метрики, покажет интерфейсы, на которых у нас завелся IPv6 EIGRP. Раньше показывал здесь routing for networks, который на самом деле не routing for networks, а то, какие команды network вы задали. А здесь уже прямо по-честному, на каких интерфейсах вы EIGRP включили. Здесь же, если вы укажете passive интерфейс, будет показано, какие интерфейсы пассивные. Затем show ipv6 eigrp interfaces — показать все EIGRP интерфейсы. Раньше была команда show ip eigrp interfaces, сейчас show ipv6 eigrp interfaces.
И вот она, show ipv6 eigrp interfaces, показывает список всех интерфейсов, на которых EIGRP по факту завелся. Опять же, показывают наши FastEthernet 0/0, 0/1, 0/2 и GigabitEthernet 0/0, те, на которых мы задали ipv6 eigrp и номер автономки. Опять же, показывается не список соседей, а количество соседей, и куча всяких цифр, которые нам сейчас неинтересны. Если интерфейса нету — та же самая история, что в IPv4. Либо интерфейс выключен, либо забыли его включить в EIGRP, либо он пассивный. После того, как на интерфейсе EIGRP включился с одной и с другой стороны, проверяем соседство. Show ipv6 eigrp neighbors показывает номер соседа, показывает IP адрес соседа. В IPv4 здесь показывался маршрутизируемый адрес, здесь в IPv6 используется link-local. Интерфейс, на котором этот link-local активен, hold timer, как давно завелся, smooth round trip time,
retransmission timeout. Если вдруг интерфейс есть, а соседа на нем нету — может быть, MTU не совпадает, может быть, номер автономки не совпадает, может быть, коэффициенты метрики кто-то побаловался руками, может быть, access list не довключил, 88-й протокол — TCP, UDP разрешил, а вот EIGRP нет. Или EIGRP не включился на интерфейсе, а он, само собой разумеется, должен включиться. После того, как у нас EIGRP завелся, дальше показывается, что маршруты притащились. Вот у нас показывается FD00:2::1/2 по 64-й маске, ::2 по 64-й маске, ::3 по 64-й маске. Вот это все маршруты, которые притащил нам EIGRP. И показывается, что эти маршруты имеют те же самые метрики, которые характерны для гигабитного интерфейса. 28 160, 28 416.
И наконец, в таблице маршрутизации show ip route превращается в show ipv6 route. Та же самая история. Маршруты имеют буковку D. Означает динамическая маршрутизация, потому что EIGRP — это последователь протокола IGRP, который был основным для Cisco, и который был фактически единственной возможностью в свое время использовать динамическую маршрутизацию. Административное расстояние и метрика. Link-local адреса используются в качестве next hop, поэтому вам не обязательно иметь маршрутизируемые IPv6 адреса на тех интерфейсах, которыми роутеры ваши друг на друга смотрят. Link-local там вполне достаточно. После того, как все маршруты протащились, можно будет спокойно пользоваться этим, потому что EIGRP у вас работает хорошо. Давайте попробуем сейчас
повключать EIGRP для IPv6 на наших роутерах и посмотреть, как это все выглядит. Я подключился к своему роутеру. И первое, что здесь нужно будет сделать — это включить сам процесс маршрутизации IPv6. По умолчанию на роутерах Cisco IPv4 включен, а вот IPv6 выключен. В части перекладывания пакетов между разными интерфейсами. Вы можете на роутере сказать, у меня есть IPv6 адрес на одном интерфейсе, у меня есть IPv6 адрес на другом интерфейсе, но процедура перекладывания пакетов для IPv6 по умолчанию не выполняется. Если вы хотите, чтобы она выполнялась, вам следует выполнить команду ipv6 unicast-routing. Дальше. Нам нужно будет запустить сам движок EIGRP. ipv6 router eigrp и дальше номер автономной системы, который может совпадать или не совпадать с тем, который мы использовали для IPv4. Я предлагаю, чтобы совпало. 65001.
Мы перешли в контекст router eigrp, и мы сразу из него выходим. Нам тут делать особо нечего. Единственное, что можем пассивный интерфейс задать, так же, как мы в IPv4 делали, сказать passive-interface loopback 0. И все. Здесь больше нам ничего интересного не будет. Выходим из контекста router. Мы его запустили, он уже есть. Единственное, что для того, чтобы все хорошо работало, нам нужно будет сказать, что определенные интерфейсы входят в EIGRP для IPv6. А для того, чтобы IPv6 EIGRP включить на интерфейсе, нам нужно, чтобы на этом интерфейсе у нас завелись IPv6 адреса. Поэтому интерфейс Ethernet 0/0, указываем ipv6 enable. На этом интерфейсе у нас не будет маршрутизируемых адресов. Нам достаточно, чтобы у нас просто IPv6 на этом интерфейсе жил. И указываем ipv6 eigrp и дальше номер автономной системы
Я включил egrp на интерфейсах. Сейчас, через некоторое время, должно автоматически установиться соседство. Если я все правильно сделал, я же все правильно сделал. Так. Я же все правильно сделал. Интерфейс. Да, я не все правильно сделал. Интерфейс должен быть Ethernet 0.1. Ethernet 0.0 смотрит на наш маленький свитч. Это не тот интерфейс, на котором надо было это все сделать. Ethernet 0.1. IPv6.enable. IPv6.egrp 650001. Вот оно завелось. Обнаружилось соседство. И, соответственно, обнаружилось соседство по link-local-адресу. У нас сейчас очень забавная ситуация. Соседство есть, а маршрутов нету никаких, потому что нигде вообще мы никакие IPv6.egrp не назначали. Мы делали только IPv6.enable, и это назначает link-local-адреса, которые не маршрутизируемы, и в таблицу топологии egrp, естественно, не попадают.
Поэтому show IPv6.enable. protocols нам покажет, что IPv6.enable. IPv6.enable. egrp есть, вот у него компоненты метрики, вот у него роутер ID хапнулся IPv4 адрес, какой-то 10.208. 8. Вот на интерфейсе Ethernet 0.1 я включил его, и, соответственно, все. show IPv6.enable. IPv6.enable. egrp.enable. egrp.enable. показывает, что есть сосед, вот link-local-адрес соседа, вот интерфейс, на котором он завелся. И в таблице топологии нет примерно ничего. То есть там пусто. В общем, предсказуемо, учитывая тот факт, что мы никакие адреса не назначали. Давайте сейчас мы сделаем так, чтобы у нас на интерфейсе, который loopback, который пассивный, который, кстати, здесь нигде не показывался. Где он есть-то? Ну ладно, не показывается,
не показывается. show IPv6.enable. egrp.enable. Вот он не показывается, потому что он пассивный. Давайте мы на IPv6 интерфейсе loopback повесим адрес, который будет маршрутизироваться. И я предлагаю использовать сеть fd0 и дальше номер комплект. fd01.2. fd0.64 маски fd02.2.2. по 64 маски. Вот fd08 по 64 маски. conft interface loopback 0 IPv6 адрес fd08 2.2. slash 64 коротенькая, коротенькая. Система предупреждает, что этот адрес характерный адрес для роутера и вообще по-хорошему стоило бы, конечно, назначить адрес, который заканчивается на что-нибудь отличное от нулей, но в принципе так должно работать.
То есть мы повесили IP-шник, который заканчивается на все нули. Это специальный выделенный IP-шник. И IPv6 EJRP 65000.001. Так. Проверяем, что у нас получилось. Сейчас наши loopback вошли в EJRP. Наши loopback должны анонсировать эти сети, которые на loopback висят в таблицу топологии. И, соответственно, дальше таблица топологии должна быть цирклицирована. showipv6 EJRP топологии. Вот. У меня появилась сетка connected. И, соответственно, я жду, чтобы вторая сетка такая же прибежала. Через некоторое время должна будет прибежать. И когда она прибежит, в таблице маршрутизации у нас появится новый адрес. Так. Проверяем еще разочек. Да. Вот прибежала сетка. Вижу, что центральный
роутер прислал мне маршрут. Этот маршрут до сети FD0122.4 по 64-й маске. Feasible distance у этого маршрута 435200. Это самая маленькая метрика на моем роутере до этой сети за всю историю наблюдений. Прямо сейчас метрика ровно такая и есть. 435200. Это моя computer distance на той метрике, которую я посчитал по факту, которая на моем роутере присутствует. И вот эта вот 409600, это та метрика, которую сосед заявил, точнее, он нигде не пересылал цифру 409600, он заявил какие-то мегабиты, какие-то миллисекунды, а дальше мы на основании его мегабитов и миллисекунд посчитали, что у него должна быть метрика именно такая, 409600. Давайте проверим. Мало ли, вдруг я наврал. Show IPv6 EGRP, топологи. Ну вот, не наврал, 409600. Ну и, соответственно, результатом того,
что в маршрутной у нас отработали, должно явиться попадание этих маршрутов в таблицу маршрутизации. Show IPv6 road. Ну, можно добавить EGRP, но, в принципе, других маршрутов сейчас нету, поэтому просто show IPv6 road. Показывается у нас один connected маршрут на лоббеке, один local маршрут, то, что у нас на интерфейсе висит прямо именно наш собственный IPшник, и вот то, ради чего все изотвивалось. Динамический маршрут до link local адреса соседа. Если сейчас мы захотим, мы можем попингать вот этот вот IPшник, и он у нас, по идее, даже должен пингаться. Ping fd01 два двоеточия. Пингается. Здесь автоматически выбрался в качестве адреса источника, единственный возможный IPv6 адрес, который у нас на системе маршрутизируемый. Show IPv6 interface brief. Вот у нас только один адрес, который вообще гипотетически можно использовать для маршрутизируемых пакетов. Он автоматом выбрался.
Если мы захотим посмотреть на то, какие пакеты отправляются по сети, мы там как раз увидим именно этот IPшник. Давайте, раз уж обещал, покажу. Вот интерфейс Ethernet01. Сейчас здесь будет показываться все пакеты, которые отправляются на этом интерфейсе. Вот они вот бегают. Вот это вот eGRP-шные пакеты. Кстати, можем посмотреть, что здесь передается. eGRP у нас вкладывается в IPv6. Соответственно, пакеты бегают IPv6. Дальше поверх IPv6 передается фирменное цисковское вложение с номером 88. Дальше внутри передается вот сам eGRP-пакет, который hello, просто который уведомляет, что у меня все хорошо. До тех пор, пока hello-пакеты передаются, значит, все в порядке. Ну и видим мы здесь, что роутеры заявляют о том, кто они такие, показывают свой номер автономной системы, показывают
свои коэффициенты метрики, вот эти вот самые k1, k2, k3, k4, k5, показывают свой hold time, то есть как скоро они ожидают, они собираются в следующий раз прислать свой следующий hello-пакет, по факту присылают чаще. Ну и если вдруг вам будет интересно, здесь же есть краткое указание, чем он это отправил, то есть показывается, какой номер плагина eGRP был использован, в нашем случае eGRP версии 23.0. Так, шоу, а давайте пинге хотел показать, пинге, вот пинге, вот они бегают, и в качестве адреса источника у нас, где он есть, fd01.22. это получатель, fd08.22. адрес источника. Я адрес источника нигде не указывал, но он автоматически взял для того, чтобы отправить пакеты в сторону интерфейса Ethernet.01 адрес IP-шник с интерфейса loopback, потому что никаких других
маршрутизируемых адресов на системе просто не было. Он отправляет пакеты, и они доходят до получателя и прекрасно возвращаются обратно. show IP EGRP просто show EGRP plugins. Вот здесь как раз видно номер версии 23 для EGRP. Показывается, что это действительно у нас EGRP второй версии, то есть вот тот протокол, который используется для IPv4, для IPv6, он несет в себе IPv4 и IPv6 пакеты, и он, конечно же, зависит от конкретного протокола. На самом деле, какой бы мы EGRP не использовали, что для IPv4, что для IPv6, у него под капотом работает механизм dual, механизм вот этого самого обмена векторами метрик,
и вектора метрик там одинаковые, что для IPv4, что для IPv6. Мегабиты и миллисекунды никоим образом не зависят от того, какие пакеты мы передаем, IPv4 или IPv6. И вот этот вот механизм RTP или алгоритм dual diffusing update алгоритм, он как раз и называется IGRP, IGRP2. Адреса с интерфейсом Ethernet 00 в топологию не попали, потому что это не маршрутизируемые адреса. Нет, я думаю, что проще все, что show interface Ethernet 00 банально выключен. И интерфейс, который выключен, он не участвует в топологии. Поэтому, да, Ethernet 00 я просто промахнулся, включил на нем IGRP, но забыл на нем снять shutdown. Ну, не забыл, а да. Так, а на интерфейсе Ethernet 01 у нас никаких адресов нету. У нас IPv6 enable, и все. Там адресов в общем,
не густо. IPv6 enable при отсутствии других команд, связанных с IPv6, порождает только один лишь link-local-адрес. Link-local-адрес бессмысленно добавлять в топологию IPv6 и IGRP, потому что это адреса немаршрутизируемые, пакеты из-под них не проходят маршрутизацию, роутер не может фарвардить пакеты, которые идут с подлин local-адресов. Ну и поэтому, да, в таблице топологии их нету. Так, ну в общем, вот оно как-то так. Точно так же можно интерфейс объявить пассивным, точно так же вы должны будете включать EGRP что для IPv4, что для IPv6 на интерфейсах, которые смотрят на пользователей и на соседей. Точно так же, если интерфейс объявлен пассивным, то соседство на этом интерфейсе не будет установлено, потому что там не отправляются hello-пакеты, а для того, чтобы соседство установилось, hello-пакеты должны пройти туда-обратно. Ну и вот по большому счету
все. Здесь больше ничего такого хитрого и нету. Засем на сегодня все. С EGRP мы закончили. Следующий модуль будет посвящен OSPF.