はじめに
このドキュメントでは BGP の neighbor (又は付随する address-family) の設定 (route-policy, remote-as 等) する際に、neighbor-group コマンド内と neighbor コマンド直下への記述を共に使用する際に注意が必要な内容について記載しています。neighbor-group と、例として route-policy について説明した後、両方を使用した場合についてを例を提示し説明します。
コマンドの詳細な説明は、Command Reference を参考にして下さい。
Border Gateway Protocol Commands
route-policy について
route-policy を使用する事で、BGP Neighbor (Peer) へ送信、又はそれから受信する経路情報をフィルタ・操作する事が出来ます。IOS では route-map を使用する事が可能でしたが、IOS-XR では route-policy を使用します。
route-policy は、RPL (Routing Policy Language) で記述されます。記述方法についての詳細は、Routing Policy Language Commands をご確認下さい。
neighbor-group について
neighbor-group を使用する事で、複数の neighbor に対して同様の設定をする場合に、まとめて記述する事が可能となります。例えば、iBGP で他の全てのルータとフルメッシュを構成する場合、全ての neighbor に対して、例えば
- 同じ remote-as 番号
- update-source Loopback0
- next-hop-self
- etc.
を設定する場合があります。neighbor-group を使用すると、これらの記述を一カ所にし、各 neighbor にてグループ名を記述する事で、設定を簡略化する事が出来ます。
以下は、neighbor 192.168.1.1 / 192.168.1.2 へのアップデートの際、Local Preference 150 を付加する設定です。neighbor の数が多い場合、configuration 行が比較して非常に少なくなることがわかります。
neighbor-group を使用しないで設定 | neighbor-group を使用して設定 |
router bgp 65000
neighbor 192.168.1.1
remote-as 65000
update-source Loopback0
address-family ipv4 unicast
route-policy SET_LP_150 out
next-hop-self
!
!
neighbor 192.168.1.2
remote-as 65000
update-source Loopback0
address-family ipv4 unicast
route-policy SET_LP_150 out
next-hop-self
!
!
neighbor ... | router bgp 65000
neighbor-group GROUP
remote-as 65000
update-source Loopback0
address-family ipv4 unicast
route-policy SET_LP_150 out
next-hop-self
!
!
neighbor 192.168.1.1
use neighbor-group GROUP
!
neighbor 192.168.1.2
use neighbor-group GROUP
!
neighbor ... |
route-policy SET_LP_150 set local-preference 150 end-policy |
neighbor-group 内、neighbor 内両方に route-policy を設定する場合
route-policy 設定を、neighbor-group, neighbor の両方に記述する場合、neighbor-group に記載された route-policy は一切評価されません。
例: neighbor-group のroute-policy で prepend as-path 65000, neighbor のroute-policy で local-preference 150 を設定する |
route-policy SET_AS_PREPEND_65000
prepend as-path 65000
end-policy
router bgp 65000
neighbor-group GROUP
remote-as 65000
update-source Loopback0
address-family ipv4 unicast
route-policy SET_AS_PREPEND_65000 out
next-hop-self
!
!
neighbor 192.168.1.1
use neighbor-group GROUP
route-policy SET_LP_150 out
!
neighbor 192.168.1.2
use neighbor-group GROUP
! |
上記設定を行うと、neighbor 192.168.1.1 へ送信される Update 内容に、AS 65000 は prepend されません。これは、neighbor に直接記述した route-policy が優先されるため、neighbor 192.168.1.1 については、route-policy SET_AS_PREPEND_65000 自身が一切評価されないためとなります。
このため、Local Preference 150 と AS-PATH 65000 の追加の両方がUpdate に含まれることを期待していた場合には、間違った設定となります。
この例では、neighbor-group GROUP を使用する全ての neighbor に対して、AS-PATH 65000 を追加設定する事で、トラフィック迂回を目的としていた場合は、上記理由により達成されません。route-policy SET_LP_150 に対して、prepend as-path 65000 を個別に追加する必要があります。
該当する他の例
上記例では、route-policy について説明致しましたが、この動作は route-policy についてのみではなく、neighbor-group に記述可能な項目全てとなります。同じ項目が設定された場合は、全て neighbor 設定直下の設定が優先されます。
例えば remote-as の場合は、複数のAS 設定を neighbor にする事は出来ないため、neighbor-group に設定されている AS 番号が使われない事について、理解がしやすいと考えられます。