BGP

1. プロトコル概要

現在のインターネットでは、さまざまな経路制御プロトコルが用いられています。 経路制御プロトコルにはそれぞれに固有の特徴がありますが、扱うネットワークの規模に着目すると、IGPとEGPというグループに分類することができます。

  • IGP (Interior Gateway Protocol)
    主に組織内のネットワークを制御するために用いられます。IGPの代表的なものには RIP や OSPF があります。

  • EGP (Exterior Gateway Protocol)
    IGPで運用される組織間でのネットワークを制御するために用いられます。EGPの代表的なものには BGP (Border Gateway Protocol) があります。

本製品では、RFC4271, RFC4760で定義されている BGP-4+ (BGP version 4+) をサポートしています。
BGP-4+では、IPv4経路とIPv6経路のどちらでも扱うことができます。
IPv4経路とIPv6経路のどちらもユニキャスト経路のみ扱うことができ、マルチキャスト経路は扱うことができません。

2. 用語の定義

  • AS (Autonomous System)番号
    経路制御を行う組織毎にインターネット上で一意に割り当てられる番号であり、個々の組織の経路を識別するために使用されます。
    AS番号は1から4294967295の範囲で割り当てられますが、64512から65535の範囲の番号はプライベート空間での使用を想定しており重複して割り当てられる可能性があります。

  • BGPピア
    BGPによる接続を行う対向機器であり、同一AS番号の接続機器を iBGPピア 、異なるAS番号の接続機器を eBGPピア と呼びます。

3. 対象機種と最大経路数

機種

IPv4経路数

IPv6経路数

SWX3200-28GT
SWX3200-52GT

4096

2048

SWX3220-16MT
SWX3220-16TMs

8192

8192

SWX3220-30MC
SWX3220-30TCs

16384

16384

4. 機能概要

4.1. AS (Autonomous System)

BGPでは、経路制御を行う組織毎に AS (Autonomous System)番号 と呼ばれるインターネット上で一意の番号が割り当てられ、個々の組織の経路を識別します。
AS番号は1から4294967295の範囲で割り当てられますが、64512から65535の範囲の番号はプライベート空間での仕様を想定しており重複して割り当てられる可能性があります。
ASには、他のASとの接続状態や他AS間の通信を中継するかどうかで以下の3つに分類することができます。

  • Stub AS
    外部の1つのASのみと接続しているAS。

  • Multihomed AS
    外部の複数のASと接続しているASであり、外部のAS間での通信は破棄され、自ASへの通信のみを許可します。

  • Transit AS
    外部の複数のASと接続しているASであり、外部のAS間での通信を許可します。

4.2. iBGPとeBGP

BGPが動作する機器間の接続において、同じASに所属する機器間の接続を iBGP 、異なるASに所属する機器間の接続を eBGP と呼びます。

4.3. ルーターID

BGPでは、BGPに対応した各機器を一意に識別するため、ルーターIDと呼ばれる識別子を設定する必要があります。ルーターIDはIPv4アドレス形式であり、IPv6アドレスのみで運用されIPv4アドレスが設定されていない機器であってもBGPを使用する場合にはIPv4形式のルーターIDを設定する必要があります。

4.4. BGPメッセージ

BGPでは、経路交換を行う機器同士がTCPのポート179番を利用して通信を行い、以下の5メッセージを用いてピア確立・経路交換・接続性確認・エラー通知を行います。

メッセージ

内容

OPEN

接続の初期段階でAS番号やピア認証などの情報を交換し、ピアを確立します。
ピアが正常に確立されるとUPDATEメッセージやKEEPALIVEメッセージの交換が始まります。

UPDATE

実際の経路情報を交換します。
新規経路リストと削除経路リストが格納されており、経路情報毎にパス属性が付加されていて経路制御に利用されます。

NOTIFICATION

エラーが発生したときにピアに対してエラーの内容を通知します。

KEEPALIVE

BGPピア間の接続性を確認します。
OPENメッセージに含まれるHoldTimeパラメーターによって決められる送信間隔で定期的にこのメッセージを交換することでピアのダウンを検知します。

ROUTE-REFRESH

BGPピアに対してすべての経路を再度送信しなおすように要求するためのメッセージです。

BGPのセッション確立から経路交換までの流れは以下のようになります。
image

4.5. パス属性

BGPの経路情報には、宛先に至るまでに通過するASの情報などが含まれており、経路を表現する情報の要素として用いられます。
主要なパス属性は以下のとおりです。

番号

属性

内容

1

ORIGIN

誰がこの経路を作ったかを表します。他の機器に経路情報を広告する場合、ORIGIN属性は基本的に変更されることはありません。
ORIGIN属性には以下の3種類があります。
- IGP : AS内で生成された経路
- EGP : AS外で生成された経路
- INCOMPLETE : IGP/EGP以外の方法で取得した経路

2

AS_PATH

宛先に至るまでに通過するAS番号のリスト

3

NEXT_HOP

eBGPでは多くの場合、広告した機器のIPアドレスになります。
eBGPから受けた経路をiBGPで広告するときには、経路の元のNEXT_HOPがそのまま使用されます。

4

MED (MULTI_EXIT_DISC)

