フルルート入れるのにgobgp を使ってみる
「どの程度お手軽にフルルートを注入できるか?」の続編です.
2015/08/12 追記 : gobgp の不具合,修正されました
今回 gobgp のコミッターさんから「mrt 実装しましたー,もしお時間あったら試してみてください!」と連絡もらったので 試しました.
MRT TABLE_DUMP からフルルートを注入してみます.
gobgp ?
BGP Daemon のGo 実装です. 速そうだしガンガン機能が足されていて 注目のbgpd.
- Go なので,マルチコアをうまく使ってくれそう
- gobgpd (サーバー) とgobgp (CLI) で構成されている
- サーバー <-> CLI 間はgrpc
- MRT から経路生成できるし,MRT Dump もできる
- 経路フィルター書けたり,VRF つくれたり,RPKI できたり,route server できたり,EVPN できたりしそう (未確認)
- ドキュメント
特にサーバーはgrpc を話すので,「手軽にクライアント作れるかもしれないな」とも思ってます.
bgpsimple vs. gobgp
フルルート注入スピードについて,bgpsimple *1と比べてみると
bgpsimple | gobgpd | |
---|---|---|
ピアが上がるまで | 0'00" | 0'07" |
フルルート広告し終わるまで | 2'42" | 1'43" |
clear bgp 後,フルルート広告し終わるまで | 3'12" | 1'24" |
gobgp めっちゃ速い!!!
bgpsimple がシングルスレッドなのに対し,gobgpd はマルチスレッドで CPU バウンドな処理と相性よさそう.実際にマルチコアをうまく使ってくれます.
環境
- MacBook Pro (Retina, Mid 2012) + VMWare
- Guest
- bgpsimple 0.12 + perl 5.14.2
- gobgp 2015/08/10 + go1.4.2
経路受信側は別Hypervisor のvSRX.ボトルネックにならないよう,経路はすべてreject する設定.
gobgp の長所
- 速い!!!
- CLI から多少コントロールできる
- MRT を読んで一旦RIB に格納しているため,経路広告前にbest path selection が走っている
- 経路の整合性が取れていて,受信側の負荷が下がる
- MRT を直接入力できる (bgpdump 不要)
gobgp の短所
不具合ありそうeBGP UPDATE メッセージにLP 属性が入っているeBGP UPDATE メッセージのAS_PATH 属性に,自分のAS が入っていない
見つけた不具合はすぐ修正してもらえました.ありがとうございます
サポートOS が少ないかも?
個人的にはデバッグのためOSX で動くとうれしいが,Linux も手に入りやすい部類だと思う.上記の不具合が解決したら 積極的に使っていきたい.
*1:bgpsimple はMRT から経路生成するならお手軽で便利なので,イチオシだったbgpd