0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BGP技術メモ

0
Posted at

BGP 技術メモ(Cisco IOS / IOS XE想定)

主にCisco IOS / IOS XEのIPv4 Unicast BGPを対象とする。
IOS XR、NX-OS、ASAではCLI構文や対応機能に差異がある。
BGPは高度にポリシー制御可能なプロトコルであり、実環境ではPrefix Filter、Route-map、Community、Max-prefix、認証などを併用することを前提とする。


1. BGP概要

BGP(Border Gateway Protocol)は、主にAS(Autonomous System)間で経路情報を交換するためのパスベクタ型ルーティングプロトコルである。

インターネットの経路制御で広く使われるほか、企業WAN、MPLS L3VPN、データセンター、クラウド接続、EVPNなどでも使用される。

OSPFやIS-ISのようなIGPは「最短コストの経路」を主に選択するのに対し、BGPはAS_PATH、LOCAL_PREF、MED、Communityなどの属性を基に、組織の経路ポリシーに従って経路を選択する。

主な特徴は以下の通り。

  • AS間ルーティングに使用するEGP
  • TCPを使用する
  • TCPポート番号は179
  • IPプロトコル番号89を直接使用するOSPFとは異なる
  • Helloパケットやマルチキャストは使用しない
  • ネイバーは手動設定する
  • TCP接続確立後にBGPセッションを開始する
  • 経路広告はPath Attributeを伴う
  • ルーティングループ抑止にAS_PATHを使用する
  • 経路選択はCostではなくBGP Attributeを基に行う
  • iBGPではフルメッシュ、Route Reflector、Confederationなどが必要になる

2. AS番号

AS番号はAS(Autonomous System)を識別する番号である。

BGPでは2バイトAS番号および4バイトAS番号を使用できる。

種別 範囲
2バイトAS番号 1 ~ 65535
4バイトAS番号 1 ~ 4294967295
Private ASN(2バイト) 64512 ~ 65534
Private ASN(4バイト) 4200000000 ~ 4294967294

代表例:

AS 65001
AS 64512
AS 4200000001

Ciscoでは通常、以下のように設定する。

router bgp 65001

この65001がローカルAS番号である。


3. eBGPとiBGP

BGPには、異なるAS間で張るeBGPと、同一AS内で張るiBGPがある。

種別 接続相手 主な用途
eBGP 異なるAS番号のルータ ISP接続、拠点間、クラウド接続、顧客接続
iBGP 同一AS番号のルータ AS内部でBGP経路を共有する

eBGP

eBGPは異なるAS間のBGPピアリングである。

R1(AS 65001)--- R2(AS 65002)

通常、eBGPネイバーは直接接続されたルータ同士で構成する。

R1(config)# router bgp 65001
R1(config-router)# neighbor 192.0.2.2 remote-as 65002

iBGP

iBGPは同じAS内のBGPルータ間で構成する。

R1(AS 65001)--- R2(AS 65001)
R1(config)# router bgp 65001
R1(config-router)# neighbor 10.255.0.2 remote-as 65001

iBGPでは、iBGPネイバーから受信した経路を別のiBGPネイバーへ原則広告しない。この制約をiBGP Split Horizonと呼ぶ。

そのため、iBGPルータが複数台存在する場合、次のいずれかが必要となる。

  • iBGPフルメッシュ
  • Route Reflector
  • BGP Confederation

4. BGPネイバー形成

BGPはOSPFのようにマルチキャストHelloパケットを送信して隣接ルータを自動検出するプロトコルではない。

BGPネイバーは手動で設定する必要がある。

router bgp 65001
 neighbor 192.0.2.2 remote-as 65002

BGPネイバー形成の基本的な流れは以下の通り。

  1. BGPネイバーのIPアドレスへTCP接続を試行する
  2. TCP/179で3ウェイハンドシェイクを行う
  3. BGP OPENメッセージを交換する
  4. AS番号、Router ID、Hold Timer、Capabilityを確認する
  5. KEEPALIVEメッセージを交換する
  6. BGPセッションがEstablished状態になる
  7. UPDATEメッセージにより経路情報を交換する

BGPでは、OSPFv2の224.0.0.5224.0.0.6のようなマルチキャストアドレスは使用しない。

BGP通信は通常ユニキャストで行われる。


5. BGPメッセージ種別

BGPで使用される主要なメッセージは以下の通り。

メッセージ 用途
OPEN BGPセッション開始時のパラメータ交換
UPDATE 経路広告、経路撤回、Path Attributeの交換
KEEPALIVE セッション維持
NOTIFICATION エラー通知およびセッション終了
ROUTE-REFRESH 受信済み経路の再広告要求

OPENメッセージには、主に以下の情報が含まれる。

  • BGP Version
  • AS番号
  • Hold Time
  • BGP Router ID
  • Capability情報

Capabilityには、たとえば以下の情報が含まれる。

  • IPv4 Unicast
  • IPv6 Unicast
  • VPNv4 / VPNv6
  • EVPN
  • Route Refresh
  • 4バイトAS番号
  • Graceful Restart
  • Add-Path

6. BGP Finite State Machine

BGPネイバー状態は、主に以下のように遷移する。

状態 内容
Idle 初期状態。TCP接続開始前または接続失敗後
Connect TCP接続を試行している状態
Active TCP接続を再試行している状態
OpenSent TCP接続後、OPENメッセージを送信済み
OpenConfirm OPENを受信し、KEEPALIVE待ちの状態
Established BGPセッション確立済み。経路交換可能

正常時は最終的にEstablishedになる。

