Маршрутизация

Пример policy routing

            Линк к Провайдеру 1          Линк к Провайдеру 2 
                   AA.AA.AA.36           BB.BB.BB.145
                     |                                |
                     |                                |
       Serial 0 (AA.AA.AA.37/30)     Serial 2 (BB.BB.BB.146/30)
                   ROUTER 1                  ROUTER 2
           Eth0 (BB.BB.BB.12/29;        Eth0 (BB.BB.BB.10/29;
                 CC.CC.CC.01/27)              CC.CC.CC.10/29)
                              |                           |
                              |                           |
                                ---- HUB ---------------
                                      |
                                      |
                            Eth0 (BB.BB.BB.09/29;
                                  CC.CC.CC.02/27)
                                   ROUTER 3
                                      |
                                      |
                                внутренние сети

Алгоритм таков: у этого провайдера имеется несколько сеток класса С, причем одни из них должны были ходить в Интернет через Провайдера1 (допустим, что это сети CC.CC.CC.0, EE.EE.EE.0, HH.HH.HH.0 и LL.LL.LL.0) , а другие (допустим, что это сети BB.BB.BB.0, DD.DD.DD.0 и KK.KK.KK.0), через Провайдера2.Все эти сети (назовем их внутренними сетями) собираются разными путями (или через другие внутренние маршрутизаторы, или подключены напрямую к портам) на маршрутизатор ROUTER3. ROUTER3 по-умолчанию все пакеты, исходящие наружу, роутит на ROUTER1. Который, в свою очередь, согласно настроеному на нем полиси роутингу, или отправляет пакеты к Провайдеру1, или направляет пакеты на ROUTER2, который роутит их к Провайдеру2.

Настройки ROUTER 1:

!interface Ethernet0ip address  BB.BB.BB.12  255.255.255.248  secondaryip address  CC.CC.CC.1  255.255.255.224ip policy route-map equal-access!interface Serial0description Link to PROVIDER1ip address  AA.AA.AA.37  255.255.255.252!ip route 0.0.0.0                0.0.0.0                  Ethernet0ip route DD.DD.DD.0    255.255.255.0     CC.CC.CC.2ip route BB.BB.BB.0      255.255.255.0      CC.CC.CC.2ip route EE.EE.EE.0       255.255.255.0       CC.CC.CC.2ip route HH.HH.HH.0    255.255.255.224  CC.CC.CC.2ip route CC.CC.CC.32  255.255.255.224  CC.CC.CC.2ip route CC.CC.CC.64  255.255.255.240  CC.CC.CC.2…ip route LL.LL.LL.0       255.255.255.0    CC.CC.CC.2ip route KK.KK.KK.0  255.255.255.0   CC.CC.CC.2access-list 1 permit  CC.CC.CC.0  0.0.0.255access-list 1 permit  EE.EE.EE.0     0.0.0.255access-list 1 permit  HH.HH.HH.0  0 0.0.0.255access-list 1 permit  LL.LL.LL.0     0.0.0.255route-map equal-access permit 10match ip address 1set ip default next-hop  AA.AA.AA.37!

Настройки ROUTER 2

!interface Ethernet0ip address  CC.CC.CC.10  255.255.255.248  secondaryip address  BB.BB.BB.10   255.255.255.248!interface Serial2description Link to PROVIDER2ip address  BB.BB.BB.146  255.255.255.252!ip route 0.0.0.0                0.0.0.0                 BB.BB.BB.12ip route DD.DD.DD.0     255.255.255.0      BB.BB.BB.9ip route BB.BB.BB.0      255.255.255.128  BB.BB.BB.9ip route BB.BB.BB.128  255.255.255.240  BB.BB.BB.9ip route BB.BB.BB.148  255.255.255.252  BB.BB.BB.9…ip route CC.CC.CC.0    255.255.255.0  BB.BB.BB.12ip route KK.KK.KK.0   255.255.255.0  BB.BB.BB.9!

Настройки ROUTER 3

Introducing Route Maps

What does a route map do?

You can think of a route map like an advanced ACL. The Access Control List matches an IP address, and performs two actions: permit or deny. In fact, an ACL can process any IP address permit or deny it, according to its rules. Because of that, ACLs are a natural choice for blocking or permitting traffic. However, you can use them in other applications as well. For example, you can use them to define which IP addresses the router should NAT.

ACLs can go a step further, as we explained in this article. They can also match on static L3 and L4 information, like protocol or TCP flags.

Route maps also perform a match and apply an action. However, the match many different things, and can perform many different actions. They go far beyond the classic permit and deny of an ACL. In fact, you don’t use them to simply match IP addresses. You use them to match routes. This means they are not an alternative to ACLs, but a more powerful match-and-act statement that you can use in specific circumstances.

