TrafficSentinelによるBGPピアリング分析
ルーティングテーブル、ASパス、およびコミュニティを把握するために、ルートリフレクタを使用してTrafficSentinelからBGPピアを獲得する方法
機能概要
ルーターがsFlow「ExtendedGateway」拡張機能を完全に実装している場合(sFlow仕様を参照)、このピアリング接続は必要ありません。sFlowデータグラム内にピアリング情報を含めてルーターがエクスポートするからです(一部、NetFlowでも同様)。
それ以外の場合は、この機能を使用してルーティングテーブルを獲得し、それらを使用してCIDR、ASPath、およびCommunitiesフィールドで集約して、パケットヘッダーまたはフローレコードから表示される情報のようにトラフィックデータベースから利用分析できるようになります。
データベースフィールド
この機能で入力できるトラフィック・データベース・フィールドは次のとおりです。:
bgpdestinationaspath
bgpsourceas
bgpdestinationas
bgpsourcepeeras
bgpdestinationpeeras
bgpas
bgpcommunities
bgplocalpref
bgpnexthop
bgpnexthop6
ipsourcesubnet
ip6sourcesubnet
ipdestinationsubnet
ip6destinationsubnet
ipclientsubnet
ip6clientsubnet
ipserversubnet
ip6serversubnet
ipnexthoprouter
ip6nexthoprouter
設定手順
global.prefs([ファイル]> [設定]> [編集]> [ファイルの編集]> [global.prefs])で、ピアリング接続を識別する行を追加します。:
BGPDefault=10.0.0.30
BGPLocalAS=65550
BGPPeerAS=12345
このサーバーからのBGPクライアント接続が出来るように、route-reflector(この例では10.0.0.30)を設定します。一般的な bird routing daemon への設定例を次に示します。:
protocol bgp peer_SENTINEL {
table peers;
local as 12345;
neighbor 10.0.0.114 as 65500;
passive;
import none;
export all;
error wait time 1,10;
error forget time 10;
}
次に、Traffic Sentinelにログインし、/usr/local/inmsf/scripts/runBgpmonを実行して、ピアリング接続をテストします。 ASCIIラインとして発行されたルーティングアップデートが表示されます。
例:
+,74.114.160.0/24,,,IGP,35908 1299 3356 3549,,
+,64.214.58.0/24,,,IGP,35908 1299 3356 3549,,
+,204.57.11.0/24,,,IGP,35908 1299 3356 3549,,
+,75.98.224.0/20,,,IGP,35908 1299 3356 3549,,
+,189.125.106.0/24,,,IGP,35908 1299 3356 3549,,
+,198.153.129.0/24,,,IGP,35908 1299 3356 3549,,
+,200.41.72.0/22,,,IGP,35908 1299 3356 3549,,
+,204.48.40.0/24,,,IGP,35908 1299 3356 3549,,
+,200.55.48.0/24,,,IGP,35908 1299 3356 3549,,
ルーティングテーブル全体がスクロールするのに1〜2分かかる場合があります(600,000ルートになる可能性があります)が、その後は、アナウンスと取り消し、着実に徐々に表示されます。 control-cを押してテストを終了します。
最後に、[ファイル]>[コントロール]でデータ・コレクションのストップ&スタートを行います。これで、プロセス「inxsazd」にbgpmon.plスクリプトを実行する子プロセスがあることがわかります。
./inmsfd
\_ inxtomcat -t 1580432484
| \_ java -Djava.awt.headless=true -Xmx2G -javaagent:sflowagent.jar -Dsflow.hostname=jvm-inmsf -Ds
\_ inxtskd -t 1580432484
\_ inxsazd -t 1580432484 -u inmsf -R
| \_ /usr/bin/perl /usr/local/inmsf/inx/bin/../../scripts/bgpmon.pl -l 10.0.0.114 10.0.0.30 65
\_ inxpoll -t 1580432484 -H 1
\_ inxADSweep -t 1580432484
Exabgpの使用
exabgpパッケージをインストールする場合、global.prefs設定を調整することにより、それを使用出来るようにTrafficSentinelを設定できます。
例:
BGPDefault=10.0.0.30
BGPLocalAS=65550
BGPPeerAS=12345
exabgp=/sbin/exabgp
ここで、[ファイル]>[コントロール]でデータ・コレクションをストップ&スタートすると、runBgpmonスクリプトが代わりにexabgpを実行します。設定ファイルはexabgp_conf.m4から生成されたexabgp.confであり、JSONからの変換はbgp_announce.py(すべて /usr/local/inmsf/scripts/ ディレクトリ)で実行されます。
トラブルシューティング
前提条件としてパッケージ m4 をインストールする必要がある場合があります。
次のコマンドを使用して、bgp_announce.pyスクリプトを実行可能にする必要がある場合があります。:
sudo chmod 755 bgp_announce.py
runBgpmonスクリプトを手動で実行することは、ピアリング接続を使用する前にテストするための最良の方法です。エラーメッセージは/usr/local/inmsf/log/bgpmon.logに記録されます。