Еще один интересный механизм, который позволяет более мягко управлять маршрутами называется: Outbound Route Filtering.
Давайте представим ситуацию.
У нас есть два роутера, они же два пира между собой BGP.
Первый пир отдает второму пиру 10 тысяч маршрутов, второй пир фильтрует и оставляет у себя 100. Не очень экономично, не правда ли?
Было бы не плохо иметь механизм, который каким-то образом посылал бы роутеру свой фильтр лист, и он на основе его отправлял бы лишь те, которые бы удовлетворяли условиям фильтра.
И такой механизм есть, мы его как раз сейчас и рассматриваем.
Это так же capability, которая согласовывается в Open сообщении, но в отличии от Route Refresh здесь нужно сделать некоторые манипуляции на обоих роутерах.
Суть такая, на одном роутере создается prefix-list, вешается на in, указывается capability и режим, в случае кто фильтрует это send в случае кто отдает маршруты receive. После чего тот роутер у которого указано Send посылает ORF list соседу, который получает, обрабатывает и на его основе делает рассылку.
Настраиваем:
AS1(config-router)#do sh run | s bgp
router bgp 1
no synchronization
bgp router-id 100.100.100.100
bgp log-neighbor-changes
network 1.1.2.0 mask 255.255.255.0
network 1.1.3.0 mask 255.255.255.0
network 1.1.100.0 mask 255.255.255.0
network 111.111.111.111 mask 255.255.255.255
neighbor 1.1.2.2 remote-as 2
neighbor 1.1.2.2 capability orf prefix-list receive
neighbor 1.1.3.3 remote-as 3
neighbor 1.1.3.3 description AS3
neighbor 1.1.100.100 remote-as 100
neighbor 1.1.100.100 description AS100
neighbor 200.200.200.200 remote-as 2
neighbor 200.200.200.200 description toR2
neighbor 200.200.200.200 ebgp-multihop 2
neighbor 200.200.200.200 update-source Loopback1
no auto-summary
AS1(config-router)#
AS1 у нас будет получать ORF лист
AS2 будет отправлять ORF лист
AS2(config-router)#do sh run | s bgp
router bgp 2
no synchronization
bgp router-id 200.200.200.200
bgp log-neighbor-changes
network 1.1.2.0 mask 255.255.255.0
network 1.1.5.0 mask 255.255.255.0
network 10.0.2.0 mask 255.255.255.0
network 10.0.3.0 mask 255.255.255.0 backdoor
network 222.222.222.222 mask 255.255.255.255
neighbor 1.1.2.1 remote-as 1
neighbor 1.1.2.1 capability orf prefix-list send
neighbor 1.1.2.1 prefix-list FILTER in
neighbor 1.1.5.2 remote-as 2
neighbor 1.1.5.2 next-hop-self
neighbor 100.100.100.100 remote-as 1
neighbor 100.100.100.100 description toR1
neighbor 100.100.100.100 ebgp-multihop 2
neighbor 100.100.100.100 update-source Loopback1
no auto-summary
AS2(config-router)#
Все настройки сделаны, проверим, все ли работает:
AS1(config-router)#do sh ip bgp ne 1.1.2.2
BGP neighbor is 1.1.2.2, remote AS 2, external link
BGP version 4, remote router ID 200.200.200.200
BGP state = Established, up for 00:06:56
Last read 00:00:56, last write 00:00:56, hold time is 180, keepalive interval is 60 seconds
Neighbor capabilities:
Route refresh: advertised and received(old & new)
Address family IPv4 Unicast: advertised and received
Message statistics:
InQ depth is 0
OutQ depth is 0
Sent Rcvd
Opens: 3 3
Notifications: 0 0
Updates: 12 12
Keepalives: 16 14
Route Refresh: 0 2
Total: 31 30
Default minimum time between advertisement runs is 30 secondsFor address family: IPv4 Unicast
BGP table version 57, neighbor version 57/0
Output queue size : 0
Index 2, Offset 0, Mask 0x4
2 update-group member
AF-dependant capabilities:
Outbound Route Filter (ORF) type (128) Prefix-list:
Send-mode: received
Receive-mode: advertised
Sent Rcvd
Prefix activity: —- —-
Prefixes Current: 0 5
Prefixes Total: 5 5
Implicit Withdraw: 0 0
Explicit Withdraw: 0 0
Used as bestpath: n/a 0
Used as multipath: n/a 0
Режим получения включен, и посмотрим на другом роутере:
AS2(config-router)#do sh ip bgp ne 1.1.2.1
BGP neighbor is 1.1.2.1, remote AS 1, external link
BGP version 4, remote router ID 100.100.100.100
BGP state = Established, up for 00:07:58
Last read 00:00:58, last write 00:00:58, hold time is 180, keepalive interval is 60 seconds
Neighbor capabilities:
Route refresh: advertised and received(old & new)
Address family IPv4 Unicast: advertised and received
Message statistics:
InQ depth is 0
OutQ depth is 0
Sent Rcvd
Opens: 3 3
Notifications: 0 0
Updates: 12 12
Keepalives: 15 17
Route Refresh: 1 0
Total: 31 32
Default minimum time between advertisement runs is 30 secondsFor address family: IPv4 Unicast
BGP table version 39, neighbor version 39/0
Output queue size : 0
Index 1, Offset 0, Mask 0x2
1 update-group member
AF-dependant capabilities:
Outbound Route Filter (ORF) type (128) Prefix-list:
Send-mode: advertised
Receive-mode: received
Incoming update prefix filter list is FILTER
Sent Rcvd
Prefix activity: —- —-
Prefixes Current: 9 5 (Consumes 260 bytes)
Prefixes Total: 13 5
Implicit Withdraw: 13 0
Explicit Withdraw: 0 0
Used as bestpath: n/a 4
Used as multipath: n/a 0Outbound Inbound
Local Policy Denied Prefixes: ——— ——-
Total: 0 0
Number of NLRIs in the update sent: max 4, min 1
Режим рассылки включен. Но данных переданных мы не видим, так как это пример и у меня даже не существует префикс листа.
Вот такой интересный механизм достаточно полезный.
Выделяют несколько типов ORF:
0 — зарезервированный тип.
1 -127 зарезирвирован под IANA
128 — 255 — принадлежат различным вендорам.
Обычно используют:
1 — фильтр на основе NLRI
2 — фильтрация стандартный BGP коммьюнити
3 — фильтрация расширенных BGP коммьюнити
128 — Cisco фильтры.