ネットワーク試験自動化 - GoBGPシナリオテストを例に -

ネットワーク試験自動化 - GoBGPシナリオテストを例に -

NetOpsCoding #2

448332ac5f61489e07109bff847cabe7?s=128

Wataru Ishida

March 04, 2016
Tweet

Transcript

  1. ネットワーク試験⾃自動化 -­‐ GoBGPシナリオテストを例例に -­‐ NetOpsCoding #2

  2. ⾃自⼰己紹介 名前 : ⽯石⽥田 渉 職場 : NTT ソフトウェアイノベーションセンタ 仕事

    : NetOpsCoding osrg/gobgp : Go⾔言語BGP実装 ishidawataru/goldp : Go⾔言語LDP実装
  3. 本⽇日のお題 Trusting  the  network  automation ⾃自動化による怪我を防ぐのに役に⽴立立つ(かもしれない) ネットワーク試験⾃自動化事例例の紹介 https://honestnetworker.wordpress.com/

  4. GoBGPの試験⾃自動化 24.4%のPythonが何をしているかを 紹介させて下さい

  5. -­‐ Go⾔言語BGP実装, オープンソース(Apache2) -­‐ 既存BGP実装への(主にJPNAPさんの)不不満が開発動機 1. APIがない, ⾃自動化に向かない 2. 性能がでない,

    マルチコアを活かせない 3. コンフィギュレーションが様々 GoBGP ?
  6. -­‐ いまどきの技術で不不満点を解消 1. gRPCによるAPI firstな設計 2. Go⾔言語を利利⽤用し、マルチコア対応 3. OpenConfig(YANGモデル)を採⽤用 GoBGP

    ?
  7. API  first  ? gobgpd gobgp Your  Software gRPC GoBGPの設定/情報取得はすべてgRPC経由 -­‐

    CLIはgRPCのAPIを利利⽤用して実装 -­‐ はじめから⾃自動化が前提の設計 -­‐ NO MORE EXPECT!
  8. ⾃自動化の怪我を減らすには -­‐ ソフトウェア開発にバグはつきもの -­‐ バグを⽣生まないためには試験(テスト)が⼤大事 -­‐ ユニットテスト : ソースコードの各関数,機能の試験 -­‐

    シナリオテスト : ソフトウェア全体の試験 今⽇日はこっち -­‐ 試験をスケールさせるには試験も⾃自動化したい
  9. GoBGPのシナリオテスト github jenkins docker パッチ投稿 • パッチ投稿を契機に⾃自動的にテストを開始 • 開発者はテスト結果を⾒見見て、パッチを取り込むか 修正が必要か判断するだけでいい

  10. GoBGPのシナリオテスト マージしてよさそうな例例 マージしちゃだめそうな例例

  11. どんな試験があるのか

  12. Demo

  13. Now Printing 仕組み -­‐ 仮想BGPネットワークをDockerを使って構築 -­‐ その中にGoBGPをいれて、正しい挙動を⽰示すか確認 Quagga ExaBGP GoBGP

  14. -­‐ 開発ツールとして超優秀 -­‐ 諸々の依存関係でハマることが激減 -­‐ Dockerfileを書いておけばポータブルに環境構築可能 -­‐ 複数のBGPデーモンをそれぞれコンテナとして起動 -­‐ 同⼀一テストに属するコンテナを⼀一つの仮想NWに配属

    -­‐ 別仮想NWならIPアドレスが重複してても⼤大丈夫 -­‐ 複数のテストを同時実⾏行行可能
  15. bgp_router_test.py -­‐ GoBGPコンテナを1つ, Quaggaコンテナを3つ起動

  16. bgp_router_test.py -­‐ Quaggaコンテナから経路路を広告(add_route)

  17. bgp_router_test.py -­‐ GoBGPをQuagga間でピアを張る

  18. bgp_router_test.py -­‐ ピアが張れたことの確認

  19. bgp_router_test.py -­‐ GoBGPが広告の際, ⾃自AS番号を加えていることの確認

  20. gobgp/test/lib/ -­‐ 各BGP実装を同じように扱えるライブラリを⽤用意し、 シナリオテストを実装している

  21. -­‐ ‘-­‐j’オプションでjson出⼒力力し, json.loads()してdone 例例)RIBを出⼒力力 – gobgp.py

  22. -­‐ CLI出⼒力力の空⽩白の数を数えるところからスタート♪ 例例)RIBを出⼒力力 – quagga.py

  23. 応⽤用例例 -­‐ BGP実装のパフォーマンス測定ツール BGPerf -­‐ osrg/bgperf [時間があったらDemo] -­‐ 既存ベンダの仮想アプライアンス版を利利⽤用すれば、ソフト ウェアの試験は⼿手元で気軽にできるようになる?

    -­‐ 物理理ルータもDockerの仮想ネットワークにサーバの物理理イン ターフェイスを加えれば試験可能 -­‐ アイデア次第でいろいろ出来る気がします!
  24. まとめ -­‐ 運⽤用⾃自動化のリスクを低減させるため、運⽤用 ⾃自動化試験の⾃自動化も! -­‐ 開発ツールとしてDocker優秀 -­‐ 複雑なネットワーク構成も仮想的にLinux内で 再現可能 -­‐

    GoBGPをよろしくお願いします!