Submit Search
Upload
OpenFlowで覚えるネットワーク
•
9 likes
•
4,318 views
M Hagiwara
Follow
Trema Day #7 Presented by APC - connpass http://trema.connpass.com/event/16844/
Read less
Read more
Technology
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 52
Download now
Download to read offline
Recommended
Tremaで試すFirewall
Tremaで試すFirewall
M Hagiwara
Lagopusで試すFirewall
Lagopusで試すFirewall
Tomoya Hibi
Lagopus Switch Usecases
Lagopus Switch Usecases
Sakiko Kawai
Xeon dとlagopusと、pktgen dpdk
Xeon dとlagopusと、pktgen dpdk
Masaru Oki
Windowsのパケットモニタ作成
Windowsのパケットモニタ作成
Shinichi Hirauchi
Lagopus as open flow hybrid switch 実践編
Lagopus as open flow hybrid switch 実践編
Masaru Oki
Scapyで作る・解析するパケット
Scapyで作る・解析するパケット
Takaaki Hoyo
Interrupt Affinityについて
Interrupt Affinityについて
Takuya ASADA
Recommended
Tremaで試すFirewall
Tremaで試すFirewall
M Hagiwara
Lagopusで試すFirewall
Lagopusで試すFirewall
Tomoya Hibi
Lagopus Switch Usecases
Lagopus Switch Usecases
Sakiko Kawai
Xeon dとlagopusと、pktgen dpdk
Xeon dとlagopusと、pktgen dpdk
Masaru Oki
Windowsのパケットモニタ作成
Windowsのパケットモニタ作成
Shinichi Hirauchi
Lagopus as open flow hybrid switch 実践編
Lagopus as open flow hybrid switch 実践編
Masaru Oki
Scapyで作る・解析するパケット
Scapyで作る・解析するパケット
Takaaki Hoyo
Interrupt Affinityについて
Interrupt Affinityについて
Takuya ASADA
Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続
Tomoya Hibi
Wiresharkで検出できないチャットプログラム
Wiresharkで検出できないチャットプログラム
Shinichi Hirauchi
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
Toru Makabe
Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409
稔 小林
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
npsg
Lagopus performance
Lagopus performance
Masaru Oki
自作仮想化基盤 「n0stack」の紹介
自作仮想化基盤 「n0stack」の紹介
Takeshi Take
BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会
Shinji Kobayashi
Linux packet-forwarding
Linux packet-forwarding
Masakazu Asama
VTI の中身
VTI の中身
Masakazu Asama
SDNソフトウェアスイッチlagopus for FreeBSD
SDNソフトウェアスイッチlagopus for FreeBSD
Masaru Oki
perfを使ったpostgre sqlの解析(後編)
perfを使ったpostgre sqlの解析(後編)
Daichi Egawa
httpd.conf line 1 to 7, 24
httpd.conf line 1 to 7, 24
Naoya Nakazawa
RouterBOARD with OpenFlow
RouterBOARD with OpenFlow
Toshiki Tsuboi
Lagos running on small factor machine
Lagos running on small factor machine
Lagopus SDN/OpenFlow switch
Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)
ashigirl ZareGoto
Scapy presentation
Scapy presentation
ashigirl ZareGoto
Lagopus & NFV with Vhost (Tremaday#9)
Lagopus & NFV with Vhost (Tremaday#9)
Tomoya Hibi
VPP事始め
VPP事始め
npsg
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい
Kenichiro MATOHARA
20131011_openstack-neutron-vyattameeting
20131011_openstack-neutron-vyattameeting
Akihiro Motoki
Tremaで構築!中小企業の社内LAN #Tremaday 120419
Tremaで構築!中小企業の社内LAN #Tremaday 120419
エイシュン コンドウ
More Related Content
What's hot
Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続
Tomoya Hibi
Wiresharkで検出できないチャットプログラム
Wiresharkで検出できないチャットプログラム
Shinichi Hirauchi
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
Toru Makabe
Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409
稔 小林
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
npsg
Lagopus performance
Lagopus performance
Masaru Oki
自作仮想化基盤 「n0stack」の紹介
自作仮想化基盤 「n0stack」の紹介
Takeshi Take
BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会
Shinji Kobayashi
Linux packet-forwarding
Linux packet-forwarding
Masakazu Asama
VTI の中身
VTI の中身
Masakazu Asama
SDNソフトウェアスイッチlagopus for FreeBSD
SDNソフトウェアスイッチlagopus for FreeBSD
Masaru Oki
perfを使ったpostgre sqlの解析(後編)
perfを使ったpostgre sqlの解析(後編)
Daichi Egawa
httpd.conf line 1 to 7, 24
httpd.conf line 1 to 7, 24
Naoya Nakazawa
RouterBOARD with OpenFlow
RouterBOARD with OpenFlow
Toshiki Tsuboi
Lagos running on small factor machine
Lagos running on small factor machine
Lagopus SDN/OpenFlow switch
Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)
ashigirl ZareGoto
Scapy presentation
Scapy presentation
ashigirl ZareGoto
Lagopus & NFV with Vhost (Tremaday#9)
Lagopus & NFV with Vhost (Tremaday#9)
Tomoya Hibi
VPP事始め
VPP事始め
npsg
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい
Kenichiro MATOHARA
What's hot
(20)
Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続
Wiresharkで検出できないチャットプログラム
Wiresharkで検出できないチャットプログラム
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
Wiresharkの解析プラグインを作る ssmjp 201409
Wiresharkの解析プラグインを作る ssmjp 201409
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
Lagopus performance
Lagopus performance
自作仮想化基盤 「n0stack」の紹介
自作仮想化基盤 「n0stack」の紹介
BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会
Linux packet-forwarding
Linux packet-forwarding
VTI の中身
VTI の中身
SDNソフトウェアスイッチlagopus for FreeBSD
SDNソフトウェアスイッチlagopus for FreeBSD
perfを使ったpostgre sqlの解析(後編)
perfを使ったpostgre sqlの解析(後編)
httpd.conf line 1 to 7, 24
httpd.conf line 1 to 7, 24
RouterBOARD with OpenFlow
RouterBOARD with OpenFlow
Lagos running on small factor machine
Lagos running on small factor machine
Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)
Scapy presentation
Scapy presentation
Lagopus & NFV with Vhost (Tremaday#9)
Lagopus & NFV with Vhost (Tremaday#9)
VPP事始め
VPP事始め
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい
Similar to OpenFlowで覚えるネットワーク
20131011_openstack-neutron-vyattameeting
20131011_openstack-neutron-vyattameeting
Akihiro Motoki
Tremaで構築!中小企業の社内LAN #Tremaday 120419
Tremaで構築!中小企業の社内LAN #Tremaday 120419
エイシュン コンドウ
SF-TAP: 柔軟で規模追従可能なトラフィック解析基盤の設計
SF-TAP: 柔軟で規模追従可能なトラフィック解析基盤の設計
Yuuki Takano
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews, Inc.
HPC Phys-20201203
HPC Phys-20201203
MITSUNARI Shigeo
Inside winnyp
Inside winnyp
FFRI, Inc.
Linux女子部第二回勉強会usp友の会
Linux女子部第二回勉強会usp友の会
Ryuichi Ueda
WebRTC meetup Tokyo 1
WebRTC meetup Tokyo 1
mganeko
らくちん Go言語
らくちん Go言語
株式会社YEBIS.XYZ
JOSUG 34th Meetup
JOSUG 34th Meetup
irix_jp
スタート低レイヤー #0
スタート低レイヤー #0
Kiwamu Okabe
組み込みシステムのセキュリティ
組み込みシステムのセキュリティ
FFRI, Inc.
I2CでRaspberry Piから複数の周辺機器を制御する
I2CでRaspberry Piから複数の周辺機器を制御する
Hirokazu Nishio
Ingress on GKE/GCE
Ingress on GKE/GCE
shouta yoshikai
20060520.tcp
20060520.tcp
Ken SASAKI
Maatkit で MySQL チューニング
Maatkit で MySQL チューニング
Kensuke Nagae
SQLite2と3のエスケープ関数の違いとその対策
SQLite2と3のエスケープ関数の違いとその対策
Akishige TAKEKOSHI
Ubuntuで始めるコンテナ技術入門
Ubuntuで始めるコンテナ技術入門
Takenori Matsumoto
OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介
Hiromu Yakura
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
Ryosuke IWANAGA
Similar to OpenFlowで覚えるネットワーク
(20)
20131011_openstack-neutron-vyattameeting
20131011_openstack-neutron-vyattameeting
Tremaで構築!中小企業の社内LAN #Tremaday 120419
Tremaで構築!中小企業の社内LAN #Tremaday 120419
SF-TAP: 柔軟で規模追従可能なトラフィック解析基盤の設計
SF-TAP: 柔軟で規模追従可能なトラフィック解析基盤の設計
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
HPC Phys-20201203
HPC Phys-20201203
Inside winnyp
Inside winnyp
Linux女子部第二回勉強会usp友の会
Linux女子部第二回勉強会usp友の会
WebRTC meetup Tokyo 1
WebRTC meetup Tokyo 1
らくちん Go言語
らくちん Go言語
JOSUG 34th Meetup
JOSUG 34th Meetup
スタート低レイヤー #0
スタート低レイヤー #0
組み込みシステムのセキュリティ
組み込みシステムのセキュリティ
I2CでRaspberry Piから複数の周辺機器を制御する
I2CでRaspberry Piから複数の周辺機器を制御する
Ingress on GKE/GCE
Ingress on GKE/GCE
20060520.tcp
20060520.tcp
Maatkit で MySQL チューニング
Maatkit で MySQL チューニング
SQLite2と3のエスケープ関数の違いとその対策
SQLite2と3のエスケープ関数の違いとその対策
Ubuntuで始めるコンテナ技術入門
Ubuntuで始めるコンテナ技術入門
OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
Recently uploaded
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
Recently uploaded
(8)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
OpenFlowで覚えるネットワーク
1.
OpenFlow「で」おぼえる ネットワーク 2015/08/08 Tremaday#7 1
2.
@stereocat SIerでネットワークエンジニア …的な何か。 IHAnet ASN#64594 2
3.
Motivation • Flow programmingは結構いろいろ覚えないとい けないことが多い。 –
ネットワークの仕組み – プログラミング • 考えること – やってみたいことを実現するために、ネットワーク の仕組みを、どうプログラミングしたらよいのか。 • ネットワークがわからないから、ネットワークの 制御とか、どうしていいかわからない?? 3
4.
サンプルプログラムを模写したり ちょっとずつ書き換えたりしながら プログラミングを学ぶように、 ネットワークも ちょっとずつ動かしながら 段階的に理解したらよいのでは なかろうか? 4
5.
というのを考えてみた • 特にEthernet(L2)の話 – ネットワークやってる人じゃないと普段L2なん か気にしないよね。 –
でも(個人的に)Flow Programmingしててハマる のはまずL2 – とにかく面倒くさいL2 • 実際にflowベースにネットワークを組みなが ら、NWがどういう仕掛けなのかを見てみる チュートリアルなんてどうでしょうね? 5
6.
注意事項 • 対象者 – ネットワーク?
なにそれ? な人 • そういう人をどうにかしてネットワークわかるように 仕込みたい人。 • まずは感覚的な理解を得る方向で。 – 厳密ではない/不正確なところがあります。 • L1→L2→L3みたいな流れにしようと思って たんだけど、時間的な都合でL1のあたりで行 き詰りました!!!!!! 6
7.
ネットワーク知識キホンのキ 7
8.
ネットワークを感覚的にとらえる • Why – そもそも どうしてネットワークが必要なんだっけ? •
What – ネットワークってなにがあればいいんだっけ? • How – ネットワークってなにができればいいんだっけ? 8
9.
ひとりで全部やれるのであれば べつにネットワークとかいらないですね。 9
10.
ひとりでぜんぶやれるわけじゃない。 複数の人が共同して何かやろうとすると それぞれの情報交換が必要になります。 → 「ネットワーク」の発生 10
11.
ネットワーク = コミュニケーション 誰かから
(source) 誰か宛に (destination) 情報を送るもの。 かならず2点(以上)の「端点」がある 11
12.
hoge hoge hoge hoge 伝えたいことを表現する方法(言語、文字…) 伝えたいことを伝える媒体(空気、紙…) 伝えたいこと 伝わったこと 音声 手紙 両方が同じになってはじめて「伝わった」といえる 12 表現 解釈
13.
みんなが同じルールを共有しておく必要がある。 日本語を使います。
紙に書きます。 時候の挨拶をしてから本文を書きます。 etc この「互いに合意すべき情報交換のルール」をプロトコルという。 protocol 【名詞】 1【不可算名詞】 (外交上の)儀礼,典礼. 2【可算名詞】 条約原案; 議定書,プロトコル. 3【可算名詞】 (国家間の)協定. 4【可算名詞】 《主に米国で用いられる》 (実験・治療の)実施要綱[計画]. 5【可算名詞】 【電子計算機】 プロトコル 《データ通信の手順》. protocolの意味 - 英和辞典 Weblio辞書 http://ejje.weblio.jp/content/protocol 伝えたいことを表現する方法(言語、文字…) 伝えたいことを伝える媒体(空気、紙…) 13
14.
メディア: 物質・物理現象 • 物理的特性・特徴に応じた使いどころがある。 –
信号減衰、ノイズ/揺らぎ、強度、コスト、…… – 光の速度を超えた情報交換はできない。 hoge 会話による情報伝達の場合 情報の表現には日本語を使う 情報の伝達は音声 = 空気をメディアとして使う 14
15.
ネットワークのカタチ 15 何を使って 情報を伝えるか (使うもの・メディア) どこの・誰に 情報を伝えるか どんな情報を伝えるか (表現・会話の決め事) 今日はこの辺 p2p Learning switch
16.
最小のネットワークを 手動でつくる h1 h1-eth0 h2 h2-eth0 s1 s1-eth1 (1) s1-eth2 (2) 16 h1-h2が1本のワイヤで直結している状態と同等 host hostnetwork
17.
stereocat@prjexp01:~/tremaday7$ sudo mn
--topo single,2 --mac --controller remote *** Creating network *** Adding controller Unable to contact the remote controller at 127.0.0.1:6633 *** Adding hosts: h1 h2 *** Adding switches: s1 *** Adding links: (h1, s1) (h2, s1) *** Configuring hosts h1 h2 *** Starting controller c0 *** Starting 1 switches s1 ... *** Starting CLI: mininet> net h1 h1-eth0:s1-eth1 h2 h2-eth0:s1-eth2 s1 lo: s1-eth1:h1-eth0 s1-eth2:h2-eth0 c0 mininet> stereocat@prjexp01:~$ sudo ovs-ofctl add-flow s1 in_port=1,actions=output:2 stereocat@prjexp01:~$ sudo ovs-ofctl add-flow s1 in_port=2,actions=output:1 stereocat@prjexp01:~$ 17 入ってき たら もう片方 から出す
18.
mininet> dpctl dump-flows ***
s1 ------------------------------------------------------------------------ NXST_FLOW reply (xid=0x4): cookie=0x0, duration=35.591s, table=0, n_packets=0, n_bytes=0, idle_age=35, in_port=1 actions=output:2 cookie=0x0, duration=31.365s, table=0, n_packets=0, n_bytes=0, idle_age=31, in_port=2 actions=output:1 mininet> pingall *** Ping: testing ping reachability h1 -> h2 h2 -> h1 *** Results: 0% dropped (2/2 received) mininet> 18
19.
これは何か : 糸電話モデル hoge
hoge h1 h2 h1-h2が直結されている h1-h2が相互に情報を送り合える。 h1がしゃべったことがそのままh2に出力される。 h2がしゃべったことがそのままh1に出力される。 19
20.
h3 複数人で会話するには? hoge h1 h2 h4 20
21.
h3 h1 h2 h4 こうか。 hoge hoge hoge hoge みんな一続きの糸で直結されている。 糸を共有している
誰かがしゃべったことがみんなに聞こえる。 21
22.
h1 h1-eth0 h2 h2-eth0 s1 s1-eth1 (1) s1-eth2 (2) h3 h3-eth0 h4 h4-eth0 s1-eth3 (3) s1-eth4 (4) ? 誰かがしゃべったことがみんなに聞こえる。 どうつなぐ? 22
23.
stereocat@prjexp01:~/tremaday7$ sudo mn
--topo single,4 --mac --controller remote *** Creating network *** Adding controller Unable to contact the remote controller at 127.0.0.1:6633 *** Adding hosts: h1 h2 h3 h4 *** Adding switches: s1 *** Adding links: (h1, s1) (h2, s1) (h3, s1) (h4, s1) *** Configuring hosts h1 h2 h3 h4 *** Starting controller c0 *** Starting 1 switches s1 ... *** Starting CLI: mininet> net h1 h1-eth0:s1-eth1 h2 h2-eth0:s1-eth2 h3 h3-eth0:s1-eth3 h4 h4-eth0:s1-eth4 s1 lo: s1-eth1:h1-eth0 s1-eth2:h2-eth0 s1-eth3:h3-eth0 s1-eth4:h4-eth0 c0 mininet> 23
24.
stereocat@prjexp01:~$ sudo ovs-ofctl
add-flow s1 in_port=1,actions=output:2,3,4 stereocat@prjexp01:~$ sudo ovs-ofctl add-flow s1 in_port=2,actions=output:1,3,4 stereocat@prjexp01:~$ sudo ovs-ofctl add-flow s1 in_port=3,actions=output:1,2,4 stereocat@prjexp01:~$ sudo ovs-ofctl add-flow s1 in_port=4,actions=output:1,2,3 mininet> dpctl dump-flows *** s1 ------------------------------------------------------------------------ NXST_FLOW reply (xid=0x4): cookie=0x0, duration=38.301s, table=0, n_packets=12, n_bytes=840, idle_age=23, in_port=3 actions=output:1,output:2,output:4 cookie=0x0, duration=49.157s, table=0, n_packets=12, n_bytes=840, idle_age=23, in_port=1 actions=output:2,output:3,output:4 cookie=0x0, duration=33.757s, table=0, n_packets=12, n_bytes=840, idle_age=23, in_port=4 actions=output:1,output:2,output:3 cookie=0x0, duration=43.459s, table=0, n_packets=12, n_bytes=840, idle_age=23, in_port=2 actions=output:1,output:3,output:4 mininet> pingall *** Ping: testing ping reachability h1 -> h2 h3 h4 h2 -> h1 h3 h4 h3 -> h1 h2 h4 h4 -> h1 h2 h3 *** Results: 0% dropped (12/12 received) mininet> 誰かがしゃべったことがみんなに聞こえる。 24 入ってき たら他所 から出す
25.
h1 h1-eth0 h2 h2-eth0 s1 s1-eth1 (1) s1-eth2 (2) h3 h3-eth0 h4 h4-eth0 s1-eth3 (3) s1-eth4 (4) 誰かがしゃべったことがみんなに聞こえる。 →
フルメッシュ 入ったポート以外の全部のポートに送る: Flooding sudo ovs-ofctl add-flow s1 in_port=1,actions=output:2,3,4 ↓ sudo ovs-ofctl add-flow s1 in_port=1,actions=FLOOD 25
26.
(原始的な)Ethernetのイメージ = 糸電話 hoge hoge hoge hoge
メディア = 電線 = 糸と考えてみる。 「糸」を共有する 実際ひとつのワイヤをみんなで分岐させてた。 26
27.
参考 TheEthernetEvolutionFrom10Megto10GigHowitallWorks!, HadrielKaplan&RobertNoseworthy,Atlanta,2001. https://www.iol.unh.edu/sites/default/files/knowledgebase/ether net/ethernet_evolution.pdf 27
28.
やってみよう! (1) h1 h1-eth0 s1-eth2 (2) h2 h2-eth0 h3 h3-eth0 s1-eth1 (1) s2-eth1 (1) s2-eth3 (3) s2-eth2 (2) s3-eth2 (2) s3-eth1 (1) s1 s2
s3 28
29.
from functools import
partial from mininet.cli import CLI from mininet.net import Mininet from mininet.link import Link from mininet.node import RemoteController, OVSSwitch if '__main__' == __name__: switch = partial(OVSSwitch, protocols='OpenFlow10,OpenFlow12,OpenFlow13') net = Mininet(switch=switch) c0 = RemoteController('c0') net.addController(c0) s1 = net.addSwitch('s1') s2 = net.addSwitch('s2') s3 = net.addSwitch('s3') h1 = net.addHost('h1') h2 = net.addHost('h2') h3 = net.addHost('h3') Link(s1, s2, intfName1="s1-eth1", intfName2="s2-eth1") Link(s2, s3, intfName1="s2-eth2", intfName2="s3-eth1") Link(h1, s1) Link(h2, s2) Link(h3, s3) net.start() CLI(net) net.stop() 29
30.
sudo ovs-ofctl add-flow
s1 in_port=1,actions=FLOOD sudo ovs-ofctl add-flow s1 in_port=2,actions=FLOOD sudo ovs-ofctl add-flow s2 in_port=1,actions=FLOOD sudo ovs-ofctl add-flow s2 in_port=2,actions=FLOOD sudo ovs-ofctl add-flow s2 in_port=3,actions=FLOOD sudo ovs-ofctl add-flow s3 in_port=1,actions=FLOOD sudo ovs-ofctl add-flow s3 in_port=2,actions=FLOOD mininet> dpctl dump-flows *** s1 ------------------------------------------------------------------------ NXST_FLOW reply (xid=0x4): cookie=0x0, duration=7.429s, table=0, n_packets=0, n_bytes=0, idle_age=7, in_port=1 actions=FLOOD cookie=0x0, duration=7.413s, table=0, n_packets=0, n_bytes=0, idle_age=7, in_port=2 actions=FLOOD *** s2 ------------------------------------------------------------------------ NXST_FLOW reply (xid=0x4): cookie=0x0, duration=7.369s, table=0, n_packets=0, n_bytes=0, idle_age=7, in_port=3 actions=FLOOD cookie=0x0, duration=7.401s, table=0, n_packets=0, n_bytes=0, idle_age=7, in_port=1 actions=FLOOD cookie=0x0, duration=7.385s, table=0, n_packets=0, n_bytes=0, idle_age=7, in_port=2 actions=FLOOD *** s3 ------------------------------------------------------------------------ NXST_FLOW reply (xid=0x4): cookie=0x0, duration=7.357s, table=0, n_packets=0, n_bytes=0, idle_age=7, in_port=1 actions=FLOOD cookie=0x0, duration=7.341s, table=0, n_packets=0, n_bytes=0, idle_age=7, in_port=2 actions=FLOOD mininet> pingall *** Ping: testing ping reachability h1 -> h2 h3 h2 -> h1 h3 h3 -> h1 h2 *** Results: 0% dropped (6/6 received) mininet> 30 入ってき たら他所 から出す
31.
やってみよう! (2) h1 h1-eth0 s1-eth3 (3) h2 h2-eth0 h3 h3-eth0 s1-eth1 (1) s2-eth1 (1) s2-eth3 (3) s2-eth2 (2) s3-eth3 (3) s3-eth1 (1) s1 s2
s3 s1-eth2 (2) s3-eth2 (2) 三角形にしてみる 31
32.
from functools import
partial from mininet.cli import CLI from mininet.net import Mininet from mininet.link import Link from mininet.node import RemoteController, OVSSwitch if '__main__' == __name__: switch = partial(OVSSwitch, protocols='OpenFlow10,OpenFlow12,OpenFlow13') net = Mininet(switch=switch) c0 = RemoteController('c0') net.addController(c0) s1 = net.addSwitch('s1') s2 = net.addSwitch('s2') s3 = net.addSwitch('s3') h1 = net.addHost('h1') h2 = net.addHost('h2') h3 = net.addHost('h3') Link(s1, s2, intfName1="s1-eth1", intfName2="s2-eth1") Link(s2, s3, intfName1="s2-eth2", intfName2="s3-eth1") Link(s3, s1, intfName1="s3-eth2", intfName2="s1-eth2") Link(h1, s1) Link(h2, s2) Link(h3, s3) net.start() CLI(net) net.stop() 32 リンク1本追加
33.
sudo ovs-ofctl add-flow
s1 in_port=1,actions=FLOOD sudo ovs-ofctl add-flow s1 in_port=2,actions=FLOOD sudo ovs-ofctl add-flow s1 in_port=3,actions=FLOOD sudo ovs-ofctl add-flow s2 in_port=1,actions=FLOOD sudo ovs-ofctl add-flow s2 in_port=2,actions=FLOOD sudo ovs-ofctl add-flow s2 in_port=3,actions=FLOOD sudo ovs-ofctl add-flow s3 in_port=1,actions=FLOOD sudo ovs-ofctl add-flow s3 in_port=2,actions=FLOOD sudo ovs-ofctl add-flow s3 in_port=3,actions=FLOOD mininet> xterm h3 mininet> h1 ping –c3 h2 h3# tcpdump –i h3-eth0 33 リンク1本追加した分 ルールを追加
34.
sudo ovs-ofctl add-flow
s1 in_port=1,actions=output:3 sudo ovs-ofctl add-flow s1 in_port=2,actions=output:3 sudo ovs-ofctl add-flow s1 in_port=3,actions=FLOOD sudo ovs-ofctl add-flow s2 in_port=1,actions=output:3 sudo ovs-ofctl add-flow s2 in_port=2,actions=output:3 sudo ovs-ofctl add-flow s2 in_port=3,actions=FLOOD sudo ovs-ofctl add-flow s3 in_port=1,actions=output:3 sudo ovs-ofctl add-flow s3 in_port=2,actions=output:3 sudo ovs-ofctl add-flow s3 in_port=3,actions=FLOOD なんでもFloodingすればよいというわけではないデスネ 34
35.
「共有メディア」を感覚的にとらえる hoge 同じ部屋の人が一つのメディアを共有する ↓ ある人がしゃべるとほかの人がみんな聞こえる(flooding)
ある人がしゃべっている間はほかの人はしゃべれない(半二重通信) 35
36.
衝突(collision) えっと あの 同時にしゃべっちゃう (衝突:Collision)
ぶつかったらランダムに待機してタイミングをずらす → CSMA/CD 衝突が起きる範囲 = Collision Domain つながってる糸(糸電話モデル)、ひとつの部屋(空気モデル) 36
37.
共有メディアの問題 発言者はひとり 人が増えると発言可能な時間が減る 37
38.
リピータ hoge ???? hoge hoge
弱くなった信号を増幅してくれる コリジョンドメインを操作するものではない。 (L1:物理層のデバイス) 遠いと信号が弱くなってしまう(減衰) 38
39.
Flooding network • FloodingするだけのNW機器 –
リピータハブ • リピータハブだけで作れるネットワーク には限界がある。 – 全部聞こえる • ノードが増えると各ノードの通信効率が落ちる • 効率が悪い – ループ 39
40.
どうする? • 誰がどこにいるかを知る • 必要最小限の範囲にだけ声を届ける –
物理メディアを「区切って」使う 40
41.
• …というのをOpenFlowでやるとどうなる のか? • このへんで時間切れということで!! –
準備的に – コンテンツの量的に • あとこういう話ができればどうかな、と いう話を。 41
42.
だれがいるのかを知る Cさんって いる? A B C じぶん(Dさん)が会話したい人が、いま糸の先にいるのかどうか? Dさんは隣にいる人(同じメディアを共有している人)全員に会話し たい人かどうか聞く。 →
Broadcast 自分が呼ばれていたら答える いる? → いるよ が成立したら会話できる。 いるよ D 42
43.
ブリッジ A B C D Cさんから返事→Cさんがどこにいるかがわかる。 居場所を学習する。
片側だけ(A-B or C-D)で話をするときには切り離しておく。 → コリジョンドメインの分離。 → コリジョンドメイン内では並行して会話ができる。 切り離せば A-B, C-Dが同時 に会話できる。 43 hoge hoge
44.
スイッチ A B C D もっと高機能なブリッジ …
直接会話する2点間をだけ直結させる 最小のコリジョンドメイン: P2P → コリジョンは発生しない。 いまどきのネットワークだといちいちコリジョンドメインとか意 識しません。 44
45.
やってみよう! (案) • ARP
TableはKnownだとして、ARP Request (Broadcast) + Unicastのコントロールルールを 考えてみる(というくらいなら手動でやれる) – Single Switch – Multiple Switch • Learning Switch – ARP TableはUnknownだとして。 • 同一セグメント内: Mobility(同じ場所にいるとは限らない) – プログラミング! 45
46.
会話モデルで考えるNetwork Layer 「隣にいる」
= 同じ部屋にいる 同じ「メディア」を共有していて、 直接「会話」できる。 「声」がそのまま届く範囲は限られる。 「遠くにいる」= 違う部屋にいる 直接「会話」できない あ ? 46
47.
よその部屋の人との会話 Pさんと話し たいのでAさ んに伝言して もらう。 A B C D この部屋にいるのは[A-D]のグループだというのはあらかじめ 知っている。 Pさんが部屋の中にいないということが判別できる。
Aさんがほかの部屋との伝言(中継)役というのも知っている。 Aさんいるよね? っていうのをみんなに聞く。 Pさんに伝えたいことをAさんにわたして中継してもらう。 Aさんって いる? いるよ 47
48.
あ 会話モデルで考えるNetwork Layer あこういう全体の伝言ゲームを どうやって機械で実現するか、 というのがIPの世界の話。 隣のひとから隣の人への「会話」を どうやってやるか、というのが Ethernet (Layer2)
の話。 途中が 糸電話とか でもいい 48 D A P
49.
やってみよう! (案) • Simple
Router 49
50.
会話モデルで考えるNetwork Layer Layer1: 物理層 どういうメディアを使うか。 (材質、形状、信号、…) Layer2:
データリンク層 同じメディアにつながっている人 同士(隣同士)でどうやって会話を 成立させるか。 Layer3: ネットワーク層 同じメディアでつながっていない 人同士で、どうやって会話を成立 させるか。 Layer4: トランスポート層 会話のしかた 50
51.
会話モデルで考えるNetwork Layer Layer1: 物理層 どういうメディアを使うか。 (材質、形状、信号、…) Layer2:
データリンク層 同じメディアにつながっている人 同士(隣同士)でどうやって会話を 成立させるか。 Layer3: ネットワーク層 同じメディアでつながっていない 人同士で、どうやって会話を成立 させるか。 Layer4: トランスポート層 会話のしかた 51 何を使って 情報を伝えるか (使うもの・メディア) どこの・誰に 情報を伝えるか どんな情報を伝えるか (表現・会話の決め事)
52.
注意事項 • とりあえずまず感覚だけつかもう、という内容にした ので、ちょっとごまかしているところ。 – OVSでのフロー設定と動作模擬:
mininet上の操作は「ス イッチ」でやるのでこの辺は深追いしない方向で。 • コリジョンドメイン • 全二重と反二重 • 物理メディアの話 – TCP/IPのはなし全般 • 技術的な発展課題 – 経路冗長化とL2ループのトレードオフ • ループ回避技術(STP) – ネットワークの仮想化(VLAN) 52
Download now