複数のeBGPが存在するとき、それぞれのeBGPから広告される同じ経路に対して優先順位を決定するために用いられます。
MEDが小さい経路がより優先されます。

5

LOCAL_PREF

経路情報をiBGPに広告するときに付与されます。MEDと同様に経路の優先順位の決定に使用されますが、LOCAL_PREFが大きい経路がより優先されます。

6

ATOMIC_AGGREGATE

集約された経路であることを示します。

7

AGGREGATE

経路を集約したBGPスピーカーの識別子です。

8

COMMUNITIES

コミュニティーを示します。

9

ORIGINATOR_ID

受信した経路のルーターIDです。

10

CLUSTER_LIST

ルートリフレクションが使用されるときに使われ、クラスターIDを通知することで経路情報が適切な範囲に通知されます。

14

MP_REACH_NLRI

IPv6経路を通知するために使用します。

15

MP_UNREACH_NLRI

IPv6経路を通知するために使用します。

4.6. 経路優先度

BGPでは、ある宛先に対して経路が複数存在する場合に以下のルールによって経路を選択します。

優先度

説明

1(高)

LOCAL_PREF属性が最も大きい経路を優先する

2

networkコマンドにより自機にて登録した経路を優先する

3

AS_PATH属性が最も小さい経路を優先する
bgp bestpath as-path ignoreを設定することで無効にすることができる

4

ORIGIN属性が最も小さい経路を優先する

5

MED属性が最も小さい経路を優先する
bgp always-compare-medが設定されているときのみ有効です

6

eBGPで取得した経路をiBGPで取得した経路より優先する

7

NEXT_HOPへの経路の中で最も小さいIGPメトリックを持つ経路を優先する

8

eBGPで取得した経路のみの場合は最も古い経路を優先する

9(低)

ルーターIDが最も小さいBGPピアから取得した経路を優先する
bgp bestpath compare-routeridが設定されているときのみ有効です

4.7. ケイパビリティ

BGPでは、BGPピアとのセッション開始時にOPENメッセージでケイパビリティを通知し合うことでどういったオプション機能に対応しているかをお互いに確認します。
本製品が対応しているケイパビリティは以下のとおりです。

ケイパビリティ

コード

説明

Multi protocol Capability

1

IPv4ネットワーク上のBGPセッションでのIPv6経路通知やその逆が行えることを示すケイパビリティ

Route Refresh Capability

2

Route-Refreshメッセージを受信したときにBGPピアに対して経路情報を再送信できることを示すケイパビリティ
neighbor capability route-refreshコマンドによって通知の有無を設定できる。

Outbound Route Filtering Capability

3

予めBGPピアに不要な経路の条件を通知することで、BGPピア側での不要な経路情報の通知を抑制するためのケイパビリティ
neighbor capability orf prefix-listコマンドによって通知の有無を設定できる。

Support for 4-octet AS number Capability

65

AS番号として0-65535から0-4294967295に拡張されたときに追加されたケイパビリティ

4.8. 管理距離

ルート情報には、Administrative Distanceと一般的に呼ばれる優先度が存在します。
これは、VLANインターフェースルート情報とスタティックルート情報で同じ宛先へのルート情報が登録されたとき、どちらを優先するか決めるために使用されます。
ルート情報の優先度は、スタティックルーティングに限らずダイナミックルーティングも含めて適用することができます。
スタティックルーティングのルート情報の優先度は、 ip route コマンド末尾のオプションにより1~255の範囲で指定することができます。
小さい値のほうが優先度が高くなり、初期状態では以下の優先度となります。

タイプ

優先度の初期値

優先度の変更方法

VLANインターフェースルート情報

なし(他のどのルート情報よりも優先)

設定変更不可。

スタティックルート情報

1

ip/ipv6 route コマンド末尾のオプションにより1~255の範囲で指定可能。

OSPFルート情報

110

OSPFv2/OSPFv3モードでの distance コマンドにより1~255の範囲で指定可能。

RIPルート情報

120

RIP/RIPngモードでの distance コマンドにより1~255の範囲で指定可能。

BGPルート情報(eBGPピアから取得)

20

BGPモードまたはBGP IPv6アドレスファミリモードでの distance コマンドにより1~255の範囲で指定可能。

BGPルート情報(iBGPピアから取得)

200

BGPモードまたはBGP IPv6アドレスファミリモードでの distance コマンドにより1~255の範囲で指定可能。

5. IPv4/IPv6でのBGPピアとIPv4/IPv6経路の扱いについて

本製品では、IPv4ネットワーク上で構築したBGPピアとIPv6ネットワーク上で構築したBGPピアのどちらであっても、IPv4/IPv6の両方の経路情報を交換することができます。

IPv4ネットワーク上で構築したBGPピア

IPv6ネットワーク上で構築したBGPピア

IPv4経路の交換

○

○

IPv6経路の交換

○

○

本製品では、IPv4経路に関する設定とIPv6経路に関する設定を明確に分けるため、以下のモードを使用します。

  • IPv4経路に関する設定
    router bgpコマンドにより遷移するBGPモードで設定を行います。

  • IPv6経路に関する設定
    BGPモードでaddress-family ipv6コマンドにより遷移するBGP IPv6アドレスファミリモードで設定行います。

