概要
• OpenFlow OAM ツール
– NTTコミュニケーションズ様が主導
– ストラトスフィアが開発を担当
• 目的
– うちの OpenFlow ちゃんと動いてる?
• あるべきネットワーク構成に今なってる?
• おかしくなったことをどうやって知る?
• お客さんから問い合わせがあったときどう調べる?
トポロジを調べる
• スイッチ同士がどう繋がっているか
OpenFlowスイッチ
OpenFlowスイッチ
OpenFlowスイッチ
OpenFlowスイッチ
リンク
ポート
ネットワークトポロジ
ポート ポート
ポート
ポート ポート
ポート
ポート
一般的な手法
• LLDP (Link Layer Discovery Protocol)
– 主要な OpenFlow コントローラに実装がある
• Ryu, Floodlight, OpenDaylight, etc
Ethernet LLDP
機器識別子、ポート識別子など
LLDP を使った隣接スイッチの見つけ方
OpenFlowコントローラ
OpenFlowスイッチ A
OpenFlowスイッチ B
Packet Out送信: A:X
LLDP(送信元 A:X)
ポートX ポートY
Packet In受信: B:Y
1. Packet Out
メッセージの送信
2. LLDP パケットを送信
3. LLDP パケットをコントローラへ Packet In
4. A:X と B:Y は隣接してる!
もうあるなら、それ使えばいいじゃん?
• LLDP の問題点
– 間に普通のスイッチや FW がいると落とされる
• 既存の機器を LLDP が通るようにしなければいけない
OpenFlowスイッチ
OpenFlowスイッチポート ポート
既存の機器ポート ポート
LLDP何だこれ…?
Ryu の組み込みアプリにも問題あり
• Ryu のトポロジ検出アプリの問題点
– 発見したオブジェクトを永続化できない
• スイッチ、ポート、リンク
• いなくなった時点で消えてしまう
– コードが汚い!
どう解決するか (LLDP)
• LLDP の問題解決
– 落とされにくいプロトコルを使う
• TCP/UDP/ICMP
• ユーザのトラフィックに紛れ込ませる
– 区別できるように使っていないポートなどを選んで使う
Ethernet Probe
機器識別子、ポート識別子など
IP TCP
落とされにくいパケットの例
システム構成
Ryu SDN
Framework
OpenFlowスイッチ
OpenFlowスイッチ
OAMアプリケーション
管理用 Web UI
トポロジ
DB
オペレータ
開発範囲
操作
REST / WebSocket
OpenFlow
Connection検出したトポロジ
情報を永続化
今後解決すべき課題
• あるべき姿と現状の比較部分の実装
– トポロジの検出まではできた
– こうなっていてほしいトポロジと比較したい
Switch
Port
理想
Switch
Port
Switch
Port
Port
Switch
Port
現実
Switch
Port
Switch
Port
Port
比較
現状の問題点
• こういう通信がしたい、を表すモデル
– 例えばあるポートとポートの間をつなぎたい
– 現状、ない
Switch A
OpenFlow ネットワーク
Switch B
Switch Z
a b
c
d
e z
ちょっと抽象度を落として
• もう一段モデルを作る
– スイッチ毎の「こういう通信がしたい」を表すもの
Switch A
OpenFlow ネットワーク
Switch B
Switch Z
a b
c
d
e z
モデル
モデル
モデル
フローエントリに変換する
• モデルからフローエントリを自動生成する
Switch A
OpenFlow ネットワーク
Switch B
Switch Z
a b
c
d
e z
モデル
モデル
モデル
フローテーブル
などフロー
テーブルなど
フローテーブル
など
今後解決すべき課題
• モデリング
– OpenFlow の表現力をなるべく落とさない
• フロールールへの変換
– スイッチ実装の差異*1を吸収するアルゴリズム
• フローエントリの比較
– 意図どおりの内容が入っているか
*1 参考: Ryu Certification
http://osrg.github.io/ryu/certification.html
• どのスイッチ・ポートを通ったか
– a -> b -> d -> e -> h -> z
Traceroute
Switch A
OpenFlow ネットワーク
Switch B
Switch Z
a b
d
e
h
zSwitch C
c
f
g i
Traceroute
• どのフローエントリにマッチしたか
– 2 -> 6 -> 7
Traceroute + α
Switch A
OpenFlow ネットワーク
Switch B
Switch Z
a b
d
e
h
zSwitch C
c
f
g i
Traceroute
+ α
1
2
3
4
5
6
7
8
9
Traceroute
+ α
Top Related