確認コマンド:

show ip bgp summary

出力例:

R1# show ip bgp summary

BGP router identifier 10.255.0.1, local AS number 65001
BGP table version is 5, main routing table version 5

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
192.0.2.2       4 65002      45      44        5    0    0 00:32:10        3

State/PfxRcd列に数値が表示されていれば、通常はEstablished状態であり、受信プレフィックス数を示している。

状態が表示される場合は未確立である。

State/PfxRcd
Active
Idle
Connect
OpenSent
OpenConfirm

7. KeepaliveとHold Timer

Cisco IOS / IOS XEにおけるBGPタイマーの代表的なデフォルト値は以下である。

項目 デフォルト値
Keepalive Timer 60秒
Hold Timer 180秒

KeepaliveはBGPセッションの維持に使用される。

Hold Timerの間にKEEPALIVEまたはUPDATEを受信できなかった場合、BGPネイバーはダウンと判断される。

設定例:

router bgp 65001
 timers bgp 30 90

上記は以下を意味する。

Keepalive Timer:30秒
Hold Timer:90秒

ネイバー単位で設定する例:

router bgp 65001
 neighbor 192.0.2.2 timers 30 90

OSPFのHello/Dead Timerとは異なり、BGPのKeepalive/Hold Timerは必ずしも両端で同じ値にそろえる必要はない。ただし、運用設計上は同じ値または整合性のある値に統一することが望ましい。

高速障害検出が必要な場合は、BFDとの連携を検討する。

router bgp 65001
 neighbor 192.0.2.2 fall-over bfd

BFDのCLIはIOSバージョンや機種により差異があるため、対象機器の対応状況を確認する。


8. BGP基本設定例

以下の構成を想定する。

R1(AS 65001)----- R2(AS 65002)

R1 Gi0/0:192.0.2.1/30
R2 Gi0/0:192.0.2.2/30

R1が広告するネットワーク:203.0.113.0/24
R2が広告するネットワーク:198.51.100.0/24

R1設定

hostname R1

interface GigabitEthernet0/0
 description To-R2
 ip address 192.0.2.1 255.255.255.252
 no shutdown

interface Loopback0
 ip address 10.255.0.1 255.255.255.255

interface Loopback10
 ip address 203.0.113.1 255.255.255.0

router bgp 65001
 bgp router-id 10.255.0.1
 no bgp default ipv4-unicast

 neighbor 192.0.2.2 remote-as 65002

 address-family ipv4 unicast
  neighbor 192.0.2.2 activate
  network 203.0.113.0 mask 255.255.255.0
 exit-address-family

R2設定

hostname R2

interface GigabitEthernet0/0
 description To-R1
 ip address 192.0.2.2 255.255.255.252
 no shutdown

interface Loopback0
 ip address 10.255.0.2 255.255.255.255

interface Loopback10
 ip address 198.51.100.1 255.255.255.0

router bgp 65002
 bgp router-id 10.255.0.2
 no bgp default ipv4-unicast

 neighbor 192.0.2.1 remote-as 65001

 address-family ipv4 unicast
  neighbor 192.0.2.1 activate
  network 198.51.100.0 mask 255.255.255.0
 exit-address-family

9. BGP Router ID

BGP Router IDは、BGPルータを識別する32ビットの値である。

IPv4アドレス形式で表記されるが、必ずしも実際の到達可能なIPv4アドレスである必要はない。

CiscoではLoopbackインターフェースのIPv4アドレスを使用することが一般的である。

router bgp 65001
 bgp router-id 10.255.0.1

Router IDを明示設定しない場合、Ciscoは通常、Loopbackインターフェースの最大IPv4アドレス、または物理インターフェースの最大IPv4アドレスを使用する。

Router IDを明示設定する利点は以下の通り。

  • 再起動やインターフェース状態変化の影響を受けにくい
  • Route Reflectorの識別を安定化できる
  • トラブルシュート時に識別しやすい
  • Router ID重複を防止しやすい

Router ID変更後は、BGPセッションの再確立が必要になる場合がある。


10. networkコマンドによる経路広告

BGPは、OSPFのようにインターフェース上のネットワークを自動で広告しない。

BGPで経路を広告するには、通常networkコマンドを使用する。

router bgp 65001
 address-family ipv4 unicast
  network 203.0.113.0 mask 255.255.255.0
 exit-address-family

重要な点として、networkコマンドで指定したプレフィックスと同じ経路が、ローカルのルーティングテーブルに存在している必要がある。

以下の経路が存在する場合:

203.0.113.0/24

以下の設定で広告可能である。

network 203.0.113.0 mask 255.255.255.0

一方で、ルーティングテーブルに203.0.113.0/25しか存在しない場合、203.0.113.0/24は通常広告されない。

確認コマンド:

show ip route 203.0.113.0
show ip bgp 203.0.113.0

11. 再配送による経路広告

Static Route、Connected Route、OSPF、EIGRPなどの経路をBGPへ再配送できる。

Static RouteをBGPへ再配送する例:

ip route 203.0.113.0 255.255.255.0 Null0

router bgp 65001
 address-family ipv4 unicast
  redistribute static
 exit-address-family

Connected Routeを再配送する例:

router bgp 65001
 address-family ipv4 unicast
  redistribute connected
 exit-address-family

OSPFを再配送する例:

router bgp 65001
 address-family ipv4 unicast
  redistribute ospf 1
 exit-address-family

ただし、無条件の再配送は不要な経路広告、経路リーク、ルーティングループを引き起こす可能性がある。