本製品では、BGPピアとセッションが確立するとすぐにIPv4経路の交換が始まります。IPv4経路の交換の自動開始を無効にするには、bgp default ipv4-unicast disableを設定してください。
bgp default ipv4-unicast disableであってもBGPモードでneighbor activateコマンドを設定することによってIPv4経路の交換を開始することができます。
IPv6経路はBGP IPv6アドレスファミリモードでneighbor activateコマンドを明示的に設定しない限りは交換を開始しません。

6. 設定ガイド

BGPを設定する手順等を説明します。

6.1. 基本設定

BGPピアとのセッション確立から経路交換までの基本的な設定は以下のとおりです。

6-1-1. 共通設定

  1. router bgpコマンドでBGPモードに遷移し、BGPプロセスを有効にします。
    router bgpコマンドでは、自機が所属するAS番号を指定します。例としてAS番号65000を使用します。

    Yamaha> enable
    Yamaha# configure terminal
    Yamaha(config)#
    Yamaha(config)# router bgp 65000
    Yamaha(config-router)#
  2. bgp router-idコマンドでルーターIDを設定します。
    ルーターIDを設定しない場合、VLANインターフェースに割り当てられたIPv4アドレスが自動的にルーターIDとして使用されますが、明示的にルーターIDを設定してください。
    VLANインターフェースにIPv6アドレスのみ設定されIPv4アドレスが設定されていない場合は、明確にルーターIDを指定する必要があります。

    Yamaha(config-router)# bgp router-id 192.168.100.240

6-1-2. IPv4ネットワーク上でBGPピアを構築してIPv4経路を交換する。

  1. BGPで通知する経路を明示的に指定する場合、BGPモードでnetworkコマンドを使用します。

    Yamaha(config-router)# network 172.16.0.0/24
  2. BGPでConnected経路を通知する場合や、RIPやOSPFにより取得した経路を通知する場合には、redistributeコマンドで通知する経路の種別を指定します。

    Yamaha(config-router)# redistribute connected
    Yamaha(config-router)# redistribute rip
    Yamaha(config-router)# redistribute ospf 1
  3. 通知する経路の設定などが完了したら、neighbor remote-asコマンドでBGPピアを指定します。
    neighbor remote-asコマンドでは、BGPピアのIPアドレスおよびBGPピアが所属するAS番号を指定します。

    Yamaha(config-router)# neighbor 192.168.100.250 remote-as 65000

    neighbor remote-asコマンドを設定しBGPピアとのセッションが確立すると、即座にIPv4経路の交換が行われます。
    セッション確立直後のIPv4経路交換を行わないためには、bgp default ipv4-unicastコマンドを使用します。
    bgp default ipv4-unicast disableが設定されている場合、BGPモードでneighbor activateコマンドを設定することでIPv4経路の交換が開始されます。

    Yamaha(config-router)# bgp default ipv4-unicast disable
    Yamaha(config-router)# neighbor 192.168.100.250 remote-as 65000
    Yamaha(config-router)# neighbor 192.168.100.250 activate

6-1-3. IPv6ネットワーク上でBGPピアを構築してIPv6経路を交換する。

  1. BGPで通知する経路を明示的に指定する場合、BGP IPv6アドレスファミリモードでnetworkコマンドを使用します。

    Yamaha(config-router)# address-family ipv6
    Yamaha(config-router-af)# network 1001::/64
    Yamaha(config-router-af)# exit-address-family
  2. BGPでConnected経路や静的経路を通知する場合や、RIPやOSPFにより取得した経路を通知する場合には、BGP IPv6アドレスファミリモードでredistributeコマンドを使用して通知する経路の種別を指定します。

    Yamaha(config-router)# address-family ipv6
    Yamaha(config-router-af)# redistribute connected
    Yamaha(config-router-af)# redistribute static
    Yamaha(config-router-af)# redistribute rip
    Yamaha(config-router-af)# redistribute ospf 1
    Yamaha(config-router-af)# exit-address-family
  3. 通知する経路の設定などが完了したら、BGPモードでneighbor remote-asコマンドを使用してBGPピアを指定します。
    neighbor remote-asコマンドでは、BGPピアのIPv6アドレスおよびBGPピアが所属するAS番号を指定します。

    Yamaha(config-router)# neighbor 1000::100 remote-as 65000

    neighbor remote-asコマンドを設定しBGPピアとのセッションが確立しても、IPv6経路は即座に交換が行われません。
    IPv6経路の交換を開始するには、BGP IPv6アドレスファミリモードでneighbor activateコマンドを設定します。
    意図せずIPv4経路の交換が開始しないように、前もってbgp default ipv4-unicast disableを設定おくとよいでしょう。

    Yamaha(config-router)# bgp default ipv4-unicast disable
    Yamaha(config-router)# address-family ipv6
    Yamaha(config-router-af)# neighbor 1000::250 activate
    Yamaha(config-router-af)# exit-address-family

