Time Attack: bgpsimple vs exabgp
お手軽フルルート環境に興味が出て,どの程度お手軽にできるのか試しました.
(参考: Other OSS BGP implementations · Exa-Networks/exabgp Wiki · GitHub)
をざっと見て
ので選ぶと,bgpsimple / exabgp が候補になります.
bgpsimple,Google Code にしかないっぽいんだけど 大丈夫か...
フルルート広告の所要時間が気になる
bgpsimple はbgpdump でMRT table dump をテキスト化すれば入力できるし,exabgp はmrtparser で設定ファイルを出力できます.両方お手軽なんですが,経路広告の所要時間が気になるので計測してみました.
環境
- MacBook Pro (Retina, Mid 2012) + VMWare
- Guest
- 4x Intel(R) Core(TM) i7-3820QM CPU @ 2.70GH
- 2GB RAM
経路受信側は別Hypervisor のfirefly.ボトルネックにならないよう,経路はすべてreject する設定.
結果
bgpsimple | exabgp | |
---|---|---|
ピアが上がるまで | 数秒 | 3'59" |
フルルート広告し終わるまで | 2'39" | 1'15" |
clear bgp 後,フルルート広告し終わるまで | 2'34" | 2'57" |
bgpsimple のほうがトータル速そう.exabgp は設定ファイルをload → parse するのに4分もかかるため,全体として2倍遅いです.
注意
bgpsimple を使うときはholdtimer を長く
bgpsimple は経路を広告し終わるまでKEEPALIVE メッセージを送らないため,経路広告が終わるまえにHold Timer Expire する可能性が高い.
exabgp は適宜KEEPALIVE してくれます.
bgpsimple は,経路リストの全エントリーについて広告
bgpdump -m
によってMRTをテキスト変換してbgpsimple に入力しますが,もとのMRT には複数neighbor 分の経路が保存されています.そのため,テキスト変換された経路リストには同じprefix の経路が複数含まれている場合があります.これを順次UPDATE メッセージとして送信すると,対向のfirefly では後に受け取ったpath だけがAdj-RIBs-In に残ります.
ムダですね.
exabgp はMRT ファイル上で先に現れた経路のみ広告
mrtparser の仕様により,prefix が同じであれば先に読まれたpath のみUPDATE メッセージとして送信します.ムダはありませんが,bgpsimple で経路広告した場合と比べて 対向のAdj-RIBs-In の中身が変わってくることに注意です.