XS Japan 2008 Isolation Japanese

30
-#(OIO˛G.O Xen Sumit Tokyo 2008 <[email protected]> O U <[email protected]> 20081122o!21o

description

Hirokazu Takahashi and Simon Horman: Block Device & Networking Bandwidth Isolation

Transcript of XS Japan 2008 Isolation Japanese

Page 1: XS Japan 2008 Isolation Japanese

ネットワークI/O帯域の隔離Xen Sumit Tokyo 2008

宝曼西門 <[email protected]>稲越宏弥 <[email protected]>

2008年11月22日〜21日

Page 2: XS Japan 2008 Isolation Japanese

目次

第1節:帯域の隔離

第2節:パケットの分類

第3節:パケットスケジューラ

Page 3: XS Japan 2008 Isolation Japanese

第1節

帯域の隔離

Page 4: XS Japan 2008 Isolation Japanese

目的

公平性

ドメインを全部は公平性にネットワークの資源を使えます

管理者のポリシー設定に応じて

ウイルスがあるドメインに防御します

悪意あるドメインに防御します

Page 5: XS Japan 2008 Isolation Japanese

仮定

Dom0でネットワークをブリッジする

Dom0はLinux

送信だけ

プレゼンテーションを短くするために

Page 6: XS Japan 2008 Isolation Japanese

ネットワークの資源

NIC帯域

domU送受信速度

Dom0 CPU

domU送受信速度

Dom0 カーネル内メモリ

Dom0 カーネルのバケット待ち時間

Page 7: XS Japan 2008 Isolation Japanese

ネットワークの資源

NIC帯域

domU送受信速度

Dom0 CPU

domU送受信速度

Dom0 カーネル内メモリ

Dom0 カーネルのバケット待ち時間

Page 8: XS Japan 2008 Isolation Japanese

パケットスケジューラ

送受信したdomUによって、バケットを優先度付けします

NIC帯域Dom0 CPU

キューは満杯時にパケットを破棄します

Dom0カーネル内メモリ

Page 9: XS Japan 2008 Isolation Japanese

パケットスケジューラ

送受信したdomUによって、バケットを優先度付けします

NIC帯域Dom0 CPU

キューは満杯時にパケットを破棄します

Dom0カーネル内メモリ

Page 10: XS Japan 2008 Isolation Japanese

Netback/Netfrontフロー制御

Netfrontから物理NICの間でルーティングが行なわれるので, パケットスケジューラはネットワーク資源を制御できます

dom0のCPU

dom0のカーネル内のメモリ

Dom0

物理NICのドライバ Networking CoreNetback

DomU

Netfront

skb

フラグメント

free list

skb

フラグメント

skb

フラグメント

パケット

フラグメント

メタデータ

リングバッファ

第1スロット

第2スロット

...

Page 11: XS Japan 2008 Isolation Japanese

第2節

パケットの分類

Page 12: XS Japan 2008 Isolation Japanese

リッジを使用したXenのネットワーク

DomU

DomU

DomU

Dom0eth0

vif0.0

eth0 vif1.0

eth0

vif2.0

xenbr0 peth0 network

3つのdomUはブリッジで物理インターフェース一つを共有します

Page 13: XS Japan 2008 Isolation Japanese

DomU送信: パケットを分類する

DomU

DomU

DomU

Dom0eth0

vif0.0

eth0 vif1.0

eth0

vif2.0

xenbr0 peth0 network

どのインターフェースからxenbr0に転送されたか分かると

送信したdomUが分かります

Page 14: XS Japan 2008 Isolation Japanese

DomU送信: iptablesのルール

domUが使用するインターフェースによって,fwmarkを付与します

iptables -t mangle -A FORWARD -m physdev \--physdev-in vif2.0 -j MARK --set-mark 100

iptables -t mangle -A FORWARD -m physdev \--physdev-in vif3.0 -j MARK --set-mark 110

iptables -t mangle -A FORWARD -m physdev \--physdev-in vif5.0 -j MARK --set-mark 120

Page 15: XS Japan 2008 Isolation Japanese

第3節

パケットスケジューラ

Page 16: XS Japan 2008 Isolation Japanese

パケットスケジューラ

フィルタリング

クラスに対して設定します

優先度付け

クラス分類に基づきますパケットを遅延させることが出来ます

キューイング

優先と送信する時の間に

ドロップ

キューは満杯の時

Page 17: XS Japan 2008 Isolation Japanese

Netback/Netfrontのフロー制御

DomU送信

p ≤ s

where: p: vifN.Mから送信したdom0にキューに入れたパケットn: netbackのリングバッファのスロット数

(デフォルト= 256)

dom0にパケットを遅延するのが十分です

dom0内でパケットを破棄するのは悪影響があります

dom0内でパケットを遅延させるにしたがって、   domU送信は遅くなります

Page 18: XS Japan 2008 Isolation Japanese

ボローイング

未使用帯域がある時にrateより早く送受信が出来る

rate: クラスと子クラスの保証速度の上限です†ceil: 親クラスは使わない帯域がある時の速度の上限です†

† tc-htb(8)のマニュアルより

Page 19: XS Japan 2008 Isolation Japanese

DomU送信: パケット・スケジューラの階層図

1100: pfifo limit 1000p

1110: pfifo limit 1000p

1120: pfifolimit 1000p

1130: pfifolimit 1000p

1: htb

1:1 htbrate 900Mbitceil 900Mbit

1:100 htbrate 500Mbitceil 900Mbit

1:110 htbrate 100Mbitceil 900Mbit

1:120 htbrate 100Mbitceil 900Mbit

1:130 htbrate 100Mbitceil 900Mbit

Page 20: XS Japan 2008 Isolation Japanese

DomU送信: HTBのルール: RootとInnerクラス

Rootクラス

tc qdisc add dev peth0 root handle 1: htb default 130

Innerクラス

ボローイングを許可する

tc class add dev peth0 parent 1: classid 1:1 htb \rate 900Mbit ceil 900Mbit

Page 21: XS Japan 2008 Isolation Japanese

DomU送信: HTBのルール: Leafクラス

Leafクラス

ドメインを1個ずつ

デフォルト

tc class add dev peth0 parent 1:1 classid 1:100 htb \rate 500Mbit ceil 900Mbit

tc class add dev peth0 parent 1:1 classid 1:110 htb \rate 100Mbit ceil 900Mbit

tc class add dev peth0 parent 1:1 classid 1:120 htb \rate 100Mbit ceil 900Mbit

tc class add dev peth0 parent 1:1 classid 1:130 htb \rate 100Mbit ceil 900Mbit

Page 22: XS Japan 2008 Isolation Japanese

DomU送信: FIFO のルール

HTBのLeafクラスにFIFO を1個ずつ設定します

HTBのクラスはqdiscのが必要です

デフォルトはPFIFOですが、下記の例では明示的に設定しています

tc qdisc add dev peth0 parent 1:100 handle 1100: pfifo limit 1000tc qdisc add dev peth0 parent 1:110 handle 1110: pfifo limit 1000tc qdisc add dev peth0 parent 1:120 handle 1120: pfifo limit 1000tc qdisc add dev peth0 parent 1:130 handle 1130: pfifo limit 1000

Page 23: XS Japan 2008 Isolation Japanese

DomU送信: フィルタ

iptablesによって設定されるfwmarkによりフィルタされます

handle N はfwmark のキーです

flowid X:Y flowid X:Yはパケットに設定されるキューです

tc filter add dev peth0 protocol ip parent 1: \handle 100 flowid 1:100

tc filter add dev peth0 protocol ip parent 1: \handle 110 flowid 1:110

tc filter add dev peth0 protocol ip parent 1: \handle 120 flowid 1:120

Page 24: XS Japan 2008 Isolation Japanese

質問

質問がありますか

Page 25: XS Japan 2008 Isolation Japanese

第4分

延長

Page 26: XS Japan 2008 Isolation Japanese

HTBのパフォーマンス

Page 27: XS Japan 2008 Isolation Japanese

HZのチューニング

Page 28: XS Japan 2008 Isolation Japanese

バーストのチューニング: Dom0から出るパケット

Page 29: XS Japan 2008 Isolation Japanese

バーストのチューニング: DomUから出るパケット

Page 30: XS Japan 2008 Isolation Japanese

終了