Анонсирование первых префиксов

Схема сети

По умолчанию, static и direct routes в BGP не экспортируются. Для того, чтобы добавить эти маршруты в BGP необходимо применить policy-options к протоколу, группе или соседу. Например, у нас уже есть AS 8000, в которой есть Lo0 с адресом 100.0.0.1. Даллее мы хотим анонсировать наш /24 префикс 100.0.0.0/24 к AS9000:

root@AS8000# run show configuration interfaces lo0 
unit 0 {
    family inet {
        address 100.0.0.1/32;
    }
}

Обычно, такие префиксы меньше /24 не принимаются из-за возможных ошибок. Как пример, мы будем анонсировать 2 маршрута: 100.0.0.0/24, который будет приниматься, и 101.0.0.0/25, который не будет приниматься соседями в соответствии с политикой маршрутизации.

Для начала необходимо настроить статические маршруты с маской /24 и /25, которые мы собираемся анонсировать (предположим, что весь пул у нас 100.0.0.0/8):

root@AS8000# set routing-options static route 100.0.0.0/24 discard   
root@AS8000# set routing-options static route 100.0.1.0/25 discard    

Далее настраиваем политику экспорта маршрутов (предположим, что мы допустили ошибку и будем анонсировать преиксы длиннее /24):

root@AS8000# edit policy-options policy-statement exportBGP

[edit policy-options policy-statement exportBGP]
root@AS8000# set from protocol static route-filter 100.0.0.0/8 upto /25

[edit policy-options policy-statement exportBGP]
root@AS8000# set then accept 
root@AS8000# top
root@AS8000# set protocols bgp export exportBGP

Теперь можно убедиться, что мы анонсируем соответствующие префиксы всем соседям:

root@AS8000# run show route advertising-protocol bgp 8.0.0.1    

inet.0: 9 destinations, 9 routes (9 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
* 100.0.0.0/24            Self                                    I
* 100.0.1.0/25            Self                                    I

[edit]
root@AS8000# run show route advertising-protocol bgp 8.0.0.3    

inet.0: 9 destinations, 9 routes (9 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
* 100.0.0.0/24            Self                                    I
* 100.0.1.0/25            Self                                    I

[edit]
root@AS8000# run show route advertising-protocol bgp 8.1.1.0    

inet.0: 9 destinations, 9 routes (9 active, 0 holddown, 0 hidden)
  Prefix                  Nexthop              MED     Lclpref    AS path
* 100.0.0.0/24            Self                                    I
* 100.0.1.0/25            Self                                    I

Теперь посмотрим что происходит в AS9000:

root@RT.MSK.M34# run show route receive-protocol bgp 8.0.0.2 extensive 

inet.0: 14 destinations, 14 routes (14 active, 0 holddown, 0 hidden)
* 100.0.0.0/24 (1 entry, 1 announced)
     Accepted
     Nexthop: 8.0.0.2
     AS path: 8000 I

* 100.0.1.0/25 (1 entry, 1 announced)
     Accepted
     Nexthop: 8.0.0.2
     AS path: 8000 I
     
root@RT.MSK.M34# run show route protocol bgp 

inet.0: 14 destinations, 14 routes (14 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

100.0.0.0/24       *[BGP/170] 00:05:35, localpref 100
                      AS path: 8000 I, validation-state: unverified
                    > to 8.0.0.2 via ge-0/0/1.0
100.0.1.0/25       *[BGP/170] 00:05:35, localpref 100
                      AS path: 8000 I, validation-state: unverified
                    > to 8.0.0.2 via ge-0/0/1.0

Видно, что мы принимаем по-умолчанию все маршруты, в том числе и /25. Для того, чтобы принимать только /24 префиксы и не принимать приватные сети настроим Import Policy. Для начала определим приватные префиксы:

root@RT.MSK.M34# edit policy-options prefix-list private_and_short 

[edit policy-options prefix-list private]
root@RT.MSK.M34# set 10.0.0.0/8    

[edit policy-options prefix-list private]
root@RT.MSK.M34# set 172.16.0.0/12 

[edit policy-options prefix-list private]
root@RT.MSK.M34# set 192.168.0.0/16   

[edit policy-options prefix-list private]
root@RT.MSK.M34# top 

Далее настроим соответствующую политику отклоняющую приватные и любые короткие префиксы:

root@RT.MSK.M34# edit policy-options policy-statement BGPimport 

[edit policy-options policy-statement BGPimport]
root@RT.MSK.M34# set from protocol bgp prefix-list-filter private orlonger    

[edit policy-options policy-statement BGPimport]
root@RT.MSK.M34# set from protocol bgp route-filter 0.0.0.0/0 prefix-length-range /25-/32

[edit policy-options policy-statement BGPimport]
root@RT.MSK.M34# set then reject 

[edit policy-options policy-statement BGPimport]
root@RT.MSK.M34# top

root@RT.MSK.M34# set protocols bgp import BGPimport 
root@RT.MSK.M34# commit 

Теперь посмотрим на результат:

root@RT.MSK.M34# run show route receive-protocol bgp 8.0.0.2 detail all 

inet.0: 14 destinations, 14 routes (13 active, 0 holddown, 1 hidden)
* 100.0.0.0/24 (1 entry, 1 announced)
     Accepted
     Nexthop: 8.0.0.2
     AS path: 8000 I

  100.0.1.0/25 (1 entry, 0 announced)
     Nexthop: 8.0.0.2
     AS path: 8000 I
     Hidden reason: rejected by import policy

Как видно, маршрут 100.0.1.0/25 теперь не принимается из-за policy-statement. Далее редактирум политики соответствующим образом и применяем их на каждом eBGP-пире. На AS9000 политики экспорта не требуются, так как пока что экспортировать нечего.

Также можно на всех AS, кроме AS9000 добавить анонсирование внешних подсетей, например:

root@AS8000# set routing-options static route 8.0.0.0/16 discard 
root@AS8000# set policy-options policy-statement exportBGP from route-filter route-filter 8.0.0.0/16 exact

На текущем этапе можно использовать следующий шаблон для пиров AS****, изменяя статические маршруты и экспортируемые сети:

routing-options {
    static {
        route 102.0.0.0/24 discard;
        route 9.1.0.0/16 discard;
    }
}
protocols {
    bgp {
        import BGPimport;
        export exportBGP;
    }
}
policy-options {
    prefix-list private {
        10.0.0.0/8;
        172.16.0.0/12;
        192.168.0.0/16;
    }
    policy-statement BGPimport {
        from {
            protocol bgp;
            route-filter 0.0.0.0/0 prefix-length-range /25-/32;
            prefix-list-filter private orlonger;
        }
        then reject;
    }
    policy-statement exportBGP {
        from {
            protocol static;
            route-filter 102.0.0.0/8 upto /24;
            route-filter 9.1.0.0/16 exact;
        }
        then accept;
    }
}

Для роутеров внутри AS9000 можно оставить шаблон без изменений:

protocols {
    bgp {
        import BGPimport;
    }
}
policy-options {
    prefix-list private {               
        10.0.0.0/8;
        172.16.0.0/12;
        192.168.0.0/16;
    }
    policy-statement BGPimport {
        from {
            protocol bgp;
            route-filter 0.0.0.0/0 prefix-length-range /25-/32;
            prefix-list-filter private orlonger;
        }
        then reject;
    }
}

Чтобы не перезаписать, но дополнить конфигурацию нужно использовать команду:

load merge terminal

Last updated

Was this helpful?