
Agenda
- ソフトウェアSDN/OpenFlowスイッチ Lagopusとそのプログラミング
- SDNを導入してみて思ったこと
LOOM OpenFlow Controller
ネットワークのテスト自動化
Openflow 超解釈
http://network-programmability.connpass.com/event/13103/
ソフトウェアSDN/OpenFlowスイッチ Lagopusとそのプログラミング
Agenda
- Lagopusの概要
- Lagopus(openflow)で遊んでみる
Lagopusの概要
snd?openflow?lagopus?
- openflowの話とlagopusの位置づけ(省略)
やってみた
会場内のトラフィック制御
- meter
ブラジル〜日本間の映像伝送実験
- IPごとのルート制御(宛先IPを書き換える)
iPoP2015での実証実験
- packetの複製+MACとIP書き換え
Lagopusターゲット
- NFVに対応する仮想スイッチ
- 異種NWを接続するゲートウェイ
中身の話
概要
- ネットに転がっているので省略
機能評価
- Lagopusは評価高い
性能評価
- 資料にグラフあり
- Throughput vs flow
- OVSとほぼ同じ性能(最近追いつかれた?)
2015/2/1リリースでDPDK 2.0.0rc1にマージされた
ソースコードはlagopus.github.io
Lagopus(openflow)で遊んでみる
- Flowを設計して動かしてみる
- Openflowっぽいことをする
Flowを設計して動かしてみる
- Lagpus
- Ryu(app/ofctl_rest.py)
- ofctl_script(flow addなど)
Openflowっぽいことをする
- つなげてみる
- 増やしてみる(VLAN)
- リファクタリング&デバッグ(ミラーリング)
- 騙してみる(DHCPサーバの共有)
1.つなげてみる
- ns間をflowでつなげてみる
- match inport, action outport
2.増やしてみる(VLAN)
3.リファクタリング
- マルチテーブル、メタデータ
- メタデータは次のテーブルで使える
- ポートミラーリング、VLANミラーリング
- debugテーブルでメタデータを用いて識別。複製。
4.DHCPサーバの共有
- MACアドレスが既知前提だった。。
Flow設計の注意
- パケットイン遅い
- パケットコピーの処理は多い
- ARP学習はパケットイン
- フロー数増え過ぎ問題
Lagopusってすごい
- 10Gbps, 1MFlow
- OSS / x86
質問
マルチテーブルの名前ってどうなる?
- ryuは名前でdefineできる
- スイッチ側はidで認識
NFVってキーワード出たけど、Lagopus的にレイヤーあがってく?
- 基本方針はopenflowに追従していく
- セッション情報はコントローラにもたすことになるかな(個人的意見とのこと)
- LagopusはFWやLBへのねじ曲げかな(個人的意見とのこと)
SDNを導入してみて思ったこと
導入の背景
- 社内の某事業部がスポンサー(機材供給)になる関係でSDNのソリューションを国際展開
国際通信の問題
- お隣との通信品質、改善には高いコスト
- 2014年に地区全体で23回発生したネットワークダウンを削減したい
具体的な品質問題
- 2014/2 海底ケーブルが一度に2カ所断
- こういったトラブルに大してBCPを考慮したネットワークを作りたい
- 日常的なインターネットVPNのパケットロスを抑えたい
施策
落ちないネットワークを作る
- 2種類の経路(トンネリング)を設置
- 経路の状態を毎秒監視する
- 10秒ごとの経路の品質評価と切り替え処理を自動実行
ポータル可視化
使用機材
- Centech V330
- Openflow1.3対応
- GigabitEthernet 48ポート
コントローラー
- RyuコントローラのREST APIをモニタサーバから叩く
- 制御プログラム、コンソール画面はモニタへ
既存技術との比較
- ルータが自律的に動くのに比べると問題発生時の見通しが良い
- 経路上で問題が起きた場合の代替経路もあらかじめ決めておく必要あり
- 可視化しやすい
- 切り替えが高速
- 即財に元の状態に戻せる
工夫したところ
- コントローラーからの経路は2重化
- 複数経路のステートフルFWのTCPホールパンチングの考慮(複製してエンドの手前で止めるようなことをした)
実装時のポイント
- 内部実装のモジュールの影響範囲は最小に(コード重複よりも重視)
- コンソールはシンプルに
導入後の感想
- 実装、テスト、運用を一人で行うので、毎回避難訓練を行っている感じになる(強いオペレータになる)
- SDNは入れてみないと便利さがわからない
- 実際に入れてみると続々とアイディアが出てくる
- 仕組みを理解しないと手が出せない
質問
テストって本番使った?
- 実際に海外に機材持っていた
- 試験用と商用は経路を分けて試験している
例のFW通過はどうした?
- バイパス経路と通常経路を用意している
- 比較的問題は起きていない
何を通信品質の監視につかった?
- loss rate
- latency
LOOM OpenFlow Controller
LOOM OpenFlow Controllerとは
- infobloxとerlang solutionsのエンジニアが主に開発
Erlangって?
- 平行プログラミングがやりやすい
- 分散プログラミングがやりやすい
LOOM OpenFlow Controllerについて
ofs_handler:sync_send/2
Demo
ネットワークのテスト自動化
Network Programmabilityって?
SDN
- OpenFlow
- OpenStack
Configuration
- NETCONF
- REST API
- SSH
Test automation
- RSpec
Test Automationは今からでもできる
Ruby & RSpec
LBspec, infrastaster-plugin-firewall(自作)
他にもRspec-ssltlsなども
実際の画面は資料参照
資料はこちら
Openflow 超解釈
OpenFlow 1.5 Relesed
Packet Type Aware
OXM_OF_PACKET_TYPE(Matchの要素, Set-fieldフィールド)
Default = Ehetnet
packet_type(3, 80)とやるとHTTP