実運用ではRoute-mapやPrefix-listで再配送対象を制限する。

ip prefix-list REDIST-STATIC seq 5 permit 203.0.113.0/24

route-map REDIST-STATIC permit 10
 match ip address prefix-list REDIST-STATIC

router bgp 65001
 address-family ipv4 unicast
  redistribute static route-map REDIST-STATIC
 exit-address-family

12. BGP Path Attribute

BGP経路にはPath Attributeが付与される。

主な属性は以下の通り。

属性 概要 優先の考え方
Weight Cisco独自のローカル属性 大きいほど優先
LOCAL_PREF AS内で共有される出口選択属性 大きいほど優先
AS_PATH 経由したAS番号列 短いほど優先
ORIGIN 経路の起源 IGPが最優先
MED 隣接ASへ出口優先度を通知 小さいほど優先
NEXT_HOP 次ホップIPアドレス 到達可能である必要がある
COMMUNITY 経路へタグを付与する属性 ポリシー制御に使用
AGGREGATOR 集約を行ったBGPスピーカー情報 経路集約時に使用
ATOMIC_AGGREGATE 経路集約により情報が失われたことを示す 集約時に使用

13. BGP Best Path Selection

BGPは複数経路を受信した場合、BGP Best Path Selection Algorithmにより最適経路を選択する。

Cisco IOS / IOS XEにおける代表的な選択順序は以下の通り。

  1. Weightが大きい経路
  2. Local Originatedな経路
  3. LOCAL_PREFが大きい経路
  4. AS_PATHが短い経路
  5. ORIGINがより優先される経路
  6. MEDが小さい経路
  7. eBGPで学習した経路
  8. NEXT_HOPまでのIGPメトリックが小さい経路
  9. 古いeBGP経路
  10. BGP Router IDが小さいネイバーからの経路
  11. Cluster Listが短い経路
  12. ネイバーIPアドレスが小さい経路

BGPのBest Path選択は、Ciscoのソフトウェアバージョン、bgp bestpath関連設定、MED比較設定、Multipath設定などにより挙動が変わることがある。


14. Weight

WeightはCisco独自のBGP属性である。

  • Ciscoルータ内だけで有効
  • BGPネイバーへ広告されない
  • 値が大きい経路を優先する
  • デフォルトは通常0
  • ローカル生成経路には通常32768が設定される

特定ネイバーから受信した経路を優先する例:

router bgp 65001
 neighbor 192.0.2.2 weight 500

Route-mapでWeightを設定する例:

route-map SET-WEIGHT permit 10
 set weight 500

router bgp 65001
 address-family ipv4 unicast
  neighbor 192.0.2.2 route-map SET-WEIGHT in
 exit-address-family

Weightはローカルルータだけに影響するため、AS全体の出口制御には通常LOCAL_PREFを使用する。


15. LOCAL_PREF

LOCAL_PREFは、AS内で「どの出口を優先するか」を決めるための属性である。

  • 値が大きい経路を優先する
  • iBGPを通じてAS内部に伝播される
  • eBGPネイバーへは通常広告されない
  • Ciscoのデフォルト値は通常100

例として、ISP-A経由を優先し、ISP-Bをバックアップにする場合を考える。

ISP-A経由:LOCAL_PREF 200
ISP-B経由:LOCAL_PREF 100

ISP-Aから受信した経路にLOCAL_PREFを設定する例:

ip prefix-list DEFAULT-ONLY seq 5 permit 0.0.0.0/0

route-map ISP-A-IN permit 10
 match ip address prefix-list DEFAULT-ONLY
 set local-preference 200

router bgp 65001
 address-family ipv4 unicast
  neighbor 192.0.2.2 route-map ISP-A-IN in
 exit-address-family

LOCAL_PREFは、自ASから外部へ出る通信の出口制御に使用する。


16. AS_PATH

AS_PATHは、経路が通過したAS番号の列である。

例:

65010 65020 65030

この経路は、AS 65010、AS 65020、AS 65030を経由してきたことを示す。

BGPはAS_PATHを利用してルーティングループを防止する。

自AS番号がAS_PATH内に含まれる経路を受信した場合、通常はその経路を破棄する。

例として、AS 65001のルータが以下の経路を受信した場合:

65010 65020 65001

自ASである65001が含まれるため、通常は受け入れない。


17. AS-Prepend

AS-Prependは、AS_PATHに自AS番号を複数回追加することで、外部ASから見たAS_PATHを長くし、特定経路を選ばれにくくする手法である。

主に外部から自ASへ入る通信、つまりInbound Traffic Engineeringで利用する。

以下の構成を想定する。

             ISP-A
              |
              |
AS 65001 -----+
              |
              |
             ISP-B

ISP-A経由を主回線、ISP-B経由をバックアップ回線にしたい場合、ISP-B側へ広告する経路へAS-Prependを設定する。

ip prefix-list OWN-PREFIX seq 5 permit 203.0.113.0/24

route-map PREPEND-TO-ISP-B permit 10
 match ip address prefix-list OWN-PREFIX
 set as-path prepend 65001 65001 65001

router bgp 65001
 address-family ipv4 unicast
  neighbor 198.51.100.2 route-map PREPEND-TO-ISP-B out
 exit-address-family

ISP-B経由で広告される経路のAS_PATHは、自AS番号が複数回含まれる形となる。

65001 65001 65001 65001

AS-Prependの注意点は以下の通り。

  • 相手ASがAS_PATH長を重視するとは限らない
  • 相手側のLOCAL_PREFが優先される場合、効果がないことがある
  • インターネット全体の経路制御を完全には保証できない
  • 自AS番号以外を不適切にPrependしてはならない
  • 過剰なPrependは可用性低下や経路選択の複雑化につながる

18. MED

MED(Multi-Exit Discriminator)は、隣接ASに対して「複数の接続点のうち、どの入口を優先してほしいか」を通知する属性である。

  • 値が小さいほど優先される
  • 主に同一隣接ASから受信した複数経路の比較に使用される
  • 相手ASがMEDを尊重する設定である必要がある
  • 外部ASへ入る通信の入口制御に使用する

MEDを設定する例:

ip prefix-list OWN-PREFIX seq 5 permit 203.0.113.0/24

route-map SET-MED permit 10
 match ip address prefix-list OWN-PREFIX
 set metric 50

router bgp 65001
 address-family ipv4 unicast
  neighbor 192.0.2.2 route-map SET-MED out
 exit-address-family

バックアップ回線側に大きなMEDを設定する例:

route-map SET-BACKUP-MED permit 10
 match ip address prefix-list OWN-PREFIX
 set metric 200

MEDは相手ASのポリシーに依存するため、AS-Prependと同様に意図通りに機能することを保証するものではない。


19. NEXT_HOP

NEXT_HOPは、そのBGP経路へ到達するための次ホップIPアドレスを示す属性である。

BGP経路がルーティングテーブルへ登録されるには、NEXT_HOPが到達可能である必要がある。

eBGPで受信した経路をiBGPへ広告する場合、NEXT_HOPは通常、eBGPネイバーのアドレスのまま維持される。

例:

R1 --- eBGP --- ISP
|
iBGP
|
R2

R1がISPから受信した経路をR2へiBGP広告した場合、R2からISP側のNEXT_HOPへ到達できなければ、その経路を利用できない。

この問題を回避する代表的な設定がnext-hop-selfである。

router bgp 65001
 address-family ipv4 unicast
  neighbor 10.255.0.2 next-hop-self
 exit-address-family

これにより、R1はR2へ経路を広告する際に、NEXT_HOPをR1自身へ書き換える。

大規模iBGP構成、Route Reflector構成、インターネット接続ルータとコアルータ間のBGP構成では特に重要である。


20. Administrative Distance(AD)

AD(Administrative Distance)は、異なるルーティングプロトコルで同一宛先を学習した場合に、どの情報源を優先するかを決めるCiscoローカルの優先度である。

値が小さいほど優先される。

Ciscoの代表的なデフォルトADは以下の通り。

経路情報源 AD
Connected 0
Static 1
eBGP 20
EIGRP Internal 90
OSPF 110
IS-IS 115
RIP 120
EIGRP External 170
iBGP 200
Local BGP 200

BGPのADは以下のように設定できる。

router bgp 65001
 distance bgp 20 200 200

構文は以下の通り。

distance bgp <external> <internal> <local>

例:

router bgp 65001
 distance bgp 20 150 200

この設定ではiBGP経路のADを150へ変更する。

ADはBGP属性ではない。BGP UPDATEメッセージでネイバーへ広告されるものではなく、各Ciscoルータがローカルで使用する値である。


21. BGP Best PathとADの違い

BGPのBest Path選択とADは別の処理である。

処理の流れは概ね以下の通り。

  1. BGPテーブル内でBest Pathを選択する
  2. NEXT_HOP到達性を確認する
  3. BGP Best Pathと他プロトコル経路をADで比較する
  4. 最終的にルーティングテーブルへ登録する

たとえば、以下の経路がある場合を考える。

Static Route:AD 1
OSPF Route:AD 110
eBGP Route:AD 20

同一宛先に対して3つの経路が存在する場合、Static Routeが優先される。

Static(1) < eBGP(20) < OSPF(110)

BGPテーブルでBest Pathになっていても、より小さいADを持つStatic Routeなどが存在する場合、BGP経路はルーティングテーブルへ登録されないことがある。

確認コマンド:

show ip bgp 203.0.113.0
show ip route 203.0.113.0

22. BGPテーブルの見方

確認コマンド:

show ip bgp

出力例:

R1# show ip bgp

     Network          Next Hop            Metric LocPrf Weight Path
 *>  198.51.100.0/24  192.0.2.2                0             0 65002 i

主なステータスコードは以下の通り。

コード 意味
* Valid Path
> Best Path
i iBGPで学習した経路
r RIB Failure
S Stale Path
d Damped Path
m Multipath
x Best External Path

経路例:

*> 198.51.100.0/24 192.0.2.2 0 0 0 65002 i

主な列は以下の通り。

内容
Network 宛先プレフィックス
Next Hop 次ホップ
Metric MED
LocPrf LOCAL_PREF
Weight Cisco独自属性
Path AS_PATHおよびORIGIN

iはAS_PATHの最後に表示されるORIGINコードとしても使われるため、文脈に注意する。

ORIGINコードは以下の通り。

ORIGINコード 意味 優先度
i IGP Origin 最も優先
e EGP Origin 次点
? Incomplete 最も低い

networkコマンドで生成された経路は一般にiとなる。

再配送された経路は一般に?となる。


23. eBGPマルチホップ

通常、eBGPネイバーは直接接続されている必要がある。

Loopbackインターフェース同士でeBGPピアリングを構成する場合や、中間ルータを経由する場合はebgp-multihopを使用する。

構成例:

R1 Loopback0:10.255.0.1/32
R2 Loopback0:10.255.0.2/32

R1設定例:

