View
184
Download
1
Category
Preview:
Citation preview
Network as a Memory
Kernel/VM 探検隊 11th
今日の話
• ネットワークをメモリとして活用しよう!–ネットワーク帯域は死ぬほど余ってる…–パケット送信した 10 分後とかに勝手に相手
に届いたりしないかな…• 〜でできるじゃん.は禁止• 思いついたきっかけ– Fastpass: A Centralized “Zero-Queue” Datacenter
Network.@SIGCOMM2014
2ほぼ実用性のない話!
FastPass
3
FastPass
4
FastPass
5経路上のキューの集合がデータを保持
登場人物
6
登場人物
7
Ethernet
水銀遅延線
水銀遅延線
8
水銀の入った筒電気 / 超音波
変換器
電気 / 超音波
変換器
Data_t3
保存しておきたいデータはループさせ筒の中を巡回
Data_t0 超音波パルス Data_t2
電気信号電気信号水銀中を超音波パルスが伝搬している状態でデータを表現(当時は電気をそのままバッファリングするのが困難)
水銀中の音速 = 1.5m/sec, 筒の長さも 1.5m とすると,端から端まで届くのに約1秒両端の圧電素子の周波数(パルス長さ)で保存できるデータ量が決まる
遅延記憶装置
9
遅延記憶装置イメージ
• 送信して,相手に届くまではネットワーク自体が状態を保持している
• 取り出したいタイミングで宛先に届ける
10
任意の遅延を与えられる伝送媒体
送りたい情報
光ネットワークにおける遅延線
• 実際に光バッファとして遅延線が今も現役–光のままデータを保持したいニーズ–水銀 -> ファイバ , 音波 -> 光–遅延時間 -> ファイバ長さ , 周回数 s など
• 詳しくないので詳細は検索してね
11
Ethernet ではどうなのか ( 電気 )
• 転送は Store and Forward–エンドツーエンド通信中は経路上のバッファの
どこかにデータがいる–基本的には相手に届いてしまう• 遅延 * 帯域 = メモリ容量?
• メモリとして使うための要件–ネットワーク中に長くパケットを留まらせる
12
Ethernet ではどうなのか ( 電気 )
• 転送は Store and Forward–エンドツーエンド通信中は経路上のバッファの
どこかにデータがいる–基本的には相手に届いてしまう• 遅延 * 帯域 = メモリ容量?
• メモリとして使うための要件–ネットワーク中に長くパケットを留まらせる
13ループさせれば良さそう
Ethernet 上でのループ
• 自律分散の世界におけるループ=死• 集中制御ならいけそう -> OpenFlow
• 制御の方針–ネットワーク上に閉ループを意図的に構成–保持しておきたいデータはそこで回しておく–必要になったら取り出し
14
OpenFlow
• Match( 何が来たら )– Src/Dst IP,MAC addr– Ingress port– VLAN,MPLSTag
• Action( どうする )– Output PortX– Drop Packet– Modify header
15
OpenFlow Controller
転送ルールの設定
OpenFlow Switch
OpenFlow Switch
OpenFlow Switch
Packet
イメージ図
• コントローラから集中制御でループを構成–任意の遅延を持ったネットワークを作る–単一ホストでメモリとして使う
16
Packet
OpenFlow Controller
ループを作ってパケットを保持
1. ループを意図的に作る2. ループへの入り口 / 出口を作る
17
PacketADestIP:10.0.2.0
10.0.1.0 10.0.2.0
p1 p1
p1
p2
p2
p2
p3
p3p3
Match Inport:p3 DestIP:10.0.2.0Action Output:p1
Match Inport:p1 DestIP:10.0.2.0Action Output:p2
Match Inport:p2 DestIP:10.0.2.0Action Output:p3
ループへのパケットの入力
1. ループを意図的に作る2. ループへの入り口 / 出口を作る
18
PacketADestIP:10.0.2.0
10.0.1.0 10.0.2.0
p1 p1
p1
p2
p2
p2
p3
p3p3
Match Inport:p1 DestIP:10.0.2.0Action Output:p3
ループからのパケットの取り出し
1. 任意のタイミング(ルールの変更)2. 任意の時間での取り出し(ハードタイム
アウトとプライオリティ)
19
PacketADestIP:10.0.2.0
10.0.1.0 10.0.2.0
p1 p1
p1
p2
p2
p2
p3
p3p3
Match Inport:p1 DestIP:10.0.2.0Action Output:p3
脱出用エントリMatch Inport:p1 DestIP:10.0.2.0Action Output:p2
ループ用エントリ
ループ脱出の方法1. 任意のタイミング(ルールの変更)2. 任意の時間での取り出し (ハードタイムアウトとプライオリティ)
20
PacketADestIP:10.0.2.0
10.0.1.0 10.0.2.0
p1 p1
p1
p2
p2
p2
p3
p3p3
Match Inport:p1 DestIP:10.0.2.0Action Output:p3Priority:0
Match Inport:p1 DestIP:10.0.2.0Action Output:p2Priority:1Hard_timeout:600
ループ用エントリ
脱出用エントリ
メモリとしての利用• FUSE でファイルシステム作成–ファイル名を OpenFlow のマッチ条件にエン
コード–格納されたデータをファイル名をエンコード
したヘッダを持つパケットとしてループさせる
21
1. ファイル名
2. 書き込まれたデータ
1.MatchFieldとしてエンコードされたファイル
名2. 書き込まれたデータ
https://www.nic.ad.jp/ja/newsletter/No52/0800.html より引用
実際に動くの?
• 動くけどスイッチがめちゃくちゃ熱くなる–体験したい場合はその辺の L2 スイッ
チをループさせてみよう• サーバ単体でも netns+openvswitch で試せます• FUSE 実装が未完了なのでそのうち
github に 22
おわりに
今後の課題• 有益なユースケースを考える -> ない• QoS別キューや適切なポリサーを使ってレートコントロールできれば熱くならない?
作ってみて思ったこと• トークンのないリングバスにも見える• 例えば宛先が決まらないうちにパケット
をアウトオブオーダーで投げるとかに使える? 23
宣伝
• 6/20 に NSDI の読み会をやる予定なので興味ある人いたら声をかけて下さい!
24
Recommended