A route map can match on metrics, on IP addresses, prefix length, routing protocol, and more. With all this power, how do we use a route map?

Applications of a route map

As we will see in this article, we use route maps for Policy Based Routing and Route Redistribution.

Two common uses for route maps are redistribution and PBR.

Policy-Based Routing (PBR) is just what the name says. Instead of routing packets according to the best match in the routing table, we route them according to a policy. This means we can direct packets coming from a subnet to a next-hop, and packets coming from another subnet to another next-hop. We can administratively define the policy and have custom and predictable routing.

Article continues below the advertisement

Route Redistribution, instead, is the propagation of routing updates between different routing protocols. Even for link-state routing protocols, route redistribution communicates routes (and not link-state updates). Since a route map specifically matches routes, we can put it to good use here. Furthermore, it doesn’t simply permit or deny the redistribution of a route. It can alter its parameters, like the metric, or even the next-hop. Route maps are extremely handy when configuring BGP, as it has several parameters that we can alter to satisfy our needs.

[править] Принцип работы

PBR может применяться, как для сквозного трафика, так и для трафика, который генерируется маршрутизатором.

Примеры задач, которые PBR может решить:

  • Маршрутизировать трафик по любому признаку, который можно указать в ACL (IP отправителя и получателя, порты TCP/UDP)
    • Маршрутизировать VoIP трафик через один канал, а весь остальной, через другой,
    • Маршрутизировать трафик пользователей VLAN 10 через один канал, в пользователей VLAN 20 через другой
  • Маршрутизировать трафик, который генерирует маршрутизатор, по определенному пути

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

Multi Area OSPF

Для чего нам может понадобиться разделить нашу сеть на несколько зон? В первую очередь, для агрегации маршрутов. Например, в нашей топологии роутер R4 анонсирует в сеть 4 маршрута, но все сети из диапазона 172.16.1.0-172.16.1.255 будут принадлежать исключительно ему, и мы хотим анонсировать один маршрут — 172.16.1.0/24. Это особенно актуально в больших сетях с большой таблицей маршрутизации. Так же, в силу специфики всех link-state протоколов динамической маршрутизации, в OSPF каждый роутер узнает о падении любого канала в сети. Это, конечно, повышает качество выбора оптимального маршрута, но и заметно повышает нагрузку. Допустим, у нас есть 15 офисов в Хмельницком и 10 в Виннице — роутерам в Виннице совершенно не обязательно знать о том, что какой-то роутер в Хмельницком упал. Разделение сети на разные зоны решает данный вопрос.

Для начала уберем анонс подсетей с R4:

router ospf 1
  no network 172.16.1.1 0.0.0.0 area 
  no network 172.16.1.65 0.0.0.0 area 
  no network 172.16.1.129 0.0.0.0 area 
  no network 172.16.1.193 0.0.0.0 area 

И добавим их с area 1:

router ospf 1
  network 172.16.1.1 0.0.0.0 area 1
  network 172.16.1.65 0.0.0.0 area 1
  network 172.16.1.129 0.0.0.0 area 1
  network 172.16.1.193 0.0.0.0 area 1

И объявим диапазон для зоны:

R4(config-router)#area 1 range 172.16.1.0 255.255.255.0

Теперь на роутерах с area 0 появился только один маршрут:

R1#show ip route
Codes: C - connected, S - static, 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
       i - IS-IS, su - IS-IS summary, 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
...
O IA    172.16.1.024 11021 via 10.5.0.6, 00:00:30, FastEthernet01
                      11021 via 10.5.0.2, 00:00:30, FastEthernet0
...

Об авторе

Евгений Гуринович

Руководитель отдела DevOps

Женя отвечает за настройку серверов, автоматизацию конфигурирования инфраструктуры, создание горизонтально масштабируемых и отказоустойчивых систем. Знанет Puppet, Docker, Ruby и Ruby on Rails.

[править] Дополнительная информация

Сетевой уровень

Основные понятия
Сетевой интерфейс | IP | IP-адрес | Маска подсети | Широковещательный адрес | Маршрут | IPv6 Маршрутизация | Форвардинг | Таблица маршрутизации | Шлюз по умолчанию Маршрутизация в Linux | Маршрутизация в FreeBSD | Маршрутизация в Cisco
Динамическая маршрутизация
Протоколы: RIP | OSPF | EIGRP | BGP | IS-IS
Демоны: Quagga | GNU Zebra | XORP | bird | OpenBGPD | OpenOSPFD | MRT (заброшен)
Устройства: Cisco Router | ProCurve Router | Vyatta
Отказоустойчивость
Протоколы: CARP| HSRP | VRRP | XRRP | GLBP
Реализация: CARP в OpenBSD | CARP в FreeBSD | UCARP | HSRP в Cisco | VRRP в Cisco | VRRP в ProCurve | XRRP в ProCurve

