シナプスの技術部ネットワーク課の末吉と申します。
CiscoでBGP Peer テンプレートという機能を知ったので少し使ってみました。
BGP Peerテンプレート
IOSバージョンが異なりますが、以下のドキュメントを参考にしました。
IP ルーティング:BGP コンフィギュレーション ガイド(Cisco IOS XE Gibraltar 16.10.x 向け)
BGP Peer テンプレート
検証環境
GNS3で実際に使ってみます
IOS: 15.2(4)M11 GNS3上で稼働
テンプレートの種類
テンプレートは2種類あるようです。
template peer-session 一般的なセッション コマンドのコンフィギュレーションをグループ化 template peer-policy 特定のアドレス ファミリおよび NLRI コンフィギュレーション モードで適用されるコマンドのコンフィギュレーションをグループ化
template peer-session
template peer-session で設定できる内容を見てみます
R1(config-router-stmp)#? BGP peer-policy configuration commands: default Set a command to its defaults description Neighbor specific description disable-connected-check one-hop away EBGP peer using loopback address ebgp-multihop Allow EBGP neighbors not on directly connected networks exit-peer-session Exit from template configuration mode fall-over session fall on peer route lost ha-mode high availability mode inherit Inherit a template local-as Specify a local-as number no Negate a command or set its defaults password Set a password remote-as Specify a BGP neighbor shutdown Administratively shut down this neighbor timers BGP per neighbor timers transport Transport options ttl-security BGP ttl security check update-source Source of routing updates version Set the BGP version to match a neighbor
接続に関する設定が使えそうです。
template peer-policy
template peer-policy で設定できる内容を見てみます。
R1(config-router-ptmp)#? BGP peer-policy configuration commands: advertise Advertise to this neighbor advertisement-interval Minimum interval between sending BGP routing updates allowas-in Accept as-path with my AS present in it as-override Override matching AS-number while sending update capability Advertise capability to the peer default Set a command to its defaults default-originate Originate default route to this neighbor distribute-list Filter updates to/from this neighbor dmzlink-bw Propagate the DMZ link bandwidth exit-peer-policy Exit from template configuration mode filter-list Establish BGP filters inherit Inherit a template inter-as-hybrid Inter AS Hybrid mode maximum-prefix Maximum number of prefixes accepted from this peer next-hop-self Disable the next hop calculation for this neighbor next-hop-unchanged Propagate next hop unchanged for iBGP paths to this neighbor no Negate a command or set its defaults prefix-length-size Packet Level storage size for Prefixes prefix-list Filter updates to/from this neighbor remove-private-as Remove private AS number from outbound updates route-map Apply route map to neighbor route-reflector-client Configure a neighbor as Route Reflector client route-server-client Configure a neighbor as Route Server client send-community Send Community attribute to this neighbor slow-peer Configure slow-peer soft-reconfiguration Per neighbor soft reconfiguration soo Site-of-Origin extended community translate-topology Translate topology id unsuppress-map Route-map to selectively unsuppress suppressed routes weight Set default weight for routes from this neighbor
route-map等の経路制御に使えそうな設定が使えそうです。
検証ネットワーク環境
弊社でBGP接続をする際はトランジット or IXが多い為、以下のネットワークで検証してみます。
R2/R3はトランジット向け、R4/R5/R6はIX向けを想定 R1/R2/R3/R4/R5/R6には各IFへのIPアドレス設定済 R2/R3/R4/R5/R6 にはR1向けBGP設定済
トランジット向け
R1にトランジット接続を想定したR2/R3向けに設定を入れます。
テンプレート作成
まずはR1にR2とBGP接続する設定をテンプレートを「base」という名前で作成してみます。
router bgp 64496 template peer-policy base route-map transit-inboud in route-map transit-outbound out soft-reconfiguration inbound exit-peer-policy ! template peer-session base remote-as 64497 update-source GigabitEthernet0/0 version 4 exit-peer-session
R2向け
R2向けに継承させます
router bgp 64496 neighbor 192.168.1.2 inherit peer-session base neighbor 192.168.1.2 inherit peer-policy base
確認してみます。
R1#show ip bgp summary BGP router identifier 192.168.1.1, local AS number 64496 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 192.168.1.2 4 64497 6 5 1 0 0 00:00:32 0 R1#show ip bgp neighbors 192.168.1.2 policy Neighbor: 192.168.1.2, Address-Family: IPv4 Unicast Inherited polices: route-map transit-inboud in route-map transit-outbound out soft-reconfiguration inbound
問題なくBGPはアップし、route-map等が適用されている事を確認できました。
R3向け
続けてR1にR3向けの設定を入れます。こちらは先ほどのテンプレートを使ってみます。
router bgp 64496 neighbor 192.168.2.2 inherit peer-session base neighbor 192.168.2.2 inherit peer-policy base
確認してみます。
R1#show ip bgp summary BGP router identifier 192.168.1.1, local AS number 64496 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 192.168.1.2 4 64497 7 6 1 0 0 00:01:36 0 192.168.2.2 4 64497 0 0 1 0 0 never Idle
R3向けはアップデートIF/AS番号が異なる為上がりませんでしたので個別に設定します。
router bgp 64496 neighbor 192.168.2.2 remote-as 64498 neighbor 192.168.2.2 update-source GigabitEthernet 1/0
確認してみます。
R1# show ip bgp summary BGP router identifier 192.168.1.1, local AS number 64496 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 192.168.1.2 4 64497 11 10 1 0 0 00:05:06 0 192.168.2.2 4 64498 2 2 1 0 0 00:00:11 0 R1#show ip bgp neighbors 192.168.2.2 policy Neighbor: 192.168.2.2, Address-Family: IPv4 Unicast Inherited polices: route-map transit-inboud in route-map transit-outbound out soft-reconfiguration inbound
個別に設定すればテンプレートより優先される様でBGPがアップしました。 弊社のトランジット向け設定はAS番号/インターフェイス番号、運用次第ではroute-map等も異なる場合がある為、グループ化出来るメリットをあまり受けれない印象です。
IX向け
R1にIX接続を想定したR4/R5/R6向けに設定を入れます。
テンプレート作成
IX向けに新しくテンプレートを「base-IX」の名前で作成します。
AS番号は異なる為、AS番号以外を定義していきます。
router bgp 64496 template peer-policy base-IX route-map IX-inbound in route-map IX-outbound out soft-reconfiguration inbound exit-peer-policy ! template peer-session base-IX update-source GigabitEthernet2/0 version 4 exit-peer-session
R4/R5/R6向け
R4/R5/R6向けに設定を入れます。
router bgp 64496 neighbor 192.168.3.2 remote-as 64499 neighbor 192.168.3.2 inherit peer-session base-IX neighbor 192.168.3.2 inherit peer-policy base-IX neighbor 192.168.3.3 remote-as 64500 neighbor 192.168.3.3 inherit peer-session base-IX neighbor 192.168.3.3 inherit peer-policy base-IX neighbor 192.168.3.4 remote-as 64501 neighbor 192.168.3.4 inherit peer-session base-IX neighbor 192.168.3.4 inherit peer-policy base-IX
確認してみます。
R1#show ip bgp summary BGP router identifier 192.168.1.1, local AS number 64496 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 192.168.1.2 4 64497 17 16 1 0 0 00:10:39 0 192.168.2.2 4 64498 9 8 1 0 0 00:05:43 0 192.168.3.2 4 64499 4 4 1 0 0 00:00:47 0 192.168.3.3 4 64500 2 2 1 0 0 00:00:04 0 192.168.3.4 4 64501 2 2 1 0 0 00:00:12 0 R1#show ip bgp neighbors 192.168.3.2 policy Neighbor: 192.168.3.2, Address-Family: IPv4 Unicast Inherited polices: route-map IX-inbound in route-map IX-outbound out soft-reconfiguration inbound R1#show ip bgp neighbors 192.168.3.3 policy Neighbor: 192.168.3.3, Address-Family: IPv4 Unicast Inherited polices: route-map IX-inbound in route-map IX-outbound out soft-reconfiguration inbound R1#show ip bgp neighbors 192.168.3.4 policy Neighbor: 192.168.3.4, Address-Family: IPv4 Unicast Inherited polices: route-map IX-inbound in route-map IX-outbound out soft-reconfiguration inbound
弊社のIX向けの設定には共通項目が多く、テンプレートを利用する事で長いコンフィグを短くする事が出来そうです。 ただ、個別にdescriptionを設定し見やすくした方が良いと思いました。
shutdown
試してみて個人的にBGP Peer テンプレートで良いと思った点は、peer-sessionテンプレートにshutdownをいれると継承しているピア先を一斉にshutdown出来る様でした。 ためしにIX向けに設定したテンプレートをshutdownしてみます。
router bgp 64496 template peer-session base-IX shutdown
確認してみます。
R1#show ip bgp summary BGP router identifier 192.168.1.1, local AS number 64496 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 192.168.1.2 4 64497 20 19 1 0 0 00:13:29 0 192.168.2.2 4 64498 12 11 1 0 0 00:08:33 0 192.168.3.2 4 64499 0 0 1 0 0 00:00:05 Idle (Admin) 192.168.3.3 4 64500 0 0 1 0 0 00:00:05 Idle (Admin) 192.168.3.4 4 64501 0 0 1 0 0 00:00:05 Idle (Admin)
3台一斉にBGPが切れたことがわかります。IXでは多数のASとピアしている為、一つのコマンドでshutdown出来るのは便利だと感じましたが、個別に復旧は出来ないようです。 以前、中継回線メンテナンス方法の見直しを実施しましたが、BGP peerテンプレートを使用するとtemplase peer-sessionのshutdownコマンドにて一斉にBGP切断する事でも実現できるのではないかと思いました。
peer-group
弊社ではpeer-groupを使用している為、「BGP Peerテンプレート + peer-group」で運用すれば、長いコンフィグも短くでき、運用が楽になるのでは!?と思ったのですが、、peer-groupの併用はできないようでした。
R1(config-router)#neighbor 192.168.1.2 peer-group synapse % Inherits a template, cannot inherit peer-group
削除
削除する際は remote-asの行を削除すれば消えるようです。
[設定削除] router bgp 64496 no neighbor 192.168.3.2 remote-as 64499 [確認] R1#show archive config differences nvram:startup-config system:running-config router bgp 64496 -neighbor 192.168.3.2 remote-as 64499 -neighbor 192.168.3.2 inherit peer-session base-IX -neighbor 192.168.3.2 inherit peer-policy base-IX
まとめ
- 設定が共通している項目の多いBGP設定環境だと、BGP peerテンプレートを利用する事によりコンフィグを短くする事が出来る
- template peer-session にshutdownを入れる事により、まとめてBGPピアをshutdown出来る
- peer-groupとの併用はできない
実際、peer-groupからBGP peerテンプレートに置き換えるとした場合、色々と検証/確認が必要になりそうです。弊社で置き換える事があれば別途記事に出来ればと思います。