BGP の概要

トピック:

BGP とは

BGP は、明確に定義され、個別に管理されるネットワーク ドメインである自律システム (AS) 間でルーティング情報を伝達するために使用される、大規模ルーティング プロトコルです。BGP サポートは、SonicWALL セキュリティ装置がネットワークの AS の端点にある従来の BGP ルータの代わりをすることを考慮しています。現在の SonicWALL の BGP 実装は、ネットワークが 1 つの ISP をインターネット プロバイダとして使い、そのプロバイダへの接続が 1 つだけのシングルプロバイダ/シングルホーム環境に対して最も適しています。SonicWALL BGP はまた、ネットワークが 1 つの ISP を使っているが、そのプロバイダへの少数の異なるルートがあるシングルプロバイダ/マルチホーム環境のサポートも可能です。BGP は、SonicOS GUI の「ネットワーク > ルーティング」ページで有効にしてから、SonicOS のコマンド ライン インターフェース (CLI) を通じて完全に設定します。

以下の表に BGP ライセンス要件を示します。

 

表 171. BGP ライセンス要件

プラットフォーム

必要な追加ライセンス

SOHO W

N/A

TZ300/TZ300 W

N/A

TZ400/TZ400 W

SonicOS の拡張ライセンス

TZ500/TZ500 W

SonicOS の拡張ライセンス

TZ600

SonicOS の拡張ライセンス

NSA 2600

SonicOS の拡張ライセンス

NSA 3600

SonicOS の拡張ライセンス 01-SSC-7091

NSA 4600

なし (BGP のライセンスは含まれています)

NSA 5600

なし (BGP のライセンスは含まれています)

NSA 6600

なし (BGP のライセンスは含まれています)

SM 9200

なし (BGP のライセンスは含まれています)

SM 9400

なし (BGP のライセンスは含まれています)

SM 9600

なし (BGP のライセンスは含まれています)

補足:ライセンスは www.mysonicwall.com で購入できます。

背景情報

ルーティング プロトコルは、単にネットワーク上を伝送されるパケットではなく、個々のルータおよびルータ グループがネットワーク トポロジを検出し、まとめ、伝達するすべてのメカニズムで構成されます。ルーティング プロトコルは、指定されたとおりにそのプロトコルに従う各構成要素に応じて、異なる分散アルゴリズムを使用します。また、あるネットワーク ドメイン内のルートが、ネットワーク ノード間のリンクの状況の変化に合わせて動的に変化する場合に、最も役立ちます。

通常、ルーティング プロトコルは次の 2 つのデータベースとやりとりを行います。

Rouiting Information Base (RIB) - ルーティング プロトコル自体が必要とするすべてのルート情報を保存するために使用されます。
Forward Information Base (FIB) - 実際のパケット転送に使用されます。

RIB から選択される最適ルートを使用して、FIB が設定されます。各ルーティング プロトコルがルーティングの更新を受信すると、あるいは機器の接続が変更されると、RIB と FIB の両方が動的に変化します。

ルーティング プロトコルには次の 2 つの基本クラスがあります。

内部ゲートウェイ プロトコル (IGP) - 内部ゲートウェイ プロトコルは、1 つの AS の内部に存在するネットワーク内でルートを伝達するためのルーティング プロトコルです。IGP には 2 つの世代があります。第 1 世代は、距離ベクトル プロトコルで構成されています。第 2 世代は、リンク状態プロトコルで構成されています。距離ベクトル プロトコルは比較的単純ですが、多数のルータにスケーリングすると問題が発生します。リンク状態プロトコルはより複雑ですが、スケーリング機能に優れています。既存の距離ベクトル プロトコルは、内部ゲートウェイ ルーティング プロトコル (IGRP)、拡張内部ゲートウェイ ルーティング プロトコル (EIGRP)、ルーティング情報プロトコル (RIP)、および RIP の拡張バージョンである RIPv2 です。IGRP と EIGRP は、Cisco の独自仕様プロトコルです。現在使用されているリンク状態プロトコルは、オープン ショーテスト パス ファースト (OSPF) と、あまり使われていない中間システム間連携 (IS-IS) プロトコルです。