6-1-4. IPv4経路とIPv6経路の両方を交換する。

  1. BGPで通知するIPv4経路を明示的に指定する場合、BGPモードでnetworkコマンドを使用します。

    Yamaha(config-router)# network 172.16.0.0/24
  2. BGPで通知するIPv6経路を明示的に指定する場合、BGP IPv6アドレスファミリモードでnetworkコマンドを使用します。

    Yamaha(config-router)# address-family ipv6
    Yamaha(config-router-af)# network 1001::/64
    Yamaha(config-router)# exit-address-family
  3. BGPでIPv4 Connected経路やIPv4静的経路を通知する場合や、RIPv2やOSPFv2により取得したIPv4経路を通知する場合には、BGPモードでredistributeコマンドを使用して通知する経路の種別を指定します。

    Yamaha(config-router)# redistribute connected
    Yamaha(config-router)# redistribute static
    Yamaha(config-router)# redistribute rip
    Yamaha(config-router)# redistribute ospf 1
  4. BGPでIPv6 Connected経路やIPv6静的経路を通知する場合や、RIPngやOSPFv3により取得したIPv6経路を通知する場合には、BGP IPv6アドレスファミリモードでredistributeコマンドを使用して通知する経路の種別を指定します。

    Yamaha(config-router)# address-family ipv6
    Yamaha(config-router-af)# redistribute connected
    Yamaha(config-router-af)# redistribute static
    Yamaha(config-router-af)# redistribute rip
    Yamaha(config-router-af)# redistribute ospf 1
    Yamaha(config-router)# exit-address-family
  5. 通知する経路の設定などが完了したら、neighbor remote-asコマンドでBGPピアを指定します。
    neighbor remote-asコマンドでは、BGPピアのIPアドレスおよびBGPピアが所属するAS番号を指定します。

    Yamaha(config-router)# neighbor [BGPピアのIPアドレス(IPv4 or IPv6)] remote-as 65000

    neighbor remote-asコマンドを設定しBGPピアとのセッションが確立すると、即座にIPv4経路の交換が行われます。
    セッション確立直後のIPv4経路交換を行わないためには、bgp default ipv4-unicastコマンドを使用します。
    bgp default ipv4-unicast disableが設定されている場合、BGPモードでneighbor activateコマンドを設定することでIPv4経路の交換が開始されます。

    Yamaha(config-router)# bgp default ipv4-unicast disable
    Yamaha(config-router)# neighbor [BGPピアのIPアドレス] remote-as 65000
    Yamaha(config-router)# neighbor [BGPピアのIPアドレス] activate

    neighbor remote-asコマンドを設定しBGPピアとのセッションが確立しても、IPv6経路は即座に交換が行われません。
    IPv6経路の交換を開始するには、BGP IPv6アドレスファミリモードでneighbor activateコマンドを設定します。

    Yamaha(config-router)# address-family ipv6
    Yamaha(config-router-af)# neighbor neighbor [BGPピアのIPアドレス] activate
    Yamaha(config-router-af)# exit-address-family

6.2. 経路情報の集約

BGPでは、aggregate-addressコマンドで指定したプレフィックスに含まれる複数の経路情報を集約してBGPピアに通知することができます。
例えば、aggregate-addressコマンドにより172.16.0.0/16を設定しておくことで、172.16.1.0/24宛の経路情報と172.16.2.0/24宛の経路情報があったときに172.16.0.0/16宛の経路情報として集約してBGPピアに通知します。

Yamaha(config-router)# aggregate-address 172.16.0.0/16

aggregate-addressコマンドでsummary-onlyキーワードを指定しない場合、集約前の個別経路と集約後の経路の両方がBGPピアに通知されます。
集約後の経路のみBGPピアに通知する場合はsummary-onlyキーワードを指定してください。

Yamaha(config-router)# aggregate-address 172.16.0.0/16 summary-only

IPv6経路を集約する場合には、BGP IPv6アドレスファミリモードでaggregate-addressを設定します。

Yamaha(config-router)# address-family ipv6
Yamaha(config-router-af)# aggregate-address 1000::/64 summary-only
Yamaha(config-router-af)# exit-address-family

6.3. 経路情報のフィルタリング

BGPピアへ通知する経路情報およびBGPピアから受け取る経路情報のフィルタリングには以下の方法があります。

  • BGPピアへ通知する経路情報のフィルタリング
    以下の順番でフィルタリングが動作します。

    1. ASパスアクセスリストによるOUT方向のフィルタリング
      ASパスアクセスリストを使用することで、UPDATEメッセージを送信するときに経路情報のAS_PATH属性に対してフィルタリングを行うことができます。
      ASパスアクセスリストはip as-path access-listコマンドで定義し、neighbor filter-listコマンドでBGPピアに適用します。
      以下の例では、自機が所属するASで生成された経路情報のみをBGPピアである192.168.100.250と1000::250に通知します。

      Yamaha# configure terminal
      Yamaha(config)# ip as-path access-list 1 permit ^$
      Yamaha(config)# router bgp 65000
      Yamaha(config-router)# neighbor 192.168.100.250 filter-list 1 out
      Yamaha(config-router)# address-family ipv6
      Yamaha(config-router-af)# neighbor 1000::250 filter-list 1 out
    2. ディストリビューションリストによるOUT方向のフィルタリング
      ディストリビューションリストを使用することで、UPDATEメッセージを送信するときに特定の宛先の経路情報に対してフィルタリングを行うことができます。
      ディストリビューションリストはaccess-listコマンドでフィルターを定義し、neighbor distribute-listコマンドでBGPピアに適用します。
      IPv6経路情報に対してフィルタリングする場合は、BGP IPv6アドレスファミリモードでneighbor distribute-listコマンドを使用します。
      以下の例では、172.16.10.0/24と172.16.20.0/24宛の経路情報を除くすべてのIPv4経路情報をBGPピアである192.168.100.250に通知します。

      Yamaha# configure terminal
      Yamaha(config)# access-list 1 deny 172.16.10.0 0.0.0.255
      Yamaha(config)# access-list 1 deny 172.16.20.0 0.0.0.255
      Yamaha(config)# access-list 1 permit any
      Yamaha(config)# router bgp 65000
      Yamaha(config-router)# neighbor 192.168.100.250 distribute-list 1 out
  • BGPピアから受け取る経路情報のフィルタリング
    以下の順番でフィルタリングが動作します。

    1. ASパスアクセスリストによるIN方向のフィルタリング
      ASパスアクセスリストを使用することで、UPDATEメッセージを受信するときに経路情報のAS_PATH属性に対してフィルタリングを行うことができます。
      ASパスアクセスリストはip as-path access-listコマンドで定義し、neighbor filter-listコマンドでBGPピアに適用します。
      以下の例では、AS番号65100で生成された経路を破棄し、それ以外の経路情報をBGPピアである192.168.100.250と1000::250から受け入れます。

      Yamaha# configure terminal
      Yamaha(config)# ip as-path access-list 1 deny _65100$
      Yamaha(config)# ip as-path access-list 1 permit .*
      Yamaha(config)# router bgp 65000
      Yamaha(config-router)# neighbor 192.168.100.250 filter-list 1 in
      Yamaha(config-router)# address-family ipv6
      Yamaha(config-router-af)# neighbor 1000::250 filter-list 1 in
    2. ディストリビューションリストによるIN方向のフィルタリング
      ディストリビューションリストを使用することで、UPDATEメッセージを受信するときに特定の宛先の経路情報に対してフィルタリングを行うことができます。
      ディストリビューションリストはaccess-listコマンドでフィルターを定義し、neighbor distribute-listコマンドでBGPピアに適用します。
      IPv6経路情報に対してフィルタリングする場合は、BGP IPv6アドレスファミリモードでneighbor distribute-listコマンドを使用します。
      以下の例では、172.16.10.0/24と172.16.20.0/24宛の経路情報を除くすべてのIPv4経路情報をBGPピアである192.168.100.250から受け入れます。

      Yamaha# configure terminal
      Yamaha(config)# access-list 1 deny 172.16.10.0 0.0.0.255
      Yamaha(config)# access-list 1 deny 172.16.20.0 0.0.0.255
      Yamaha(config)# access-list 1 permit any
      Yamaha(config)# router bgp 65000
      Yamaha(config-router)# neighbor 192.168.100.250 distribute-list 1 in

6.4. TCP MD5認証

本機では、TCP MD5認証によるBGPのセッションの保護を行うことができます。
TCP MD5認証の設定にはneighbor passwordコマンドを使用します。
BGPピアとなる対向機器でも同様のパスワードを設定する必要があります。パスワードが異なる場合には、BGPセッションが確立しません。

Yamaha(config)# router bgp 65000
Yamaha(config-router)# neighbor 192.168.100.250 password PASSWORD4
Yamaha(config-router)# neighbor 1000::250 password PASSWORD6

6.5. ルートリフレクション

AS内では、BGPを使用するすべての機器とiBGPピアとしてセッションを確立する必要がありますが、iBGPピアが多くなると内部リソースや保守作業への影響が大きくなります。
そのような場合には、ルートリフレクションを使用することで少ないセッション数で効率的にBGPを利用することができます。

  • AS内にBGPを使用する機器が5台存在すると、iBGPのセッションが合計で10セッションが必要になります。
    image

  • ルートリフレクションを利用することで、iBGPのセッションが合計で4セッションとなります。
    image

ルートリフレクションでは、クライアントがルートリフレクターに経路を通知すると、ルートリフレクターが他のクライアントに経路を再通知します。
こうすることですべてのiBGPピアとフルメッシュでセッションを確立せずに経路情報を共有することができます。
ルートリフレクターとクライアントをまとめて クラスター と呼び、クラスターに参加していないiBGPピアから見たときに1つのクラスターが1つのiBGPピアとして認識されます。

ルートリフレクションの設定は、ルートリフレクターになる機器での設定で、クライアントになる機器のIPアドレスに対してneighbor route-reflector-clientコマンドを使用します。クライアントになる機器では特に設定は必要ありません。
クラスターIDにはルートリフレクターのルーターIDが使用されますが、明示的に設定する場合にはbgp cluster-idコマンドを使用します。
以下の例では、AS番号65000に所属する192.168.100.240がルートリフレクターになり、192.168.100.250~253の4機器がクライアントになります。

  • ルートリフレクターでの設定

    Yamaha(config)# router bgp 65000
    Yamaha(config-router)# bgp cluster-id 192.168.100.240
    Yamaha(config-router)# neighbor 192.168.100.250 remote-as 65000
    Yamaha(config-router)# neighbor 192.168.100.250 route-reflector-client
    Yamaha(config-router)# neighbor 192.168.100.251 remote-as 65000
    Yamaha(config-router)# neighbor 192.168.100.251 route-reflector-client
    Yamaha(config-router)# neighbor 192.168.100.252 remote-as 65000
    Yamaha(config-router)# neighbor 192.168.100.252 route-reflector-client
    Yamaha(config-router)# neighbor 192.168.100.253 remote-as 65000
    Yamaha(config-router)# neighbor 192.168.100.253 route-reflector-client
  • クライアントでの設定

    Yamaha(config)# router bgp 65000
    Yamaha(config-router)# neighbor 192.168.100.240 remote-as 65000

ルートリフレクションでは、1つのクラスター内に複数のルートリフレクターを配置することでルートリフレクターの冗長化を行うことができます。
冗長化を行うことで1台のルートリフレクターが故障などで動作しなくなった場合でもクラスターを維持できますが、その分セッション数は増加します。
image

1つのクラスター内に複数のルートリフレクターを配置する場合には、ルートリフレクター同士で共通のクラスターIDを指定する必要があります。
すべてのルートリフレクターでbgp cluster-idコマンドを使用して共通のクラスターIDを設定してください。
以下の例では、AS番号65000に所属する192.168.100.240と192.168.100.241がルートリフレクターになり、192.168.100.250~253の4機器がクライアントになります。

  • ルートリフレクターAでの設定

    Yamaha(config)# router bgp 65000
    Yamaha(config-router)# bgp cluster-id 192.168.100.240
    Yamaha(config-router)# neighbor 192.168.100.250 remote-as 65000
    Yamaha(config-router)# neighbor 192.168.100.250 route-reflector-client
    Yamaha(config-router)# neighbor 192.168.100.251 remote-as 65000
    Yamaha(config-router)# neighbor 192.168.100.251 route-reflector-client
    Yamaha(config-router)# neighbor 192.168.100.252 remote-as 65000
    Yamaha(config-router)# neighbor 192.168.100.252 route-reflector-client
  • ルートリフレクターBでの設定

    Yamaha(config)# router bgp 65000
    Yamaha(config-router)# bgp cluster-id 192.168.100.240
    Yamaha(config-router)# neighbor 192.168.100.250 remote-as 65000
    Yamaha(config-router)# neighbor 192.168.100.250 route-reflector-client
    Yamaha(config-router)# neighbor 192.168.100.251 remote-as 65000
    Yamaha(config-router)# neighbor 192.168.100.251 route-reflector-client
    Yamaha(config-router)# neighbor 192.168.100.252 remote-as 65000
    Yamaha(config-router)# neighbor 192.168.100.252 route-reflector-client
  • クライアントでの設定

    Yamaha(config)# router bgp 65000
    Yamaha(config-router)# neighbor 192.168.100.240 remote-as 65000
    Yamaha(config-router)# neighbor 192.168.100.241 remote-as 65000

6.6. ASコンフェデレーション

ASコンフェデレーションは、ルートリフレクションと同じくiBGPのセッション数を減らすための仕組みです。
1つのASの中でSub ASを定義してiBGPピアをグループ化することによりセッション数を減らすことができます。
ただし、Sub ASの中ではフルメッシュでBGPセッションを確立する必要があり、Sub AS番号としてプライベートAS番号(64512~65535)を使用します。

image

上記の構成を構築する場合、以下の設定を行います。

  • 条件:

    • SW1 : 192.168.100.240/24

    • SW2 : 192.168.100.241/24

    • SW3 : 192.168.100.242/24

    • SW4 : 192.168.100.243/24

    • SW5 : 192.168.100.244/24

    • SW6 : 192.168.100.250/24

  • SW1 (192.168.100.240/24)の設定

    Yamaha(config)# router bgp 65001
    Yamaha(config-router)# bgp confederation identifier 65000
    Yamaha(config-router)# neighbor 192.168.100.241 remote-as 65001      ## SW2とiBGPを確立
    Yamaha(config-router)# neighbor 192.168.100.242 remote-as 65001      ## SW3とiBGPを確立
  • SW2 (192.168.100.241/24)の設定

    Yamaha(config)# router bgp 65001
    Yamaha(config-router)# bgp confederation identifier 65000
    Yamaha(config-router)# bgp confederation peers 65002
    Yamaha(config-router)# neighbor 192.168.100.240 remote-as 65001      ## SW1とiBGPを確立
    Yamaha(config-router)# neighbor 192.168.100.242 remote-as 65001      ## SW3とiBGPを確立
    Yamaha(config-router)# neighbor 192.168.100.243 remote-as 65002      ## SW4とeBGPを確立
    Yamaha(config-router)# neighbor 192.168.100.250 remote-as 65010      ## SW6とeBGPを確立
  • SW3 (192.168.100.242/24)の設定

    Yamaha(config)# router bgp 65001
    Yamaha(config-router)# bgp confederation identifier 65000
    Yamaha(config-router)# neighbor 192.168.100.240 remote-as 65001      ## SW1とiBGPを確立
    Yamaha(config-router)# neighbor 192.168.100.241 remote-as 65001      ## SW2とiBGPを確立
  • SW4 (192.168.100.243/24)の設定

    Yamaha(config)# router bgp 65002
    Yamaha(config-router)# bgp confederation identifier 65000
    Yamaha(config-router)# bgp confederation peers 65001
    Yamaha(config-router)# neighbor 192.168.100.241 remote-as 65001      ## SW2とeBGPを確立
    Yamaha(config-router)# neighbor 192.168.100.244 remote-as 65002      ## SW5とiBGPを確立
  • SW5 (192.168.100.244/24)の設定

    Yamaha(config)# router bgp 65002
    Yamaha(config-router)# bgp confederation identifier 65000
    Yamaha(config-router)# neighbor 192.168.100.243 remote-as 65002      ## SW4とiBGPを確立
  • SW6 (192.168.100.250/24)の設定

    Yamaha(config)# router bgp 65010
    Yamaha(config-router)# neighbor 192.168.100.241 remote-as 65000      ## SW2とeBGPを確立