router bgp 65001
 bgp router-id 10.255.0.1

 neighbor 10.255.0.2 remote-as 65002
 neighbor 10.255.0.2 update-source Loopback0
 neighbor 10.255.0.2 ebgp-multihop 2

 address-family ipv4 unicast
  neighbor 10.255.0.2 activate
 exit-address-family

R2設定例:

router bgp 65002
 bgp router-id 10.255.0.2

 neighbor 10.255.0.1 remote-as 65001
 neighbor 10.255.0.1 update-source Loopback0
 neighbor 10.255.0.1 ebgp-multihop 2

 address-family ipv4 unicast
  neighbor 10.255.0.1 activate
 exit-address-family

この構成では、Loopbackアドレスへ到達するためのIGPまたはStatic Routeが必要である。

ip route 10.255.0.2 255.255.255.255 192.0.2.2

ebgp-multihopの値は、経由するL3ホップ数を考慮して設定する。


24. iBGPフルメッシュ

iBGPでは、iBGPネイバーから受信した経路を別のiBGPネイバーへ広告しない。

そのため、Route ReflectorやConfederationを使用しない場合、すべてのiBGPルータ間でフルメッシュを構成する必要がある。

4台のiBGPルータがある場合、必要なセッション数は以下となる。

4 × 3 ÷ 2 = 6セッション

3台のiBGPルータの例:

R1 ----- R2
 | \     |
 |  \    |
 |   \   |
 R3 -----

R1設定例:

router bgp 65001
 neighbor 10.255.0.2 remote-as 65001
 neighbor 10.255.0.2 update-source Loopback0

 neighbor 10.255.0.3 remote-as 65001
 neighbor 10.255.0.3 update-source Loopback0

 address-family ipv4 unicast
  neighbor 10.255.0.2 activate
  neighbor 10.255.0.3 activate
 exit-address-family

小規模構成ではフルメッシュでも運用可能だが、ルータ台数が増えるとセッション数が急増する。


25. Route Reflector

Route Reflector(RR)は、iBGPフルメッシュ問題を解決する仕組みである。

RRは、iBGPクライアントから受信した経路を他のiBGPクライアントや非クライアントへ反射(Reflect)できる。

構成例:

                 RR1
                /   \
               /     \
          Client1   Client2

すべて同一ASである。

RR1:AS 65001
Client1:AS 65001
Client2:AS 65001

RR設定例

RR1設定:

router bgp 65001
 bgp router-id 10.255.0.10

 neighbor 10.255.0.11 remote-as 65001
 neighbor 10.255.0.11 update-source Loopback0

 neighbor 10.255.0.12 remote-as 65001
 neighbor 10.255.0.12 update-source Loopback0

 address-family ipv4 unicast
  neighbor 10.255.0.11 activate
  neighbor 10.255.0.11 route-reflector-client

  neighbor 10.255.0.12 activate
  neighbor 10.255.0.12 route-reflector-client
 exit-address-family

Client1設定:

router bgp 65001
 bgp router-id 10.255.0.11

 neighbor 10.255.0.10 remote-as 65001
 neighbor 10.255.0.10 update-source Loopback0

 address-family ipv4 unicast
  neighbor 10.255.0.10 activate
 exit-address-family

Client2設定:

router bgp 65001
 bgp router-id 10.255.0.12

 neighbor 10.255.0.10 remote-as 65001
 neighbor 10.255.0.10 update-source Loopback0

 address-family ipv4 unicast
  neighbor 10.255.0.10 activate
 exit-address-family

Route Reflectorはループ防止のために以下の属性を使用する。

属性 用途
ORIGINATOR_ID 元のiBGP経路広告元を識別する
CLUSTER_LIST 経由したRRクラスタを記録する

自分自身のRouter IDがORIGINATOR_IDに含まれる経路、または自クラスタIDがCLUSTER_LISTに含まれる経路は受け入れない。

複数RRを構成する場合は、クラスタIDを明示設定することが望ましい。

router bgp 65001
 bgp cluster-id 10.255.0.10

Route Reflectorを導入しても、NEXT_HOP到達性は別途確保する必要がある。

必要に応じて以下を設定する。

router bgp 65001
 address-family ipv4 unicast
  neighbor 10.255.0.11 next-hop-self
  neighbor 10.255.0.12 next-hop-self
 exit-address-family

26. BGP Confederation

BGP Confederationは、大規模ASを複数のサブASへ分割し、外部からは単一ASとして見せる仕組みである。

構成イメージ:

外部AS --- AS 65000(Confederation)
             ├─ Sub-AS 65001
             ├─ Sub-AS 65002
             └─ Sub-AS 65003

設定例:

router bgp 65001
 bgp confederation identifier 65000
 bgp confederation peers 65002

Confederationでは、外部ASに対してはConfederation Identifierである65000をAS番号として扱う。

現在では、iBGPスケーラビリティ対策としてRoute Reflectorが採用されることが多いが、大規模ネットワークではConfederationも利用される。


27. AS-Override

AS-Overrideは、主にMPLS L3VPN環境などで使用される機能である。

同じAS番号を使用している複数拠点を、サービスプロバイダ網経由で接続する場合に使用する。

構成例:

Site-A CE:AS 65100
Site-B CE:AS 65100

PE1:AS 65000
PE2:AS 65000

Site-Aから広告された経路には、AS_PATHに65100が含まれる。

その経路をSite-Bへそのまま広告すると、Site-Bは自AS番号65100をAS_PATH内に検出するため、通常は受信を拒否する。

AS-Overrideでは、PEが顧客AS番号をプロバイダAS番号へ置き換える。

