SlideShare a Scribd company logo
オープンソースによる
OpenFlow1.3環境の構築
2013.5.27
@ttsubo
1
- Group Tableの活用事例 -
自己紹介
2
・数年前は、通信事業者向けネットワークエンジニアでした。
・最近は、データセンタ系ネットワークエンジニアに軸足のシフトを
試みてます。IaaS管理基盤技術として、OpenStack等を勉強中。
・さらに「これからの時代、ネットワーク屋も、プログラミング
 必要だよね。」という風潮に感化されて、OpenFlowプログラ
 ミングも勉強中。
効率的なトラフィックフロー制御を可能とする
OpenFlow新技術が規定されているOpenFlow1.3
がリリースされてから、1年が経過しました。
でも、その新技術の活用方法などを、OpenFlow
コミュニティで共有できる場がありません。
OpenFlow新技術が活用されていない状況は、も
ったいないと感じています。
そこで、OpenFlow新技術の活用事例を、みなさ
んと共有したくて、OpenFlow1.3環境を構築して
みました。 3
動機付け
4
OpenFlow1.3では、OpenFlow1.0課題克服を念頭にした
プロアクティブベースのフローエントリ機構が強化されております。
OpenFlowは、C-Plane/D-Plane分離技術と言われますが、D-Planeの効率
化を図るためには、プロアクティブなフローエントリ機構の適用が必須だ
と思います。(さらに、リアクティブな特性を活用したC-Planeの自動化/
自律化も必要ですね)
効率的なトラフィックフロー制御とは
リアクティブベース
• OpenFlowスイッチ側での転送処理が完結せず、Packet-In動作によるコント
ローラへの問い合わせ処理がオーバヘッドとなり、NW全体のパフォーマン
スが劣化する(=スケールしない)
• 既存のネットワークとの相互接続時において、NWアドレス学習などC
−Plane連携の活用事例が顕在化されつつある(ARP, BGP, OSPF, IGMP...)
プロアクティブベース
• OpenFlowスイッチ側での転送処理が完結するため、NW全体のパフォーマン
ス向上が期待できる
• Multi Table、Group Tableなどの新技術が活用することにより、Flow数の肥
大化を抑止することも可能となる
OpenFlow環境構築にあたって
• オープンソース活用を大前提にTryしてみる!
• 最新のOpenFlow1.3で試してみる!
• OpenFlowらしい特性を確認してみる!
5
OpenFlow新技術として、Multi Table、Group Table、Meter、Multi Controller...
などが挙げられますが、
今回は、OpenFlowプロアクティブな
フロー制御を実現する「GroupTable」
を中心に、動作確認してみました。
OpenFlow1.3環境を作ってみました..
6
OFS
HOST-1
HOST-2
HOST-3
オープンソースな最新OpenFlow実装ソフトウェア
って、まだまだ少ないですね...
OFC
OpenFlow
メッセージ
CPqD/ofsoftswitch13
Ver:1.9
OpenFlowによる負荷分散/冗長構成
7
ECMP,リンクアグリゲーションなど通信方式による冗長構成(負荷
分散,ACT/SBY構成)の構築下において、 NW機器自らによるネッ
トワーク稼働状況に応じた通信経路制御が実施されてきました。
Inport Outport
柔軟な負荷分散/冗長構成制御を
実現できるようフロー設定を行う
GroupTable
従来ベースでの負荷分散/冗長構成
OpenFlowベースでの負荷分散/冗長構成
OpenFlowでも、柔軟なトラフィックフロー制御によるマルチパス環
境構築が可能です。OpenFlowコントローラが、プロアクティブに負
荷分散/冗長構成のフロー定義をGroupTableに設定することにより、
ネットワーク稼働状況に応じた通信経路制御が可能となります。
GroupTable活用事例1
8
Multicastな同報通信
Sender
Sender(映像配信サーバ)よりReceiver(ライアントPC)へ
のMulticastルーティングを構築するモデル。同報通信なパ
ケットコピー制御はOpenFlowのGroupタイプ(All)でトラ
フィクフローを制御する。
Receiver1
(クライアントPC)
Receiver2
(クライアントPC)
OpenFlowスイッチがマルチ
キャストルーティングに従った
同報通信の制御を実施する
MulticastRouter
9
FlowTable
GroupTable
OFC
OpenFlow
メッセージ
OFS
Inport
OFC側からプロアクティブなFlowTable/GroupTableを
設定することにより、OFSのInportで受信した通信パケッ
トを、複数Outportに同報送信するフロー制御を実現する
仕組み 
Outport
Groupタイプ(All)を用いたフロー制御
Output毎にset fieldを用いた
パケットヘッダの書き換えが可能!!
Groupタイプ(All)を活用することにより、Senderから
2台のReceiverに対して、Multicastな同報通信が動作
可能であることを確認できた。
10
Sender
Receiver1
Receiver2
239.255.0.1
Groupタイプ(All)の動作確認
GroupTable活用事例2
11
サーバ冗長構成(フェイルオーバ)
クライアントPC
サーバ1
サーバ2
192.168.1.1
192.168.1.1
クライアントPCからサーバへのアクセス形態として、サーバ
側でフェールオーバな冗長構成を構築するモデル。Act系か
らSby系への通信経路の振替え処理は、OpenFlowのGroup
タイプ(FastFailover)でトラフィクフローを制御する。
OpenFlowスイッチが
冗長制御(Act/Sby)を実施する
Failover
192.168.0.1
12
FlowTable
GroupTable
OFC
OpenFlow
メッセージ
OFS
Inport
Outport
Groupタイプ(FastFailover)を用いたフロー制御
Outportのリンク断
(administrative down)
時に、切り替えを実施する
OFC側からプロアクティブなFlowTable/GroupTableを
設定することにより、OFSのInportで受信した通信パケッ
トを、動作可能なOutportに送信するフロー制御を実現す
る仕組み(OutPortが動作不可能と判断できるよう、故障
検出もOFS側で行う) 
クライアントPC
Webサーバ1
Webサーバ2
13
Groupタイプ(FastFailover)の動作確認
Webサーバ1向けアクセス通信経路にて故障が発生した場合
には、接続先をWebサーバ1からWebサーバ2に振替えるこ
とにより、クライアント∼Webサーバ間の通信処理が再開
可能であることが確認できた。
クライアントPC
Webサーバ1
Webサーバ2
Webサーバ1向けアクセスの通信故障
14
NWロードバランサーによるサーバ負荷分散
クライアントPC
クライアントPCからサーバへのアクセス形態として、複数
サーバ配備による負荷分散な環境を構築するモデル。サー
バへの負荷分散なアクセス制御は、OpenFlowのGroup
タイプ(Select)でトラフィクフローを制御する。
サーバ1
サーバ2LoadBalancer
OpenFlowスイッチが
負荷分散制御実施する
192.168.1.1
192.168.1.1
192.168.0.1
GroupTable活用事例3
15
FlowTable
GroupTable
OFC
OpenFlow
メッセージ
OFS
Inport
Outport
Groupタイプ(Select)を用いたフロー制御
負荷分散の配分比率も
パラメータ指定が可能
OFC側からプロアクティブなFlowTable/GroupTableを
設定することにより、OFSのInportで受信した通信パケッ
トを、複数Outportに負荷分散的に送信するフロー制御を
実現する仕組み(負荷分散は、ラウンドロビン方式) 
16
クライアントPC サーバ1
サーバ2
テキスト
ICMP Echo req
(以下、省略)
2台のサーバでICMPパケットを交互に受信できた。
Groupタイプ(Select) の動作確認(ICMPの場合)
ICMP Echo req
ICMP Echo replyICMP Echo reply
ICMP Echo req
ICMP Echo reply
ICMP Echo req
ICMP Echo reply
ICMP Echo req
ICMP Echo reply
ICMP Echo req
ICMP Echo reply
ICMP Echo req
ICMP Echo reply
ICMP Echo req
ICMP Echo reply
17
「OFS側では、クライアントPCからのWeb閲覧の
アクセス毎に、サーバ負荷分散が図れるように接続先
Webサーバが交互に切り替わってトラフィックフロ
ーを制御する」ような動作を想定しておりました。
クライアントPC Webサーバ1
Webサーバ2
Web表示結果が
毎回異なる?
Groupタイプ(Select) の動作確認(Webアクセスの場合)
動作確認前の仮説
18
しかしながら、実際、クライアントPCからWeb閲覧を行う
と、「接続がリセットされました」というエラーメッセージ
が表示されてしまいました。
クライアントPC Webサーバ1
Webサーバ2
テキスト
Groupタイプ(Select) の動作確認(Webアクセスの場合)
OFS側では、 TCPセッション管理を想定せず、単純なラウン
ドロビンによる負荷分散を実施しているのみであるため、
Web閲覧に関わるhttp通信シーケンスが、プロトコル違反と
判定されてしまった...
19
クライアントPC
Webサーバ1
Webサーバ2
テキスト
SYN SYN
SYN/ACK
SYN/ACK
ACK ACK
http(get) http(get)
RST RST
(以下、省略)
「接続がリセットされました」の発生原因
20
OpenFlowといえば、ネットワーク挙動をプログラマブルに記
述できるので、従来の通信技術では実現が難しかった柔軟なト
ラフィックフロー制御が可能となる技術と言われますよね。
さらに、最近のSDN/OpenFlow業界でのWeb/雑誌記事では、
「ネットワーク仮想アプライアンス的な技術領域への適用」も
期待される旨の文面をよく拝見します。
でも、現在のOpenFlow規格では、TCP
セッション管理を踏まえたトラフィックフ
ロー制御まで言及しておりません。
よって、NWロードバランサーやDPI(Deep Packet Inspection)のよ
うなネットワーク仮想アプライアンス実現には、OpenFlowで
は対応が難しいのではないでしょうか。
OpenFlowの技術課題(私見)
おわりに...
21
一般に、OpenFlow技術ネタを取り上げたセミナ講演資料/
Web記事を最近よく見掛けるようになりました。でも、そこで
の記載内容を鵜呑みにしてもよいのでしょうか?
(技術コンセプトと実装レベルに乖離があるかもしれません)
そこで、OpenFlow技術の目利き力を養うためにも、自分自身
でOpenFlowを動かしてみると、いろいろな発見に遭遇できる
と思います.....
22
以下、補足情報
23
FlowTable
GroupTable
1
2
3
OFS
Inport
Outport
{table="0", match="oxm{eth_dst="01:00:5e:7f:00:01", in_port="1",
ipv4_dst="239.255.0.1", ipv4_src="192.168.0.1", eth_type="0x800"}", dur_s="334",
dur_ns="306000", prio="255", idle_to="0", hard_to="0", cookie="0x0", pkt_cnt="12242",
byte_cnt="16624636", insts=[apply{acts=[group{id="1"}]}]}
{type="all", group="1", buckets=[{w="0", wprt="any", wgrp="any",
acts=[out{port="2"}, set_field{field:eth_src="00:00:00:00:00:01"}]}, {w="0",
wprt="any", wgrp="any", acts=[out{port="3"},
set_field{field:eth_src="00:00:00:00:00:02"}]}]}]}
FlowMod
GroupMod
事前に、OpenFlowコントローラから、OFS側でのMulticastの同報通信
に関わるフロー設定を以下のように行った。
Flow/GroupTable(All)の設定サンプル
24
FlowTable
GroupTable
1
2
3
OFS
Inport
Outport
Flow/GroupTable(FastFailover)の設定サンプル
{table="0", match="oxm{eth_dst="00:00:00:00:00:01", in_port="1",
ipv4_dst="192.168.1.1", eth_src="52:54:00:2b:f5:78", eth_type="0x800"}", dur_s="57",
dur_ns="416000", prio="255", idle_to="0", hard_to="0", cookie="0x0", pkt_cnt="27", byte_cnt="2646",
insts=[apply{acts=[set_field{field:eth_src="00:00:00:00:00:02"}, group{id="1"}]}]}
{type="ff", group="1", buckets=[{w="0", wprt="2", wgrp="any",
acts=[out{port="2"}, set_field{field:eth_dst="52:54:00:a3:72:0e"}]}, {w="0",
wprt="3", wgrp="any", acts=[out{port="3"},
set_field{field:eth_dst="52:54:00:06:96:d8"}]}]}]}
FlowMod
GroupMod
事前に、OpenFlowコントローラから、OFS側でのAct/Sby冗長に関わ
るフロー設定を以下のように行った。
25
FlowTable
GroupTable
1
2
3
OFS
Inport
Outport
Flow/GroupTable(Select)の設定サンプル
{table="0", match="oxm{eth_dst="00:00:00:00:00:01", in_port="1",
ipv4_dst="192.168.1.1", eth_src="52:54:00:2b:f5:78", eth_type="0x800"}", dur_s="35",
dur_ns="155000", prio="255", idle_to="0", hard_to="0", cookie="0x0", pkt_cnt="21", byte_cnt="2058",
insts=[apply{acts=[set_field{field:eth_src="00:00:00:00:00:02"}, group{id="1"}]}]}
{type="sel", group="1", buckets=[{w="50", wprt="2", wgrp="any",
acts=[out{port="2"}, set_field{field:eth_dst="52:54:00:a3:72:0e"}]}, {w="50",
wprt="3", wgrp="any", acts=[out{port="3"},
set_field{field:eth_dst="52:54:00:06:96:d8"}]}]}]}
FlowMod
GroupMod
事前に、OpenFlowコントローラから、OFS側でのトラフィック負荷
分散処理に関わるフロー設定を以下のように行った。

More Related Content

PPTX
IP based standards for IoT
PPTX
plotnetcfg入門 | Introduction to plotnetcfg
PDF
Webアプリ開発者のためのHTML5セキュリティ入門
PDF
Proxmox VE 開源虛擬化平台實際應用架構與案例 [2025/06/02] @vLAB線上研討會
PDF
スイッチ・ルータのしくみ
DOC
How to Configure QinQ?
PDF
Kubernetesにまつわるエトセトラ(主に苦労話)
PPTX
Introduction to Ostinato , network packet crafting and generator.
IP based standards for IoT
plotnetcfg入門 | Introduction to plotnetcfg
Webアプリ開発者のためのHTML5セキュリティ入門
Proxmox VE 開源虛擬化平台實際應用架構與案例 [2025/06/02] @vLAB線上研討會
スイッチ・ルータのしくみ
How to Configure QinQ?
Kubernetesにまつわるエトセトラ(主に苦労話)
Introduction to Ostinato , network packet crafting and generator.

What's hot (20)

PDF
Proxmox VE 開源伺服器虛擬化應用經驗分享 [2019/11/12] @OpenInfra Days Taiwan 2019
PDF
projecto de rede computadores
PDF
Machine configoperatorのちょっとイイかもしれない話
PPTX
フロー技術によるネットワーク管理
PDF
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗く
PDF
zenoh: zero overhead pub/sub store/query compute
PDF
OpenvSwitchの落とし穴
PPTX
Cisco SDWAN - Components Deployment Workflow
PPTX
Blog application.pptx
PDF
Proxmox VE 5.3 Cluster, High Availability & Others [20181223] @集思台大會議中心
ODP
DRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタ
PPTX
3GPP F1インターフェース(TS38.470-f50)の概要
PDF
Cloud Trends - Cloud 2.0 - Living on the Edge.pdf
PDF
ML2/OVN アーキテクチャ概観
PPT
Redes wireless
PDF
プログラマ目線から見たRDMAのメリットと その応用例について
PDF
Open Policy Agent (OPA) 入門
PPSX
Smart Home Automation using Voice Assistant
PPTX
Software-Defined Networking(SDN):A New Approach to Networking
Proxmox VE 開源伺服器虛擬化應用經驗分享 [2019/11/12] @OpenInfra Days Taiwan 2019
projecto de rede computadores
Machine configoperatorのちょっとイイかもしれない話
フロー技術によるネットワーク管理
Spring Initializrをハックする-カスタマイズを通してその内部実装を覗く
zenoh: zero overhead pub/sub store/query compute
OpenvSwitchの落とし穴
Cisco SDWAN - Components Deployment Workflow
Blog application.pptx
Proxmox VE 5.3 Cluster, High Availability & Others [20181223] @集思台大會議中心
DRBD/Heartbeat/Pacemakerで作るKVM仮想化クラスタ
3GPP F1インターフェース(TS38.470-f50)の概要
Cloud Trends - Cloud 2.0 - Living on the Edge.pdf
ML2/OVN アーキテクチャ概観
Redes wireless
プログラマ目線から見たRDMAのメリットと その応用例について
Open Policy Agent (OPA) 入門
Smart Home Automation using Voice Assistant
Software-Defined Networking(SDN):A New Approach to Networking
Ad

Similar to OpenFlow Group Table (11)

PDF
Cloud Days Tokyo 2014 Spring 「80分でばっちり理解するOpenFlow」 NEC宮永直樹
PPTX
[SoftLayer Summit 2015] DockerとOpenVNetを用いたSoftLayer VLAN上への仮想ネットワークオーバーレイ
PPTX
OpenFlow OAM ツール - OKINAWA Open Days 2014 Day1
PDF
仮想ネットワークを実現するOpenVNet
PDF
エンタープライズにおけるOpen flowユースケースを考える
PDF
ONIC-Japan-2019-OVN public
PDF
話題のOpenFlowをフル活用! OpenVNetで仮想ネットワークを実現しよう!
PPTX
20151213 kfug lt_sdn_sugihara
PDF
Open flowを5分間でご紹介
PDF
Info talk2013
PDF
Lagopus Switch Usecases
Cloud Days Tokyo 2014 Spring 「80分でばっちり理解するOpenFlow」 NEC宮永直樹
[SoftLayer Summit 2015] DockerとOpenVNetを用いたSoftLayer VLAN上への仮想ネットワークオーバーレイ
OpenFlow OAM ツール - OKINAWA Open Days 2014 Day1
仮想ネットワークを実現するOpenVNet
エンタープライズにおけるOpen flowユースケースを考える
ONIC-Japan-2019-OVN public
話題のOpenFlowをフル活用! OpenVNetで仮想ネットワークを実現しよう!
20151213 kfug lt_sdn_sugihara
Open flowを5分間でご紹介
Info talk2013
Lagopus Switch Usecases
Ad

More from Toshiki Tsuboi (15)

PDF
GoBGP活用によるSD-WANプラクティス
PDF
SDNアプローチによるBGP経路監視の提案
PDF
BMP活用による SDN時代のオーバレイNW監視手法の提案
PDF
SDN Lab環境でのRobotFramework実践活用
PDF
BGP/MPLS-VPNのお勉強資料
PDF
RyuBGPSpeakerを活用したOpenFlow簡易ルータを試してみた
PDF
Technical report for IPv6 Routing w/ bgp4+ (part2)
PDF
Technical report for IPv6 Routing w/ bgp4+
PDF
InterAS MPLS-VPN with RyuBgp
PDF
OpenFlow in Raspberry Pi
PDF
Evaluation of OpenFlow in RB750GL
PDF
RouterBOARD with OpenFlow
PDF
Echo server implementation for Python
PDF
OpenStack with OpenFlow
PDF
TremaDay #2
GoBGP活用によるSD-WANプラクティス
SDNアプローチによるBGP経路監視の提案
BMP活用による SDN時代のオーバレイNW監視手法の提案
SDN Lab環境でのRobotFramework実践活用
BGP/MPLS-VPNのお勉強資料
RyuBGPSpeakerを活用したOpenFlow簡易ルータを試してみた
Technical report for IPv6 Routing w/ bgp4+ (part2)
Technical report for IPv6 Routing w/ bgp4+
InterAS MPLS-VPN with RyuBgp
OpenFlow in Raspberry Pi
Evaluation of OpenFlow in RB750GL
RouterBOARD with OpenFlow
Echo server implementation for Python
OpenStack with OpenFlow
TremaDay #2

OpenFlow Group Table