6.7. BGPピアグループ

複数のBGPピアに対して経路情報のフィルタリングなど共通の設定を適用する場合、BGPピアをグループ化してそのグループに設定を行うことで複数のBGPピアに対してまとめて設定を適用することができます。
BGPピアグループの設定手順は以下のとおりです。

  1. BGPピアグループの作成
    neighbor peer-groupコマンドを使用して任意の名前のBGPピアグループを作成します。

    Yamaha(config)# router bgp 65000
    Yamaha(config-router)# neighbor SAMPLE_GROUP peer-group
  2. BGPピアグループが所属するAS番号の指定
    neighbor remote-asコマンドを使用してBGPピアグループが所属するAS番号を指定します。

    Yamaha(config-router)# neighbor SAMPLE_GROUP remote-as 65010
  3. BGPピアグループの経路交換の有効化
    neighbor activateコマンドを使用してBGPピアグループの経路交換を有効化します。
    IPv6経路を交換する場合には、BGP IPv6アドレスファミリモードでの経路交換の有効化が必要です。

    Yamaha(config-router)# address-family ipv6
    Yamaha(config-router-af)# neighbor SAMPLE_GROUP activate
    Yamaha(config-router-af)# exit-address-family
  4. BGPピアグループに適用したい設定の追加
    経路情報のフィルタリングなどBGPピアグループに適用したい設定を行います。
    例として、BGPピアから受け取る経路の中で172.16.10.0/24と172.16.20.0/24宛の経路を破棄し、それ以外の経路を受け取るようにします。

    Yamaha(config-router)# exit
    Yamaha(config)# access-list 1 deny 172.16.10.0 0.0.0.255
    Yamaha(config)# access-list 1 deny 172.16.20.0 0.0.0.255
    Yamaha(config)# access-list 1 permit any
    Yamaha(config)# router bgp 65000
    Yamaha(config-router)# neighbor SAMPLE_GROUP distribute-list 1 in
  5. BGPピアをBGPピアグループに登録
    neighbor peer-groupコマンドを使用してBGPピアをBGPピアグループに登録します。
    IPv4 BGPピアを登録する場合はBGPモードのneighbor peer-groupコマンドを使用します。
    IPv6 BGPピアを登録する場合はBGP IPv6アドレスファミリモードのneighbor peer-groupコマンドを使用します。

    Yamaha(config-router)# neighbor 192.168.100.241 peer-group SAMPLE_GROUP
    Yamaha(config-router)# neighbor 192.168.100.242 peer-group SAMPLE_GROUP
    Yamaha(config-router)# address-family ipv6
    Yamaha(config-router-af)# neighbor 1000::241 peer-group SAMPLE_GROUP
    Yamaha(config-router-af)# neighbor 1000::242 peer-group SAMPLE_GROUP

6.8. ネクストホップトリガー

BGPでは、bgp scan-timeコマンドで指定された間隔でルーティングテーブルを定期的にチェックし、経路情報に変更があるとBGP経路表にその変更を反映させます。よってルーティングテーブルが変更されてからBGPでその変更後の経路が通知されるまでの間にはある程度の遅延が発生します。定期的にチェックする間隔を短くすることも可能ですが、ネクストホップトリガーを使用することでルーティングテーブルの変更をトリガーとしてBGP経路表の即時更新を行うことができます。
ただし、ルーティングテーブルが安定せず短時間に頻繁な経路更新が発生するような状況では、それらすべての経路更新がBGP経路表に反映されてBGPピアに通知されてしまうため注意が必要です。本機では、ネクストホップトリガーが有効な場合、ルーティングテーブルが変更されてからbgp nexthop-triger delayコマンドで指定した時間が経過した時点でBGP経路表に変更を反映させることで頻繁な経路変更の通知を抑制します。また、短時間に頻繁な経路更新が発生した場合には、ネクストホップトリガーが一時的に無効になります。
ネクストホップトリガーは、初期状態では無効でありbgp nexthop-triggerコマンドで有効化することができます。

