公開:

BGP(Border Gateway Protocol)とは?意味をわかりやすく簡単に解説

text: XEXEQ編集部


BGP(Border Gateway Protocol)とは

BGP(Border Gateway Protocol)はインターネット上で自律システム(AS)間のルーティング情報を交換するためのプロトコルです。BGPはインターネットの中核となるプロトコルの1つであり、インターネットの安定性と拡張性を支えています。

BGPはASを識別するための番号(ASN)を使用し、ASN間でルーティング情報を交換します。各ASは自身が管理するネットワークの情報をBGPを介して他のASに通知し、他のASから受信した情報を基にルーティングテーブルを構築します。

BGPはベクトル型のルーティングプロトコルであり、パスベクトルアルゴリズムを使用してルーティング情報を交換します。パスベクトルアルゴリズムでは各ASは宛先ネットワークへの最適なパスを決定するために、ASパスの長さや各ASの設定に基づいて経路を選択します。

BGPには内部BGP(iBGP)と外部BGP(eBGP)の2種類があります。iBGPは同一AS内でルーティング情報を交換するために使用され、eBGPは異なるAS間でルーティング情報を交換するために使用されます。

BGPは高度な設定オプションを提供しており、ネットワーク管理者はルーティングポリシーを柔軟に制御できます。例えば、特定のASからの経路を優先したり、特定のASを経由しないようにルーティングを設定したりすることが可能です。

BGPの動作原理と基本概念

BGPの動作原理と基本概念に関して、以下3つを簡単に解説していきます。

  • BGPピアリングとルーティング情報の交換
  • BGPメッセージタイプとその役割
  • BGPルーティングテーブルとベストパス選択

BGPピアリングとルーティング情報の交換

BGPピアリングは2つのBGPルーター間で確立される TCP セッション(ポート179)のことを指します。BGPルーターはピアリングを確立することで、ルーティング情報を交換します。

ピアリングが確立されると、BGPルーターは自身が管理するネットワークの情報を含むBGPアップデートメッセージを送信します。受信側のBGPルーターは受信した情報を基にルーティングテーブルを更新し、必要に応じて他のBGPピアにアップデートメッセージを転送します。

BGPルーターは定期的にキープアライブメッセージを交換することで、ピアリングの状態を維持します。キープアライブメッセージが一定時間受信されない場合、BGPセッションが切断されたとみなされます。

BGPメッセージタイプとその役割

BGPは以下の4種類のメッセージタイプを使用してルーティング情報を交換します。それぞれのメッセージタイプには固有の役割があります。

1. OPEN メッセージ:BGPピアリングを確立するために使用されます。BGPバージョン、ASN、キープアライブタイマー、ホールドタイマーなどのパラメータを含みます。

2. UPDATE メッセージ:ルーティング情報を交換するために使用されます。宛先ネットワークのプレフィックス、ASパス、NEXTHOPなどの情報を含みます。ルーティングテーブルの更新や、不要になった経路の撤回にも使用されます。

BGPルーティングテーブルとベストパス選択

BGPルーターは受信したルーティング情報を基にBGPルーティングテーブルを構築します。BGPルーティングテーブルには宛先ネットワークごとに複数の経路情報が格納されることがあります。

BGPルーターはベストパス選択アルゴリズムを使用して、宛先ネットワークへの最適な経路を決定します。ベストパス選択ではASパスの長さ、ローカル・プリファレンス、MED(Multi-Exit Discriminator)、IGP(Interior Gateway Protocol)メトリックなど、複数の要素が考慮されます。

ベストパスに選択された経路はルーティングテーブルに登録され、パケット転送に使用されます。また、ベストパスは他のBGPピアにアドバタイズされ、ネットワーク全体のルーティング情報の更新に寄与します。

BGPの設定とルーティングポリシー

BGPの設定とルーティングポリシーに関して、以下3つを簡単に解説していきます。

  • BGPピアリングの設定方法
  • BGPフィルタリングとルートマップ
  • BGPコミュニティとその活用方法

BGPピアリングの設定方法

BGPピアリングを設定するにはBGPルーターの設定ファイルにピアリング情報を記述する必要があります。設定ファイルにはピアのIPアドレス、ASN、ピアリングに使用するインターフェイスなどを指定します。

BGPピアリングの設定例を以下に示します。この例ではルーターAとルーターBの間でeBGPピアリングを確立しています。


Router A:
router bgp 65001
neighbor 192.0.2.2 remote-as 65002

Router B:
router bgp 65002
neighbor 192.0.2.1 remote-as 65001

設定ファイルを適用した後、BGPルーターは指定されたピアとのTCPセッションを確立し、BGPメッセージの交換を開始します。

BGPフィルタリングとルートマップ

BGPフィルタリングとルートマップはBGPルーターが送受信するルーティング情報を制御するために使用されます。フィルタリングを使用することで、特定のプレフィックスやASパスを持つ経路の送受信を許可または拒否できます。

ルートマップはより柔軟なルーティングポリシーを実現するために使用されます。ルートマップでは複数の条件を組み合わせて経路の属性を変更したり、経路を許可または拒否したりすることができます。

以下はBGPフィルタリングとルートマップの設定例です。この例ではプレフィックスリストを使用して、特定のプレフィックスを持つ経路のみを受信しています。


ip prefix-list ALLOWED_PREFIXES seq 5 permit 203.0.113.0/24

router bgp 65001
neighbor 192.0.2.2 prefix-list ALLOWED_PREFIXES in

