内容

概要

前提条件

要件

使用するコンポーネント

表記法

背景説明

BGP ルータは完全な BGP ルーティングテーブルを受け取る

着信 AS_PATH フィルタリストで設定される BGP ルータ

メモリ関連の問題のトラブルシューティング

結論

関連情報

概要

このドキュメントでは、Border Gateway Protocol(BGP)ルータのメモリ要件を最小限に抑えて最適な状態にする方法について説明します。

前提条件

要件

このドキュメントに特有の要件はありません。

使用するコンポーネント

このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。

このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期（デフォルト）設定の状態から起動しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。

表記法

ドキュメント表記の詳細は、『シスコテクニカルティップスの表記法』を参照してください。

背景説明

このドキュメントでは、Border Gateway Protocol（BGP；ボーダーゲートウェイプロトコル）ルータのメモリ要件を軽減しながら、複数のInternet Service Provider（ISP；インターネットサービスプロバイダー）に接続された企業ネットワークで最適なルーティングを実現する方法について説明します。AS_PATHフィルタを使用して、ISPおよび直接接続された自律システムから発信されたルートのみを受け入れ、ISPから完全なBGPルーティングテーブルを受信しないようにすることができます。

このセクションでは、次のネットワーク ダイアグラムを例として使用します。この例では、ルータ1とルータ2で着信BGPアップデートをフィルタリングして、ISPのルートと直接接続された自律システムのルートを受け入れます。ルータ1は、ISP-Aおよび直接接続された自律システムC1のルートを受け入れます。同様に、ルータ2は、ISP-BおよびC2のルートを受け入れます。ISPとそのクライアント自律システムに属さない残りのネットワークは、エンタープライズルーティングポリシーに基づいて、ISP-AまたはISP-Bを指すデフォルトルートに従います。

ISP からの約 100,000 のルートを格納した完全な BGP ルーティング テーブルをルータ 1 で受信する場合のメモリ使用率と、ルータ 1 で着信 AS_PATH フィルタを適用した場合のメモリ使用率を比較観察できます。

注：フルフィードを構成するプレフィクスの実際の数は異なる場合があります。この文書では例の値が使用されています。BGP テーブル全体を構成するプレフィックスの数を確認するには、ルート サーバが役立ちます

注：すべてのツールおよび内部Webサイトは、登録されたシスコクライアント専用です。

BGP ルータは完全な BGP ルーティングテーブルを受け取る

これはルータ 1 の設定です。

ルータ 1

hostname R1

!

router bgp XX

no synchronization

neighbor 157.x.x.x remote-as 701

neighbor 157.x.x.x filter-list 80 out

!

ip as-path access-list 80 permit ^$

!

最後

show ip bgp summaryコマンドの出力は、ISP-A（BGPネイバー157.x.x.x）から98,410個のプレフィックスを受信したことを示しています。

R1#show ip bgp summary

BGP router identifier 65.yy.yy.y, local AS number XX

BGP table version is 611571, main routing table version 611571

98769 network entries and 146299 paths using 14847357 bytes of memory

23658 BGP path attribute entries using 1419480 bytes of memory

20439 BGP AS-PATH entries using 516828 bytes of memory

0 BGP route-map cache entries using 0 bytes of memory

5843 BGP filter-list cache entries using 70116 bytes of memory

BGP activity 534001/1904280 prefixes, 2371419/2225120 paths, scan interval 15 secs

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

165.yy.yy.a     4  6xx9   32962  826287   611571    0    0 01:56:13        1

165.yy.yy.b     4  6xx9   32961  855737   611571    0    0 01:56:12        1

165.yy.yy.c     4  6xx9  569699  865164   611571    1    0 01:55:39    47885

157.x.x.x       4   701 3139774  262532   611571    0    0 00:07:24    98410

show ip route summary コマンドの出力には、このルーティング テーブルに 80,132 の BGP ルートが組み込まれていることが示されています。

R1#show ip route summary

IP routing table name is Default-IP-Routing-Table(0)

Route Source    Networks    Subnets     Overhead    Memory (bytes)

connected       0           4           256         576

static          0           1           64          144

eigrp 6         0           5           768         720

bgp  XX         80132       18622       6320256     14326656

External: 87616 Internal: 11138 Local: 0

internal        854                                 994056

Total           80986       18632       6321344     15322152

次のコマンドでは BGP プロセスが RAM 内で占有するメモリ容量が示されます。

R1#show processes memory | begin BGP

PID TTY  Allocated      Freed    Holding    Getbufs    Retbufs Process

73   0  678981156   89816736   70811036          0          0 BGP Router

74   0    2968320  419750112      61388    1327064        832 BGP I/O

75   0          0    8270540       9824          0          0 BGP Scanner

70882248 Total BGP

77465892 Total all processes

BGPプロセスは約71 MBのメモリを使用します。

着信 AS_PATH フィルタリストで設定される BGP ルータ

この例では、着信フィルタリストを適用して、ISP-Aおよびその直接接続された自律システムによって発信されたルートを受け入れます。この例では、ISP-Aが外部BGP(eBGP)経由でデフォルトルート(0.0.0.0)をアドバタイズするため、フィルタリストを通過しないルートは、ISP-Aへのデフォルトルートに従います。フィルタリストの設定は次のとおりです。

ルータ 1

hostname R1

!

router bgp XX

no synchronization

.

neighbor 157.x.x.x remote-as 701

neighbor 157.x.x.x filter-list 80 out

neighbor 157.x.x.x filter-list 85 in

! – この行は、着信BGPアップデートをフィルタリングします。

!

ip as-path access-list 80 permit ^$

ip as-path access-list 85 permit ^701_[0-9]*$

!— AS_PATHフィルタリストは、ISPおよび直接接続された自律システムのルートをフィルタリングします。

!

最後

次のshow ip bgp summaryコマンド出力は、ISP-A(ネイバー157.xx.xx.x)から受信した31,667個のプレフィックスを示しています。

R1#show ip bgp summary

BGP router identifier 165.yy.yy.y, local AS number XX

BGP table version is 92465, main routing table version 92465

36575 network entries and 49095 paths using 5315195 bytes of memory

4015 BGP path attribute entries using 241860 bytes of memory

3259 BGP AS-PATH entries using 78360 bytes of memory

0 BGP route-map cache entries using 0 bytes of memory

4028 BGP filter-list cache entries using 48336 bytes of memory

BGP activity 1735069/3741144 prefixes, 4596920/4547825 paths, scan interval 15 secs

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

165.yy.yy.a     4  6319  226694 1787061    92465    0    0 17:31:04        1

165.yy.yy.b     4  6319  226814 1806986    92465    0    0 19:51:53        1

165.yy.yy.c     4  6319 1041069 1822703    92465    0    0 19:44:52    17424

157.xx.xx.x     4   701 14452518  456341    92465    0    0 19:51:37    31667

show ip route summary コマンドの出力は、このルーティング テーブルに 27,129 の BGP ルートがあることを示しています。

R1#show ip route summary

IP routing table name is Default-IP-Routing-Table(0)

Route Source    Networks    Subnets     Overhead    Memory (bytes)

connected       0           4           256         576

static          0           1           64          144

eigrp 6319      0           6           896         864

bgp 6319        27129       9424        2339392     5299332

External: 19134 Internal: 17419 Local: 0

internal        518                                 602952

Total           27647       9435        2340608     5903868

BGP プロセスで使用されるメモリは次の出力のとおり、約 28 MB です。

R1#show processes memory | include BGP

PID TTY  Allocated      Freed    Holding    Getbufs    Retbufs Process

73   0  900742224  186644540   28115880          0          0 BGP Router

74   0    5315232  556232160       6824    2478452        832 BGP I/O

75   0          0   39041008       9824          0          0 BGP Scanner

28132528 Total BGP

34665820 Total all memory

メモリ関連の問題のトラブルシューティング

BGPプロセスによって使用されるメモリを確認するには、show processes memoryを使用します | include bgpcommandです。次に、メモリの使用過多に起因する一般的な問題を示します。

- メモリ割り当てエラー「%SYS-2-MALLOCFAIL」。

- Telnet セッションの拒否。

- 一部のshowコマンドからの出力はありません。

- 「Low on memory」エラー メッセージが出力される。

- コンソールにメッセージ「Unable to create EXEC - no memory or too many processes」が出力される。

- ルータがハングする。または、コンソールがまったく応答しない。

- BGP関連のデバッグを実行すると、通常は過剰なメモリ消費が発生し、BGPによるメモリエラーが発生する可能性があります。BGPのデバッグは慎重に実行する必要があり、必要でない場合は避けてください。

1つのBGPピアから完全なグローバルBGPルーティングテーブルを保存するには、ルータに512 MB以上または1 GB以上のRAMを搭載するのが最適です。256 MBのRAMを使用する場合は、より多くのルートフィルタを使用することをお勧めします。512 MBのRAMを使用すると、より少ないルートフィルタでより多くのインターネットルートをルーティングテーブルに配置できます。フルBGPテーブルを受信するCatalyst 6500/6000では、「Cisco Bug ID CSCdt13244」を回避するために、256 MBのRAMを搭載したMultilayer Switch Feature Card 2(MSFC2)を使用することを推奨します。

BGP ルートによるメモリ消費は、マルチパスのサポート、ソフト再構成、ピア数、AS_PATH など、アトリビュートの数に依存します。BGPメモリ要件の詳細については、RFC 1774を参照してください。

Cisco Express Forwarding/Distributed Cisco Express Forwarding(CEF/dCEF)スイッチングでは、ルーティングテーブルのサイズに基づいてメモリが消費されます。CEF には主なコンポーネントが 2 つあります。

- Forwarding Information Base（FIB; 転送情報ベース）

- 隣接関係テーブル

どちらのテーブルも DRAM メモリに保管されます。Versatile Interface Processor(VIP)またはラインカードに十分な空きDRAMが搭載されていることを確認します。「%FIB-3-FIBDISABLE :致命的なエラー、スロット[#]:no memory」および「%FIB-3-NOMEM」エラー メッセージは、カードのメモリ容量が不十分であることを示します。

dCEFをイネーブルにする前に、VIPまたはラインカードメモリをチェックすることを強く推奨します。メモリを確認するには、次の手順を実行します。

1. 中央CEFを設定するには、グローバルコンフィギュレーションモードでip cefコマンドを発行します。

FIBテーブルの作成時間を考慮します。

1. show ip cef summaryコマンドを使用して、中央FIBテーブルのサイズを確認してください。

2. VIPまたはラインカードに、同じサイズのFIBテーブルを格納するのに十分なDRAMがあるかどうかを確認します。

show controller vip [slot#] techcommandを発行し、show memory summaryコマンドの出力を確認します。

フルインターネットBGPルートを実行する場合は、VIPまたはラインカードに少なくとも512 MBまたは1 GBのRAMを搭載するのが最適です。

結論

次の図は、フィルタリストを実装する際のメモリ節約を示しています。

プレフィックス数

消費メモリ

フィルタリングなし

98,410

70,882,248

自律システムフィルタ

31,667

28,132,528

BGP ルータでは、その隣接ルータの完全な BGP ルーティング テーブル（98,410 ルート）を受信すると、約 71 MB のメモリが消費されます。着信アップデートに AS_PATH フィルタが適用されると、BGP ルーティング テーブルのサイズは 31,667 ルートまで削減され、メモリ消費量は約 28 MB になります。メモリ使用の削減率は 60 % を上回り、最適なルーティングが得られます。

Cooperative Association for Internet Data Analysis(CAIDA)によってコンパイルされたAS Internetグラフを確認すると、どのISPが最高レベルの相互接続を持つかを確認できます（グラフの中央に最も近いISP）。 相互接続性が低くなると、AS_PATH フィルタを通過するルートは少なくなり、BGP のメモリ消費もより少なくなります。ただし、AS_PATHフィルタが設定されている場合は常に、デフォルトルート(0/0)を設定する必要があることに注意してください。 AS_PATH フィルタ リストを通過しないルートは、デフォルト ルートに従います。

関連情報

- BGP での正規表現の使用

- シングルホームおよびマルチホーム環境における、BGP を使用したロード シェアリング：サンプル設定

- HSRP を使用してマルチホーム BGP ネットワークで冗長性を実現する方法

- 2 つの異なるサービス プロバイダー（マルチホーミング）を使用した BGP の設定例

- BGP に関するサポート ページ

- テクニカルサポート - Cisco Systems