Applying route maps

A route map, in the end, is a complex rule. It doesn’t do anything (literally, unless we apply it somewhere. As we anticipated at the beginning of the article, we can apply them in two cases: route redistribution and PBR. Just read on…

For Route Redistribution

When applying the route map for redistribution, you use it to tell the allowed routes. Using a route map for redistribution is simple. First, you need to enter the configuration of the protocol that will receive the routes. Then, you use the command to define the protocol that will generate the route to import. Just after that, you use the keyword and specify the route map name. Take a look at the following example.

Here we are redistributing EIGRP 65535 into OSPF 1, using the route-map to filter the routes. The keyword is part of the OSPF configuration. This is it, we now have a working redistribution configuration that leverages a route map.

For Policy-Based Routing (PBR)

Applying a route map to PBR differs from using the same route map in route redistribution. In fact, here the commands will alter the packets or its routing process (e.g. next-hop). Here, you apply the route map to an interface, and all packets the router receives on that interface will be processed according to the route map. In case the route map has no match, it passes the packet to the standard routing table.

To apply the route map to an interface, we use the command , followed by the name of the route map. On very old routers, doing this meant the router had to do software-switching. In other words, the forwarding of packets on that interface would have been very slow. In later releases, Cisco enabled fast-switching for PBR, that you can enable with command under the desired interface. However, modern routers are even better. They now support CEF-switched PBR, at wire speed. In other words, applying PBR doesn’t slow down the traffic at all, and you don’t need any additional command. You can apply only one route map for each interface.

Here we apply the route map to the interface . This type of configuration comes with a concern that we need to point out. We make PBR for traffic the router receives, not for traffic the router generates on its own (like management traffic). In some circumstances, we may want to do PBR for the traffic the router generates. In that case, we need to use Local PBR. This simply means applying a PBR route map to router’s traffic, and we do it with , in global configuration.

Правила маршрутизации конечных устройств (хостов)

Конечные устройства, при передаче пакетов, полагаются на следующую логику:

  1. Если IP адрес получателя находится в той же самой подсети (т.е. относится к тому же номеру сети и принадлежит тому же диапазону) что и IP адрес отправителя, то устройство отправляет пакет напрямую получателю.
  2. Если IP адрес получателя находится в другой подсети (т.е. относится к другому номеру сети, а значит принадлежит другому диапазону), то устройство отправляет пакет на шлюз по умолчанию (default gateway). Чаще всего это интерфейс маршрутизатора (router).

Очень важная информация!

Как видно из “гифки” (Рисунок 4.5), пакет, предназначенный для ПК2, отправляется напрямую (в этом случае коммутатор не рассматривается, это устройство второго уровня модели OSI и никакое отношение к пакетам не имеет), потому что находится в одной сети с ПК1 (1.0.0.0/8), следовательно зеленый пакет ПК1 отправит по первому правилу. А пакет, предназначенный для ПК4 (бирюзового цвета), ПК1 отправит по второму правилу, т.к. ПК4 находится в другой подсети.

Cisco 2960 маршрутизация между vlan

После обновления IOS на вашем коммутаторе появится параметр «lanbase-routing», который нужно включить, используя SDM:

После проведенных изменений с SDM необходимо перезагрузить коммутатор для применения нового шаблона, так как он изменяет ресурсы, распределяемые TCAM-ом. Если же вы не выполните перезагрузку, то изменения не вступят в силу, что можно увидеть с помощью команды:

Раз уж мы имеем правильный SDM, загруженный на коммутаторе (lanbase-routing), следующим шагом будет включение маршрутизации:

После этого, мы сможем увидеть таблицу маршрутизации на Cisco 2960:

Главное, что вам нужно запомнить – это ограничение на 16 статических маршрутов.

Если же вы добавите в конфигурационном режиме, например, 22 маршрута, то в таблицу маршрутизации попадет только 16 из них. Остальные же будут просто проигнорированы:

Как можно увидеть на иллюстрации выше, первый маршрут маркируется как C (connected), то есть маршрут на подсеть Vlan1, второй – L (local) – собственно адрес управления коммутатором из Vlan1, остальные же 16 маршрутов промаркированы как S (static) – статические маршруты в другие подсети. Сколько будет vlan-ов – столько же будет и connected-маршрутов на данные подсети. Таким образом, мы получили работающую маршрутизацию между vlan на коммутаторе Cisco 2960.

Также стоит отметить один интиересный факт – другой интерфейс vlan пропал из таблицы маршрутизации (172.16.1.0/24, который присутствовал на предыдущем скриншоте и является connected-маршрутом). Таким образом, можно сделать вывод о том, что маршрутизация на Cisco 2960 реально ограничена, однако для L2-коммутатора это и так достижение.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *