今回はNSX-TのBGPにおけるCommunityを使用したフィルタリングの動作をまとめました。
概要
Communityについて
下図において、AS 10のR1はAS 20から受信したルート情報のうち、AS 30のルート情報のみ学習したいとします。
この際、IPアドレスを条件に使用したRoute Mapを作成し、30.1.1.0/24のみ許可すれば、R1はAS 30のルート情報のみ学習できます。
もし、この状況で、AS 30に新しいネットワークである30.2.2.0/24が追加された場合、R1のRoute Mapの設定も変更する必要があります。つまり、ネットワークの変化が発生する度に、自拠点のBGPの設定変更が発生してしまいます。
上記のような問題を回避するには、Communityを使用します。Communityは32ビットの数値で、視覚的に見やすいように、コロン(:)で2ビット単位で区切り表現します。
CommunityはBGPで広報されるルートに対して付加する情報で、Route Mapのフィルタリングの条件で使用可能です。
下図のように、AS 30において、ルート情報を広報する際、ルート情報にCommunity 30:1を付加します。そして、R1でCommunity 30:1のみを許可するRoute Mapを設定します。
もし、この状況で、AS 30に新しいネットワークである30.2.2.0/24が追加されたとします。AS 30は新たに追加された30.2.2.0/24にCommunity 30:1を付加して、広報します。
R1のRoute MapではCommunity 30:1が付加されたルート情報は許可されているため、R1のBGPの設定変更無しで、R1は30.2.2.0/24を学習できます。
検証結果
検証内容、構成
Tier-1 GWでSegment 1を収容します。
Tier-1 GWとTier-0 GWを接続します。
NSX EdgeにTier-0 GWのSRを配置し、物理ネットワークとNSX-Tの仮想ネットワークを接続します。
Tier-0 GWのSRをAS 100、R2をAS 200として、EBGPネイバーを構築します。
Tier-0 GWのSRはBGP経由で10.1.1.0/24を広報します。
R2はBGP経由で以下のルート情報を広報します。
- 20.2.2.0/24 , Community 200:1 200:2
- 20.3.3.0/24 , Community 200:1 200:2 200:3
- 20.4.4.0/24 , Community 200:1
- 20.5.5.0/24 , Community 200:4
この状況で、Tier-0 GWのSRにおいて、R2から受信したルート情報に対してCommunityを条件に使用したフィルタリングを適用します。
ネットワーク機器のCLIの設定
interface GigabitEthernet2
ip address 10.1.1.1 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 10.1.1.254
interface Loopback0
ip address 20.2.2.2 255.255.255.0
!
interface Loopback1
ip address 20.3.3.2 255.255.255.0
!
interface Loopback2
ip address 20.4.4.2 255.255.255.0
!
interface Loopback3
ip address 20.5.5.2 255.255.255.0
!
interface GigabitEthernet2
ip address 20.1.1.100 255.255.255.0
!
router bgp 200
bgp router-id 2.2.2.2
network 20.2.2.0 mask 255.255.255.0
network 20.3.3.0 mask 255.255.255.0
network 20.4.4.0 mask 255.255.255.0
network 20.5.5.0 mask 255.255.255.0
neighbor 20.1.1.1 remote-as 100
neighbor 20.1.1.1 send-community
neighbor 20.1.1.1 route-map BGP_MAP out
!
ip bgp-community new-format
!
ip prefix-list BGP_PREFIX_1 seq 5 permit 20.2.2.0/24
!
ip prefix-list BGP_PREFIX_2 seq 5 permit 20.3.3.0/24
!
ip prefix-list BGP_PREFIX_3 seq 5 permit 20.4.4.0/24
!
route-map BGP_MAP permit 10
match ip address prefix-list BGP_PREFIX_1
set community 200:1 200:2
!
route-map BGP_MAP permit 20
match ip address prefix-list BGP_PREFIX_2
set community 200:1 200:2 200:3
!
route-map BGP_MAP permit 30
match ip address prefix-list BGP_PREFIX_3
set community 200:1
!
route-map BGP_MAP permit 40
set community 200:4
フィルタリング無し
ルート情報を受信した際のフィルタリングは設定せずに、Tier-0 GWのSRとR2間でEBGPネイバーを構成します。
BGPの設定
状態確認
Tier-0 GWのSRはR2から20.2.2.0/24、20.3.3.0/24、20.4.4.0/24、20.5.5.0/24を学習していることが確認できます。
edge1(tier0_sr)> get bgp
BGP IPv4 table version is 10, BGP IPv6 table version is 0
Local router ID is 20.1.1.1
Status flags: > - best, I - internal
Origin flags: i - IGP, e - EGP, ? - incomplete
EVPN type-2 prefix: [2]:[EthTag]:[MAClen]:[MAC]:[IPlen]:[IP]
EVPN type-3 prefix: [3]:[EthTag]:[IPlen]:[OrigIP]
EVPN type-4 prefix: [4]:[ESI]:[IPlen]:[OrigIP]
EVPN type-5 prefix: [5]:[EthTag]:[IPlen]:[IP]
Network Next Hop Metric LocPrf Weight Path RD
> 20.5.5.0/24 20.1.1.100 0 100 0 200 100 i
> 20.3.3.0/24 20.1.1.100 0 100 0 200 100 i
> 20.4.4.0/24 20.1.1.100 0 100 0 200 100 i
> 10.1.1.0/24 100.64.128.1 0 100 32768 100 ?
> 20.2.2.0/24 20.1.1.100 0 100 0 200 100 i
ルート情報に付加されているCommunityはget bgp <address>/<prefix-length>コマンドで確認可能です。
edge1(tier0_sr)> get bgp 20.2.2.0/24
BGP routing table entry for 20.2.2.0/24
Prefix advertised to: 20.1.1.100
1 Paths available:
Origin IGP, Metric 0, LocalPref 100, Weight 0, best, valid
Community: 200:1 200:2
Peer is 20.1.1.100 with router id 2.2.2.2
Last Updated: Sat Aug 22 07:53:59 2020
edge1(tier0_sr)> get bgp 20.3.3.0/24
BGP routing table entry for 20.3.3.0/24
Prefix advertised to: 20.1.1.100
1 Paths available:
Origin IGP, Metric 0, LocalPref 100, Weight 0, best, valid
Community: 200:1 200:2 200:3
Peer is 20.1.1.100 with router id 2.2.2.2
Last Updated: Sat Aug 22 07:53:59 2020
edge1(tier0_sr)> get bgp 20.4.4.0/24
BGP routing table entry for 20.4.4.0/24
Prefix advertised to: 20.1.1.100
1 Paths available:
Origin IGP, Metric 0, LocalPref 100, Weight 0, best, valid
Community: 200:1
Peer is 20.1.1.100 with router id 2.2.2.2
Last Updated: Sat Aug 22 07:53:59 2020
edge1(tier0_sr)> get bgp 20.5.5.0/24
BGP routing table entry for 20.5.5.0/24
Prefix advertised to: 20.1.1.100
1 Paths available:
Origin IGP, Metric 0, LocalPref 100, Weight 0, best, valid
Community: 200:4
Peer is 20.1.1.100 with router id 2.2.2.2
Last Updated: Sat Aug 22 07:54:21 2020
フィルタリング有り(いずれかに一致)
Tier-0 GWのSRがR2からルート情報を受信した際、Communityとして200:1か200:2のいずれかが付加されたルート情報のみ許可するフィルタリングを設定します。
Community Listの設定
Community 200:1 200:2を指定したCommunity Listを作成します。
Route Mapの設定
Route Mapを作成し、先程作成したCommunity Listといずれかに一致オプションを指定します。
BGPの設定
R2の入力フィルタに対して、先程定義したRoute Mapを適用します。
状態確認
Tier-0 GWのSRはR2から20.5.5.0/24を破棄していることが確認できます。
edge1(tier0_sr)> get bgp
BGP IPv4 table version is 10, BGP IPv6 table version is 0
Local router ID is 20.1.1.1
Status flags: > - best, I - internal
Origin flags: i - IGP, e - EGP, ? - incomplete
EVPN type-2 prefix: [2]:[EthTag]:[MAClen]:[MAC]:[IPlen]:[IP]
EVPN type-3 prefix: [3]:[EthTag]:[IPlen]:[OrigIP]
EVPN type-4 prefix: [4]:[ESI]:[IPlen]:[OrigIP]
EVPN type-5 prefix: [5]:[EthTag]:[IPlen]:[IP]
Network Next Hop Metric LocPrf Weight Path RD
> 20.3.3.0/24 20.1.1.100 0 100 0 200 100 i
> 20.4.4.0/24 20.1.1.100 0 100 0 200 100 i
> 10.1.1.0/24 100.64.128.1 0 100 32768 100 ?
> 20.2.2.0/24 20.1.1.100 0 100 0 200 100 i
フィルタリング有り(すべてに一致)
Tier-0 GWのSRがR2からルート情報を受信した際、Communityとして200:1か200:2の全てが付加されたルート情報のみ許可するフィルタリングを設定します。
Route Mapの設定
Route MapのCommunity Listのオプションをすべてに一致に変更します。
状態確認
Tier-0 GWのSRはR2から20.4.4.0/24と20.5.5.0/24を破棄していることが確認できます。
edge1(tier0_sr)> get bgp
BGP IPv4 table version is 10, BGP IPv6 table version is 0
Local router ID is 20.1.1.1
Status flags: > - best, I - internal
Origin flags: i - IGP, e - EGP, ? - incomplete
EVPN type-2 prefix: [2]:[EthTag]:[MAClen]:[MAC]:[IPlen]:[IP]
EVPN type-3 prefix: [3]:[EthTag]:[IPlen]:[OrigIP]
EVPN type-4 prefix: [4]:[ESI]:[IPlen]:[OrigIP]
EVPN type-5 prefix: [5]:[EthTag]:[IPlen]:[IP]
Network Next Hop Metric LocPrf Weight Path RD
> 20.3.3.0/24 20.1.1.100 0 100 0 200 100 i
> 10.1.1.0/24 100.64.128.1 0 100 32768 100 ?
> 20.2.2.0/24 20.1.1.100 0 100 0 200 100 i
フィルタリング有り(完全に一致)
Tier-0 GWのSRがR2からルート情報を受信した際、Communityとして200:1と200:2のみが付加されたルート情報を許可するフィルタリングを設定します。
Route Mapの設定
Route MapのCommunity Listのオプションを完全に一致に変更します。
状態確認
Tier-0 GWのSRはR2から20.3.3.0/24と20.4.4.0/24と20.5.5.0/24を破棄していることが確認できます。
edge1(tier0_sr)> get bgp
BGP IPv4 table version is 10, BGP IPv6 table version is 0
Local router ID is 20.1.1.1
Status flags: > - best, I - internal
Origin flags: i - IGP, e - EGP, ? - incomplete
EVPN type-2 prefix: [2]:[EthTag]:[MAClen]:[MAC]:[IPlen]:[IP]
EVPN type-3 prefix: [3]:[EthTag]:[IPlen]:[OrigIP]
EVPN type-4 prefix: [4]:[ESI]:[IPlen]:[OrigIP]
EVPN type-5 prefix: [5]:[EthTag]:[IPlen]:[IP]
Network Next Hop Metric LocPrf Weight Path RD
> 10.1.1.0/24 100.64.128.1 0 100 32768 100 ?
> 20.2.2.0/24 20.1.1.100 0 100 0 200 100 i
コメント