На чтение 12 мин Просмотров 1.5к.
Максим aka WisH
Высшее образование по специальности «Информационные системы». Опыт работы системным администратором — 5 лет.
Задать вопрос
Сегодня поговорим о том, что такое таблица маршрутизации, зачем она нужна и на каких устройствах применяется. В большинстве случаев, обычные люди не пользуются ей, отдавая маршрутизацию на откуп автоматике. Маршрутизаторы и другое сетевое оборудование умеют самостоятельно составлять таблицы, и не всегда хорошей идеей является вмешательство в этот процесс.
Содержание
- Как работает таблица маршрутизации
- Зачем нужна таблица
- Содержание записей
- Виды таблицы
- Команды для работы с таблицей маршрутизации
- В Windows
- В Linux
- Заключение
Как работает таблица маршрутизации
Перед тем, как приступать к настройке таблиц на роутере или на компьютере, вам нужно понимать, как они работают и для чего могут пригодиться. При настройке каких-то компьютерных систем лучше всегда соблюдать правило: если есть автоматическая настройка или предустановленные параметры, то не лезьте в этот раздел, если хоть чего-то не понимаете.
Не стоит настраивать маршрутизацию в маленьких сетях или если есть сомнения, что сможете справиться самостоятельно.
Если у вас есть небольшая домашняя сеть, то смысла в самостоятельной настройке нет. Разве что, ваше устройство не поддерживает автоматическое составление таблицы и её обязательно придется заносить вручную. Такое может случиться, если было куплено профессиональное оборудование или же, если это оборудование старое. В таких случаях действительно придется разбираться с таблицами самостоятельно.
Зачем нужна таблица
Таблица маршрутизации нужна, чтобы компьютер или маршрутизатор знали, куда нужно отправлять пакеты с информацией. Не всегда сеть организована таким образом, что после маршрутизатора сразу находятся конечные абоненты. Иногда идет сначала один маршрутизатор, потом другой, потом стоит какой-то сервер и уже за ним прячутся остальные компьютеры и устройства.
Если такая цепочка одна, то с доставкой данных нет проблем, если же это большая сеть, в которой много переходов и абонентов, то доставка информации может задерживаться. В таких случаях и составляются таблицы маршрутизации, чтобы облегчить работу всей сети. При правильно составленной таблице каждое устройство знает куда передавать пакет информации дальше.
Проще всего вам будет представить необходимость этих таблиц на примере почты и адресов. Представьте, что письмо, предназначенное вам, оказалось в главном распределительном центре Почты России. Они смотрят на него и видят, кому оно предназначается: Иванов И.И.. После этого они смотрят в свои гроссбухи с адресами и находят, что Иванов И.И. живет в Энской Губернии и переправляют письмо в почтамт этой губернии.
Дальше уже там смотрят в свои таблицы и видят, что такой абонент проживает в городе Бердичеве и переправляют туда, там находят, что к этому абоненту относится отделение почты №666 и переправляют письмо туда. Там уже находят конкретный адрес, улица Маршрутная, дом такой-то, и посылают почтальона, ответственного за этот дом, с отправлением для доставки вашего письма в почтовый ящик.
Как-то так и работают таблицы маршрутизации, пример с почтой тут отличается только тем, что там сразу написан весь адрес проживания и, фактически, весь маршрут: Энская губерния, г. Бердичев, улица Маршрутная, дом такой-то, Иванов И.И. В обоих случаях конечный получатель идентифицируется однозначно и точно. Из-за этого все отделения знают куда и как передавать отправления, а могут иметь и несколько маршрутов для доставки.
Содержание записей
Поля таблицы как раз зависят от того, что должен знать этот узел маршрута для дальнейшего получения и передачи информации. Самым важным здесь являются IP-адреса других узлов сети, а также те адреса, о существовании которых точно знает это устройство. Также важным показателем является метрика, отвечающая за длину маршрута.
В общем случае поля таблицы выглядят следующим образом:
- Адрес сети или узла назначения. Также здесь может стоять маршрут по умолчанию.
- Маска сети назначения (для IPv4-сетей маска /32 (255.255.255.255)). С помощью маски указывается единичный адрес или же некоторый диапазон адресов.
- Шлюз, обозначающий адрес маршрутизатора в сети. В случае, если устройство в своей подсети не имеет подобного адреса, то он передает пакет следующему маршрутизатору, в ведении которого и находится отправитель.
- Интерфейс, через который доступен шлюз. Для разных устройств это могут быть разные данные. Например, в случае обычного маршрутизатора это будут номера портов: 0,1,2,3 и так далее. В случае с компьютером это будет сетевая карта или одна из сетевых карт, если их несколько.
- Метрику — числовой показатель, задающий предпочтительность маршрута. Зависит от настроек, обычно здесь имеется в виду длина маршрута, то есть, количество узлов до абонента. Если есть маршрут с двумя узлами и с 12, то выбран будет маршрут с наименьшей метрикой. Также можно задавать метрику в зависимости от скорости соединения и еще нескольких параметров.
Записи на разных устройствах могут немного отличаться по внешнему виду, но поля остаются такими же в большинстве случаев. В них содержится та информация, без которой доставка пакета, просмотр маршрута, а также его выбор при доставке сообщения будут затруднены. Меньше информации добавить не получится, иначе её будет недостаточно.
Виды таблицы
Есть различия по способу формирования таблицы на устройстве. Всего есть два вида таблиц: статические и динамические. Если ничего не настраивали, а интернет как-то работает, то используется второй вид таблиц. Сейчас разберем подробнее каждый из этих видов, их преимущества и недостатки.
Статические таблицы стоит снова сравнить с почтой. Есть определенный человек, проживающий по определенному адресу. В случае переезда человека, сноса дома или строительства нового дома, нужно подать правильно оформленные документы, чтобы новые абоненты смогли получать почту. Если не сделали этого вовремя, то сами виноваты.
Со статическими таблицами также: что вы в них запишите, то там и будет. Если абонент пропадет или переедет, то пакеты для него будут высылаться по старому маршруту, пока данные не будут изменены. При подключении нового узла сети или оборудования также вносят изменения в таблицы, иначе, несмотря на работающую связь, никакого обмена сообщениями между ними не будет.
Статическая таблицы маршрутизация не зависит от местоположения роутера. Не стирается при перезагрузке или установке в другое место.
С динамическими таблицами все сложнее для оборудования и проще для человека. В случае с динамическими таблицами, их составляет сам маршрутизатор или сервер. Фактическое, каждое устройство, работающее по протоку TCP, после подключения посылает в сеть сообщение типа «Привет! Я здесь новенькой. Мой адрес и имя такие-то, готов получать и отправлять информацию». Когда это сообщение доходит до первого маршрутизатора, он добавляет этот узел в свою сеть.
При первом подключении сервера или маршрутизатора он также отправляет подобный запрос, только еще и сам говорит, что будет передавать информацию дальше. Отправляет пакеты с запросом ко всем устройствам, чтобы получить их адреса и данные, а также запросы к другим роутерам, чтобы получить их таблицы и заняться просмотром маршрутов.
Маршрутизаторы часто обмениваются информацией, например один из первых и сейчас почти неиспользуемых в крупных сетях, протокол RIP заставлял свитчи раз в 30 секунд отправлять в сеть всю свою таблицу маршрутизации. Это позволяло держать данные актуальными на всех устройствах, но нагружало есть.
В случае динамических таблиц, периодически проводится их очистка. Это позволяет избежать накопления ненужных записей и недостоверной информации. Так что, если какое-то устройство отключается и больше не присутствует в сети, то через некоторое время оно вычеркивается из таблиц. Также, если роутер был выключен, то после включения он станет с нуля создавать таблицу, а вот статическая таблица загрузится и начнет работать сразу.
Команды для работы с таблицей маршрутизации
На разном оборудовании есть разные команды для работы с таблицами маршрутизации. Например, до оборудования компании Cisco допускаются только сертифицированные сотрудники. Они должны пройти обучение и получить сертификат у самого разработчика. Можно работать и без всего этого, но тогда разработчик не отвечает за нанесенный ущерб.
На других системах таких строгих требований нет, так что приведем примеры команд для основных операционных систем. Если же захотите настроить маршрутизацию на каком-то другом оборудовании, то для поиска команд загляните в инструкцию.
В Windows
В этой операционной системе используется команда route с разными модификаторами для работы с маршрутизацией. Вводится в командной строке Windows, открытой от имени администратора.
Параметр | Использование |
-f | Используйте для очистки таблицы маршрутизации, если хотите избавится от всего, что там наворотили. |
-p | Превращает запись в постоянную. Делает запись статической. После перезагрузки компьютера она останется в памяти таблицы маршрутизации, а без этого параметры после перезагрузки запись сотрется. |
add | Добавляет новую запись в таблицу. Без параметра –p запись будет динамической. |
change | Позволяет изменить указанную запись. |
delete | Удаляет указанную запись. |
Показывает на экране всю таблицу маршрутизации со всеми активными записями. | |
destination | Позволяет установить идентификатор сети назначения при создании или изменении записи. |
mask | Напишите для указания маски сети назначения. |
gateway | Указывайте шлюз. Если нужно строить маршрут до следующего маршрутизатора, то используйте его. |
metric | Указывайте метрику для маршрута. От 1 до 999, чем меньше метрика, тем активнее станет использоваться маршрут. |
if | Укажите номер интерфейса. |
Приведем несколько примеров использования команды:
- Показать текущие записи в таблице: route print
- Показать все маршруты к подсети: 192.17.x.x: route print 192.17.x.x
- Добавление новой записи с маршрутом для всех неизвестных подсетей при использовании шлюза по адресу 192.17.77.1: route -p add 0.0.0.0 mask 0.0.0.0 192.17.77.1
- Добавление записи маршрута для сети 102.25.98.0 через узел сети 102.25.90.1: route -p add 102.25.98.0 mask 255.255.255.0 102.25.90.1
- Удаление записи из таблицы: route delete 172.16.12.0 mask 255.255.0.0
В Linux
В linux для редактирования таблицы маршрутизации также придется использовать консоль. Есть два набора команд:
- Route. Устаревший набор команд, который до сих пор поддерживается всеми версиями систем, но обладает меньшим функционалом.
- IP Route. Имеет больший функционал, должен постепенно вывести прошлый инструмент из употребления. Будем разбирать его.
Откройте терминал и введите в нем «ip route», чтобы отобразить текущие записи в таблице.
Само построение команды выглядит как на представленной картинке. Если вам захочется применить её, то каждый из указанных пунктов замените на тот, что используется у вас в сети. Основные обозначения:
- [destination] – укажите адрес сети, подсети или конечного узла маршрута.
- [MASK netmask] – маска подсети.
- [gateway] – укажите адрес шлюза, через который будет идти обращение к другой сети.
- [METRIC metric] – задайте метрику, если устройство является маршрутизатором. Чем меньше число в метрике, тем чаще будет использоваться маршрут.
- [IF interface] – укажите интерфейс(порт), через который пойдет обмен информацией.
Расшифровка некоторых фраз, которые остаются могут показаться непонятными при использовании команды:
- via – читайте как «через», используется для указания шлюза или промежуточного узла.
- dev – используется для обозначения сетевого интерфейса.
- netmask – так называется маска подсети.
- metric – метрика.
При использовании самой команды могут использоваться следующие модификаторы:
- add – добавление записи в таблицу.
- del – удаление записи из таблицы.
- replace – замена одного маршрута другим, а не изменение готового маршрута.
- change – изменение одной из записей.
Приведем несколько примеров использования команды. На их основе можно построить то, что подойдет именно к вашему случаю:
- Ip route add -net 192.16.25.0/24 via 192.168.1.1 — для указанной сети устанавливается шлюз 192.168.1.1
- Ip route del 192.16.25.0/24 via 192.168.1.1 – удаляет записи об установке шлюза для указанной сети.
- ip route replace 172.16.10.0/24 via 192.168.1.3 – удаляет запись о старом шлюзе и заменяет запись о новом шлюзе для подсети.
- ip route replace default via 5.215.98.7 – изменение маршрута по умолчанию. Обычно применяется при смене адреса провайдера или при изменении основного маршрутизатора.
Все эти команды изменяют записи в динамической таблице. Чтобы сами записи сохранялись при перезагрузке, их нужно добавить в файл конфигурации. Информацию о том, где именно они хранятся лучше посмотреть в сети или в руководстве к системе. Например, в Red Hat используются конфигурационные файлы из каталога /etc/sysconfig/network-scripts/route-ethX.
Заключение
В статье разобрали для чего используются таблицы маршрутизации, какие они бывают и как работают. Обычно людям ненужно настраивать таблицы маршрутизации в домашних сетях, потому что динамическое построение таблиц в небольших сетях нисколько не тормозит работу устройств. В организациях с несколькими филиалами или с большим количеством конечных устройств маршрутизация может принести пользу.
Само изменение таблицы требуется в редких случаях, когда какое-то устройство не удается правильно обнаружить при его подключении. В этом случае имеет смысл добавить в таблицу статическую запись, чтобы каждый раз не мучатся с подключением устройства. В остальных случаях заниматься самостоятельной маршрутизацией пакетов по сети не стоит.
Всем привет! Спустя продолжительное время возвращаемся к циклу статей. Долгое время мы разбирали мир коммутации и узнали о нем много интересного. Теперь пришло время подняться чуть повыше и взглянуть на сторону маршрутизации. В данной статье поговорим о том, зачем нужна маршрутизация, разберем отличие статической от динамической маршрутизации, виды протоколов и их отличие. Тема очень интересная, поэтому приглашаю всех-всех к прочтению.
В предыдущих статьях мы разбирали отличия сетевых устройств. А именно, чем коммутатор отличается от маршрутизатора (можно почитать здесь и здесь). То есть коммутатор в классическом понимании — это устройство, которое получает Ethernet-кадры на одном интерфейсе и передает эти кадры на другие интерфейсы, базируясь на заголовках и своей таблицы коммутации. Работает коммутатор канальном уровне.
Маршрутизаторы работают аналогично. Только оперируют IP-пакетами. И работают на сетевом уровне. Хочу заметить, что есть коммутаторы и маршрутизаторы, которые работают и на более высоких уровнях, но мы сейчас говорим о классических устройствах.
Встает вопрос. Почему мы не можем просто коммутировать весь трафик? И зачем требуются IP-адреса и маршрутизация. Ведь что MAC-адреса, что IP-адреса уникальны у каждого сетевого устройства (ПК, телефон, сервер и т.д.). Сейчас отвечу более развернуто.
На рисунке представлены 2 коммутатора, к которым подключено по 250 пользователей. Соответственно, чтобы обеспечить связность между всеми участниками, коммутаторы должны знать MAC-адреса всех участников сети. То есть таблица каждого коммутатора будет содержать 500 записей. Это уже не мало.
А если представить, что таким образом будет работать Интернет, в котором миллиарды устройств? Следовательно нужно искать выход. Проблема коммутации заключается в том, что она плохо масштабируется. И тяжело соблюдать иерархию.
Теперь посмотрим на эту ситуацию с точки зрения маршрутизации.
Здесь вводится понятие IP-адресации. Слева сеть 192.168.1.0/24 соединенная с левым маршрутизатором (R1), а справа сеть 192.168.2.0/24 соединенная с правым маршрутизатором (R2), соответственно. R1 знает, что добраться до сети 192.168.2.0 можно через соседа R2 и наоборот R2 знает, что добраться до сети 192.168.1.0 можно через соседа R1. Тем самым 500 записей в таблице коммутации заменяются одной в таблице маршрутизации. Во-первых это удобно, а во-вторых экономит ресурсы. Вдобавок к этому, можно соблюдать иерархичность, при построении.
Теперь поговорим о том, как таблица маршрутизации заполняется. Как только маршрутизатор включается «с коробки», он создает таблицу маршрутизации. Но самостоятельно он туда может записать только информацию о сетях, с которыми он связан напрямую (connected).
Покажу на примере в CPT:
Добавляю маршрутизатор с пустой конфигурацией. Дожидаюсь загрузки и смотрю таблицу маршрутизации:
Router#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
Сейчас таблица есть, но она пустая из-за того, что не подключен ни один из интерфейсов и не заданы IP-адреса. Соберем схему.
Зададим IP-адресах на интерфейсах маршрутизатора:
Router>enable
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#interface fastEthernet 0/0
Router(config-if)#ip address 192.168.1.1 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#
%LINK-5-CHANGED: Interface FastEthernet0/0, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
Router(config-if)#exit
Router(config)#interface fastEthernet 0/1
Router(config-if)#ip address 192.168.2.1 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#
%LINK-5-CHANGED: Interface FastEthernet0/1, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to up
Router(config-if)#end
И посмотрим, что изменилось в таблице маршрутизации:
Router#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
C 192.168.1.0/24 is directly connected, FastEthernet0/0
C 192.168.2.0/24 is directly connected, FastEthernet0/1
В таблице появились 2 записи. Маршрутизатор автоматически добавил подсети, в которых находятся его интерфейсы. Сверху есть коды, показывающие каким образом маршрут был добавлен.
Настроим обе рабочие станции и проверим связность:
Packet Tracer PC Command Line 1.0
PC>ping 192.168.2.2
Pinging 192.168.2.2 with 32 bytes of data:
Reply from 192.168.2.2: bytes=32 time=0ms TTL=127
Reply from 192.168.2.2: bytes=32 time=0ms TTL=127
Reply from 192.168.2.2: bytes=32 time=0ms TTL=127
Reply from 192.168.2.2: bytes=32 time=1ms TTL=127
Ping statistics for 192.168.2.2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 1ms, Average = 0ms
Теперь детально рассмотрим, что происходит с пакетом, когда он попадает на маршрутизатор.
Пакет приходит. Маршрутизатор сразу читает IP-адрес назначения в заголовке и сверяет его со своей таблицей.
Находит совпадение, изменяет TTL и отправляет на нужный интерфейс. Соответственно, когда ответный пакет придет от PC1, он проделает аналогичную операцию.
То есть отличие в том, что маршрутизатор принимает решение исходя из своей таблицы маршрутизации, а коммутатор из таблицы коммутации. Единственное, что важно запомнить: и у коммутатора, и у маршрутизатора есть ARP-таблица. Несмотря на то, что маршрутизатор работает с 3 уровнем по модели OSI и читает заголовки IP-пакетов, он не может игнорировать работу стека и обязан работать на канальном и физическом уровне. В свою ARP-таблицу он записывает соотношения MAC-адреса к IP-адресу и с какого интерфейса к нему можно добраться. Причем ARP-таблица у каждого сетевого устройства своя. Пишу команду show arp на маршрутизаторе:
Router#show arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.1.1 - 0060.5C16.3B01 ARPA FastEthernet0/0
Internet 192.168.1.2 6 00E0.F73D.E561 ARPA FastEthernet0/0
Internet 192.168.2.1 - 0060.5C16.3B02 ARPA FastEthernet0/1
Internet 192.168.2.2 7 0002.179D.455A ARPA FastEthernet0/1
Как только PC0 отправил ICMP до PC1 и пакет дошел до маршрутизатора, он увидел в заголовках IP-пакета адрес отправителя (PC0) и его MAC-адрес. Он добавляет его в ARP-таблицу. Следующее, что он видит — это IP-адрес получателя. Он не знает, куда отправлять пакет, так как в его ARP-таблице нет записи. Но видит, что адрес получателя из той же сети, что и один из его интерфейсов. Тогда он запускает ARP с этого интерфейса, чтобы получить MAC-адрес запрашиваемого хоста. Как только приходит ответ, он заносит информацию в ARP-таблицу.
Это базовый пример того, как работает маршрутизация. Прикладываю ссылку на скачивание.
Усложним немного схему.
На ней представлены 2 рабочие станции и 3 маршрутизатора. Не буду заострять внимание на том, как прописать IP-адрес на интерфейс, а лишь покажу итоговую конфигурацию:
RT1 (раскрыть)
RT1#show running-config
Building configuration...
Current configuration : 571 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname RT1
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface FastEthernet0/0
ip address 192.168.1.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 10.0.1.2 255.255.255.0
duplex auto
speed auto
!
interface Vlan1
no ip address
shutdown
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end
RT2 (раскрыть)
RT2#show running-config
Building configuration...
Current configuration : 568 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname RT2
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface FastEthernet0/0
ip address 10.0.1.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 10.0.2.1 255.255.255.0
duplex auto
speed auto
!
interface Vlan1
no ip address
shutdown
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end
RT3 (раскрыть)
RT3#show running-config
Building configuration...
Current configuration : 571 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname RT3
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface FastEthernet0/0
ip address 192.168.2.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 10.0.2.2 255.255.255.0
duplex auto
speed auto
!
interface Vlan1
no ip address
shutdown
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end
PC0 (раскрыть)
PC1 (раскрыть)
Все устройства сконфигурированы. Теперь проверим связность между PC0 и PC1:
В консоли PC0 вылезает сообщение о недоступности узла. Но ведь все адреса прописаны и добраться можно. В чем же проблема? Переходим в режим симуляции и копаем глубже:
PC0 формирует ICMP-сообщение. Смотрит на IP-адрес назначения и понимает, что получатель находится в другой сети. Соответственно передать надо своему основному шлюзу, а дальше пускай сам разбирается.
Пакет доходит до RT1. Смотрит в Destination IP и сравнивает со своей таблицей маршрутизации.
RT1#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 1 subnets
C 10.0.1.0 is directly connected, FastEthernet0/1
C 192.168.1.0/24 is directly connected, FastEthernet0/0
И вуаля. Совпадений нет. А значит RT1 понятия не имеет, что делать с этим пакетом.
Но так просто отбросить его не может, так как надо уведомить того, кто это послал. Он формирует ответный ICMP с сообщением «Host Unreachable».
Как только пакет доходит до PC0, в консоли высвечивается сообщение «Reply from 192.168.1.1: Destination host unreachable.». То есть RT1 (192.168.1.1) говорит о том, что запрашиваемый хост недоступен.
Выход из ситуации следующий: нужно «сказать» сетевому устройству, как добраться до конкретной подсети. Причем это можно сделать вручную или настроить все сетевые устройства так, чтобы они переговаривались между собой. Вот на этом этапе маршрутизация делится на 2 категории:
- Статическая маршрутизация
- Динамическая маршрутизация
Начнем со статической. В качестве примера возьмем схему выше и добьемся связности между PC0 и PC1. Так как первые проблемы с маршрутизацией начались у RT1, то перейдем к его настройке:
RT1#conf t
RT1(config)#ip route 192.168.2.0 255.255.255.0 10.0.1.1
Маршрут прописывается командой ip route. Синтаксис прост: «подсеть» «маска» «адрес следующего устройства».
После можно набрать команду show ip route и посмотреть таблицу маршрутизации:
RT1#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 1 subnets
C 10.0.1.0 is directly connected, FastEthernet0/1
C 192.168.1.0/24 is directly connected, FastEthernet0/0
S 192.168.2.0/24 [1/0] via 10.0.1.1
Появился статический маршрут (о чем свидетельствует код S слева). Здесь много различных параметров и о них я расскажу чуть позже. Сейчас задача прописать маршруты на всех устройствах. Перехожу к RT2:
RT2(config)#ip route 192.168.1.0 255.255.255.0 10.0.1.2
RT2(config)#ip route 192.168.2.0 255.255.255.0 10.0.2.2
RT2#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 2 subnets
C 10.0.1.0 is directly connected, FastEthernet0/0
C 10.0.2.0 is directly connected, FastEthernet0/1
S 192.168.1.0/24 [1/0] via 10.0.1.2
S 192.168.2.0/24 [1/0] via 10.0.2.2
Обратите внимание, что маршрут прописан не только в 192.168.2.0/24, но и 192.168.1.0/24. Без обратного маршрута полноценной связности не будет.
Остался RT3:
RT3(config)#ip route 192.168.1.0 255.255.255.0 10.0.2.1
RT3(config)#end
RT3#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 1 subnets
C 10.0.2.0 is directly connected, FastEthernet0/1
S 192.168.1.0/24 [1/0] via 10.0.2.1
C 192.168.2.0/24 is directly connected, FastEthernet0/0
Маршруты на всех устройствах прописаны, а значит PC0 сможет достучаться до PC1 и наоборот PC1 до PC0. Проверим:
Обратите внимание на то, что первые 3 запроса потерялись по тайм-ауту (не Unreachable). Это так CPT эмулирует работу ARP. По сути эти 3 потерянных пакета — это следствие того, что каждый маршрутизатор по пути запускал ARP-запрос до своего соседа. В итоге после всех работ PC0 успешно пингует PC1. Проверим обратную связь:
И с этой стороны все прекрасно.
Ссылка на скачивание.
Теперь на примере таблицы R3 объясню, что она из себя представляет:
RT3#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 1 subnets
C 10.0.2.0 is directly connected, FastEthernet0/1
S 192.168.1.0/24 [1/0] via 10.0.2.1
C 192.168.2.0/24 is directly connected, FastEthernet0/0
Коды (они же легенды) показывают, каким методом данный маршрут попал в таблицу. Их тут много и заострять внимание на все нет смысла (так как ныне не используются). Остановимся на двух — C(connected) и S(static).
Как только мы прописываем IP-адрес и активируем интерфейс, подсеть, к которой он принадлежит, автоматически попадает в таблицу маршрутизации. Поэтому справа от этой строки подписано directly connected и интерфейс, привязанный к этой подсети. Тоже самое с подсетью 192.168.2.0/24. А вот со статически заданным адресом чуть по другому. Подсеть 192.168.1.0/24 не напрямую подсоединена к текущему маршрутизатору, а доступна через 10.0.2.1. А вот этот next-hop уже принадлежит к 10.0.2.0/24 (которая напрямую доступна). Таким образом можно добраться до удаленной подсети, через знакомую сеть. Это может показаться немного запутанным, но именно так работает логика маршрутизатора. Тут еще можно заметить, что в строчке со статическим маршрутом присутствует запись [1/0]. Я чуть позже объясню что это, когда будет разбираться динамическая маршрутизация. Просто на фоне ее эти цифры сразу обретут смысл. А сейчас важно просто запомнить, что первое число — это административная дистанция, а второе — метрика.
Теперь перейдем к разделу динамической маршрутизации. Начну сразу с картинки:
И сразу вопрос: В чем сложность этой схемы? На самом деле ни в чем, до того момента, пока не придется это все настраивать. Сейчас мы умеем настраивать статическую маршрутизацию. И за n-ое количество времени поднимем сеть и она будет работать. А теперь несколько но:
- На одном из маршрутизаторов появилась новая подсеть. Это значит, что нужно на всех маршрутизаторах вручную прописать маршрут до нее.
- Допустим мы из Router0 ходили до Cloud0 по цепочке 0 -> 1 -> 3 -> 2 -> Cloud0. Теперь внезапно сгорел/умер/украли Router3. Соответственно не было запасного пути и доступ до Cloud0 закрыт. Сеть стоит и компания не может работать. Тут придется подрываться и переписать цепочку по 0 -> 1 -> 4 -> 2 -> Cloud0. То есть нет никакого резерва. Если сеть падает, то без админа ничего не решить. Сеть не может сама перестроиться.
- Ну и еще один аргумент, почему строить сеть исключительно на статических маршрутах — зло и не практично. Это, конечно, масштабируемость. Практически любая компания рано или поздно растет, расширяется и сетевых узлов становится все больше. А значит, в конечном итоге, сеть со статическими маршрутами начнет превращаться в ад для сетевого инженера.
Вот на помощь как раз приходит динамическая маршрутизация. Она оперирует двумя очень созвучными понятиями, но совершенно разными по смыслу:
- Routing protocols (протоколы маршрутизации) — это как раз те протоколы, о которых чуть ниже поговорим. При помощи этих протоколов, роутеры обмениваются маршрутной информацией и строят топологию.
- Routed protocols (маршрутизируемые протоколы) — это как раз те протоколы, которые мы маршрутизируем. В данном случае — это IPv4, IPv6.
Протоколы динамической маршрутизации делятся на 2 категории:
- IGP (interior gateway protocols) — внутренние протоколы маршрутизации (RIP, OSPF, EIGRP). Гости этого выпуска.
- EGP (external gateway protocols) — внешние протоколы маршрутизации (на сегодня BGP).
Отличий в них много, но самые главные — IGP запускается внутри одной автономной системы (считайте компании), а EGP запускается между автономными системами (то есть это маршрутизация в Интернете. При помощи него автономные системы связываются между собой). Сейчас представитель EGP остался один — это BGP. Я не буду долго на нем останавливаться, так как он выходит за рамки CCNA. Да и по нему лучше делать отдельную статью, чтобы не смешивать и так довольно емкий материал.
Теперь про IGP. Это прозвучит смешно, но и они делятся на несколько категорий:
- Distance-Vector (дистанционно-векторные)
- Hybrid or Advanced Distance Vector (гибридные или продвинутые дистанционно-векторные)
- Link-State (протокол состояния канала)
Начну с дистанционно-векторного. Он, на мой взгляд, самый простой для понимания.
Название ему такое дали не с проста. Дистанция показывает расстояние до точки назначения. Дальностью оперирует такой показатель, как метрика (о чем я упоминал выше). Вектор показывает направление до точки назначения. Это может быть выходной интерфейс, IP-адрес соседа.
Мне этот протокол напоминает дорожный указатель. То есть по какому направлению идти и какое расстояние до точки назначения.
Теперь покажу на практике, как он работает и по ходу детально разберем.
Чтобы не загромождать статью однообразными настройками, я заранее сконфигурировал устройства. А именно прописал IP-адреса и включил интерфейсы. Оставлю под спойлерами настройки:
Router0:
Router0#show running-config
Building configuration...
Current configuration : 622 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router0
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.1.1.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.1.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
no ip address
duplex auto
speed auto
shutdown
!
interface Vlan1
no ip address
shutdown
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end
Router1:
Router1#show running-config
Building configuration...
Current configuration : 622 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router1
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.2.2.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.1.2 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
no ip address
duplex auto
speed auto
shutdown
!
interface Vlan1
no ip address
shutdown
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end
Единственное, что может показаться новым — это Loopback интерфейсы. Он практически не отличается от других интерфейсов, за исключением того, что не представлен физически и к нему ничего нельзя воткнуть. Он программно создан внутри самого устройства. Такой интерфейс есть и на многих ОС, как Windows и Linux-подобных. На примере он используется для того, чтобы не рисовать множество маршрутизаторов со своими подсетями.
Сейчас таблицы маршрутизации выглядят следующим образом:
Router0:
Router0#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 1 subnets
C 10.1.1.0 is directly connected, Loopback1
C 192.168.1.0/24 is directly connected, FastEthernet0/0
Router1:
Router1#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 1 subnets
C 10.2.2.0 is directly connected, Loopback1
C 192.168.1.0/24 is directly connected, FastEthernet0/0
То есть у каждого в таблице маршрут общий с соседом (192.168.1.0/24) и недоступный другому соседу (10.1.1.0 и 10.2.2.0 соответственно).
Теперь для связности 2 маршрутизатора должны обменяться своими маршрутными информациями. И вот тут поможет протокол RIP.
Переключаю PT в режим симуляции и перехожу к настройкам:
Router0:
Router0#conf t -- переход в режим глобальной конфигурации
Enter configuration commands, one per line. End with CNTL/Z.
Router0(config)#router rip -- переход к настройке протокола
Router0(config-router)#version 2 -- включается протокол 2-ой версии
Router0(config-router)#no auto-summary -- отключается автоматическое суммирование
Router0(config-router)#network 10.1.1.0 -- активируется RIP на интерфейсе из данной подсети
Router0(config-router)#network 192.168.1.0
Router1:
Router1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#router rip
Router1(config-router)#version 2
Router1(config-router)#no auto-summary
Router1(config-router)#network 10.2.2.0
Router1(config-router)#network 192.168.1.0
Сразу оговорюсь, что протокол RIP (также как EIGRP и OSPF) не анонсирует подсети таким образом. Он включает протокол на данном интерфейсе. То есть нельзя анонсировать то, что устройство не знает. И замечу, что включена вторая версия протокола и отключено автосуммирование. Изначально RIP был придуман для сетей с классовой адресацией. Поэтому суммирование он выполняет по тем же правилам, что не корректно в применении к бесклассовой. После перехода на бесклассовую адресацию, нужно было изменить работу протокола RIP. И вот во второй версии помимо подсети, передается еще и маска.
На схеме сразу же оба маршрутизатора что-то сгенерировали:
Первый пакет:
Это первый пакет, который генерирует роутер, при включении RIP. Тут важный аспект, что ничего не анонсируется и метрика = 16. (0x10 в шестнадцатиричном значение = 16 в десятичном).
Второй пакет:
А вот этот пакет уже несет полезную информацию.
1) ADDR FAMILY: 0x2 — означает IP протокол. В большинстве случаев это поле не меняется.
2) NETWORK: 10.1.1.0 — подсеть, которая анонсируется.
3) SUBNET: 255.255.255.0 — маска
4) NEXT HOP: 192.168.1.1 — следующий узел для достижимости анонсированной подсети.
5) METRIC: 0x1 — стоимость пути (в данном случае 1).
С обратной стороны придет точно такой же анонс (только будет соответствующая подсеть, nexthop).
В итоге после получения анонсов, таблицы у обоих роутеров будут выглядеть следующим образом:
Router0:
Router0#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 2 subnets
C 10.1.1.0 is directly connected, Loopback1
R 10.2.2.0 [120/1] via 192.168.1.2, 00:00:03, FastEthernet0/0
C 192.168.1.0/24 is directly connected, FastEthernet0/0
Router1:
Router1#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 2 subnets
R 10.1.1.0 [120/1] via 192.168.1.1, 00:00:16, FastEthernet0/0
C 10.2.2.0 is directly connected, Loopback1
C 192.168.1.0/24 is directly connected, FastEthernet0/0
В таблице появилась пометка с кодом R. То есть получен по протоколу RIP.
Если пустить пинги:
Router0:
Router0#ping 10.2.2.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.2.2.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/0/1 ms
Router1:
Router1#ping 10.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/0/0 ms
Анонсируемые подсети достижимы. Еще важный аспект, при работе с протоколами маршрутизации — это просмотр сформированной базы. Таблица маршрутизации — это конечный итог, куда заносится маршрут. Посмотреть базу можно командой show ip rip database:
Router0:
Router0#show ip rip database
10.1.1.0/24 auto-summary
10.1.1.0/24 directly connected, Loopback1
10.2.2.0/24 auto-summary
10.2.2.0/24
[1] via 192.168.1.2, 00:00:03, FastEthernet0/0
192.168.1.0/24 auto-summary
192.168.1.0/24 directly connected, FastEthernet0/0
Router1:
Router1#show ip rip database
10.1.1.0/24 auto-summary
10.1.1.0/24
[1] via 192.168.1.1, 00:00:13, FastEthernet0/0
10.2.2.0/24 auto-summary
10.2.2.0/24 directly connected, Loopback1
192.168.1.0/24 auto-summary
192.168.1.0/24 directly connected, FastEthernet0/0
Эта команда полезна, когда маршруты никак не заносятся в таблицу, при этом вроде как RIP включен и настроено все верно. Если маршрута нет в базе, значит он никак не попадет в таблицу и тут надо копать глубже. У циски, к счастью, есть хороший инструмент для дебага, который позволяет практически моментально понять, что происходит. В CPT он урезан и многое не показать, но на реальных железках, он прекрасен.
Например:
Router0#debug ?
aaa AAA Authentication, Authorization and Accounting
crypto Cryptographic subsystem
custom-queue Custom output queueing
eigrp EIGRP Protocol information
ephone ethernet phone skinny protocol
frame-relay Frame Relay
ip IP information
ipv6 IPv6 information
ntp NTP information
ppp PPP (Point to Point Protocol) information
Посмотрим, что происходит в RIP:
Router0#debug ip rip
RIP protocol debugging is on
Router0#RIP: sending v2 update to 224.0.0.9 via Loopback1 (10.1.1.1)
RIP: build update entries
10.2.2.0/24 via 0.0.0.0, metric 2, tag 0
192.168.1.0/24 via 0.0.0.0, metric 1, tag 0
RIP: sending v2 update to 224.0.0.9 via FastEthernet0/0 (192.168.1.1)
RIP: build update entries
10.1.1.0/24 via 0.0.0.0, metric 1, tag 0
RIP: received v2 update from 192.168.1.2 on FastEthernet0/0
10.2.2.0/24 via 0.0.0.0 in 1 hops
Сейчас все хорошо. Видно, что приходят/уходят апдейты и записи обновляются. Из за того, что дебажный инструмент обширен, лучше явно указывать что нужно ловить (как представлено выше). Иначе можно достаточно хорошо пригрузить устройство. Важно помнить про команду undebug all. Она отключает весь дебаг на устройстве.
Ссылка на скачивание лабы. Можете добавить еще один маршрутизатор к существующей схеме и связать их через RIP.
Теперь усложним схему и посмотрим в чем преимущество динамической маршрутизации.
Добавился Router2, который соединен с ранее созданными маршрутизаторами и анонсирует подсеть 10.3.3.0/24.
Настраиваются аналогично предыдущему примеру. Поэтому покажу только конфигурации:
Router0
Router0#show running-config
Building configuration…
Current configuration: 736 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router0
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.1.1.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.1.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 192.168.3.1 255.255.255.0
duplex auto
speed auto
!
interface Vlan1
no ip address
shutdown
!
router rip
version 2
network 10.0.0.0
network 192.168.1.0
network 192.168.3.0
no auto-summary
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end
Router1
Router1#show running-config
Building configuration…
Current configuration: 736 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router1
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.2.2.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.1.2 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 192.168.4.1 255.255.255.0
duplex auto
speed auto
!
interface Vlan1
no ip address
shutdown
!
router rip
version 2
network 10.0.0.0
network 192.168.1.0
network 192.168.4.0
no auto-summary
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end
Router2
Router2#show running-config
Building configuration…
Current configuration: 736 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router2
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.3.3.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.3.2 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 192.168.4.2 255.255.255.0
duplex auto
speed auto
!
interface Vlan1
no ip address
shutdown
!
router rip
version 2
network 10.0.0.0
network 192.168.3.0
network 192.168.4.0
no auto-summary
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end
Итого на Router0 мы имеем следующую таблицу маршрутизации:
Router0# show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 3 subnets
C 10.1.1.0 is directly connected, Loopback1
R 10.2.2.0 [120/1] via 192.168.1.2, 00:00:05, FastEthernet0/0
R 10.3.3.0 [120/1] via 192.168.3.2, 00:00:14, FastEthernet0/1
C 192.168.1.0/24 is directly connected, FastEthernet0/0
C 192.168.3.0/24 is directly connected, FastEthernet0/1
R 192.168.4.0/24 [120/1] via 192.168.1.2, 00:00:05, FastEthernet0/0
[120/1] via 192.168.3.2, 00:00:14, FastEthernet0/1
Из новых маршрутов — это 10.3.3.0/24, который доступен через 192.168.3.2 (т.е. Router2). И второй маршрут — это 192.168.4.0/24, который доступен через 192.168.1.2 (т.е. Router1) и 192.168.3.2 (т.е. Router2).
Вот в тех случаях, когда маршруты от разных устройств до одной подсети приходят с одинаковой метрикой, оба заносятся в таблицу. Такой случай называют балансировкой или ECMP (Equal-cost multi-path routing).
Если пройтись по нему через traceroute:
Router0#traceroute 192.168.4.1
Type escape sequence to abort.
Tracing the route to 192.168.4.1
1 192.168.1.2 1 msec 0 msec 0 msec
Router0#traceroute 192.168.4.1
Type escape sequence to abort.
Tracing the route to 192.168.4.1
1 192.168.3.2 1 msec 0 msec 0 msec
То есть меняется next-hop по очереди. Сама тема балансировки заслуживает отдельного внимания, т.к. у балансировки есть несколько стратегий по выбору оптимального пути. Случай, когда балансировка работает по очереди, как в нашем случае — называют Round-Robin.
Посмотрим базу RIP на Router0:
Router0#show ip rip database
10.1.1.0/24 auto-summary
10.1.1.0/24 directly connected, Loopback1
10.2.2.0/24 auto-summary
10.2.2.0/24
[1] via 192.168.1.2, 00:00:01, FastEthernet0/0
10.3.3.0/24 auto-summary
10.3.3.0/24
[1] via 192.168.3.2, 00:00:23, FastEthernet0/1
192.168.1.0/24 auto-summary
192.168.1.0/24 directly connected, FastEthernet0/0
192.168.3.0/24 auto-summary
192.168.3.0/24 directly connected, FastEthernet0/1
192.168.4.0/24 auto-summary
192.168.4.0/24
[1] via 192.168.1.2, 00:00:01, FastEthernet0/0 [1] via 192.168.3.2, 00:00:23, FastEthernet0/1
То есть нет никакого запасного маршрута, на случай выхода из строя 192.168.3.2. Теперь переключаю в режим симуляции и смотрю, что произойдет, если отключить на Router0 интерфейс fa0/1:
Видим, что отключился линк на Router0 и Router2. И сразу оба устройства генерируют сообщения:
Router0:
Router1:
Сразу сообщают, что данные маршруты теперь недостижимы. Делают они это, при помощи метрики, которая становится равной 16. Исторически так сложилось, что протокол RIP был рассчитан на работу с 15 транзитными участками. В то время никто не подразумевал, что сеть может быть настолько большой:-). Называется этот механизм Poison Reverse.
Таким образом сосед, получивший такой апдейт должен удалить этот маршрут из таблицы.
Вот, что происходит на Router1:
И самое интересное, что после этого Router1 отправит Router0 следующее:
То есть я больше не знаю о 192.168.3.0/24.
На данный момент таблица на Router0 выглядит следующим образом:
Router0#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 2 subnets
C 10.1.1.0 is directly connected, Loopback1
R 10.2.2.0 [120/1] via 192.168.1.2, 00:00:29, FastEthernet0/0
C 192.168.1.0/24 is directly connected, FastEthernet0/0
R 192.168.4.0/24 [120/1] via 192.168.1.2, 00:00:29, FastEthernet0/0
То есть знает о своих подсетях и тех, что анонсировал Router1.
Двигаемся дальше:
Видим, что Router1 генерирует пакет с кучей подсетей и отправляет соседям. В том числе там подсеть 10.4.4.0.
И в таблице Router0 теперь:
Router0#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 3 subnets
C 10.1.1.0 is directly connected, Loopback1
R 10.2.2.0 [120/1] via 192.168.1.2, 00:00:00, FastEthernet0/0
R 10.3.3.0 [120/2] via 192.168.1.2, 00:00:00, FastEthernet0/0
C 192.168.1.0/24 is directly connected, FastEthernet0/0
R 192.168.4.0/24 [120/1] via 192.168.1.2, 00:00:00, FastEthernet0/0
Замечу, что в таблице она записана с метрикой 2. Потому что данный маршрут направлен не напрямую от соседа, породившего его, а через транзитный маршрутизатор, который добавил 1.
Проверим доступность:
Router0#ping 10.3.3.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.3.3.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/0/1 ms
Router0#traceroute 10.3.3.1
Type escape sequence to abort.
Tracing the route to 10.3.3.1
1 192.168.1.2 0 msec 0 msec 0 msec
2 192.168.4.2 2 msec 0 msec 0 msec
Пинги проходят, а через traceroute видим, что пакет сначала попадает на Router1, а дальше маршрутизируется на Router2.
То есть видно очевидное преимущество динамического протокола маршрутизации над статическими. При падении линка и наличии резервного пути, топология сама перестроилась. На сегодняшний день мало кто использует данный протокол. И на это есть множество причин. Одна из них — это количество транзитных маршрутов. Вдобавок ко всему — это время сходимости. По умолчанию все маршрутизаторы отправляют друг другу апдейты каждые 30 секунд. Если обновление не приходит в течении 180 секунд, маршрут помечается, как Invalid. А как время простоя доходит до 240 секунд, он удаляется. Конечно таймеры можно подкрутить. Но проблема еще в том, что в большой сети, при наличии проблемы где-нибудь по середине, апдейт с одного конца до другого может просто-напросто не дойти. Хотя он доступен. Есть еще одна проблема. RIP хранит только лучший маршрут. Поэтому когда отключился линк, маршрут пропал и резервного пути не было. А значит, пока никто из соседей не проанонсирует подсеть, она будет недоступной. Это очень ощутимо для сетей, в которых простой стоит дорого. В связи с этим были придуманы протоколы, у которых время сходимости выше и есть резервные пути. О них и поговорим. Хочу также отметить, что RIP — протокол не плохой (уж явно лучше, чем использование только статических маршрутов в растущей сети). Поэтому изучение лучше начать с него. Таким образом концепция динамической маршрутизации уляжется лучше. Да что тут говорить, если Cisco сначала убрала RIP из своих экзаменов, а теперь снова включила.
Ссылка на скачивание.
Теперь перейдем к EIGRP. Если RIP уже давно является открытым протоколом, то EIGRP был проприетарным и работал только на устройствах Cisco. Но в 2016 году Cisco решила все же открыть его, оставив авторство за собой. Ссылка на RFC7868.
Cisco называет его гибридным (имея в виду, что он взял что-то от Distance-Vector, а что-то от Link-State). В отличии от RIP он работает более «умно». В том плане, что у него есть резервные маршруты и он «хранит некую топологию сети» (хотя это верно очень частично).
Оперирует он 3-мя таблицами:
1) EIGRP Neighbor Table: Здесь представлены все напрямую соединенные соседи (то есть кто Next-Hop и с какого интерфейса к нему добраться).
2) EIGRP Topology Table: Здесь представлены все изученные маршруты от соседей (с точкой назначения и метрикой)
3) Global Routing Table: Общая для всех таблица и сюда попадают лучшие маршруты из предыдущей таблицы.
Соберем топологию и запустим на ней EIGRP. Попутно буду рассказывать, что происходит, чтобы совместить минимум теории с максимумом практики.
Топологию возьмем ту же, что и с RIP. На ней настроены все IP-адреса, подняты интерфейсы, но не запущен протокол маршрутизации.
Router0:
Router0#show running-config
Building configuration…
Current configuration: 635 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router0
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.1.1.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.1.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 192.168.3.1 255.255.255.0
duplex auto
speed auto
!
interface Vlan1
no ip address
shutdown
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end
Router1
Router1#show running-config
Building configuration…
Current configuration: 635 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router1
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.2.2.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.1.2 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 192.168.4.1 255.255.255.0
duplex auto
speed auto
!
interface Vlan1
no ip address
shutdown
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end
Router2
Router2#show running-config
Building configuration…
Current configuration: 635 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router2
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.3.3.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.3.2 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 192.168.4.2 255.255.255.0
duplex auto
speed auto
!
interface Vlan1
no ip address
shutdown
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end
Сейчас в маршрутных таблицах роутеров только Connected подсети.
Переходим в настройки EIGRP.
Router0:
router eigrp 1 - номер автономной системы (должен совпадать на всех устройствах)
network 10.1.1.0 0.0.0.255
network 192.168.1.0 0.0.0.255
network 192.168.3.0 0.0.0.255
no auto-summary
Router1:
router eigrp 1 - номер автономной системы (должен совпадать на всех устройствах)
network 10.2.2.0 0.0.0.255
network 192.168.1.0 0.0.0.255
network 192.168.4.0 0.0.0.255
no auto-summary
Router2:
router eigrp 1 - номер автономной системы (должен совпадать на всех устройствах)
network 10.3.3.0 0.0.0.255
network 192.168.3.0 0.0.0.255
network 192.168.4.0 0.0.0.255
no auto-summary
Как описал выше, при включении EIGRP, ему присваивается номер AS. И он должен совпадать на всех соседях. В настройках анонса сети теперь добавляется wildcard маска. Если не вдаваться в подробности — это обратная запись маски (т.е. 0.0.0.255 — это 255.255.255.0). И отключение автосуммирования (наследие классовых сетей).
В итоге видим следующую картину:
Посмотрим, что сгенерировал Router0:
Видим кучу полей и попробуем разобраться, что в них. Мы помним, что RIP был не самым надежным вариантом. Он не понимал какой номер пакета, не было механизма отслеживания, подтверждения и прочего. Да и плюс нижестоящий протокол был UDP, который тоже не имеет механизма надежности. EIGRP вообще работает сразу поверх IP (не используя механизмы транспортного уровня). Поэтому все механизмы по отслеживанию ложатся на его поля.
Из важного: появились флаги, SEQ. NUM (номер отправляемого пакета), ACK.NUM (подтверждение на принятый пакет), номер автономной системы (заданный при создании), и параметры K. Вот тут остановлюсь. В RIP метрика считалась тривиально. Пакет пришел, добавляю единицу и передаю дальше. В EIGRP метрика считается исходя из K значений:
1) K1 — bandwidth (или пропускная способность)
2) K2 — load (загруженность)
3) K3 — delay (задержка)
4) K4 — reliability (надежность)
5) K5 — MTU (Maximum Transmission Unit).
Но как правило, при расчете используются только K1 и K3.
Формула таким образом выглядит:
Metric = (K1 * bandwidth) + [(K2 * bandwidth) / (256 - load)] + (K3 * delay)
.
Запоминать ее наизусть не надо. Просто важно понимать, как происходит расчет метрики.
Вот, что происходит, когда пакет доходит до Router0:
Router0(config)#
%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 192.168.1.2 (FastEthernet0/0) is up: new adjacency
%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 192.168.3.2 (FastEthernet0/1) is up: new adjacency
К сожалению CPT наглухо тормозит от количества пакетов, поэтому покажу, что происходит в непосредственно таблицах Router0 (в остальных будет аналогично. Поэтому покажу на одном). А после подробно покажу процесс установления соседства в режиме дебага между двумя маршрутизаторами:
1) Neighbor Table:
Router0#show ip eigrp neighbors
IP-EIGRP neighbors for process 1
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
0 192.168.1.2 Fa0/0 11 00:00:41 40 1000 0 42
1 192.168.3.2 Fa0/1 10 00:00:41 40 1000 0 38
Из важного. Здесь показан сосед, интерфейс (за которым он находится), hold (таймер, по истечении которого, произойдет разрыв соседства. При получении пакета от соседа, он повышается), uptime (как долго живет соседство), SRTT (время между отправкой и подтверждением), RTO (интервал между отправкой) и номер пакета.
2) Router0#show ip eigrp topology
IP-EIGRP Topology Table for AS 1/ID(10.1.1.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - Reply status
P 10.1.1.0/24, 1 successors, FD is 128256
via Connected, Loopback1
P 10.2.2.0/24, 1 successors, FD is 156160
via 192.168.1.2 (156160/128256), FastEthernet0/0
P 10.3.3.0/24, 1 successors, FD is 156160
via 192.168.3.2 (156160/128256), FastEthernet0/1
P 192.168.1.0/24, 1 successors, FD is 28160
via Connected, FastEthernet0/0
P 192.168.3.0/24, 1 successors, FD is 28160
via Connected, FastEthernet0/1
P 192.168.4.0/24, 2 successors, FD is 30720
via 192.168.3.2 (30720/28160), FastEthernet0/1
via 192.168.1.2 (30720/28160), FastEthernet0/0
Тут все просто. Если все хорошо с полученным маршрутом, то он становится Passive. О других полях и их значениях расскажу чуть позже. Сейчас достаточно того, что в данной таблице все хорошо. Из нового — вводится понятие Successor. Successor-ом выбирается тот, у кого наименьшая стоимость до конкретной подсети. Сейчас на каждый маршрут по одному Successor-у и только на маршрут 192.168.4.0 их два. Причем они оба выбраны Successor-ами из за одинаковой метрики (следовательно будет работать балансировка). Теперь обращу внимание на странные числа у каждого Successor-а.
EIGRP при расчете метрики оперирует 2-мя понятиями: Advertised Distance и Feasible Distance. Оба рассчитываются той страшной формулой:
1) Advertised Distance — это анонс стоимости от соседа. То есть сколько стоит от него (соседа) и до точки назначения.
2) Feasible Distance — это стоимость от самого роутера до точки назначения. То есть — это Adverticed Distance + стоимость линка до соседа.
Возьмем для примера запись от маршрута 10.2.2.0:
P 10.2.2.0/24, 1 successors, FD is 156160
via 192.168.1.2 (156160/128256), FastEthernet0/0
Число 128256 — это Advertised Distance, а 156160 — это Feasible Distance.
Соответственно, чем меньше Feasible Distance, тем выгоднее маршрут и такой сосед объявляется Successor-ом. После записи о количестве successors, всегда пишется какая FD была выбрана.
На текущий момент он работает приблизительно также, как и RIP. Только почему то метрика стала сложнее и добавилось больше таблиц. Но вот у EIGRP есть несколько фокусов в кармане. Один из них — это Feasible Successor (не путать с Feasible Distance). Это как раз тот самый резервный путь на случай отказа Successor. Сейчас у нас нет резервного пути (например до маршрута 10.2.2.0). Если падает 192.168.1.2, этот маршрут теряется до момента, пока о нем не расскажет другой сосед. Но мы прекрасно знаем, что о нем может рассказать Router2 (пусть и с худшей метрикой). Но EIGRP все же основан на неких правилах, что не позволяет ему так сделать. А правило заключается в следующем:
Advertised distance of feasible successor < Feasible distance of successor
.
То есть стоимость анонсируемая от Feasible Successor (потенциально backup-роутера) должна быть меньше, чем Feasible Distance Successor (то есть полная стоимость через основного).
Звучит тяжело, но если проще. Взять тот же маршрут 10.2.2.0. Через него FD = 156160. Значит AD от Feasible Successor должна принять любое число меньшее 156160. Причем не важно сколько стоит линк от текущего роутера до соседа (хоть 1000000). Главное, чтобы backup-сосед анонсировал с меньшей метрикой, чем successor. Это правило используется для предотвращения петель.
Чтобы понять, как это работает, внесем изменения в топологию.
Сейчас на Router0 таблица топологии выглядит следующим образом:
Router0#show ip eigrp topology
IP-EIGRP Topology Table for AS 1/ID(10.1.1.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - Reply status
P 10.1.1.0/24, 1 successors, FD is 128256
via Connected, Loopback1
P 10.2.2.0/24, 1 successors, FD is 156160
via 192.168.1.2 (156160/128256), FastEthernet0/0
P 10.3.3.0/24, 1 successors, FD is 156160
via 192.168.3.2 (156160/128256), FastEthernet0/1
P 192.168.1.0/24, 1 successors, FD is 28160
via Connected, FastEthernet0/0
P 192.168.3.0/24, 1 successors, FD is 28160
via Connected, FastEthernet0/1
P 192.168.4.0/24, 2 successors, FD is 30720
via 192.168.1.2 (30720/28160), FastEthernet0/0
via 192.168.3.2 (30720/28160), FastEthernet0/1
Маршрут до 10.2.2.0/24 доступен через 192.168.1.2, что верно, так как Router1 его породил и так добраться быстрее всего. Поэтому Router2 не сможет проанонсировать лучше, так как его AD будет всегда выше.
Теперь переведем скорость интерфейсов между Router0 и Router1 на 10Мбит/с. Таким образом ухудшим канал, и внесем изменения в пересчет топологии.
Router0:
interface FastEthernet0/0
ip address 192.168.1.1 255.255.255.0
duplex auto
speed 10
Router1:
interface FastEthernet0/0
ip address 192.168.1.2 255.255.255.0
duplex auto
speed 10
Таким образом на Router0:
Router0#show ip eigrp topology
IP-EIGRP Topology Table for AS 1/ID(10.1.1.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - Reply status
P 10.1.1.0/24, 1 successors, FD is 128256
via Connected, Loopback1
P 10.2.2.0/24, 1 successors, FD is 158720
via 192.168.3.2 (158720/156160), FastEthernet0/1
via 192.168.1.2 (179200/128256), FastEthernet0/0
P 10.3.3.0/24, 1 successors, FD is 156160
via 192.168.3.2 (156160/128256), FastEthernet0/1
P 192.168.1.0/24, 1 successors, FD is 51200
via Connected, FastEthernet0/0
P 192.168.3.0/24, 1 successors, FD is 28160
via Connected, FastEthernet0/1
P 192.168.4.0/24, 1 successors, FD is 30720
via 192.168.3.2 (30720/28160), FastEthernet0/1
via 192.168.1.2 (53760/28160), FastEthernet0/0
Видим, что до 10.2.2.0 теперь 2 пути, но Successor выбирается тот, у кого FD выгоднее. А выгоднее, через 192.168.3.2 (то есть Router2), так как у него скорость интерфейсов 100Мбит/с, хоть и преодолеть придется 2 хопа. А теперь обратим внимание, почему попали 2 записи в этот маршрут.
via 192.168.3.2 (158720/156160), FastEthernet0/1
via 192.168.1.2 (179200/128256), FastEthernet0/0
А потому что AD у 192.168.1.2 лучше, чем FD у 192.168.3.2 (128256<158720).
И в таблицу маршрутизации попадет маршрут через выбранного Successor-а, то есть 192.168.3.2:
Router0#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 3 subnets
C 10.1.1.0 is directly connected, Loopback1
D 10.2.2.0 [90/158720] via 192.168.3.2, 00:14:49, FastEthernet0/1
D 10.3.3.0 [90/156160] via 192.168.3.2, 00:59:42, FastEthernet0/1
C 192.168.1.0/24 is directly connected, FastEthernet0/0
C 192.168.3.0/24 is directly connected, FastEthernet0/1
D 192.168.4.0/24 [90/30720] via 192.168.3.2, 00:59:42, FastEthernet0/1
Для теста отказоустойчивости, запустим пинг на 1000 пакетов и в этот момент поотключаем основной канал через 192.168.3.2:
Router0#ping
Protocol [ip]:
Target IP address: 10.2.2.1
Repeat count [5]: 1000
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 1000, 100-byte ICMP Echos to 10.2.2.1, timeout is 2 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down
%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 192.168.3.2 (FastEthernet0/1) is down: interface down
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to up
%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 192.168.3.2 (FastEthernet0/1) is up: new adjacency
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent (403/403), round-trip min/avg/max = 0/0/4 ms
Как видно, линк падал, но пакеты не прекращали ходить. Тем самым резервирование отрабатывало. Это одна из фишек EIGRP.
Вторая фишка — это неэквивалентная балансировка. Как помним, обычная балансировка работает, если 2 маршрута приходят с абсолютно одинаковой метрикой. EIGRP же умеет балансировать маршрутами с разной метрикой.
Проверим на существующей топологии. На Router0 имеем следующее:
Topology Table:
Router0#show ip eigrp topology
IP-EIGRP Topology Table for AS 1/ID(10.1.1.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - Reply status
P 10.1.1.0/24, 1 successors, FD is 128256
via Connected, Loopback1
P 10.2.2.0/24, 1 successors, FD is 158720
via 192.168.3.2 (158720/156160), FastEthernet0/1
via 192.168.1.2 (179200/128256), FastEthernet0/0
P 10.3.3.0/24, 1 successors, FD is 156160
via 192.168.3.2 (156160/128256), FastEthernet0/1
P 192.168.1.0/24, 1 successors, FD is 51200
via Connected, FastEthernet0/0
P 192.168.3.0/24, 1 successors, FD is 28160
via Connected, FastEthernet0/1
P 192.168.4.0/24, 1 successors, FD is 30720
via 192.168.3.2 (30720/28160), FastEthernet0/1
via 192.168.1.2 (53760/28160), FastEthernet0/0
Route Table:
Router0#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 3 subnets
C 10.1.1.0 is directly connected, Loopback1
D 10.2.2.0 [90/158720] via 192.168.3.2, 00:02:57, FastEthernet0/1
D 10.3.3.0 [90/156160] via 192.168.3.2, 00:04:45, FastEthernet0/1
C 192.168.1.0/24 is directly connected, FastEthernet0/0
C 192.168.3.0/24 is directly connected, FastEthernet0/1
D 192.168.4.0/24 [90/30720] via 192.168.3.2, 00:04:45, FastEthernet0/1
То есть сейчас мы имеем два маршрута до 10.2.2.0/24, но используем всего один (наилучший, исходя из метрики). Чтобы правило заработало, нужно изменить множитель метрики (или с англ. variance).
Правило его работы следующее:
FD Feasible Successor < FD Successor
. Иначе говоря стоимость полного пути запасного маршрута должна быть «искусственно» меньше основного.
Сейчас ситуация следующая:
P 10.2.2.0/24, 1 successors, FD is 158720
via 192.168.3.2 (158720/156160), FastEthernet0/1
via 192.168.1.2 (179200/128256), FastEthernet0/0
Значит нужно метрику 158720 умножить настолько, чтобы она стала больше 179200. Умножать можно только на целое число, поэтому выберем 2.
Router0(config)#router eigrp 1
Router0(config-router)#variance 2
%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 192.168.1.2 (FastEthernet0/0) is up: new adjacency
%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 192.168.3.2 (FastEthernet0/1) is up: new adjacency
В итоге имеем:
Router0#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 3 subnets
C 10.1.1.0 is directly connected, Loopback1
D 10.2.2.0 [90/158720] via 192.168.3.2, 00:02:31, FastEthernet0/1
[90/179200] via 192.168.1.2, 00:02:31, FastEthernet0/0
D 10.3.3.0 [90/156160] via 192.168.3.2, 00:02:31, FastEthernet0/1
C 192.168.1.0/24 is directly connected, FastEthernet0/0
C 192.168.3.0/24 is directly connected, FastEthernet0/1
D 192.168.4.0/24 [90/30720] via 192.168.3.2, 00:02:31, FastEthernet0/1
[90/53760] via 192.168.1.2, 00:02:31, FastEthernet0/0
Оба маршрута попали в таблицу маршрутизации. Теперь проверим, что балансировка действительно работает:
Router0#traceroute 10.2.2.1
Type escape sequence to abort.
Tracing the route to 10.2.2.1
1 192.168.3.2 0 msec 0 msec 0 msec
Router0#traceroute 10.2.2.1
Type escape sequence to abort.
Tracing the route to 10.2.2.1
1 192.168.1.2 0 msec 0 msec 0 msec
Балансировка работает.
Ссылка на собранную EIGRP топологию.
И ссылка на топологию с измененной скоростью и балансировкой. Если EIGRP не совсем уложился в голове (а это нормальное явление, если изучаете его впервые), то лучше самому собрать топологию, ориентируясь на статью.
Теперь рассмотрим, как происходит соседство в режиме дебага. Если вы дошли сюда с самой первой статьи и принцип хождения пакетов понятен, то лучше уже учиться со включенным дебагом. В рабочих условиях не будет такого инструмента, чтобы красиво смотреть на пакеты и придется пользоваться другими методами. К счастью, если это циска — то решение с дебагом отличное. Единственное — важно включать не все режимы, а только необходимые. Можно, конечно, отзеркалировать порт и просниффать через wireshark. Но не всегда есть физический доступ к железке.
Итак, топология:
Я просто удалил Router2, отключил интерфейсы, которые были соединены с ним и удалил анонсы маршрутов из EIGRP.
Теперь включаю дебаг на Router0 и наблюдаю:
Router0#debug eigrp fsm
EIGRP FSM Events/Actions debugging is on
DUAL: rcvupdate: 192.168.1.0/24 via Connected metric 28160/0 -- connected маршрут. AD=0 (так как ему он пришел не от соседа. А вот его цена интерфейса 28160.
DUAL: Find FS for dest: 192.168.1.0/24. FD is 4294967295, RD is 4294967295
DUAL: RT installed 192.168.1.0/24 via 0.0.0.0 -- маршрут 192.168.1.0/24 заносится в таблицу, как connected (то есть на себя).
DUAL: Send update about 192.168.1.0/24. Reason: metric chg -- отправляет измененную метрику.
DUAL: Send update about 192.168.1.0/24. Reason: new if -- отправляет информацию, что появился новый интерфейс
DUAL: rcvupdate: 10.1.1.0/24 via Connected metric 128256/0 -- та же история с Loopback
DUAL: Find FS for dest: 10.1.1.0/24. FD is 128256, RD is 0
DUAL: Send update about 10.1.1.0/24. Reason: new if
%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 192.168.1.2 (FastEthernet0/0) is up: new adjacency
DUAL: rcvupdate: 10.2.2.0/24 via 192.168.1.2 metric 156160/128256 - получает маршрут с AD и накладывает свою метрику.
DUAL: Find FS for dest: 10.2.2.0/24. FD is 4294967295, RD is 4294967295
DUAL: RT installed 10.2.2.0/24 via 192.168.1.2 -- устанавливает маршрут 10.2.2.0/24 через соседа 192.168.1.2
DUAL: Send update about 10.2.2.0/24. Reason: metric chg
DUAL: rcvupdate: 10.1.1.0/24 via 192.168.1.2 metric 4294967295/4294967295
DUAL: Find FS for dest: 10.1.1.0/24. FD is 128256, RD is 0
И еще, что стоит упомянуть — это типы EIGRP сообщений. Их 5:
1) Hello — эти пакеты отправляются на мультикастовый адрес 224.0.0.10 ближайшим соседям. Подтверждения в ответ не требуют. Нужны только для идентификации и своего рода keepalive механизмом.
2) Update — содержат маршрутную информацию. Как только обнаруживаются соседи, маршрутизатор сразу отправляет им данный пакет. После чего соседи заполняют таблицу EIGRP топологии. Может отправляться по мультикастовому адресу или юникастовому. Эти пакеты требуют ответа.
3) Query — пакет запроса потерянного маршрута. То есть когда маршрутизатор теряет запись об этом маршруте и не имеет запасного пути к нему. Может отправляться одному через unicast или группе соседей через multicast.
4) Reply — ответ на Query-запрос. Данный пакет всегда отправляется на unicast-адрес (то есть тому, кто его запросил). Требует подтверждения.
5) ACK — используется для подтверждения Update, Query и Reply пакетов. Всегда отправляется на unicast-адрес.
Помните топологию EIGRP с множеством кодов? Так вот эти коды и отображают состояние и отправляемое сообщение на каждый из маршрутов. Вот так в принципе работает EIGRP.
Переходим к последнему протоколу — это OSPF (англ. Open Shortest Path First). Относится он к группе link state или протокол состояния канала. Если RIP с EIGRP работали более-менее похоже, то OSPF работает совершенно по другому. Если дистанционно-векторные протоколы сравнивались с дорожными указателями, то протоколы состояния канала можно сравнить с дорожным навигатором. В этом как раз и отличие. OSPF сначала строит карту сети, а потом выбирает лучший путь. Да, таким образом он более ресурсозатратный протокол, нежели его коллеги, но на текущий момент это не столь критично, как было лет 25-30 назад.
Итак. Почему Link-State:
1) Link — интерфейс маршрутизатора.
2) State — его состояние и как он подключен к соседям.
Оперирует они:
1) LSA (от англ. link-state advertisements) — это как раз таки объявления, которыми они обмениваются между собой. Ниже их разберем.
2) LSDB (от англ. link-state database) — как раз эти LSA формируют базу. Или ту самую карту сети.
Тут встает вопрос. А хорошо ли то, что каждый маршрутизатор обменивается своей информацией с каждым соседом?!
Представим топологию:
Что если каждый маршрутизатор будет отсылать маршрут каждому из своих соседей?! Мы получим огромный флуд трафика. При этом один и тот же анонс будет зеркалироваться… Подумали в свое время инженеры и решили, что эффективнее держать одного маршрутизатора, которому все остальные будут отсылать уведомления, а он будет ответственным за весь флуд. Тем самым смысл тот же, только трафика будет меньше. А чтобы не случилось ситуации, когда «главный» умирает и вся сеть останавливается, придумали держать запасного маршрутизатора, который, в случае «смерти» основного, возьмет его обязанности на себя.
Маршрутизатор, который берет роль основного на себя, называется DR (от англ. Designated Router), а запасной маршрутизатор называется BDR (от англ. Backup Designated Router).
Такая логика работает автоматически в сетях с множественным доступом, которой и является Ethernet. Если у вас сеть точка-точка (пусть даже Ethernet и соединены друг с другом напрямую), то DR и BDR выбирать не обязательно, так как всего 2 участника (но в Ethernet они все же будут выбраны). Но никто не мешает вам изменить логику OSPF и прописать каждого соседа вручную. Только зачем?)
Так вот после того, как LSDB заполнена, каждый маршрутизатор начинает высчитывать самый выгодный маршрут до каждой подсети. Использует он для этого алгоритм SPF (от англ. Shortest Path First). Лучший подсчитанный маршрут попадает в таблицу маршрутизации.
Давайте перейдем к практике и по ходу разбираться.
Есть схема:
Схема самая простая. Единственное, что новое — это очерчена зона. Я специально ее нарисовал. Дело в том, что OSPF обязательно нужно указывать зону для которой включается протокол. Это сделано для того, чтобы снизить нагрузку в расчетах пути. Как я говорил ранее, протокол появился достаточно давно и для того времени производительность играла большую роль. Сейчас тоже принято делить на зоны. Но сейчас это делается для снижения не нужного трафика.
Зоной по-умолчанию всегда выбирается нулевая. Ее еще называют backbone зоной и не с проста. Если у вас в сети много различных зон, то соединены они должны быть через нулевую. То есть нельзя перейти из 11-ой в 25-ую зону напрямую. Обязательно нужно пройти через нулевую, а из нулевой проследовать в требуемую. Единственный случай, когда можно пройти из зоны в зоны, миновав нулевую — это использование Virtual Link. Почитать о ней можно здесь.
Сейчас у нас 2 маршрутизатора в нулевой зоне. На маршрутизаторах настроены IP-адреса и создан Loopback. Ниже под спойлерами конфиги.
Router0
Router0#show running-config
Building configuration…
Current configuration: 622 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router0
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.1.1.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.1.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
no ip address
duplex auto
speed auto
shutdown
!
interface Vlan1
no ip address
shutdown
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end
Router1
Router1#show running-config
Building configuration…
Current configuration: 622 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router1
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.2.2.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.1.2 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
no ip address
duplex auto
speed auto
shutdown
!
interface Vlan1
no ip address
shutdown
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end
Теперь включаю OSPF для интерфейсов FastEthernet0/0 и Loopback1 обоих роутеров:
router ospf 1
network 192.168.1.0 0.0.0.255 area 0
network 10.1.1.0 0.0.0.255 area 0
!
router ospf 1
network 10.2.2.0 0.0.0.255 area 0
network 192.168.1.0 0.0.0.255 area 0
!
Конфигурация простая. Указывается подсеть, wildcard маска и номер зоны. После видим сообщения:
На Router0:
Router0#
00:56:22: %OSPF-5-ADJCHG: Process 1, Nbr 10.2.2.1 on FastEthernet0/0 from LOADING to FULL, Loading Done
На Router1:
Router1(config-router)#
00:56:21: %OSPF-5-ADJCHG: Process 1, Nbr 10.1.1.1 on FastEthernet0/0 from LOADING to FULL, Loading Done
Соседство, судя по сообщению установилось. Но, если обратить внимание, то почему то соседство выбрано между адресами из Loopback интерфейсов. Это на самом деле не адрес, а идентификатор или Router ID. Если в самом процессе он явно не указывается, то выбирается автоматически. Если настроены Loopback интерфейсы, то выбирается наибольший IP-адрес из них. Если Loopback не настроены, то выбирается наибольший IP-адрес из обычного физического интерфейса. У нас Loopback был настроен, а значит он и будет выбран RID.
Так как процессы на обоих роутерах одинаковые, покажу на примере Router0:
Так как соседство установлено, посмотрим список соседей.
Router0#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
10.2.2.1 1 FULL/BDR 00:00:38 192.168.1.2 FastEthernet0/0
Видим 10.2.2.1 (Router1). Статус Full (чуть ниже расскажу и об этом), роль BDR (то есть Router0 выбран DR). Его физический IP-адрес и с какого интерфейса доступен.
Теперь посмотрим на базу данных OSPF:
Router0#show ip ospf database
OSPF Router with ID (10.1.1.1) (Process ID 1)
Router Link States (Area 0)
Link ID ADV Router Age Seq# Checksum Link count
10.1.1.1 10.1.1.1 259 0x80000004 0x0047fb 2
10.2.2.1 10.2.2.1 259 0x80000004 0x00b586 2
Net Link States (Area 0)
Link ID ADV Router Age Seq# Checksum
192.168.1.1 10.1.1.1 259 0x80000002 0x00e9ca
Подробное ее содержание изучается в курсе CCNP Route, поэтому расскажу вкратце. Есть несколько типов LSA-сообщений. В нашей схеме используются только Type1 (Router) и Type2(Network). Первое генерится каждым маршрутизатором в пределах зоны и дальше зоны не уходит. Второй тип генерируется DR-ом и содержит адрес DR и инфу о всех маршрутизаторах в зоне.
Например, так выглядит Type1 с консоли Router0:
Router0#show ip ospf database router
OSPF Router with ID (10.1.1.1) (Process ID 1)
Router Link States (Area 0)
LS age: 665
Options: (No TOS-capability, DC)
LS Type: Router Links
Link State ID: 10.1.1.1
Advertising Router: 10.1.1.1
LS Seq Number: 80000004
Checksum: 0x47fb
Length: 48
Number of Links: 2
Link connected to: a Transit Network
(Link ID) Designated Router address: 192.168.1.1
(Link Data) Router Interface address: 192.168.1.1
Number of TOS metrics: 0
TOS 0 Metrics: 1
Link connected to: a Stub Network
(Link ID) Network/subnet number: 10.1.1.1
(Link Data) Network Mask: 255.255.255.255
Number of TOS metrics: 0
TOS 0 Metrics: 1
LS age: 665
Options: (No TOS-capability, DC)
LS Type: Router Links
Link State ID: 10.2.2.1
Advertising Router: 10.2.2.1
LS Seq Number: 80000004
Checksum: 0xb586
Length: 48
Number of Links: 2
Link connected to: a Stub Network
(Link ID) Network/subnet number: 10.2.2.1
(Link Data) Network Mask: 255.255.255.255
Number of TOS metrics: 0
TOS 0 Metrics: 1
Link connected to: a Transit Network
(Link ID) Designated Router address: 192.168.1.1
(Link Data) Router Interface address: 192.168.1.2
Number of TOS metrics: 0
TOS 0 Metrics: 1
То есть LSA каждого маршрутизатора, в которых он сообщает о своих сетях.
А вот так Type2:
Router0#show ip ospf database network
OSPF Router with ID (10.1.1.1) (Process ID 1)
Net Link States (Area 0)
Routing Bit Set on this LSA
LS age: 686
Options: (No TOS-capability, DC)
LS Type: Network Links
Link State ID: 192.168.1.1 (address of Designated Router)
Advertising Router: 10.1.1.1
LS Seq Number: 80000002
Checksum: 0xe9ca
Length: 32
Network Mask: /24
Attached Router: 10.2.2.1
Attached Router: 10.1.1.1
То есть как раз адрес DR (кому отправлять свои LSA и список маршрутизаторов в зоне).
И теперь можно посмотреть на таблицу маршрутизации:
Router0#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 10.1.1.0/24 is directly connected, Loopback1
O 10.2.2.1/32 [110/2] via 192.168.1.2, 00:48:02, FastEthernet0/0
C 192.168.1.0/24 is directly connected, FastEthernet0/0
Видим букву O (это значит, что маршрут получен из той же зоны, что и данный маршрутизатор). Можно заметить, что в таблицу записан с маской /32. Это потому что адрес из Loopback интерфейса и обычно такие адреса служат для всяких RID и прочих идентификаторов. Это не подсеть, а значит нет смысла анонсировать с тем же префиксом, что и сам интерфейс. Но такое поведение работает не на всех цисках. Поэтому тут надо быть внимательнее. Рядом видим привычную административную дистанцию (у циски это 110, но можно поменять) и метрику, которая равна 2-ум. Здесь метрика считается проще, чем у EIGRP. Формула:
Cost = Reference Bandwidth / Interface Bandwidth
.
Reference Bandwidth — это некое заданное число (здесь по-умолчанию 100). Оно прошито внутри логики и меняется командой auto-cost reference-bandwidth число в настройках OSPF процесса.
А вот Interface Bandwidth берется ровно такое, какая пропускная способность у интерфейса. На нашем интерфейсе это 100, поэтому метрика = 1. Так как Router1 анонсирует уже с метрикой 1, то накладывая свою стоимость в 1-цу, получаем 2.
OSPF для меня в свое время менялся в сложности понимания. Сначала казалось все легко, включил и все работает. Дальше, когда начинаешь углубляться в структуру LSA и как происходит формирование и расчет, теряешься. А после понимания, он снова становится легким. Его понимание приходит только после практики. Поэтому можете потренироваться на этой топологии. Ссылка на нее.
Пару слов по балансировке. Здесь она строго эквивалентная. Нельзя делать, как в EIGRP. Всего в кандидатах может быть до 16 маршрутов, но в таблицу попадут только 4.
Если предыдущая схема понятна, то двигаемся дальше. Добавим еще один маршрутизатор и соединим их, при помощи коммутатора:
Я взял за основу предыдущую, адреса все те же самые, включен OSPF. На Router2 также включен OSPF и настроены адреса согласно схеме. Теперь смотрим, что произошло со стороны того же Router0. Ввожу команду просмотра соседей:
Router0#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
10.2.2.1 1 FULL/BDR 00:00:37 192.168.1.2 FastEthernet0/0
10.3.3.1 1 FULL/DROTHER 00:00:36 192.168.1.3 FastEthernet0/0
И вижу нового соседа, но с пометкой DROTHER. Это значит, что маршрутизатор Router2 (новый) не является DR или BDR. Обратите внимание, что DR (Router0) установил Full соседство со всеми соседями.
Ввожу нового игрока на поле — Router3:
Единственное, что у него настроено — это IP-адрес 192.168.1.4/24 на FastEthernet 0/0 и включен OSPF. Он тут для наглядности.
Со стороны Router0:
Router0#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
10.2.2.1 1 FULL/BDR 00:00:31 192.168.1.2 FastEthernet0/0
10.3.3.1 1 FULL/DROTHER 00:00:31 192.168.1.3 FastEthernet0/0
192.168.1.4 1 FULL/DROTHER 00:00:30 192.168.1.4 FastEthernet0/0
Так как нет адреса на Loopback интерфейсе и не задан вручную RID, выбран адрес с физического интерфейса. А теперь переходим к Router2 и смотрим на его список соседей:
Router2#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
10.2.2.1 1 FULL/BDR 00:00:32 192.168.1.2 FastEthernet0/0
10.1.1.1 1 FULL/DR 00:00:32 192.168.1.1 FastEthernet0/0
192.168.1.4 1 2WAY/DROTHER 00:00:31 192.168.1.4 FastEthernet0/0
Видим, что с ним у него не Full отношения, а 2Way. Почему не Full? На этом остановлюсь и расскажу про процесс установления соседства. В хорошо работающей сети процесс соседства происходит настолько быстро, что все состояния вы не успеете увидеть. Я только опишу их, для общего понимания:
1) Down — это самый старт, когда маршрутизатор еще не предпринял попытку соседства и ничего в ответ не получает.
2) Init — маршрутизатор переходит в это состояние после отправки Hello-сообщения, до момента получения ответа.
3) 2-WAY — маршрутизатор переходит в это состояние, если получает ответный Hello и видит внутри него свой RID. Это как раз момент установления соседства. В сетях множественного доступа (типа Ethernet) это состояние конечное между «не DR/BDR» маршрутизаторами. Как раз в этом состоянии осталось соседство между Router2 и Router3.
4) ExStart — это состояние выбора DR/BDR. Маршрутизатор с наилучшим RID берет на себя эту роль. Он начинает первым процесс обновления LSDB у всех соседей.
5) Exсhange — состояние, в котором маршрутизаторы отправляют друг другу состояние своих LSDB.
6) Loading — если маршрутизатор видит, что в присланном сообщении есть подсеть, о которой он не знает, он запрашивает информацию о ней. И вот пока запрашиваемая инфа не дойдет до него, он будет висеть в этом состоянии.
7) Full — конечное состояние. Наступает оно в том случае, когда LSDB между соседями синхронизировано.
Стоит упомянуть, что в OSPF есть таймеры соседства. Нужно для того, чтобы узнать жив ли сосед или пора исключить его. Поэтому каждые 10 секунд маршрутизаторы отсылают друг другу Hello-пакеты, чтобы подтвердить свое существование. Если в течении 40 секунд от соседа ничего не поступало, соседство с ним разрывается.
Посмотреть на таймеры и другие параметры интерфейса, на котором включен OSPF, можно командой show ip ospf interface:
Router0#show ip ospf interface
Loopback1 is up, line protocol is up
Internet address is 10.1.1.1/24, Area 0
Process ID 1, Router ID 10.1.1.1, Network Type LOOPBACK, Cost: 1
Loopback interface is treated as a stub Host
FastEthernet0/0 is up, line protocol is up
Internet address is 192.168.1.1/24, Area 0
Process ID 1, Router ID 10.1.1.1, Network Type BROADCAST, Cost: 1
Transmit Delay is 1 sec, State DR, Priority 1
Designated Router (ID) 10.1.1.1, Interface address 192.168.1.1
Backup Designated Router (ID) 10.2.2.1, Interface address 192.168.1.2
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
Hello due in 00:00:00
Index 2/2, flood queue length 0
Next 0x0(0)/0x0(0)
Last flood scan length is 1, maximum is 1
Last flood scan time is 0 msec, maximum is 0 msec
Neighbor Count is 3, Adjacent neighbor count is 3
Adjacent with neighbor 10.2.2.1 (Backup Designated Router)
Adjacent with neighbor 10.3.3.1
Adjacent with neighbor 192.168.1.4
Suppress hello for 0 neighbor(s)
Если интересно, как происходит весь процесс установления соседства, откройте топологию по ссылке. Переключитесь в режим симуляции и перезагрузите один из маршрутизаторов. Все сразу особого смысла нет. Скорее быстрее заглючит CPT, нежели получиться разобраться.
И последнее, что стоит рассмотреть из раздела OSPF — это Multiarea OSPF (или многозонный OSPF).
Теперь есть 3 маршрутизатора. Router0 находится в нулевой зоне, Router1 в 0-ой и 1-ой зоне и Router2 в 1-ой зоне. Конфигурация проста. Я оставлю ее под спойлерами:
Router0
Router0#show running-config
Building configuration…
Current configuration: 734 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router0
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.1.1.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.1.2 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
no ip address
duplex auto
speed auto
shutdown
!
interface Vlan1
no ip address
shutdown
!
router ospf 1
log-adjacency-changes
network 192.168.1.0 0.0.0.255 area 0
network 10.1.1.0 0.0.0.255 area 0
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end
Router1
Router1#show running-config
Building configuration…
Current configuration: 693 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router1
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface FastEthernet0/0
ip address 192.168.1.1 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
ip address 192.168.2.1 255.255.255.0
duplex auto
speed auto
!
interface Vlan1
no ip address
shutdown
!
router ospf 1
log-adjacency-changes
network 192.168.1.0 0.0.0.255 area 0
network 192.168.2.0 0.0.0.255 area 1
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end
Router2
Router2#show running-config
Building configuration…
Current configuration: 734 bytes
!
version 12.4
no service timestamps log datetime msec
no service timestamps debug datetime msec
no service password-encryption
!
hostname Router2
!
!
!
!
!
!
!
!
ip cef
no ipv6 cef
!
!
!
!
!
!
!
!
!
!
!
!
spanning-tree mode pvst
!
!
!
!
!
!
interface Loopback1
ip address 10.2.2.1 255.255.255.0
!
interface FastEthernet0/0
ip address 192.168.2.2 255.255.255.0
duplex auto
speed auto
!
interface FastEthernet0/1
no ip address
duplex auto
speed auto
shutdown
!
interface Vlan1
no ip address
shutdown
!
router ospf 1
log-adjacency-changes
network 192.168.2.0 0.0.0.255 area 1
network 10.2.2.0 0.0.0.255 area 1
!
ip classless
!
ip flow-export version 9
!
!
!
!
!
!
!
line con 0
!
line aux 0
!
line vty 0 4
login
!
!
!
end
Отличие от предыдущих схем только в том, что для Router1 и Router2 добавляется другой номер зоны, при включении.
Если посмотреть таблицу маршрутизации c Router0:
Router0#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 10.1.1.0/24 is directly connected, Loopback1
O IA 10.2.2.1/32 [110/3] via 192.168.1.1, 00:09:27, FastEthernet0/0
C 192.168.1.0/24 is directly connected, FastEthernet0/0
O IA 192.168.2.0/24 [110/2] via 192.168.1.1, 00:43:49, FastEthernet0/0
То добавились маршруты OIA (или OSPF inter area). То есть маршрут из другой зоны. Если посмотреть базу:
Router0#show ip ospf database
OSPF Router with ID (10.1.1.1) (Process ID 1)
Router Link States (Area 0)
Link ID ADV Router Age Seq# Checksum Link count
10.1.1.1 10.1.1.1 861 0x80000006 0x00c679 2
192.168.2.1 192.168.2.1 861 0x80000006 0x00dbc3 1
Net Link States (Area 0)
Link ID ADV Router Age Seq# Checksum
192.168.1.1 192.168.2.1 953 0x80000002 0x009931
Summary Net Link States (Area 0)
Link ID ADV Router Age Seq# Checksum
192.168.2.0 192.168.2.1 947 0x80000003 0x00a7dc
10.2.2.1 192.168.2.1 851 0x80000004 0x00bc22
Здесь появился Summary LSA или Type3. Его генерирует маршрутизатор, который находится на границе двух зон. Такой маршрутизатор называют пограничным или ABR (от англ. Area Border Gateway).
Если посмотреть на него поглубже:
Router0#show ip ospf database summary
OSPF Router with ID (10.1.1.1) (Process ID 1)
Summary Net Link States (Area 0)
LS age: 1146
Options: (No TOS-capability, DC, Upward)
LS Type: Summary Links(Network)
Link State ID: 192.168.2.0 (summary Network Number)
Advertising Router: 192.168.2.1
LS Seq Number: 80000003
Checksum: 0xa7dc
Length: 28
Network Mask: /24
TOS: 0 Metric: 1
LS age: 1050
Options: (No TOS-capability, DC, Upward)
LS Type: Summary Links(Network)
Link State ID: 10.2.2.1 (summary Network Number)
Advertising Router: 192.168.2.1
LS Seq Number: 80000004
Checksum: 0xbc22
Length: 28
Network Mask: /32
TOS: 0 Metric: 2
То можно заметить, что анонсирует его 192.168.2.1 (это RID Router1).
Если же посмотреть на таблицу маршрутизации со стороны ABR (т.е. Router1):
Router1#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/32 is subnetted, 2 subnets
O 10.1.1.1 [110/2] via 192.168.1.2, 00:20:49, FastEthernet0/0
O 10.2.2.1 [110/2] via 192.168.2.2, 00:20:44, FastEthernet0/1
C 192.168.1.0/24 is directly connected, FastEthernet0/0
C 192.168.2.0/24 is directly connected, FastEthernet0/1
То для него все маршруты помечены O. Все потому что он находится в обеих зонах и для него они локальны.
А если посмотреть базу:
Router1#show ip ospf database
OSPF Router with ID (192.168.2.1) (Process ID 1)
Router Link States (Area 0)
Link ID ADV Router Age Seq# Checksum Link count
192.168.2.1 192.168.2.1 1326 0x80000006 0x00dbc3 1
10.1.1.1 10.1.1.1 1326 0x80000006 0x00c679 2
Net Link States (Area 0)
Link ID ADV Router Age Seq# Checksum
192.168.1.1 192.168.2.1 1417 0x80000002 0x009931
Summary Net Link States (Area 0)
Link ID ADV Router Age Seq# Checksum
192.168.2.0 192.168.2.1 1412 0x80000003 0x00a7dc
10.2.2.1 192.168.2.1 1316 0x80000004 0x00bc22
Router Link States (Area 1)
Link ID ADV Router Age Seq# Checksum Link count
192.168.2.1 192.168.2.1 1326 0x80000005 0x00f3aa 1
10.2.2.1 10.2.2.1 1326 0x80000005 0x006ccc 2
Net Link States (Area 1)
Link ID ADV Router Age Seq# Checksum
192.168.2.1 192.168.2.1 1371 0x80000002 0x0049d0
Summary Net Link States (Area 1)
Link ID ADV Router Age Seq# Checksum
192.168.1.0 192.168.2.1 1413 0x80000003 0x00b2d2
10.1.1.1 192.168.2.1 1322 0x80000005 0x00d10e
То тут их больше. Все потому, что у него представлены эти LSA на каждую зону, а также он генерирует Type3 в обе стороны. Для самостоятельного ознакомления лабу можно скачать по данной ссылке.
Таким образом OSPF можно делить на зоны. То есть маршрутизатор видит соседей в своей зоне и просчитывает лучший путь сам. А вот межзоннные маршруты (Type3) диктует ABR. Поэтому на границу чаще ставят производительные маршрутизаторы. На самом деле EIGRP и OSPF уж очень много всего умеют. И заслуживают отдельных статей. Более подробно они разбираются уже в топиках CCNP. Так что для основ достаточно.
В итоге мы разобрались с маршрутизацией и встает вопрос: что использовать? Однозначного ответа тут нет. Если у вас вся сеть построена на цисках, то можно выбирать EIGRP. Если у вас сеть мультивендорная, то тут однозначно OSPF. Да, циска вроде как открыла стандарт, но относительно старые железки (не циски) не получат поддержку этого протокола, да и не на всех новых его внедрят. Более того, могу сказать, что даже в сетях построенных исключительно на цисках, выбирают OSPF. Аргументируя это тем, что OSPF более гибок в настройке, нежели EIGRP. Да и нельзя быть уверенным, что в какой то момент придется ставить сетевое устройство другого вендора. А значит внедрение такого устройства пройдет безболезненно и без перенастройки всей сети.
Подводя итоги, можно сказать, что это самая долгая статья из всех, что я писал. Все потому, что писал я ее больше 2-х лет. Постоянно что-то стопорило ее написание, а когда садился, то не мог сконцентрироваться и написать больше 2-х предложений. Но теперь она написана и можно спокойно выдохнуть. Ее как раз не хватало для основ компьютерных сетей, ведь предыдущие статьи концентрировались в большинстве на L2 уровне. Столь длительное написание привело к тому, что циска уже меняет программу своего экзамена. А значит некоторые темы, которые я хотел далее осветить, уже не актуальны. Поэтому я уберу из содержания будущие темы и буду выкладывать статьи, исходя из актуальности.
Спасибо всем, кто ждал статью и интересовался.
Маршрутизация работает на сетевом уровне модель взаимодействия открытых систем OSI. Маршрутизация — это поиск маршрута доставки пакета в крупной составной сети через транзитные узлы, которые называются маршрутизаторы.
Маршрутизация состоит из двух этапов:
- На первом этапе происходит изучение сети, какие подсети есть в этой составной сети, какие маршрутизаторы и как эти маршрутизаторы объединены между собой.
- Второй этап маршрутизации выполняется когда сеть уже изучена и на маршрутизатор поступил пакет, для этого пакета нужно определить куда именно его отправить. Иногда для второго этапа маршрутизации используется отдельный термин “продвижение” по-английски forwarding.
Варианты действий маршрутизатора
В качестве примера, рассмотрим схему составной сети, здесь показаны отдельные подсети, для каждой подсети есть ее адрес и маска, а также маршрутизаторы, которые объединяют эти сети.
Рассмотрим маршрутизатор D, на него пришел пакет, и маршрутизатор должен решить, что ему делать с этим пакетом. Начнем с того, какие вообще возможны варианты действий у маршрутизатора. Первый вариант, сеть которой предназначен пакет подключена непосредственно к маршрутизатору. У маршрутизатора D таких сетей 3, в этом случае маршрутизатор передает пакет непосредственно в эту сеть.
Второй вариант, нужная сеть подключена к другому маршрутизатору (А), и известно, какой маршрутизатор нужен. В этом случае, маршрутизатор D передает пакет на следующий маршрутизатор, который может передать пакет в нужную сеть, такой маршрутизатор называется шлюзом.
Третий вариант, пришел пакет для сети, маршрут которой не известен, в этом случае маршрутизатор отбрасывает пакет. В этом отличие работы маршрутизатора от коммутатора, коммутатор отправляет кадр который он не знает куда доставить на все порты, маршрутизатор так не делает. В противном случае составная сеть очень быстро может переполнится мусорными пакетами для которых не известен маршрут доставки.
Что нужно знать маршрутизатору для того чтобы решить куда отправить пакет?
- Во-первых у маршрутизатора есть несколько интерфейсов, к которым подключены сети. Нужно определить в какой из этих интерфейсов отправлять пакет.
- Затем нужно определить, что именно делать с этим пакетом. Есть 2 варианта, можно передать пакет в сеть (192.168.1.0/24), либо можно передать его на один из маршрутизаторов подключенные к этой сети. Если передавать пакет на маршрутизатор, то нужно знать, какой именно из маршрутизаторов подключенных к этой сети, выбрать для передачи пакета.
Таблица маршрутизации
Эту информацию маршрутизатор хранит в таблице маршрутизации. На картинке ниже показан ее упрощенный вид, в которой некоторые служебные столбцы удалены для простоты понимания.
Первые два столбца это адрес и маска подсети, вместе они задают адрес подсети. Затем столбцы шлюз, интерфейс и метрика. Столбец интерфейс говорит о том, через какой интерфейс маршрутизатора нам нужно отправить пакет.
Таблица маршрутизации Windows
Продолжим рассматривать маршрутизатор D, у него есть три интерфейса. Ниже на картинке представлен вид таблицы маршрутизации для windows, которые в качестве идентификатора интерфейса используют ip-адрес, который назначен этому интерфейсу. Таким образом в столбце интерфейс есть 3 ip-адреса, которые соответствуют трем интерфейсам маршрутизатора.
Столбец шлюз, говорит что делать с пакетом, который вышел через заданный интерфейс. Для сетей, которые подключены напрямую к маршрутизатору D, в столбце шлюз, указывается «подсоединен», которое говорит о том, что сеть подключена непосредственно к маршрутизатору и передавать пакет нужно напрямую в эту сеть.
Если же нам нужно передать пакет на следующий маршрутизатор то в поле шлюз указывается ip-адрес этого маршрутизатора.
Таблица маршрутизации Linux
В операционной системе linux таблица маршрутизации выглядит немного по-другому, основное отличие это идентификатор интерфейсов. В linux вместо ip-адресов используется название интерфейсов. Например, wlan название для беспроводного сетевого интерфейса, а eth0 название для проводного интерфейса по сети ethernet.
Также здесь некоторые столбцы удалены для сокращения (Flags, Ref и Use). В других операционных системах и в сетевом оборудовании вид таблицы маршрутизации может быть несколько другой, но всегда будут обязательны столбцы ip-адрес, маска подсети, шлюз, интерфейс и метрика.
Только следующий шаг!
Часто возникает вопрос, что делать, если сеть для который пришел пакет находится не за одним маршрутизатором? Чтобы в неё попасть, нужно пройти не через один, а через несколько маршрутизаторов, что в этом случае нужно вносить в таблицу маршрутизации.
В таблицу маршрутизации записываем только первый шаг, адрес следующего маршрутизатора, все что находится дальше нас не интересует.
Считаем, что следующий маршрутизатор должен знать правильный маршрут до нужной нам сети, он знает лучше следующий маршрутизатор, тот знает следующий шаг и так далее, пока не доберемся до нужные нам сети.
Метрика
Можно заметить, что в нашей схеме в одну и ту же сеть, например вот в эту (10.2.0.0/16) можно попасть двумя путями, первый путь проходят через один маршрутизатор F, а второй путь через два маршрутизатора B и E.
В этом отличие сетевого уровня от канального. На канальном уровне у нас всегда должно быть только одно соединение, а на сетевом уровне допускаются и даже поощряются для обеспечения надежности несколько путей к одной и той же сети.
Какой путь выбрать? Для этого используются поле метрика таблицы маршрутизации.
Метрика это некоторое число, которые характеризует расстояние от одной сети до другой. Если есть несколько маршрутов до одной и той же сети, то выбирается маршрут с меньшей метрикой.
Раньше, метрика измерялось в количестве маршрутизаторов, таким образом расстояние через маршрутизатор F было бы один, а через маршрутизаторы B и E два.
Однако сейчас метрика учитывает не только количество промежуточных маршрутизаторов, но и скорость каналов между сетями, потому что иногда бывает выгоднее пройти через два маршрутизатора, но по более скоростным каналам. Также может учитываться загрузка каналов, поэтому сейчас метрика — это число, которое учитывает все эти характеристики. Мы выбираем маршрут с минимальной метрикой в данном примере выше, будет выбран первый маршрут через маршрутизатор F.
Записи в таблице маршрутизации
Откуда появляются записей в таблице маршрутизации? Есть два варианта статическая маршрутизация и динамическая маршрутизация.
При статической маршрутизации, записи в таблице маршрутизации настраиваются вручную, это удобно делать если у вас сеть небольшая и изменяется редко, но если сеть крупная, то выгоднее использовать динамическую маршрутизацию, в которой маршруты настраиваются автоматически. В этом случае маршрутизаторы сами изучают сеть с помощью протоколов маршрутизации RIP, OSPF, BGP и других.
Преимущество динамической маршрутизации в том, что изменение в сети могут автоматически отмечаться в таблице маршрутизации. Например, если вышел из строя один из маршрутизаторов, то маршрутизаторы по протоколам маршрутизации об этом узнают, и уберут маршрут, который проходит через этот маршрутизатор. С другой стороны, если появился новый маршрутизатор, то это также отразится в таблице маршрутизации автоматически.
Маршрут по умолчанию
Если маршрутизатор не знает куда отправить пакет, то такой пакет отбрасывается. Таким образом получается, что маршрутизатор должен знать маршруты ко всем подсетям в составной сети. На практике для крупных сетей, например для интернета это невозможно, поэтому используются следующие решения.
В таблице маршрутизации назначается специальный маршрутизатор по умолчанию, на которой отправляются все пакеты для неизвестных сетей, как правило это маршрутизатор, который подключен к интернет.
Предполагается что этот маршрутизатор лучше знает структуру сети, и способен найти маршрут в составной сети. Для обозначения маршрута по умолчанию, в таблице маршрутизации используются четыре нуля в адресе подсети и четыре нуля в маске (0.0.0.0, маска 0.0.0.0), а иногда также пишут default.
Ниже пример маршрута по умолчанию в таблице маршрутизации в операционной системе linux.
Ip-адрес и маска равны нулю, в адрес и шлюз указываются ip-адрес маршрутизатора по умолчанию.
Длина маски подсети
Рассмотрим пример. Маршрутизатор принял пакет на ip-адрес (192.168.100.23), в таблице маршрутизации есть 2 записи (192.168.100.0/24 и 192.168.0.0/16) под который подходит этот ip-адрес, но у них разная длина маски. Какую из этих записей выбрать? Выбирается та запись, где маска длиннее, предполагается, что запись с более длинной маской содержит лучший маршрут интересующей нас сети.
Чтобы понять почему так происходит, давайте рассмотрим составную сеть гипотетического университета. Университет получил блок ip-адресов, разделил этот блок ip-адресов на две части, и каждую часть выделил отдельному кампусу.
На кампусе находятся свои маршрутизаторы, на которых сеть была дальше разделена на части предназначенные для отдельных факультетов. Разделение сетей производится с помощью увеличения длины маски, весь блок адресов имеет маску / 16, блоки кампусов имеют маску / 17, а блоки факультетов / 18.
Ниже показан фрагмент таблицы маршрутизации на маршрутизаторе первого кампуса. Он содержит путь до сети первого факультета, 2 факультета, до обще университетской сети, который проходит через университетский маршрутизатор, а также маршрут по умолчанию в интернет, который тоже проходит через обще университетский маршрутизатор.
Предположим, что у на этот маршрутизатор пришел пакет предназначенный для второго факультета, что может сделать маршрутизатор? Он может выбрать запись, которая соответствует второму факультету и отправить непосредственно в сеть этого факультета, либо может выбрать запись, которая соответствует всей университетской сети, тогда отправит на университетский маршрутизатор, что будет явно неправильным.
И так получается, что выбирается всегда маршрут с маской максимальной длины. Общие правила выбора маршрутов следующие.
- Самая длинная маска 32 — это маршрут конкретному хосту, если в таблице маршрутизации есть такой маршрут, то выбирается он.
- Затем выполняется поиск маршрута подсети с маской максимальной длины.
- И только после этого используется маршрут по умолчанию, где маска / 0 под которую подходят все ip-адреса.
Следует отметить, что таблица маршрутизации есть не только у сетевых устройств маршрутизаторов, но и у обычных компьютеров в сети. Хотя у них таблица маршрутизации гораздо меньше.
- Как правило такая таблица содержит описание присоединенной сети, который подключен данный компьютер.
- Адрес маршрутизатора по умолчанию (шлюз или gateway) через который, выполняется подключение к интернет, или к корпоративной сети предприятия.
- А также могут быть дополнительные маршруты к некоторым знакомым сетям, но это необязательно.
Для того чтобы просмотреть таблицу маршрутизации, можно использовать команды route или ip route (route print (Windows); route и ip route (Linux)).
Маршрутизация — поиск маршрута доставки пакета между сетями через транзитные узлы — маршрутизаторы.
Всем привет! Статическая маршрутизация – это по сути специальный выделенный путь, по которому должен пройти пакет информации из пункта А в пункт Б. Напомню, что у нас в сети чаще всего встречаются два устройства: маршрутизаторы и коммутаторы. Напомню, что коммутаторы работают на канальном уровне, а маршрутизаторе на сетевом. Далее я коротко расскажу, про Static Route и как это настроить на домашнем устройстве.
Содержание
- Коротко про маршрутизацию
- ШАГ 1: Заходим в настройки роутера
- ШАГ 2: Настройка
- TP-Link
- D-Link
- ASUS
- ZyXEL Keenetic
- Netis
- Tenda
- Задать вопрос автору статьи
Коротко про маршрутизацию
Маршрутизатор, исходя из названия, имеет у себя таблицу маршрутизации, а коммутатор коммутации. Все логично, не правда ли. Но есть небольшая проблема коммутации. Представим, что у нас есть две сети по 250 машин и между ними стоят 2 свича.
Если вы помните в таблице коммутации содержатся MAC-адреса. Да они уникальны, поэтому для работы сети нужно, чтобы каждый свич знал, как минимум 500 таких адресов, что не так мало. И тут встает проблема масштабируемости сети, при добавлении новых машин.
А что если установить вместо коммутаторов маршрутизаторы. В итоге у нас есть две сети:
- 192.168.1.0/24
- 192.168.2.0./24
И чтобы пакету добраться из одной сети в другую, нужна одна запись в таблице маршрутизации, а именно о соседнем роутере, который уже в свою очередь знает компьютеры «из своего района». Это и удобно, и экономично в плане хранения нужной информации, так как не нужно хранить таблицу из MAC-адресов всех участников сети.
СОВЕТ! Для большей картины понимания самой темы, советую почитать дополнительные материалы про то, что такое маршрутизатор, коммутатор и про модель OSI.
И тут у нас появляются два понятия:
- Динамическая маршрутизация – когда при отправке информации через маршрутизатор он в свою очередь сообщает доступность других соседних маршрутизаторов или сетей, и куда можно отправить пакет. Если говорить грубо, то информация идет тем путем, как ему показывают роутеры.
- Статическая маршрутизация – пакет информации идет определенным путем. Данный маршрут можно прописать вручную.
Далее я расскажу, как вводить эти статические маршруты для использования их в домашних роутерах.
Смотрим на картинку выше. У нас есть второй роутер (router 2), который имеет доступ к интернету (он же является основным шлюзом). У нас есть компьютер (PC), который подключен сначала к коммутатору. Коммутатор подключен к двум роутерам.
Проблема в том, что ПК должен иметь доступ к серверу (172.30.30.1), но при запросе на router 2, у него в таблице маршрутизации нет данных об этих серверах. Теперь давайте попробуем вписать эти настройки в маршрутизатор.
ШАГ 1: Заходим в настройки роутера
Вот мы и перешли непосредственно к настройке статической маршрутизации. Подключаемся к сети интернет-центра через кабель или по Wi-Fi. Далее нужно ввести DNS или IP-адрес роутера в адресную строку любого браузера. Настройку мы будем делать через Web-интерфейс. Подсказка: адрес можно подсмотреть на этикетке под корпусом аппарата. Чаще всего используют адреса:
- 192.168.1.1
- 192.168.0.1
Если вы ранее его настраивали, вводим логин и пароль – их также можно подсмотреть на той же самой бумажке. Чаще всего используют комбинации:
- admin – admin
- admin – *Пустая строка*
Если есть проблемы со входом в роутер, то смотрим инструкцию тут.
ШАГ 2: Настройка
Напомню, что далее я буду рассматривать конкретный пример, который мы разобрали выше. И на основе этого примера буду вводить свои данные. У вас статические маршруты могут быть другие. Вот какие данные нужно будет ввести (смотрим на схему подключения, чтобы вам было понятно):
- IP адрес назначения – у нас это IP нашего конкретного сервера, к которому мы хотим пробиться через наш 1-ый роутер (172.30.30.1).
- Маска подсети – указываем 255.255.255.0.
- Шлюз – это IP того роутера, который имеет доступ к серверу. В примере это 192.168.0.2 (Второй маршрутизатор).
- Интерфейс – в некоторых настройках нужно будет указывать еще и его. Если доступ к шлюзу идет через интернет, то указываем WAN. Если же вы подключены к нему через LAN порт (как в нашем примере), то указываем его.
Надеюсь я примерно объяснил, как именно статический маршрут нужно заполнять. Теперь приступим непосредственно к практике. Смотрите главу по своей модели.
TP-Link
Старая прошивка
Слева находим раздел «Дополнительные настройки маршрутизации», и в открывшемся списке нажимаем по пункту «Список статических маршрутов». Нажимаем по кнопке «Добавить».
Вписываем данные.
Новая прошивка
«Дополнительные настройки» – «Сеть» – «Расширенные настройки маршрутизации». Нажимаем по плюсику и вписываем нужную информацию.
D-Link
В классическом светлом интерфейсе нужно перейти в «Дополнительно» и нажать по «Маршрутизации».
В темной прошивке все делается также, только сначала нужно перейти в «Расширенные настройки».
Добавляем правило.
ASUS
Переходим в раздел «Локальная сеть», открываем вкладку «Маршруты» и вписываем наши данные. В конце не забудьте нажать на плюсик, правее таблички и нажать на кнопку «Применить».
ZyXEL Keenetic
Новая прошивка
Переходим на страницу «Маршрутизации» и нажимаем по кнопке добавления правила.
Теперь вводим данные:
- Тип маршрута – тут нужно указывать тот тип, который вам нужен. Если исходить из задачи, которую указал я, то мы указываем «Маршрут узла».
- Адрес сети назначения – указываем адрес сервера. В нашем случае это 30.30.1.
- Маска подсети – 255.255.255.0.
- Адрес шлюза – адрес роутера, который подключен к нашему серверу. 192.168.0.2.
- Интерфейс – указываем тот интерфейс, который мы будем использовать для связи. В нашем примере пакеты пойдут локально через LAN порт, поэтому указываем LAN.
Старая прошивка
Нажимаем по значку плакетки в самом низу и переходим на вкладку «Маршруты». Нажимаем по кнопке добавления и вводим нужные вам данные.
Добавление целого списка маршрутов
Кстати тут вы можете загрузить сразу целую таблицу маршрутизации. Для этого выбираем в том же разделе другую кнопку.
Файлик должен иметь расширение типа BAT. И иметь вид как на скрине ниже. Его спокойно можно создать в блокноте.
Вид достаточно простой:
route ADD IP-адрес назначения MASK указываем маску указываем адрес шлюза
Пример:
route ADD 172.30.30.1 MASK 255.255.255.0 192.168.0.2
ПРИМЕЧАНИЕ! Каждый новый адрес должен начинаться с новой строки, а после последнего указанного IP не должен стоять пробел.
Netis
Переходим в раздел «Advanced» (кнопкам в правом верхнем углу) – «Расширенные» – «Статический маршрут.» – вводим каждый пункт и нажимаем по кнопке «Добавить».
Tenda
Нужный нам пункт находится в разделе «Расширенные настройки».
В Москве:
РФ (звонок бесплатный):
+7 (495) 103-99-88
+7 (800) 600-20-56
Статическая и динамическая маршрутизация
Благодарим за помощь Андрея Донецкого
862
Статическая маршрутизация — та маршрутизация, которую мы можем прописать в наше устройство, то есть мы можем зайти в роутер и просто прописать статический маршрут. Такой же маршрут мы можем прописать и на любом устройстве, которое имеет у себя протокол IP. Вся работа сводится к ручному конфигурированию нашей маршрутизации.
Какие имеются преимущества:
- Простота внедрения в небольшой сети. Если у нас сеть небольшая, мы полностью все контролируем. Мы контролируем то, какие маршруты мы пишем. Мы понимаем, что если у нас отваливается линк, как нам изменить нашу маршрутизацию, чтобы продолжить работу;
- Высокий уровень безопасности. Пока наш роутер не будет скомпрометирован и пока никто не зайдет внутрь него, все будет прекрасно работать.
- Маршрут к месту назначения остается неизменным. Это как преимущество, так и недостаток статической маршрутизации. То есть у нас не может произойти ситуации, когда наш трафик пойдет, например, по не оптимальному пути или мы сразу сделаем так, что он будет идти по не оптимальному пути. То есть в некоторых ситуациях системный администраторы, например, в случае с интернет-каналами пускают трафик, например, по более быстрому каналу или же по более дешевому, где не взимается плата за каждый мегабайт информации.
- Также преимущество статической маршрутизации можно отметить, что алгоритм маршрутизации не расходует дополнительные ресурсы центрального процессора оперативной памяти. То есть не требуется никаких дополнительных ресурсов на поддержание статической маршрутизации все то, что есть в таблицах маршрутизации то и работает.
Недостатки:
- Подходит только для очень простых топологий например:
- Следующий недостаток статической маршрутизация – это, при необходимости изменения маршрутизации, конфигурацию приходится выполнять вручную.
перед вами сейчас небольшая картинка, которая описывает в целом не очень большую сеть (здесь 28 роутеров), но исходя из данной схемы, уже немножко страшно становится и выглядит это все не сильно дружелюбно. Прописывать сюда маршруты и решать вопросы с альтернативными подключениями будет достаточно сложно. Приблизительно работы на полдня. Сложность конфигурации значительно возрастает по мере роста сети, например, была у нас достаточно простая сеть:
У нас есть центральный офис и есть четыре филиала, простая топология хорошо укладывается в рамках статической маршрутизации и все прекрасно работает.
В какой-то момент компания начала расти и, например, решила, что было бы неплохо арендовать место в стойке, организовать свой импровизированный дата-центр. Было бы неплохо от каждого филиала подключить дата-центр, также сделать общую связь между центральным офисом и дата-центром, а также сделать так, чтобы трафик ходил сначала в дата-центр и по-своему же линку, он ходил в центральный офис. В рамках статической маршрутизации работать адекватно. В какой-то момент компания поняла, что, если произойдет отказ дата-центра, где находится все ресурсы нашей сети, то будет очень печально и плохо. Мы все работать не сможем, поэтому взяли и арендовали еще один дата-центр у другого поставщика услуг
И тут решили все наши филиалы подключить к альтернативному дата-центру, а потом подключить дата-центры между собой и подключить еще туда же центральный офис. И в итоге у нас здесь есть всего лишь 7 устройств сетевых, а количество подключений очень сильно и кратно растет и в данной ситуации обслуживать такую сеть на статической маршрутизации становится уже очень некомфортно.
Если привести в пример предыдущую нашу схему, то на каждом роутере нам придется изменить статические маршруты, то есть тем самым мы должны зайти на каждое устройство, изменить его конфигурацию и проверить, что все работоспособно, что однозначно ведет к каким-то ошибкам ну и уменьшает нашу общую производительность.
Поэтому для решения подобных задач, когда у нас есть, допустим, схема такой сложной сети, придумали динамическую маршрутизацию.
По сути, динамическая маршрутизация ничего серьезного не меняет, принцип остается тот же самый. У нас есть адреса назначений и у нас есть гетвей или шлюзы, через которые доступны те или иные адреса назначений. Но все эти маршруты в таблицу маршрутизации добавляет некая служба, которая работает в автоматическом режиме. То есть у нас есть какой-то протокол (служба), который(ая) с помощью своих служебных сообщений и по каким-то собственным принципам, добавляет в таблицу маршрутизации наши маршруты, которые нам требуются. По сути, вся работа, связанная с маршрутизацией, сводится к конфигурированию этих протоколов динамической маршрутизации, чтобы каждый роутер был правильно сконфигурирован и понимал сообщение от другого роутера.
Преимущества динамической маршрутизации:
- Во-первых, подходит для работы в любых топологиях. У вас есть два роутера, вам уже подходит динамическая маршрутизация. Вы можете ее настраивать. Обычно не зависит от размера сети. Например, у вас есть весь интернет, где работает протокол динамической маршрутизации BGP. Для всего интернета существует протокол динамической маршрутизации. Если какой-то зависимости от размера сети нет, есть зависимость от протокола. Есть, например, протоколы динамической маршрутизации, которые подходят, когда вы работаете в небольших организациях. Они очень простые, тем самым их удобно использовать.
- Автоматически изменяют таблицу маршрутизации. Если произошло какое-то изменение в сети, то есть, если где-то у нас что-то отвалилось. Например, VPN туннель до дата-центра у нас отвалился. В этот момент мы перестроим таблицу маршрутизации, чтобы ходить к этой сети через, например, центральный офис и так далее. И это все происходит автоматически, но, как всегда, есть преимущества и недостатки.
Недостатки динамической маршрутизации:
- Реализация может предполагать очень высокий уровень сложности. Каждый протокол динамической маршрутизации может быть, за исключением RIPа, имеет достаточно большое количество настроек и в этих настройках нужно достаточно глубоко разбираться. Чтобы понимать, что эти настройки делают и для каких сценариев они подходят. Например, OSPF мы разбираем примерно полтора дня на курсе, и мы его разбираем по верхам. То есть нельзя сказать, что мы рассматриваем прям абсолютно все сценарии, которые предусмотрены в протоколе OSPF, но за полтора дня вы получаете какое-то плюс-минус адекватное понимание протокола OSPF. BGP можно разбирать особенно с учетом комьюнити и фильтров достаточно продолжительное время. И так в целом происходит с каждым протоколом динамической маршрутизации. В них очень много глубины. Это не просто руками прописать маршруты с нужной метрикой, так как у нас есть разговоры между роутерами, присутствует два роутера, которые между собой разговаривают. В эти разговоры может кто-то вклиниться и естественно протоколы динамической маршрутизации несмотря на то, что там есть аутентификация шифрования сообщений, не на сто процентов безопасны и их можно скомпрометировать.
- Недостаток и преимущества одновременно: маршрут зависит от текущей топологии. Нормальная ситуация, когда вдруг вы до сайта, находящегося в России, начинаете ходить через Ванкувер и это как раз протокол динамической маршрутизации внутри вашего провайдера. Что-то случилось и ему показалось, что ближе будет дойти до российского сайта через Ванкувер. Почему бы и нет. Очень быстро только скорость света немножко мешает, но в целом почему бы и нет.
- Требуется дополнительные ресурсы для центрального процессора, для оперативной памяти и полосы пропускания канала. Во-первых, вам нужно потратить какие-то ресурсы на поддержание этого протокола. А во-вторых, надо сразу заранее рассчитать, какие ресурсы вам нужны в самых плохих сценариях. Потому что эти сценарии периодически происходят у провайдеров интернета.
Давайте познакомимся в целом с протоколами динамической маршрутизации и немножко о них поговорим. У нас есть два класса протоколов динамической маршрутизации:
Это протоколы динамической маршрутизации IGP и EGP. IGP это Interior Gateway Protocol, а EGP это Exterior Gateway Protocol, протоколы для применения внутри автономных систем и снаружи автономных систем.
Автономная система — это совокупность роутеров, которые находятся под единым административным управлением. Эти роутеры могут быть дома, на работе, у провайдера и так далее, то есть любые роутеры, которыми управляет какая-то группа специалистов.
Когда вы управляете каким-то количеством маршрутизаторов, вы для этих маршрутизаторов являетесь администратором и вправе выбирать любой протокол динамической маршрутизации, который вы смогли внедрить, которые вы можете обслуживать и которые вы понимаете и внутри автономных систем производства — дом, компания и так далее могут работать любые протоколы. Вы можете использовать там RIP, вы можете использовать и EGRP, EIGRP, OSPF, IS-IS и так далее. Вообще в целом протоколов динамической маршрутизации много. Вы вправе выбирать, но если мы говорим про работу между автономными системами, например, когда две компании хотят подружиться между собой и одна компания хочет поделиться с другой компанией своими маршрутами, что у него происходит, то вероятнее всего и правильнее всего для этой задачи выбрать протокол BGP, если мы говорим про публичные автономные системы.
Когда вы зарегистрировались в каком-нибудь регистраторе, например, у нас в Европе это Ripe NCC, получили публичный номер автономной системы, заплатили за это деньги и вы стали провайдером, который может приземлять у себя белые IP-адреса, вам дают номер автономной системы, чтобы подружиться с другими автономными системами и сообщить свои белые IP-адреса глобальному интернету. Ну например, белый IPv6 адрес. Вам необходимо подружиться с другими автономными системами, с другими провайдерами по протоколу BGP. Глобально в Интернете у нас работает протокол BGP, поэтому у нас есть куча всяких IGP протоколов Interior Gateway Protocol, которые вы вправе использовать, как угодно, как хотите, и так далее. И у нас есть один глобальный протокол для дружбы между это BGP (Border Getway Protocol), который, по сути, один и который является стандартом.
На этом слайде у нас показана эволюция протоколов маршрутизации.
Серьезный переход был, когда протоколы классовые перешли в без классовый протоколы.
Но это произошло достаточно давно и с тех пор в целом у нас все протоколы динамической маршрутизации без классовые, а также сейчас уже набирают свою мощность и силу протоколы для IPv6 сетей обзорная лекция по статической динамической маршрутизации закончена увидимся в следующих роликах.