Yamaha(config)# bgp nexthop-trigger enable

6.9. ルートマップを使用した経路の属性値操作

BGPでは、BGPピアと交換する経路情報に様々な属性値を付与することができます。この属性値を操作するためにルートマップを使用します。BGPピアから受信した経路情報の属性値と、BGPヒアに送信する経路情報の属性値を個別に操作することができます。
BGP経路情報の属性値操作の設定方法は以下のとおりです。

  1. ルートマップの定義
    route-map コマンドでルートマップを定義します。

    Yamaha(config)# route-map 1
  2. 適用条件の設定
    match から始まるコマンドを使用して属性値を変更する対象となる経路情報の条件を設定します。
    MED値が10000の経路情報を対象とする場合の設定は以下のとおりです。

    Yamaha(config-route-map)# match metric 10000
  3. 処理内容の設定
    set から始まるコマンドを使用して変更する属性値とその値を設定します。
    経路情報にのAS_PATH属性の先頭に 65001, 65002 を追加する場合の設定は以下のとおりです。

    Yamaha(config-route-map)# set as-path prepend 65001 65002
  4. 対象とするBGPピアの指定
    BGPモードに遷移して任意のBGPピアに対して定義したルートマップを紐づけます。
    IPアドレスが192.168.100.250のBGPピアから受信した経路情報に対してルートマップで定義したルールを適用する場合の設定は以下のとおりです。

    Yamaha(config-route-map)# exit
    Yamaha(config)# router bgp 65000
    Yamaha(config-router)# neighbor 192.168.100.250 remote-as 65000
    Yamaha(config-router)# neighbor 192.168.100.250 route-map 1 in

6.10. 設定・状態の確認方法

IPv4 BGP経路表を確認するには、show ip bgpコマンドを使用します。

Yamaha# show ip bgp
BGP table version is 3193, local router ID is 192.168.100.241
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
              l - labeled, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 33.33.33.0/24    192.168.100.33                     32768 ?
*> 44.44.44.0/24    192.168.100.44                     32768 ?

Number of prefixes 2

IPv6 BGP経路表を確認するには、show ipv6 bgpコマンドを使用します。

Yamaha# show bgp ipv6
BGP table version is 3196, local router ID is 192.168.100.240
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
              l - labeled, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

    Network          Next Hop            Metric    LocPrf         Weight Path
*>   c::/64           1000::c              0        100          32768    ?
*>   d::/64           1000::d              0        100          32768    ?
*>i  e::/64           1000::242(fe80::ae44:f2ff:fea2:88bc)
                                           0        100          0        ?
*>i  f::/64           1000::242(fe80::ae44:f2ff:fea2:88bc)
                                           0        100          0        ?

Total number of prefixes 4

BGPピアの情報を確認するには、show ip bgp neighborコマンドを使用します。

Yamaha# show ip bgp neighbors
BGP neighbor is 192.168.100.242, remote AS 20000, local AS 20000, internal link
  BGP version 4, remote router ID 192.168.100.242
  BGP state = Established, up for 2d05h19m
  Last read 2d05h19m, hold time is 90, keepalive interval is 30 seconds
  Neighbor capabilities:
    Route refresh: advertised and received (old and new)
    Address family IPv6 Unicast: advertised and received
  Received 6488 messages, 2 notifications, 0 in queue
  Sent 6500 messages, 21 notifications, 0 in queue
  Route refresh request: received 0, sent 0
  Minimum time between advertisement runs is 5 seconds
 For address family: IPv6 Unicast
  BGP table version 3202, neighbor version 3202
  Index 2, Offset 0, Mask 0x4
  Community attribute sent to this neighbor (both)
  2 accepted prefixes
  2 announced prefixes

 Connections established 5; dropped 4
Local host: 192.168.100.240, Local port: 40635
Foreign host: 192.168.100.242, Foreign port: 179
Nexthop: 192.168.100.240
Nexthop global: 1000::240
Nexthop local: fe80::ae44:f2ff:fe84:efb0
BGP connection: non shared network
Last Reset: 2d05h22m, due to BGP Notification received
Notification Error Message: (Cease/Administratively Shutdown.)

6.11. BGPセッションの切断とリセット

clear ip bgpコマンド、またはclear ipv6 bgpコマンドを使用することで、BGPピアとのセッションのリセットを行うことができます。

すべてのIPv4 BGPピアとのセッションをリセットする。

Yamaha# clear ip bgp *

inキーワード、またはoutキーワードを指定することでBGPピアとのセッションを保ったまま経路情報だけをリセットすることができます。

Yamaha# clear ip bgp * in

特定のBGPピアとのセッションを一時的に切断したままにしておくには、neighbor shutdownコマンドを使用します。

Yamaha(config-router)# neighbor 192.168.100.250 shutdown
Yamaha(config-router)# neighbor 1000::250 shutdown

7. 注意事項

  1. スタック有効時は、以下の制限があります。

    • IPv6アドレスを使用したBGPピアの設定はできません。

    • IPv6経路に関する設定はできません。

  2. ヤマハルーターとのiBGPには対応していません。