Cisco設定例:

router bgp 65000
 address-family ipv4 vrf CUSTOMER-A
  neighbor 10.10.10.2 remote-as 65100
  neighbor 10.10.10.2 as-override
 exit-address-family

AS-Override適用前のAS_PATH例:

65100

AS-Override適用後、顧客側へ広告されるAS_PATHの例:

65000 65000

AS-Overrideは顧客AS番号の重複問題を回避できるが、ループ防止の動作に影響を与えるため、MPLS L3VPNや明確な閉域設計など、用途を限定して使用する。


28. allowas-in

allowas-inは、自AS番号がAS_PATHに含まれる経路を受信可能にする設定である。

通常、BGPはAS_PATHに自AS番号が含まれる経路を破棄する。

しかし、MPLS L3VPNや特殊なマルチホーム構成などでは、自AS番号を含む経路を受け入れる必要がある場合がある。

設定例:

router bgp 65100
 address-family ipv4 unicast
  neighbor 10.10.10.1 allowas-in
 exit-address-family

許可する自AS番号の出現回数を制限する例:

router bgp 65100
 address-family ipv4 unicast
  neighbor 10.10.10.1 allowas-in 2
 exit-address-family

allowas-inはループ防止を弱める機能であるため、用途を限定し、AS-Overrideとどちらを使うべきかを設計上明確にする。


29. Community

BGP Communityは、BGP経路にタグを付与し、経路ポリシーを制御するための属性である。

Communityは、主に以下の用途で使用する。

  • ISPが提供する経路制御ポリシーの利用
  • LOCAL_PREF変更要求
  • 特定地域への広告制御
  • Blackhole Community
  • No-export制御
  • ルートフィルタリング
  • 経路識別

標準Communityの一般的な表記は以下である。

ASN:Value

例:

65001:100
65001:200

Communityを付与する例:

ip prefix-list OWN-PREFIX seq 5 permit 203.0.113.0/24

route-map SET-COMMUNITY permit 10
 match ip address prefix-list OWN-PREFIX
 set community 65001:100 additive

router bgp 65001
 address-family ipv4 unicast
  neighbor 192.0.2.2 send-community
  neighbor 192.0.2.2 route-map SET-COMMUNITY out
 exit-address-family

拡張Communityも送信する例:

router bgp 65001
 address-family ipv4 unicast
  neighbor 192.0.2.2 send-community both
 exit-address-family

代表的なWell-known Communityは以下の通り。

Community 意味
no-export Confederation外のeBGPピアへ広告しない
no-advertise どのBGPピアへも広告しない
local-AS ローカルAS外へ広告しない用途で使用される

no-exportを設定する例:

route-map SET-NO-EXPORT permit 10
 set community no-export additive

Communityの意味は、ISPや接続事業者ごとに異なることがある。ISP Communityを使用する場合は、必ず接続先ISPのCommunity仕様を確認する。


30. Prefix Filter

BGPでは、意図しない経路広告や受信を防ぐために、Prefix Filterを設定することが重要である。

Prefix-list例:

ip prefix-list OUT-TO-ISP seq 5 permit 203.0.113.0/24
ip prefix-list OUT-TO-ISP seq 100 deny 0.0.0.0/0 le 32

BGPネイバーへの送信経路を制限する例:

router bgp 65001
 address-family ipv4 unicast
  neighbor 192.0.2.2 prefix-list OUT-TO-ISP out
 exit-address-family

受信経路を制限する例:

ip prefix-list IN-FROM-ISP seq 5 permit 0.0.0.0/0
ip prefix-list IN-FROM-ISP seq 100 deny 0.0.0.0/0 le 32

router bgp 65001
 address-family ipv4 unicast
  neighbor 192.0.2.2 prefix-list IN-FROM-ISP in
 exit-address-family

Prefix-listは暗黙のdenyを持つ。

つまり、明示的にpermitされていないプレフィックスは拒否される。


31. Route-map

Route-mapは、BGP経路のフィルタリングや属性変更に使用する。

主な用途は以下の通り。

  • Prefix Filter
  • AS-Prepend
  • LOCAL_PREF変更
  • MED変更
  • Community付与・削除
  • Weight変更
  • 再配送制御
  • AS_PATHフィルタ

例:特定プレフィックスにLOCAL_PREFを設定する。

ip prefix-list DEFAULT-ROUTE seq 5 permit 0.0.0.0/0

route-map SET-LOCAL-PREF permit 10
 match ip address prefix-list DEFAULT-ROUTE
 set local-preference 200

route-map SET-LOCAL-PREF permit 100

BGPネイバーへ適用する。

router bgp 65001
 address-family ipv4 unicast
  neighbor 192.0.2.2 route-map SET-LOCAL-PREF in
 exit-address-family

Route-mapには暗黙のdenyが存在する。

そのため、特定条件だけをpermitした場合、それ以外の経路がすべて拒否される可能性がある。

必要に応じて最後にpermit文を追加する。

route-map SET-LOCAL-PREF permit 100

32. AS_PATH Filter

AS_PATH Access-listを使用して、特定ASを経由した経路をフィルタリングできる。

例として、AS 65050を含む経路を拒否する。

ip as-path access-list 10 deny _65050_
ip as-path access-list 10 permit .*

Route-mapへ適用する。

route-map FILTER-AS-PATH permit 10
 match as-path 10

BGPネイバーへ適用する。

router bgp 65001
 address-family ipv4 unicast
  neighbor 192.0.2.2 route-map FILTER-AS-PATH in
 exit-address-family