BGPコミュニティとその活用方法

BGPコミュニティはBGP経路に付加される属性の一つで、経路の分類や制御に使用されます。コミュニティ値は32ビットの整数値で表現され、ネットワーク管理者が自由に定義できます。

コミュニティを使用することで、特定の経路に対してルーティングポリシーを適用したり、経路の優先度を制御したりすることができます。例えば、特定のコミュニティ値を持つ経路に対して、ローカル・プリファレンスを設定したり、特定のASへの転送を制限したりすることが可能です。

以下はBGPコミュニティを使用したルーティングポリシーの設定例です。この例ではコミュニティ値65001:1000を持つ経路に対して、ローカル・プリファレンスを150に設定しています。


ip community-list 1 permit 65001:1000

route-map SET_LP permit 10
match community 1
set local-preference 150

router bgp 65001
neighbor 192.0.2.2 route-map SET_LP in

BGPの拡張機能とセキュリティ対策

BGPの拡張機能とセキュリティ対策に関して、以下3つを簡単に解説していきます。

  • BGP拡張コミュニティとその活用事例
  • BGPマルチプロトコル拡張とVPNへの応用
  • BGPセキュリティ対策(RPKI、BGPSEC)

BGP拡張コミュニティとその活用事例

BGP拡張コミュニティは標準コミュニティの拡張版で、より柔軟なルーティングポリシーの実現を可能にします。拡張コミュニティは64ビットの値で表現され、タイプ(Type)とサブタイプ(Sub-Type)の組み合わせで定義されます。

拡張コミュニティを使用することで、VPN(Virtual Private Network)の識別、ルーティングポリシーの制御、QoS(Quality of Service)の設定など、様々な用途に応用できます。例えば、Route Target拡張コミュニティを使用して、VPNの経路交換を制御したり、Site of Origin拡張コミュニティを使用して、経路の発信元を識別したりすることが可能です。

以下はRoute Target拡張コミュニティを使用したVPN経路交換の設定例です。この例ではVRF(Virtual Routing and Forwarding)インスタンス「VPN_A」に対して、Route Targetを設定しています。


ip vrf VPN_A
rd 65001:100
route-target export 65001:100
route-target import 65001:100

router bgp 65001
address-family ipv4 vrf VPN_A
neighbor 192.0.2.2 activate

BGPマルチプロトコル拡張とVPNへの応用

BGPマルチプロトコル拡張はBGPがIPv4以外のプロトコルやアドレスファミリをサポートするための拡張機能です。マルチプロトコル拡張を使用することで、IPv6やVPNv4/VPNv6などの経路情報を交換できます。

VPNへの応用ではBGPマルチプロトコル拡張が重要な役割を果たします。例えば、VPNv4アドレスファミリを使用することで、VPN経路をBGPで交換し、VPN間の通信を実現できます。また、VPNv6アドレスファミリを使用することで、IPv6ベースのVPNを構築することも可能です。

以下はBGPマルチプロトコル拡張を使用したVPNv4経路交換の設定例です。この例ではVPNv4アドレスファミリを有効化し、VRFインスタンス「VPN_A」に関連付けられたピアとの経路交換を設定しています。


router bgp 65001
address-family vpnv4
neighbor 192.0.2.2 activate
neighbor 192.0.2.2 send-community extended

address-family ipv4 vrf VPN_A
neighbor 192.0.2.3 remote-as 65002
neighbor 192.0.2.3 activate

BGPセキュリティ対策(RPKI、BGPSEC)

BGPはインターネットのルーティングを支える重要なプロトコルですが、セキュリティ上の脆弱性が存在します。BGPセキュリティ対策として、RPKI(Resource Public Key Infrastructure)とBGPSEC(BGP Security)が注目されています。

RPKIはIPアドレスとASNの所有権を証明するための公開鍵基盤です。RPKIを使用することで、BGPルーターは受信した経路情報の正当性を検証できます。これにより、不正な経路情報の注入や経路ハイジャックなどの攻撃を防ぐことができます。

BGPSECはBGPメッセージに電子署名を付加することで、経路情報の完全性と認証を実現するセキュリティ拡張です。BGPSECを使用することで、経路情報の改ざんや偽装を防止し、BGPの安全性を向上させることができます。ただし、BGPSECの導入にはすべてのBGPルーターでの対応が必要であり、現時点では広く普及するには至っていません。

RPKIとBGPSECの設定例を以下に示します。この例ではRPKIを使用して受信経路の検証を有効化し、BGPSECを使用して送信経路に電子署名を付加しています。


router bgp 65001
bgp rpki server tcp 192.0.2.100 port 32001 refresh 600

address-family ipv4
bgp origin-as validation enable

neighbor 192.0.2.2
address-family ipv4
bgpsec send

BGPのセキュリティを向上させるにはRPKIやBGPSECなどのセキュリティ対策の導入が重要です。ただし、これらの技術の普及にはインターネットコミュニティ全体での協力と合意形成が不可欠であり、長期的な取り組みが必要とされています。

BGPはインターネットの安定性と拡張性を支える重要なプロトコルですが、その設定と運用には高度な知識と経験が求められます。ネットワーク管理者はBGPの動作原理を理解し、適切なルーティングポリシーを設計・実装することで、組織のネットワークを最適化し、インターネット全体の安定性に寄与することができるのです。

「インターネット」に関するコラム一覧「インターネット」に関するニュース一覧
ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。