32
OpenFlow OAM ツール OKINAWA Open Days 2014/12/11 Satoshi KOBAYASHI ([email protected])

OpenFlow OAM ツール - OKINAWA Open Days 2014 Day1

Embed Size (px)

Citation preview

OpenFlow OAM ツール

OKINAWA Open Days2014/12/11

Satoshi KOBAYASHI([email protected])

目次

• 自己紹介

• ツールの概要

• 現時点での成果

• 今後の展望

• まとめ

自己紹介

自己紹介

• 名前

– 小林 智史 (Satoshi KOBAYASHI)

• 所属

– 株式会社ストラトスフィア

• 備考

– Ryu SDN Framework コントリビュータ

ツールの概要

概要

• OpenFlow OAM ツール

– NTTコミュニケーションズ様が主導

– ストラトスフィアが開発を担当

• 目的

– うちの OpenFlow ちゃんと動いてる?

• あるべきネットワーク構成に今なってる?

• おかしくなったことをどうやって知る?

• お客さんから問い合わせがあったときどう調べる?

ゴールまでの道のり

• トポロジの管理

– 大体できた

• フローエントリの管理

– 今やってる

• 疎通性の確認

– これから

現時点での成果

トポロジの管理

• ゴール

– あるべきネットワーク構成と現状が比較できる

• スイッチがコントローラに繋がっているか

• ポートは生きているか

• 隣のスイッチと繋がっているか

• etc

トポロジを調べる

• スイッチ同士がどう繋がっているか

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)

• Ryu のトポロジ検出アプリの問題解決

– オブジェクトをデータベースに永続化する

– スクラッチで書く

システム構成

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

疎通性の確認

• ゴール

– 実際にトラフィックが流れるか試せる

• Ping

• Traceroute

• Traceroute + α

Ping

Switch A

OpenFlow ネットワーク

Switch B

Switch Z

a b

c

d

e z

Ping

• あるポートからあるポートまで疎通があるか

– a -> z

• どのスイッチ・ポートを通ったか

– 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

+ α

今後解決すべき課題

• 各手法の検討

– Ping や Traceroute に関しては幾つか論文あり

– Traceroute + α は未知の領域

まとめ

• OpenFlow を便利にするツール作ってます

– トポロジ検出までできました

– フローエントリのモデリングしてます

– コントローラに Ryu 使ってます

ご清聴ありがとうございました