CiscoのAS_PATH正規表現では、_はAS番号の区切りを示す。

_65050_

この記述により、65050という独立したAS番号を検索できる。


33. デフォルトルート広告

BGPでデフォルトルートを広告する方法はいくつかある。

networkコマンドで広告する方法

ルーティングテーブルにデフォルトルートが存在する必要がある。

ip route 0.0.0.0 0.0.0.0 192.0.2.2

router bgp 65001
 address-family ipv4 unicast
  network 0.0.0.0
 exit-address-family

default-information originateを使用する方法

router bgp 65001
 address-family ipv4 unicast
  neighbor 192.0.2.2 default-originate
 exit-address-family

Route-mapを使って条件付きでデフォルトルートを広告する例:

ip prefix-list DEFAULT-CONDITION seq 5 permit 198.51.100.0/24

route-map DEFAULT-ORIGINATE permit 10
 match ip address prefix-list DEFAULT-CONDITION

router bgp 65001
 address-family ipv4 unicast
  neighbor 192.0.2.2 default-originate route-map DEFAULT-ORIGINATE
 exit-address-family

デフォルトルートを複数方向へ広告する場合は、障害時に不要な出口へ転送されないよう、上位回線の到達性監視と組み合わせる。


34. 経路集約

BGPではaggregate-addressを使用して経路集約を行う。

例として、以下の経路を集約する。

203.0.113.0/24
203.0.114.0/24
203.0.115.0/24

集約設定例:

router bgp 65001
 address-family ipv4 unicast
  aggregate-address 203.0.112.0 255.255.252.0
 exit-address-family

詳細経路の広告を抑止する例:

router bgp 65001
 address-family ipv4 unicast
  aggregate-address 203.0.112.0 255.255.252.0 summary-only
 exit-address-family

AS_PATH情報をAS_SETとして保持する例:

router bgp 65001
 address-family ipv4 unicast
  aggregate-address 203.0.112.0 255.255.252.0 summary-only as-set
 exit-address-family

as-setを使用すると、集約対象経路のAS_PATH情報をAS_SETとして保持できる。

経路集約では、詳細経路の消失時にブラックホールが発生しないよう注意する。

集約経路を広告する条件、Null0への破棄経路、障害時の詳細経路動作を設計する。


35. Private ASNの削除

顧客網やプライベートネットワークで使用したPrivate ASNを、インターネット側へ広告する前に削除する場合がある。

設定例:

router bgp 65001
 address-family ipv4 unicast
  neighbor 192.0.2.2 remove-private-as
 exit-address-family

より詳細な動作制御が可能な実装では、以下のようなオプションが利用できる場合がある。

neighbor 192.0.2.2 remove-private-as all
neighbor 192.0.2.2 remove-private-as all replace-as

利用可能な構文はCisco IOS / IOS XEのバージョンに依存する。

Private ASN削除は、接続先ISPのポリシーや自組織のAS設計を確認してから使用する。


36. BGP Multipath

BGPでは、条件を満たす複数経路を同時に使用できる。

Ciscoでは、デフォルトでBGP Multipathが1経路に制限されることが多い。

eBGP Multipathの例:

router bgp 65001
 address-family ipv4 unicast
  maximum-paths 2
 exit-address-family

iBGP Multipathの例:

router bgp 65001
 address-family ipv4 unicast
  maximum-paths ibgp 2
 exit-address-family

AS_PATHが異なるeBGP経路でも、AS_PATH長が等しい場合にMultipath候補にする例:

router bgp 65001
 bgp bestpath as-path multipath-relax

BGP Multipathを使用する場合は、以下を確認する。

  • NEXT_HOPが到達可能であること
  • BGP属性がMultipath条件を満たすこと
  • CEFが有効であること
  • 非対称経路が問題にならないこと
  • ファイアウォールやNAT装置のセッション処理に影響しないこと

37. BGP認証

BGPセッションにはTCP MD5認証を設定できる。

Cisco設定例:

router bgp 65001
 neighbor 192.0.2.2 password BGP-SECRET

両端で同じパスワードを設定する必要がある。

R2側の例:

router bgp 65002
 neighbor 192.0.2.1 password BGP-SECRET

認証不一致の場合、TCPセッションまたはBGPセッションが確立しない。

BGP認証では、以下も検討する。

  • TCP MD5認証
  • TCP-AO対応状況
  • ACLによるTCP/179通信制限
  • Control Plane Policing
  • 管理プレーン分離
  • BGP TTL Security
  • Max-prefix設定

38. BGP TTL Security

直接接続eBGPピアに対する攻撃対策として、TTL Securityを使用できる。

router bgp 65001
 neighbor 192.0.2.2 ttl-security hops 1

TTL Securityでは、受信パケットのTTLを検査し、近接したネイバーからの通信のみを受け入れる。

通常、直接接続eBGPピアで利用する。

ebgp-multihopを使用する構成では、TTL Security設定との整合性を確認する必要がある。


39. Max-prefix

Max-prefixは、BGPネイバーから受信するプレフィックス数を制限する機能である。

誤設定や経路リークにより大量の経路を受信した場合の保護に使用する。

例:

router bgp 65001
 address-family ipv4 unicast
  neighbor 192.0.2.2 maximum-prefix 100 80 restart 5
 exit-address-family

上記の意味は以下の通り。

設定値 内容
100 最大受信プレフィックス数
80 80%到達時に警告
restart 5 5分後にセッション再試行

インターネットフルルートを受信する場合は、実際のプレフィックス数に応じた十分な値を設定する必要がある。