SonicOS は、ルーティングの最も一般的な内部ゲートウェイ プロトコルである OSPFv2 と RIPv1/v2 プロトコルの 2 つをサポートして、顧客が Dell SonicWALL 製品を IGP ネットワークで利用できるようにすると共に、従来のルータを別個に導入する追加コストを不要にしています。

外部ゲートウェイ プロトコル (EGP) - 標準のユビキタスな外部ゲートウェイ プロトコルは、BGP (正確には BGP4) です。P (正確には BGP4) です。BGP は、自律システム (AS) と呼ばれる明確に定義されたネットワーク ドメイン間でルーティング情報とポリシーを伝達する、大規模ルーティング プロトコルです。自律システムは、他の自律システムから独立して、個別に管理されるネットワーク ドメインです。BGP は、自律システム間でのルートおよびルート ポリシーの変換に使用されます。一般的に、ISP は BGP を利用して、顧客や他の ISP とのルートおよびルート ポリシーを変換します。

各自律システムには、16 ビットの番号が割り当てられています。IP アドレスと同様に、AS 番号はパブリックまたはプライベートです。パブリック AS 番号は限定的なリソースで、要素の数に基づいて配布されます。通常、大規模ネットワークを 2 つ以上の ISP にマルチホーム化している ISP 顧客はパブリック AS を持ちますが、より小規模な顧客は、ISP プロバイダが管理するプライベート AS を与えられます。

Dell SonicWALL 製品がエンタープライズレベルの要件をサポートするようになったのに伴い、Dell SonicWALL 製品を従来の BGP ルータの代わりに AS のエッジに配置したいと考える顧客もいます。

自律システム

各自律システムには、16 ビットの番号が割り当てられています。IP アドレスと同様に、AS 番号はパブリックまたはプライベートです。パブリック AS 番号は限定的なリソースで、要素の数に基づいて配布されます。通常、大規模ネットワークを 2 つ以上の ISP にマルチホーム化している ISP 顧客はパブリック AS を持ちますが、より小規模な顧客は、ISP プロバイダが管理するプライベート AS を与えられます。

BGP トポロジの種類

BGP は、非常に柔軟で複雑なルーティング プロトコルです。そのため、BGP ルータは、インターネット コア ルータ、中間 ISP ルータ、ISP 顧客構内設備 (CPE)、または小規模プライベート BGP ネットワーク内のルータなど、さまざまなトポロジ設定に配置できます。さまざまなトポロジに必要な BGP ルートの数は、コア ルータの 300,000 以上から、単一 ISP を使用し、AS 外部のすべての宛先に既定のルーティングを利用する ISP 顧客の 0 まで大きく異なります。一般に、ISP 顧客は、ISP から受信するルートの数にかかわらず、エッジ ルータ (CPE) から ISP に対して BGP を実行する必要があります。これによって、ISP 顧客は外部にどのネットワークを通知するかを制御できます。顧客が自身で所有していないネットワークまたはネットワーク統合を通知し、インターネット トラフィックがそのネットワークにブラックホールのように吸い込まれるという恐れは常にあります。実際には、ISP プロバイダは顧客からの不正な通知を注意深くフィルタリングしているので (BGP の強みの 1 つです)、このようなことはほとんど起こりません。

BGP ネットワークには、3 つの基本区分があります。

