シナプス技術者ブログ

シナプスの技術者公式ブログ。インターネットで、鹿児島の毎日を笑顔にします。

Cisco BGP Peer テンプレートを試してみた

シナプスの技術部ネットワーク課の末吉と申します。

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が多い為、以下のネットワークで検証してみます。 f:id:ksueyoshi:20210222124200p:plain

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テンプレートに置き換えるとした場合、色々と検証/確認が必要になりそうです。弊社で置き換える事があれば別途記事に出来ればと思います。