一方、顧客接続や拠点接続では、想定経路数に近い厳格な値を設定することが望ましい。


40. Route RefreshとSoft Reset

BGPポリシーを変更した場合、従来はBGPセッションをリセットして経路を再受信する必要があった。

現在はRoute RefreshまたはSoft Resetを使用し、セッションを切断せずにポリシーを再適用できる。

受信方向のSoft Reset例:

clear ip bgp 192.0.2.2 soft in

送信方向のSoft Reset例:

clear ip bgp 192.0.2.2 soft out

Route Refreshをサポートしないネイバーに対して受信方向のSoft Resetを行う場合、事前にSoft Reconfigurationを設定する必要がある。

router bgp 65001
 address-family ipv4 unicast
  neighbor 192.0.2.2 soft-reconfiguration inbound
 exit-address-family

ただし、Soft Reconfigurationは受信した経路情報をメモリに保持するため、メモリ消費が増加する。

対応ネイバーとの接続では、通常はRoute Refreshを使用する。


41. IPv6 BGP設定例

BGPではMP-BGP機能によりIPv6経路を交換できる。

構成例:

R1:2001:db8:12::1/64
R2:2001:db8:12::2/64

R1設定例:

ipv6 unicast-routing

interface GigabitEthernet0/0
 ipv6 address 2001:db8:12::1/64
 no shutdown

interface Loopback0
 ipv6 address 2001:db8:255::1/128

router bgp 65001
 bgp router-id 10.255.0.1
 no bgp default ipv4-unicast

 neighbor 2001:db8:12::2 remote-as 65002

 address-family ipv6 unicast
  neighbor 2001:db8:12::2 activate
  network 2001:db8:100::/48
 exit-address-family

R2設定例:

ipv6 unicast-routing

interface GigabitEthernet0/0
 ipv6 address 2001:db8:12::2/64
 no shutdown

interface Loopback0
 ipv6 address 2001:db8:255::2/128

router bgp 65002
 bgp router-id 10.255.0.2
 no bgp default ipv4-unicast

 neighbor 2001:db8:12::1 remote-as 65001

 address-family ipv6 unicast
  neighbor 2001:db8:12::1 activate
  network 2001:db8:200::/48
 exit-address-family

IPv6 BGPでもRouter IDは32ビットのIPv4形式である。


42. BGP障害時の確認コマンド

BGPサマリー確認

show ip bgp summary

特定ネイバーの詳細確認

show ip bgp neighbors 192.0.2.2

BGPテーブル確認

show ip bgp
show ip bgp 203.0.113.0

ルーティングテーブル確認

show ip route bgp
show ip route 203.0.113.0

BGP設定確認

show running-config | section router bgp
show ip protocols

TCPセッション確認

show tcp brief

Prefix Filter確認

show ip prefix-list
show route-map
show ip as-path-access-list

BGP Capability確認

show ip bgp neighbors 192.0.2.2 | include Capability

デバッグ

debug ip bgp events
debug ip bgp updates

debugはCPU負荷およびログ出力を増加させるため、本番環境では慎重に使用する。


43. 代表的な障害原因

状態・症状 主な原因
Idle BGP設定不足、ネイバーshutdown、TCP接続不可
Connect / Active IP到達性不良、ACL、TCP/179遮断、update-source不一致
OpenSent remote-as不一致、認証不一致、BGP Capability不一致
OpenConfirmで停止 Keepalive未受信、TCP不安定、認証・制御プレーン問題
Establishedだが経路なし network対象経路がRIBにない、Prefix Filter、Route-map、再配送漏れ
BGPテーブルにはあるがRIBにない AD、NEXT_HOP未到達、Static Route優先、RIB Failure
意図しない出口を選択 LOCAL_PREF、Weight、AS_PATH、MED、NEXT_HOPの設計不備
iBGP経路が伝播しない iBGP Split Horizon、RR未設定、フルメッシュ不足
BGPセッションが頻繁に切れる 回線品質、Hold Timer、BFD、CPU高負荷、CoPP、TCP問題
大量経路受信で不安定 Max-prefix未設定、Prefix Filter不備、メモリ不足

44. 設計・運用上の要点

  • BGP Router IDはLoopbackアドレスなどを用いて明示設定する
  • eBGPとiBGPの役割を明確に分ける
  • BGPネイバーは手動設定であり、OSPFのような自動隣接検出は行わない
  • TCP/179の到達性、ACL、認証、TTL、経路到達性を確認する
  • eBGPではPrefix Filterを必須と考える
  • 受信・送信の両方向で経路フィルタリングを行う
  • 再配送は最小限にし、必ずRoute-mapで制御する
  • BGP Best PathとADは別の概念として理解する
  • Outbound Traffic EngineeringにはLOCAL_PREFを主に使用する
  • Inbound Traffic EngineeringにはAS-Prepend、MED、Communityを使用する
  • iBGPではNEXT_HOP到達性を必ず確認する
  • iBGPフルメッシュが困難な場合はRoute Reflectorを使用する
  • RR冗長化時はCluster ID、Router ID、NEXT_HOPを設計する
  • AS-Overrideやallowas-inはループ防止に影響するため用途を限定する
  • Max-prefixを設定して経路リークに備える
  • TCP MD5認証、TTL Security、CoPP、ACLを適用する
  • ISP接続時はISPのCommunity仕様、最大プレフィックス数、BGPポリシーを確認する
  • clear ip bgpによるハードリセットは通信影響が大きいため、原則としてSoft ResetまたはRoute Refreshを優先する

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?