シングルプロバイダ/シングルホーム - ネットワークは単一の ISP (シングルプロバイダ) から単一のルート (シングルホーム) を受信します。ISP 顧客が ISP から受信するルートの数は、AS の性質によって異なります。インターネット プロバイダとして ISP を 1 つだけ使用し、そのプロバイダに対して単一の接続を持つ (シングルプロバイダ/シングルホーム) ISP 顧客は、ルートを受信する必要がありません。AS 外部宛てのすべてのトラフィックは、ISP に送信されます。このような顧客は、内部ネットワークの一部またはすべてを引き続き ISP に通知できます。
シングルプロバイダ/マルチホーム - ネットワークは単一の ISP (シングルプロバイダ) から複数のルート (マルチホーム) を受信します。単一の ISP を利用しているが、その ISP に対して複数の接続を持つ ISP 顧客は、各 ISP ゲートウェイで既定のルート (0.0.0.0/0) のみを受信できます。1 つの ISP 接続がダウンした場合、接続されている CPE ルータから内部ルータに送信された通知済みの既定のルートが取り消され、インターネット トラフィックは ISP への接続を持つ CPE ルータに流れるようになります。顧客への特定の接続がダウンした場合、顧客の内部ネットワークも各 CPE ルータ ゲートウェイで ISP に通知され、ISP は代替パスを使用できるようになります。
マルチプロバイダ/マルチホーム - 複数の ISP を使用する (マルチプロバイダ/マルチホーム) ISP 顧客には、ISP ごとに 1 つ以上の個別のゲートウェイ ルータがあります。この場合、顧客の AS はパブリック AS でなければなりません。また、トランジット AS あるいは非トランジット AS のどちらでも構いません。トランジット AS は、別の ISP から到達可能なネットワークを宛先とするトラフィックを、ある ISP から受信し、転送します (トラフィックの宛先は顧客の AS 内ではありません)。非トランジット AS は、その AS を宛先とするトラフィックのみを受信します。その他のトラフィックはすべて破棄されます。一般に、トランジット AS 内の BGP ルータは、各 ISP から完全 BGP ルート テーブルの大部分 (多くの場合はすべて) を受信します。

BGP を使用する理由

シングルプロバイダ/シングルホーム - 一般的には BGP の有力候補ではありませんが、BGP を使用すると ISP にネットワークを通知できます。シングルホーム ネットワークは RIR からパブリック AS を取得できません。
シングルプロバイダ/マルチホーム - 一般的に、RFC2270 の提案に従って、単一のプライベート AS (64512 ~ 65535) を使用して BGP のメリットを得つつ、パブリック ASN を維持するのに使用されます。
マルチプロバイダ/マルチホーム - 冗長性が高く、一般的には各 ISP に対して専用ルータを使用します。パブリック ASN が必要です。大量のメモリ フットプリントを使用します。

BGP の動作

BGP は、TCP ポート 179 を通信に使用します。BGP は、宛先に対するエンドツーエンドのパス記述を含む、パスベクトル プロトコルと見なされます。BGP 近隣は、内部 (iBGP) または外部 (eBGP) のどちらかにすることができます。

iBGP – 近隣者は同一 AS 内に存在します。
eBGP – 近隣者は別の AS 内に存在します。

パスは、さまざまなパス属性でタグ付けされた UPDATE メッセージで通知されます。AS_PATH と NEXT_HOP は、BGP UPDATE メッセージでルートのパスを記述する、最も重要な 2 つの属性です。

AS_PATH:ルートの送信元と送信先の AS を示します。以下の例では、AS_PATH は AS 7675 から AS 12345 宛てです。内部 BGP の場合、AS_PATH は送信元と送信先の両方に同一 AS を指定します。
NEXT_HOP:パスが到達する次のルータの IP アドレスを示します。AS 境界を越えて通知されるパスは、境界ルータの NEXT_HOP アドレスを継承します。BGP は、内部ルーティング プロトコルを使用して NEXT_HOP アドレスに到達します。
BGP の有限状態機械

BGP を定義した RFC 1771 には、以下の状態機械に関する BGP の動作が記述されています。図の下の表に、さまざまな状態に関する追加情報を示します。

図 70. BGP の有限状態機械

 

表 172. BGP の有限状態の説明

状態

説明

Idle

新しい BGP セッション確立後、または既存セッションのリセット後、Start イベントを待機中。エラーが発生した場合は、Idle 状態に戻ります。Start イベント後、BGP は初期化を行い、接続リトライ タイマーをリセットし、TCP 転送接続を開始し、接続をリッスンします。

接続

TCP 層が使用可能になると、OpenSent に遷移し、OPEN を送信します。TCP 層が存在しない場合は、Active に遷移します。接続リトライ タイマーが期限切れになった場合は、Connect のままで、タイマーをリセットし、転送接続を開始します。それ以外の場合は、Idle に戻ります。

Active

ピアとの TCP 接続の確立を試みます。成功した場合は、OpenSent に遷移し、OPEN を送信します。接続リトライが期限切れになった場合は、タイマーを再起動し、Connect に戻ります。また、別のピアによって接続をアクティブにリッスンします。その他のイベントが発生した場合は、Idle に戻ります。

