Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
さくらのクラウドでOpenFlowをやってみよう
Search
notchi
August 21, 2020
Technology
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
さくらのクラウドでOpenFlowをやってみよう
notchi
August 21, 2020
Other Decks in Technology
See All in Technology
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
140
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
920
"優秀な誰か"の下位互換にならないために
yut0naga1_fa
1
1.8k
AI駆動で「他アプリの音を加工できる」アプリを作った
satomasahiro2005
0
150
Getting Started with Google Antigravity
glaforge
0
300
パッチ更新でterraform initが落ちた日
grimoh
1
140
「事実」を「計測」して、「解釈」する 〜AWS Lambdaのメモリ最適解の見つけ方〜
maimyyym
0
170
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
940
How to Design Configuration for Rails Applications
willnet
1
770
1つのリクエストを追って理解する - llm-dのP/D分離
akhino
1
160
Code for Security プロジェクト紹介 2026年10月
yu23ki14
0
110
Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
1
580
Featured
See All Featured
Code Review Best Practice
trishagee
74
20k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.2k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Optimizing for Happiness
mojombo
378
71k
Typedesign – Prime Four
hannesfritz
42
3.2k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
630
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.4k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
800
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The browser strikes back
jonoalderson
0
1.8k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Chasing Engaging Ingredients in Design
codingconduct
0
360
Transcript
さくらインターネット株式会社 技術本部 IoTチーム 川畑 裕行 さくらのクラウドでOpenFlowをやってみよう (C) Copyright 1996-2020 SAKURA
Internet Inc.
(C) Copyright 1996-2020 SAKURA Internet Inc. OpenFlowを気軽に使ってみよう 2 ovs-vswitchd openvswitch.ko
フロー キャッシュ デーモン (ユーザランド) カーネル モジュール パケット転送処理 Src MAC = XX:XX:XX:XX:XX:XX Dst MAC = YY:YY:YY:YY:YY:YY EtherType = TTTT Src IP = A.B.C.D Dst IP = E.F.G.H Proto = OOOO Src Port = NNNN Dst Port = MMMM
(C) Copyright 1996-2020 SAKURA Internet Inc. さくらのクラウドでOpenFlowの構成 3 client-1 client-2
client-3 ofs sw2 sw3 sw1 192.168.1.1/24 192.168.1.2/24 192.168.1.3/24 eth1 eth2 eth3 192.168.1.0/24 eth1 eth1 eth1 注:全VMのeth0は管理用のグローバルアドレス付き
(C) Copyright 1996-2020 SAKURA Internet Inc. 環境構築 4 1. VMを4台作る
• クライアントVM3台 • OpenFlowスイッチVM1台 2. 仮想スイッチを3台作る • VM同士を直接接続できないのでスイッチ経由で接続 3. 初期設定する • クライアント3台の共通設定 • Open vSwitchインストール 4. Open vSwitchの設定 • フローエントリの文法 • 実際にフローを投入してみよう
(C) Copyright 1996-2020 SAKURA Internet Inc. 1.VMを作る 5 クライアントのスペック •
1Core 1GB 20GB-SSD • Ubuntu 16.04LTS • グローバル向けインタフェース(SSHする用, eth0) • ローカル向けインタフェース(OpenFlow用, eth1) OpenFlow Switchのスペック • 1Core 1GB 20GB-SSD • Ubuntu 16.04LTS • グローバル向けインタフェース(SSHする用, eth0) • ローカル向けインタフェース(OpenFlow用, eth1/2/3)
(C) Copyright 1996-2020 SAKURA Internet Inc. 2.仮想スイッチを作る 6 ネットワークタブから、スイッチを3台追加する 1.
スイッチ1はクライアント1のeth1とofsのeth1を接続 2. スイッチ2はクライアント2のeth1とofsのeth2を接続 3. スイッチ3はクライアント2のeth1とofsのeth3を接続 スイッチ作成はスイッチの名前を入力して作成するだけでOK
(C) Copyright 1996-2020 SAKURA Internet Inc. 3. 初期設定する 7 クライアント共通設定
• eth1にIPアドレス(192.168.1.x/24)を設定 • /etc/network/interfacesを編集する。 OFSの設定 • apt update && apt upgradeで最新状態にしておく • Open vSwitchをパッケージインストールする • インストールしたら確認する • OpenFlowで使うブリッジを作成する • eth1~3をブリッジに紐付ける • それぞれのインタフェースをupさせる 詳細なコマンドは次ページ参照
(C) Copyright 1996-2020 SAKURA Internet Inc. 3.初期設定する 8 ofs:~$ sudo
apt install openvswitch-switch ofs:~$ sudo ovs-vsctl –version [sudo] password for ubuntu: ovs-vsctl (Open vSwitch) 2.5.4 Compiled Oct 30 2017 10:38:01 DB Schema 7.12.1 ofs:~$ sudo ovs-vsctl add-br br0 ofs:~$ sudo ovs-vsctl add-port br0 eth1 ofs:~$ sudo ifconfig eth1 up ofs:~$ sudo ovs-vsctl add-port br0 eth2 ofs:~$ sudo ifconfig eth2 up ofs:~$ sudo ovs-vsctl add-port br0 eth3 ofs:~$ sudo ifconfig eth3 up 先にsudo apt update && sudo apt upgradeしておく
(C) Copyright 1996-2020 SAKURA Internet Inc. 3.初期設定する 9 ofs br0
eth1 eth2 eth3 設定が完了すると内部はこうなっている
(C) Copyright 1996-2020 SAKURA Internet Inc. 4. Open vSwitchの設定 10
フローエントリ追加の文法 ovs-ofctl add-flow [ブリッジ名] [マッチ条件] [アクション] フローエントリ削除の文法 ovs-ofctl del-flows [ブリッジ名] [マッチ条件] [アクション] フローエントリ確認の文法 ovs-ofctl dump-flows [ブリッジ名]
(C) Copyright 1996-2020 SAKURA Internet Inc. 4. フローを投入する前に 11
(C) Copyright 1996-2020 SAKURA Internet Inc. 4. フローを投入する前に 12
(C) Copyright 1996-2020 SAKURA Internet Inc. 4. フローを投入する前に 13 client-1
client-2 client-3 ofs sw sw sw 192.168.1.1/24 192.168.1.2/24 192.168.1.3/24 eth1 eth2 eth3
(C) Copyright 1996-2020 SAKURA Internet Inc. 4. フローを投入する前に 14 client-1
client-3 ofs 192.168.1.1/24 192.168.1.3/24 eth3 eth1 dst_mac: broadcast src_mac: client-1 arp-request dst_mac: broadcast src_mac: ofs-eth3 arp-request dst_mac: client-1 src_mac: client-3 arp-reply dst_mac: client-1 src_mac: ofs-eth1 arp-reply src_macを双方向で 書き換えてみる
(C) Copyright 1996-2020 SAKURA Internet Inc. 4. フローを投入する前に 15 client-1
client-3 ofs 192.168.1.1/24 192.168.1.3/24 eth3 eth1 dst_mac: broadcast src_mac: client-1 Echo-request dst_ip: client-3 src_ip: client-1 dst_mac: broadcast src_mac: ofs-eth3 Echo-request dst_ip: client-3 src_ip: client-1 dst_mac: client-1 src_mac: client-3 Echo-response dst_ip: client-1 src_ip: client-3 dst_mac: client-1 src_mac: ofs-eth1 Echo-response dst_ip: client-1 src_ip: client-3 同じく ではやってみよう!
(C) Copyright 1996-2020 SAKURA Internet Inc. 4. 実際にフローエントリを投入してみよう 16 クライアント1からのパケットをsrc-mac書き換えてPort3に出力
sudo ovs-ofctl add-flow br0 in_port:1,actions=mod_dl_src:[ofsのeth3のmac_addr],output:3 sudo ovs-ofctl add-flow br0 in_port:3,actions=mod_dl_src:[ofsのeth1のmac_addr],output:1 クライアント3からのパケットをsrc-mac書き換えてPort1に出力 Port番号の確認方法 ubuntu@ofss:~$ sudo ovs-vsctl --columns=ofport,name list interface ofport : 65534 name : "br0" ofport : 1 name : "eth1“ ofport : 2 name : "eth2" ofport : 3 name : "eth3" ※ofport番号の指定をしなければ、ovs-vsctl add-portした順番にインクリメントされて割り当てられる
(C) Copyright 1996-2020 SAKURA Internet Inc. 192.168.1.0/24 さくらのクラウドでOpenFlow 17 client-1
client-2 client-3 ofs sw sw sw 192.168.1.1/24 192.168.1.2/24 192.168.1.3/24 eth1 eth2 eth3 pingできた!
(C) Copyright 1996-2020 SAKURA Internet Inc. 4. 投入したフローエントリを確認してみよう 18 フローエントリを確認する
ubuntu@ofss:~$ sudo ovs-ofctl dump-flows br0 NXST_FLOW reply (xid=0x4): cookie=0x0, duration=615.557s, table=0, n_packets=633, n_bytes=61008, idle_age=0, in_port=1 actions=mod_dl_src:9c:a3:ba:31:fe:82,output:3 cookie=0x0, duration=589.260s, table=0, n_packets=604, n_bytes=58352, idle_age=0, in_port=3 actions=mod_dl_src:9c:a3:ba:31:17:1c,output:1 cookie=0x0, duration=13.083s, table=0, n_packets=0, n_bytes=0, idle_age=13, priority=0 actions=NORMAL パケットの書き換えを行うフローエントリが見える ※最後のactions=NORMALは普通のL2スイッチングを行う動作。デフォルト状態で入っている 実際に投入したコマンド sudo ovs-ofctl add-flow br0 in_port:1,actions=mod_dl_src:9c:a3:ba:31:fe:82,output:3 sudo ovs-ofctl add-flow br0 in_port:3,actions=mod_dl_src:9c:a3:ba:31:17:1c,output:1
(C) Copyright 1996-2020 SAKURA Internet Inc. 参考 19 • OpenFlowコントローラRyuとOpen
vSwitchを使って OpenFlow1.3を 試す (CUBE SUGAR STORAGE) • 【Open vSwitchのみでOpenFlowプログラミング】VLAN IDコンバータ (ranosgrantのブログ) • OpenFlowとOpen vSwitchによるIPスプーフィング機能の実装 (三菱電 機情報技術総合研究所) • Raspberry Pi3 でOpenvSwitch+Tremaを動かした~OpenFlow入門~ (あさのひとりごと) • OpenFlowにてNW機能構築 (ビットアイル総合研究所ブログ) • 「さくらのクラウド」の舞台裏 (さくらインターネット研究所) • クラウドインフラを支える高性能ネットワーク、ストレージ技術 (同上) • 「さくらのクラウド」におけるL2ネットワークの課題 (同上)