interop2013 orc チームvyavyavya
DESCRIPTION
INTEROP2013で開催されたOpen Router Competitionのチームvyavyavyaの発表資料です。ネタはVyattaでつくるVRF。TRANSCRIPT
とあるVyattaの名前空間 チーム vyavyavyavyavyavyavyavyavyavyavyavyavyavyavya
中村 遼 [email protected] 浅井大史 [email protected]
~ネームスペース~
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
Ü クラウドネットワークを簡単構築! VyattavRouterVyattavRouter
でも、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で便利な何かないですか?
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で楽しい仮想化ライフを?
ありがとうございました