По умолчанию, 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
Почему вместо next-hop мы указываем discard? Потому что ко всей этой подсети у нас нет одного-единственного nex-hop´а. Если Destination IP будет подходить под More Specific Route, то пакет не будет отбрасываться.
Далее настраиваем политику экспорта маршрутов (предположим, что мы допустили ошибку и будем анонсировать преиксы длиннее /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****, изменяя статические маршруты и экспортируемые сети: