24
Network as a Memory Kernel/VM 探探探 11th

Network as a memory

  • Upload
    -

  • View
    184

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Network as a memory

Network as a Memory

Kernel/VM 探検隊 11th

Page 2: Network as a memory

今日の話

• ネットワークをメモリとして活用しよう!–ネットワーク帯域は死ぬほど余ってる…–パケット送信した 10 分後とかに勝手に相手

に届いたりしないかな…• 〜でできるじゃん.は禁止• 思いついたきっかけ– Fastpass: A Centralized “Zero-Queue” Datacenter

Network.@SIGCOMM2014

2ほぼ実用性のない話!

Page 3: Network as a memory

FastPass

3

Page 4: Network as a memory

FastPass

4

Page 5: Network as a memory

FastPass

5経路上のキューの集合がデータを保持

Page 6: Network as a memory

登場人物

6

Page 7: Network as a memory

登場人物

7

Ethernet

水銀遅延線

Page 8: Network as a memory

水銀遅延線

8

水銀の入った筒電気 / 超音波

変換器

電気 / 超音波

変換器

Data_t3

保存しておきたいデータはループさせ筒の中を巡回

Data_t0 超音波パルス Data_t2

電気信号電気信号水銀中を超音波パルスが伝搬している状態でデータを表現(当時は電気をそのままバッファリングするのが困難)

水銀中の音速 = 1.5m/sec, 筒の長さも 1.5m とすると,端から端まで届くのに約1秒両端の圧電素子の周波数(パルス長さ)で保存できるデータ量が決まる

Page 9: Network as a memory

遅延記憶装置

9

Page 10: Network as a memory

遅延記憶装置イメージ

• 送信して,相手に届くまではネットワーク自体が状態を保持している

• 取り出したいタイミングで宛先に届ける

10

任意の遅延を与えられる伝送媒体

送りたい情報

Page 11: Network as a memory

光ネットワークにおける遅延線

• 実際に光バッファとして遅延線が今も現役–光のままデータを保持したいニーズ–水銀 -> ファイバ  , 音波 -> 光–遅延時間 -> ファイバ長さ , 周回数 s など

• 詳しくないので詳細は検索してね

11

Page 12: Network as a memory

Ethernet ではどうなのか ( 電気 )

• 転送は Store and Forward–エンドツーエンド通信中は経路上のバッファの

どこかにデータがいる–基本的には相手に届いてしまう• 遅延 * 帯域 = メモリ容量?

• メモリとして使うための要件–ネットワーク中に長くパケットを留まらせる

12

Page 13: Network as a memory

Ethernet ではどうなのか ( 電気 )

• 転送は Store and Forward–エンドツーエンド通信中は経路上のバッファの

どこかにデータがいる–基本的には相手に届いてしまう• 遅延 * 帯域 = メモリ容量?

• メモリとして使うための要件–ネットワーク中に長くパケットを留まらせる

13ループさせれば良さそう

Page 14: Network as a memory

Ethernet 上でのループ

• 自律分散の世界におけるループ=死• 集中制御ならいけそう -> OpenFlow

• 制御の方針–ネットワーク上に閉ループを意図的に構成–保持しておきたいデータはそこで回しておく–必要になったら取り出し

14

Page 15: Network as a memory

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

Page 16: Network as a memory

イメージ図

• コントローラから集中制御でループを構成–任意の遅延を持ったネットワークを作る–単一ホストでメモリとして使う

16

Packet

OpenFlow Controller

Page 17: Network as a memory

ループを作ってパケットを保持

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

Page 18: Network as a memory

ループへのパケットの入力

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

Page 19: Network as a memory

ループからのパケットの取り出し

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

ループ用エントリ

Page 20: Network as a memory

ループ脱出の方法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

ループ用エントリ

脱出用エントリ

Page 21: Network as a memory

メモリとしての利用• FUSE でファイルシステム作成–ファイル名を OpenFlow のマッチ条件にエン

コード–格納されたデータをファイル名をエンコード

したヘッダを持つパケットとしてループさせる

21

1. ファイル名

2. 書き込まれたデータ

1.MatchFieldとしてエンコードされたファイル

名2. 書き込まれたデータ

https://www.nic.ad.jp/ja/newsletter/No52/0800.html より引用

Page 22: Network as a memory

実際に動くの?

• 動くけどスイッチがめちゃくちゃ熱くなる–体験したい場合はその辺の L2 スイッ

チをループさせてみよう• サーバ単体でも netns+openvswitch で試せます• FUSE 実装が未完了なのでそのうち

github に 22

Page 23: Network as a memory

おわりに

今後の課題• 有益なユースケースを考える -> ない• QoS別キューや適切なポリサーを使ってレートコントロールできれば熱くならない?

作ってみて思ったこと• トークンのないリングバスにも見える• 例えば宛先が決まらないうちにパケット

をアウトオブオーダーで投げるとかに使える? 23

Page 24: Network as a memory

宣伝

• 6/20 に NSDI の読み会をやる予定なので興味ある人いたら声をかけて下さい!

24