Coonect から Active へのフラッピングは、TCP の再送やピアの到達不可能性など TCP 転送の問題があることを示します。

OpenSent

ピアからの OPEN メッセージを待機中。受信時に検証を行います。検証が失敗した場合は、NOTIFICATION を送信し、Idle に戻ります。成功した場合は、KEEPALIVE を送信し、キープアライブ タイマーをリセットします。保留時間をネゴシエートします。小さい値の方が採用されます。ゼロの場合は、保留タイマーとキープアライブ タイマーは再起動されません。

OpenConfirm

KEEPALIVE または NOTIFICATION を待機します。KEEPALIVE を受信した場合は、Established に遷移します。UPDATE または KEEPALIVE を受信した場合は、保留タイマーを再起動します (ネゴシエートされた保留時間がゼロの場合を除く)。NOTIFICATION を受信した場合は、Idle に遷移します。

定期的な KEEPALIVE メッセージが送信されます。TCP 層が遮断された場合は、Idle に遷移します。エラーが発生した場合は、エラー コードを含む NOTIFICATION を送信し、Idle に遷移します。

Established

セッションが使用可能になり、交換がピアで更新されます。NOTIFICATION を受信した場合は、Idle に遷移します。更新にエラーがないかチェックします。エラーがあった場合は、NOTIFICATION を送信し、Idle に遷移します。保留時間が期限切れになった場合は、TCP を切断します。

BGP メッセージ

BGP 通信には、以下の種類のメッセージが含まれます。

Open – TCP セッション確立後、BGP ピア間の最初のメッセージ。ASN、保留時間、およびマルチプロダクト拡張やルートリフレッシュ機能など、ピアリング セッションの確立に必要な情報が含まれます。
Update – このメッセージには、ルートの告知または取り消しなどのパス情報が含まれます。
Keepalive – TCP 層を使用可能な状態に保ち続け、生存性を通知するための定期的メッセージ。
Notification – BGP セッションを終了させるための要求。致命的ではない通知には、エラー コード "cease" が含まれます。サブコードで、さらに詳細な情報を提供します。
 

表 173. Notification のサブコード

サブコード

説明

1 – 到達したプレフィックスの最大数

設定されている "近隣の最大プレフィックス" 値を超えました

2 – 管理上のシャットダウン

セッションが管理上シャットダウンされました

3 – ピア未設定

ピアの設定が削除されました

4 – 管理上のリセット

セッションが管理上リセットされました

5 – 接続拒否

BGP セッションの拒否 (一時的な場合もあります)

6 – その他の設定変更

何らかの理由でセッションが管理上リセットされました

ルートリフレッシュ – ピアに対するルート再送の要求。
BGP 属性

BGP の UPDATE メッセージには、以下の属性を含めることができます。

 

表 174. BGP の UPDATE メッセージの属性

コード

1

ORIGIN

2

AS_PATH

3

NEXT_HOP

4

MULTI_EXIT_DISC

5

LOCAL_PREF

6

ATOMIC_AGGREGATE

7

AGGREGATOR

8

COMMUNITY

9

ORIGINATOR_ID

10

CLUSTER_LIST

11

DPA

12

ADVERTISER (履歴)

13

RCID_PATH / CLUSTER_ID (履歴)

14

MP_REACH_NLRI

15

MP_UNREACH_NLRI

16

EXTENDED COMMUNITIES

17

AS4_PATH

18

AS4_AGGREGATOR

19

SAFI 固有属性 (SSA) (廃止)

20

コネクタ属性 (廃止)

21

AS_PATHLIMIT (廃止)

22

PMSI_TUNNEL

23

トンネル カプセル化属性

24

トラフィック エンジニアリング

25

IPv6 アドレス固有の拡張コミュニティ

26

AIGP (一時的 - 2011 年 2 月 23 日に失効)

27 ~ 254

未定義

255

開発用に確保

BGP 属性の詳細については、次のリンクを参照してください:
http://www.iana.org/assignments/bgp-parameters/bgp-parameters.xml