はじめに
このドキュメントでは、ボーダーゲートウェイプロトコル(BGP)ルータのメモリ要件を最小限に抑えて最適な状態を実現する方法について説明します。
前提条件
要件
このドキュメントに関する固有の要件はありません。
使用するコンポーネント
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
表記法
表記法の詳細については、『シスコ テクニカル ティップスの表記法』を参照してください。
背景説明
このドキュメントでは、ボーダーゲートウェイプロトコル(BGP)ルータのメモリ要件を軽減しながら、複数のインターネットサービスプロバイダー(ISP)に接続されている企業ネットワークで最適なルーティングを実現する方法について説明します。AS_PATHフィルタを使用すると、ISPおよびその直接接続された自律システム(AS)から発信されたルートだけを受け入れ、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 ^$
!
end |
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
!--- This line filters inbound BGP updates.
!
ip as-path access-list 80 permit ^$
ip as-path access-list 85 permit ^701_[0-9]*$
!--- The AS_PATH list filters ISP and the directly connected autonomous system routes.
!
end |
次のshow ip bgp summarycommandコマンドの出力には、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 bgpコマンドを使用します。次に、メモリの使用過多に起因する一般的な問題を示します。
-
メモリ割り当てエラー「%SYS-2-MALLOCFAIL」。
-
Telnet セッションの拒否。
-
一部のshowコマンドから何も出力されない。
-
「Low on memory」エラー メッセージが出力される。
-
コンソールにメッセージ「Unable to create EXEC - no memory or too many processes」が出力される。
-
ルータがハングする。または、コンソールがまったく応答しない。
-
BGP関連のデバッグを実行すると、通常は過剰なメモリ消費を引き起こし、BGPによるメモリエラーが発生する可能性もあります。BGPのデバッグは慎重に実行する必要があり、必要でない場合は避けてください。
1つのBGPピアからフルインターネットBGPルートを実行する場合、必要なRAMの容量はデバイスの特性と拡張性によって異なります。ただし、インターネットルートの継続的な増加を考えると、必要な最小メモリは約8 GB以上のRAMである可能性があります。
BGP ルートによるメモリ消費は、マルチパスのサポート、ソフト再構成、ピア数、AS_PATH など、アトリビュートの数に依存します。BGPメモリ要件の詳細については、RFC 1774を参照してください。
結論
次の図は、フィルタリストを実装したときのメモリ節約を示しています。
|
プレフィックス数 |
消費メモリ |
フィルタリングなし |
98,410 |
70,882,248 |
自律システムフィルタ |
31,667 |
28,132,528 |
BGPルータがネイバーのフルBGPルーティングテーブル(98,410ルート)を受信すると、ルータは約71 MBを消費します。着信アップデートに AS_PATH フィルタが適用されると、BGP ルーティング テーブルのサイズは 31,667 ルートまで削減され、メモリ消費量は約 28 MB になります。メモリ使用の削減率は 60 % を上回り、最適なルーティングが得られます。
インターネットデータ分析協同組合(CAIDA)が編集したASインターネットグラフを調べると、どのISPが最高レベルの相互接続を持っているか(グラフの中心に最も近いISPか)がわかります。相互接続性が低くなると、AS_PATH フィルタを通過するルートは少なくなり、BGP のメモリ消費もより少なくなります。ただし、AS_PATHフィルタが設定されている場合は常に、デフォルトルート(0/0)を設定する必要があることに注意してください。AS_PATHフィルタリストを通過しないルートは、デフォルトルートを使用します。
関連情報