Маршрутизация. Лекции. Маршрутизация. Задача маршрутизации
Скачать 1.05 Mb.
|
Дистанционно-векторный Дистанция показывает расстояние до точки назначения. Дальностью оперирует такой показатель, как метрика (о чем я упоминал выше). Вектор показывает направление до точки назначения. Это может быть выходной интерфейс, IP-адрес соседа. То есть по какому направлению идти и какое расстояние до точки назначения. Рассмотрим на практике, как он работает и по ходу детально разберем. Единственное, что может показаться новым — это Loopback интерфейсы. Он практически не отличается от других интерфейсов, за исключением того, что не представлен физически и к нему ничего нельзя воткнуть. Он программно создан внутри самого устройства. Такой интерфейс есть и на многих ОС, как Windows и Linux-подобных. На примере он используется для того, чтобы не рисовать множество маршрутизаторов со своими подсетями. Сейчас таблицы маршрутизации выглядят следующим образом: 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#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#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#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 Анонсируемые подсети достижимы. Перейдем к EIGRP. Если RIP уже давно является открытым протоколом, то EIGRP был проприетарным и работал только на устройствах Cisco. Но в 2016 году Cisco решила все же открыть его, оставив авторство за собой. Cisco называет его гибридным (имея в виду, что он взял что-то от Distance-Vector, а что-то от Link-State). В отличии от RIP он работает более «умно». В том плане, что у него есть резервные маршруты и он «хранит некую топологию сети» (хотя это верно очень частично). Оперирует он 3-мя таблицами: 1) EIGRP Neighbor Table: Здесь представлены все напрямую соединенные соседи (то есть кто Next-Hop и с какого интерфейса к нему добраться). 2) EIGRP Topology Table: Здесь представлены все изученные маршруты от соседей (с точкой назначения и метрикой) 3) Global Routing Table: Общая для всех таблица и сюда попадают лучшие маршруты из предыдущей таблицы. Соберем топологию и запустим на ней EIGRP. Топологию возьмем ту же, что и с RIP. На ней настроены все IP-адреса, подняты интерфейсы, но не запущен протокол маршрутизации. Сейчас в маршрутных таблицах роутеров только 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. 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 + стоимость линка до соседа. 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. Теперь включаю 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-адрес из обычного физического интерфейса. |