Перейти к содержанию

ORF

ORF - Output Route Filters Механизм, который позволяет посылать соседу информацию о тех префиксах, которые хочет принимать вторая сторона. Удобно в случае, когда идет фильтрация входящих префиксов. При включенном orf с обоих сторон происходит обмен фильтрами на входящие префиксы и сосед заранее при отправке префиксов сделает на своей стороне фильтрацию лишних (не нужных соседу) и отправит только необходимые.

Реализация на оборудовании

Cisco

IOS/IOS-XE

     router bgp 65000
      address-family ipv4
        neighbor 1.1.1.1 capability orf prefix-list both
подробнее см. документацию

IOS-XR В IOS-XR надо в явном виде указывать prefix-set для ORF

  prefix-set orf-preset
    172.16.1.0/24,
    172.16.5.0/24,
    172.16.11.0/24
  end-set

  route-policy policy-orf
    if orf prefix in orf-preset then
      drop
    endif
    if orf prefix in (172.16.3.0/24, 172.16.7.0/24, 172.16.13.0/24) then
      pass
    endif

  router bgp 2
    neighbor 1.1.1.1
      remote-as 3
      address-family ipv4 unicast
        orf route-policy policy-orf

Пример работы ORF

Схема:

bgp-topo1

настройка R0

hostname R0
int lo0 
 ip add 100.100.100.100 255.255.255.255
!
int lo1 
 ip add 111.111.111.111 255.255.255.255
!
int g0/0
 ip add 10.11.11.1 255.255.255.0

router ospf 1
 network 10.11.11.1 0.0.0.255 area 0
 network 100.100.100.100 0.0.0.0 area 0
!
router bgp 65000
 bgp router-id 100.100.100.100
 bgp log-neighbor-changes
 neighbor 1.1.1.1 remote-as 65000
 neighbor 1.1.1.1 update-source Loopback0
 !
 address-family ipv4
  redistribute connected
  neighbor 1.1.1.1 activate
  neighbor 1.1.1.1 default-originate
  neighbor 1.1.1.1 capability orf prefix-list both
  neighbor 1.1.1.1 soft-reconfiguration inbound
  neighbor 1.1.1.1 prefix-list PL-R1-IN in
 exit-address-family
 !
ip prefix-list PL-R1-IN seq 5 deny 22.22.22.22/32
ip prefix-list PL-R1-IN seq 10 permit 0.0.0.0/0 ge 32

настройка R1

hostname vR1
!
int lo0 
 ip add 1.1.1.1 255.255.255.255
!
int g0/0
 ip add 10.11.11.2 255.255.255.0
! 
router ospf 1
 network 10.1.2.1 0.0.0.255 area 0
 network 10.11.11.1 0.0.0.255 area 0
 network 1.1.1.1 0.0.0.0 area 0
!
ipv6 router ospf 1
 router-id 1.1.1.1

int lo1
 ip add 11.11.11.11 255.255.255.255
!
router bgp 65000
 timers bgp 1 3
 bgp router-id 1.1.1.1
 neighbor 100.100.100.100 remote-as 65000
 neighbor 100.100.100.100 update loopback 0
  !
 address-family ipv4
  redistribute connected
  neighbor 2.2.2.2 activate

Дамп установления BGP и обмен префиксами можно посмотреть здесь

Описание работы.

R0 и R1 устанавливают BGP соседство по лупбекам lo0.

Информация о лупбеках и стыковочных сетях передается по OSPF.

На R0 используется префикс лист "PL-R1-IN" для фильтрации входящих от соседа префиксов

"neighbor 1.1.1.1 prefix-list PL-R1-IN in"

Для того, чтобы в принципе сосед не отправлял эти ненужные префиксы настраивается механизм ORF "neighbor 1.1.1.1 capability orf prefix-list both"

Важно

Настройка ORF должна быть с обоих сторон, иначе данный функционал работать не будет!

Тогда при установлении соединения в состоянии "Open" передается в параметрах соединение способность работать с ORF

bgp-open-orf

В сообщении "ROUTE-REFRESH" соседу передается сам префикс лист.

bgp-route-refresh-orf

По данному префикс листу сосед производит фильтрацию префиксов на своей стороне еще до отправки их в сообщении "UPDATE". Как видно из данного рисунка префика 22.22.22.22/32 отсутствует в сообщении BGP UPDATE.

bgp-route-refresh-orf

Как видно в таблице принимаемых префиксов (received-routes) изначально нет маршрута отфильтрованного по OFR

R0 просмотр префиксов приходящих по BGP от соседа

R0#sh ip bgp neighbors 1.1.1.1 received-routes
BGP table version is 6452, local router ID is 100.100.100.100
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 r>i 1.1.1.1/32       1.1.1.1                  0    100      0 ?
 r>i 2.2.2.2/32       2.2.2.2                  0    100      0 ?
 *>i 11.11.11.11/32   1.1.1.1                  0    100      0 ?

Total number of prefixes 3


R0#sh ip bgp neighbors 1.1.1.1 routes
BGP table version is 6452, local router ID is 100.100.100.100
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 r>i 1.1.1.1/32       1.1.1.1                  0    100      0 ?
 r>i 2.2.2.2/32       2.2.2.2                  0    100      0 ?
 *>i 11.11.11.11/32   1.1.1.1                  0    100      0 ?

Сам принимаемый от соседа ORF можно посмотреть командой

sh ip bgp nei 100.100.100.100 received prefix-filter

R0#sh ip bgp nei 100.100.100.100 received prefix-filter
Address family: IPv4 Unicast
ip prefix-list 100.100.100.100: 2 entries
   seq 5 deny 22.22.22.22/32
   seq 10 permit 0.0.0.0/0 ge 32

подробнее см. документацию

Juniper

MX80

neighbor 2.2.2.2 {
    description "== NEIGHBOR with ORF ==";
    local-address 1.1.1.1;
    peer-as 22222;
    outbound-route-filter {
        bgp-orf-cisco-mode;
        prefix-based {
            accept {
                inet;
            }
        }
    }
}

Примечание

С данной настройкой не удалось подружить Джун с Хуавеем. Нужно сделать лабу

подробнее см. документацию

Huawei

NE8000-F1A

    bgp 11111
     ipv4-family unicast
      peer 1.1.1.1 capability-advertise orf ip-prefix both
подробнее см. документацию


Последнее обновление: 2023-05-29