狠狠撸

狠狠撸Share a Scribd company logo
とあるVyattaの名前空間
チーム vyavyavyavyavyavyavyavyavyavyavyavyavyavyavya
中村 遼 upa@haeena.net
浅井大史 panda@hongo.wide.ad.jp	
~ネームスペース~
IaaS Cloud	
??? IaaSクラウド全盛
??? Amazon EC2
??? さくらのクラウド
??? NTT Cloud(n)
??? KDDI CloudCore
??? 個人でもクラウドを運用できる
??? VMware、KVM、Xen、
??? いろいろ便利ですよね!
??? ハードを持たずに個人でサービスを提供したり
??? 検証用にVMをつくったり消したり
??? 数の暴力でスケールアウトしたり
IaaS CloudIaaS Cloud
VMVM
HVHV
クラウドのネットワーク	
??? でも、VMがあるだけじゃだめ!!
??? クラウド上のネットワーク
??? セグメントの分割とルーティング
??? ACLやIDSなどのFirewall機能
??? NATなど
クラウドにもネットワークの機能が必要
??? 個人で運用するプライベートクラウドから商用IaaSクラウド
まで、全部使いたいよ!
Software Router Vyatta	
??? そこでVyattaですよ!
??? Linuxベースのソフトウェアルータ
??? 様々なLinuxのネットワークの機能を
まとめたCLIを提供 (Juni○erっぽい)
??? オープンソース < 重要
??? ユーザ会などコミュニティも活発
??? VyattaはVMとISOで提供
??? VMイメージをクラウド上にデプロイ
??? 仮想ルータとしてクラウドネットワークを
構築できる!!
Vyatta「を」仮想化?Vyatta「で」仮想化?	
??? Vyattaをルータにしてクラウド上でネットワーク構築
??? 「Vyattaを仮想化」してクラウドへ投入!!
??? もちろん可能!ルータの数だけVyatta VMをデプロイでOK
??? クラウドネットワークを簡単構築!	
Vyatta
vRouter
Vyatta
vRouter
でも、Vyatta VMをたくさんつくるのもしんどい。。。
サーバの台数が増えるのと同じだけの運用コストかかる。。。
Vyatta「で」仮想化	
??? 実は、Vyatta自体には、ネットワーク仮想化のための機
能が無い
??? ネットワーク仮想化の機能といえば...
??? VRF : 経路表の仮想化
??? Virtual Chassis : 筐体の二身一体によるHA
??? Logical System : 筐体の仮想化
??? VLAN 4k越え : セグメント数増大
Vyatta「で」仮想化	
??? 実は、Vyatta自体には、ネットワーク仮想化のための機
能が無い
??? ネットワーク仮想化の機能といえば...
??? VRF : 経路表の仮想化
??? Virtual Chassis : 筐体の二身一体によるHA
??? Logical System : 筐体の仮想化
??? VLAN 4k越え : セグメント数増大
全部できないじゃないですかヤダーー!!
なので、つくってみました。
せきや先生、VyattaでVRFしたいんですけど、
Linuxで便利な何かないですか?
INTEROP2013 ORC チームvyavyavya
VRFができると?	
??? 1つのVyatta Networkで、複数の仮想ネットワークスラ
イスを構築できるようになる!!
VyattaでVRFするには?	
??? Linux Network Namespace
??? もともとはLinux Containers (LXC)を実現するための
ネットワークスタックの分割機能
??? Namespaceごとに経路表が作成される
??? そのNamespace上でプロセスを起動すると、その経路表
(厳密にはネットワークスタック)の上で動作する
??? ip netns add VRF1
??? ip netns exec VRF1 bash	
1. Namespaceで経路表を分割して、
2. 各Namespace上でQuaggaを動かし、
3. 全てのQuaggaをVyatta CLIから叩けるようにする!
Vyattaのネットワーク周り	
??? VyattaのConfigシステム
??? 1つ1つのコマンドがシェルスクリプト
??? 設定をcommitすると、createやdelete時などにキックされる
??? ネットワーク系は基本的にQuagga経由
??? IPアドレスの設定からルーティングプロトコルまで	
Linux Kernel	
zebra	
 ospfd	
 ospf6d	
Vyatta CLI
VyattaでVRF with Namespace	
??? VRFはNamespaceで作る
??? ip netns add vrf1
??? Quaggaを複数インスタンスあげる
??? vtyshはQuaggaが複数プロセスあがることを想定していない
??? パッチ > http://lists.quagga.net/pipermail/quagga-dev/
2012-July/009627.html
??? あとはひたすらVyattaのCLI拡張を書く!!	
Linux Kernel	
zebra	
 ospfd	
 ospf6d	
Vyatta CLI	
zebra	
 ospfd	
 ospf6d	
Namespace #1	
 Namespace #2
追加したCLIの一部 : VRF	
??? vrf のnode.def
??? netnsの作成
??? loの生成
??? zebraのconfig生成
??? zebraの実行
??? access-listやroute-
mapなどをコピーし、
vyatta cli上では1つ
でも全てのVRFで共有
できる。
追加したCLIの一部 : vlan interface	
??? VRFにアタッチするVLAN interfaceのnode.def
veth type interface	
??? VRFを切っただけでは、VRF間をルーティングすることができない
??? ip link add type veth
??? 論理的に接続された2つのインターフェースが作成される
??? 片方を別のネームスペースにいれる
??? -> それぞれにアドレスをつけると、Namespaceを超えて通信するこ
とができる
Namespace#1	
 Namespace#2	
veth0	
 veth1	
kernelの内部で論
理的に接続される
現在のVyatta VRF拡張でできること	
??? VRF
??? vlan interface
??? veth interface
??? OSPFv2
??? OSPFv3
??? static route
デモ
何VRFいけるの?@技術審査会	
??? IXIAさんのご協力を得て計測
??? 300 VRF, 1 Neighbor, 10 Routes = 3000 Routes
??? 何も考えずにnetwork-typeをにbroadcastにしてたら
300 NeighborでIXIAのCPUが張り付く。。ごめんなさい。。
??? network-type p2pで再度計測させてください
これが先週の技術審査会での計測でした。
何VRFいけるの?@本審査会	
??? 400 VRFに5000経路ずつ
??? IXIAと4ポートずつ接続
??? 各ポートでVLANを切り、1ポート100VLAN、100VRF x4
??? 1VRFに対して5000経路投入
何VRFいけるの?@本審査会	
??? 400 VRFに5000経路ずつ
??? IXIAと4ポートずつ接続
??? 各ポートでVLANを切り、1ポート100VLAN、100VRF x4
??? 1VRFに対して5000経路投入	
???400 VRFで合計200万経路完食!!
??? IXIAがBackbone Areaだと5000経路(?)
??? 別OSPF Areaの経路にして試すとさらにいけるはず
5000 Routes x 400 VRF = 2000000 Routes
动画
何VRFいけるの?@本審査会	
???IXIAさんの本気
??? OSPF でAnother Areaの経路を入れる
???1VRFに3000経路
??? 1000 VRF (250 vlan interface@ 1 eth x 4)
??? 3000 経路 x 1000 VRF = 300万経路
300万経路食えました
何VRFいけるの?@本審査会	
??? 1VRFに3000経路いけた次は、、、
??? 1VRFに5000経路でいってみよう!!
???1VRFに5000経路
??? 1000 VRF (250 vlan interface per 1 eth x4)
??? 5000 経路 x 1000 VRF = 500万経路
500万経路おいしいですおいしいです
これで最後	
1000 VRF 、10000経路
= 1000万経路
1000万経路
もう无理。。。
うっぷ、うっぷ、、でも完食	
ココ
あれ?フルルートって何経路だったっけ。。。?
というわけで、VyattaでVRFできたよ!	
??? これで、Vyattaで経路表の仮想化ができた!
??? 1台のVyattaで複数のネットワークを分割して管理
??? Dynamic Routing Protocolももちろんサポート!
??? ソースコードはこちら
??? https://github.com/upa/vrf-vyatta
VyattaとVRFで楽しい仮想化ライフを?
ありがとうございました

More Related Content

INTEROP2013 ORC チームvyavyavya