Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ネットワーク試験自動化 - GoBGPシナリオテストを例に -
Search
Wataru Ishida
March 04, 2016
Technology
0
1k
ネットワーク試験自動化 - GoBGPシナリオテストを例に -
NetOpsCoding #2
Wataru Ishida
March 04, 2016
Tweet
Share
More Decks by Wataru Ishida
See All by Wataru Ishida
セルラーネットワークオープン化動向@wbsug#4
ishidawataru
0
330
netopscoding#5開催に向けて
ishidawataru
0
350
GoBGP: Yet another BGP implementation in Go
ishidawataru
0
660
OCP networking update @wbsug#2
ishidawataru
1
420
Other Decks in Technology
See All in Technology
オープンソースでどこまでできる?フォーマル検証チャレンジ
msyksphinz
0
120
Developer Advocate / Community Managerなるには?
tsho
0
120
KMP の Swift export
kokihirokawa
0
350
「れきちず」のこれまでとこれから - 誰にでもわかりやすい歴史地図を目指して / FOSS4G 2025 Japan
hjmkth
1
260
AWS 잘하는 개발자 되기 - AWS 시작하기: 클라우드 개념부터 IAM까지
kimjaewook
0
130
AIツールでどこまでデザインを忠実に実装できるのか
oikon48
6
3.2k
英語は話せません!それでも海外チームと信頼関係を作るため、対話を重ねた2ヶ月間のまなび
niioka_97
0
130
自動テストのコストと向き合ってみた
qa
0
220
社内お問い合わせBotの仕組みと学び
nish01
1
550
空間を設計する力を考える / 20251004 Naoki Takahashi
shift_evolve
PRO
4
460
成長自己責任時代のあるきかた/How to navigate the era of personal responsibility for growth
kwappa
4
300
AWS Top Engineer、浮いてませんか? / As an AWS Top Engineer, Are You Out of Place?
yuj1osm
2
210
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Typedesign – Prime Four
hannesfritz
42
2.8k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
114
20k
Writing Fast Ruby
sferik
629
62k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.6k
Unsuck your backbone
ammeep
671
58k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
KATA
mclloyd
32
15k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Visualization
eitanlees
149
16k
Navigating Team Friction
lara
190
15k
Transcript
ネットワーク試験⾃自動化 -‐ GoBGPシナリオテストを例例に -‐ NetOpsCoding #2
⾃自⼰己紹介 名前 : ⽯石⽥田 渉 職場 : NTT ソフトウェアイノベーションセンタ 仕事
: NetOpsCoding osrg/gobgp : Go⾔言語BGP実装 ishidawataru/goldp : Go⾔言語LDP実装
本⽇日のお題 Trusting the network automation ⾃自動化による怪我を防ぐのに役に⽴立立つ(かもしれない) ネットワーク試験⾃自動化事例例の紹介 https://honestnetworker.wordpress.com/
GoBGPの試験⾃自動化 24.4%のPythonが何をしているかを 紹介させて下さい
-‐ Go⾔言語BGP実装, オープンソース(Apache2) -‐ 既存BGP実装への(主にJPNAPさんの)不不満が開発動機 1. APIがない, ⾃自動化に向かない 2. 性能がでない,
マルチコアを活かせない 3. コンフィギュレーションが様々 GoBGP ?
-‐ いまどきの技術で不不満点を解消 1. gRPCによるAPI firstな設計 2. Go⾔言語を利利⽤用し、マルチコア対応 3. OpenConfig(YANGモデル)を採⽤用 GoBGP
?
API first ? gobgpd gobgp Your Software gRPC GoBGPの設定/情報取得はすべてgRPC経由 -‐
CLIはgRPCのAPIを利利⽤用して実装 -‐ はじめから⾃自動化が前提の設計 -‐ NO MORE EXPECT!
⾃自動化の怪我を減らすには -‐ ソフトウェア開発にバグはつきもの -‐ バグを⽣生まないためには試験(テスト)が⼤大事 -‐ ユニットテスト : ソースコードの各関数,機能の試験 -‐
シナリオテスト : ソフトウェア全体の試験 今⽇日はこっち -‐ 試験をスケールさせるには試験も⾃自動化したい
GoBGPのシナリオテスト github jenkins docker パッチ投稿 • パッチ投稿を契機に⾃自動的にテストを開始 • 開発者はテスト結果を⾒見見て、パッチを取り込むか 修正が必要か判断するだけでいい
GoBGPのシナリオテスト マージしてよさそうな例例 マージしちゃだめそうな例例
どんな試験があるのか
Demo
Now Printing 仕組み -‐ 仮想BGPネットワークをDockerを使って構築 -‐ その中にGoBGPをいれて、正しい挙動を⽰示すか確認 Quagga ExaBGP GoBGP
-‐ 開発ツールとして超優秀 -‐ 諸々の依存関係でハマることが激減 -‐ Dockerfileを書いておけばポータブルに環境構築可能 -‐ 複数のBGPデーモンをそれぞれコンテナとして起動 -‐ 同⼀一テストに属するコンテナを⼀一つの仮想NWに配属
-‐ 別仮想NWならIPアドレスが重複してても⼤大丈夫 -‐ 複数のテストを同時実⾏行行可能
bgp_router_test.py -‐ GoBGPコンテナを1つ, Quaggaコンテナを3つ起動
bgp_router_test.py -‐ Quaggaコンテナから経路路を広告(add_route)
bgp_router_test.py -‐ GoBGPをQuagga間でピアを張る
bgp_router_test.py -‐ ピアが張れたことの確認
bgp_router_test.py -‐ GoBGPが広告の際, ⾃自AS番号を加えていることの確認
gobgp/test/lib/ -‐ 各BGP実装を同じように扱えるライブラリを⽤用意し、 シナリオテストを実装している
-‐ ‘-‐j’オプションでjson出⼒力力し, json.loads()してdone 例例)RIBを出⼒力力 – gobgp.py
-‐ CLI出⼒力力の空⽩白の数を数えるところからスタート♪ 例例)RIBを出⼒力力 – quagga.py
応⽤用例例 -‐ BGP実装のパフォーマンス測定ツール BGPerf -‐ osrg/bgperf [時間があったらDemo] -‐ 既存ベンダの仮想アプライアンス版を利利⽤用すれば、ソフト ウェアの試験は⼿手元で気軽にできるようになる?
-‐ 物理理ルータもDockerの仮想ネットワークにサーバの物理理イン ターフェイスを加えれば試験可能 -‐ アイデア次第でいろいろ出来る気がします!
まとめ -‐ 運⽤用⾃自動化のリスクを低減させるため、運⽤用 ⾃自動化試験の⾃自動化も! -‐ 開発ツールとしてDocker優秀 -‐ 複雑なネットワーク構成も仮想的にLinux内で 再現可能 -‐
GoBGPをよろしくお願いします!