interop2013 orc チームvyavyavya

35
とあるVyattaの名前空間 チーム vyavyavyavyavyavyavyavyavyavyavyavyavyavyavya 中村 遼 [email protected] 浅井大史 [email protected] ~ネームスペース~

Upload: upaa

Post on 28-May-2015

1.249 views

Category:

Technology


1 download

DESCRIPTION

INTEROP2013で開催されたOpen Router Competitionのチームvyavyavyaの発表資料です。ネタはVyattaでつくるVRF。

TRANSCRIPT

Page 1: INTEROP2013 ORC チームvyavyavya

とあるVyattaの名前空間 チーム vyavyavyavyavyavyavyavyavyavyavyavyavyavyavya

中村 遼 [email protected] 浅井大史 [email protected]

~ネームスペース~

Page 2: INTEROP2013 ORC チームvyavyavya

IaaS Cloud

Ü  IaaSクラウド全盛 Ü  Amazon EC2 Ü  さくらのクラウド Ü  NTT Cloud(n) Ü  KDDI CloudCore

Ü  個人でもクラウドを運用できる Ü  VMware、KVM、Xen、 Ü  いろいろ便利ですよね! Ü  ハードを持たずに個人でサービスを提供したり Ü  検証用にVMをつくったり消したり Ü  数の暴力でスケールアウトしたり

IaaS CloudIaaS Cloud

VMVM

HVHV

Page 3: INTEROP2013 ORC チームvyavyavya

クラウドのネットワーク

Ü  でも、VMがあるだけじゃだめ!!

Ü  クラウド上のネットワーク

Ü  セグメントの分割とルーティング

Ü  ACLやIDSなどのFirewall機能

Ü  NATなど

クラウドにもネットワークの機能が必要

Ü  個人で運用するプライベートクラウドから商用IaaSクラウドまで、全部使いたいよ!

Page 4: INTEROP2013 ORC チームvyavyavya

Software Router Vyatta

Ü  そこでVyattaですよ!

Ü  Linuxベースのソフトウェアルータ

Ü  様々なLinuxのネットワークの機能を まとめたCLIを提供 (Juni○erっぽい)

Ü  オープンソース < 重要 Ü  ユーザ会などコミュニティも活発

Ü  VyattaはVMとISOで提供 Ü  VMイメージをクラウド上にデプロイ

Ü  仮想ルータとしてクラウドネットワークを 構築できる!!

Page 5: INTEROP2013 ORC チームvyavyavya

Vyatta「を」仮想化?Vyatta「で」仮想化?

Ü  Vyattaをルータにしてクラウド上でネットワーク構築

Ü  「Vyattaを仮想化」してクラウドへ投入!! Ü  もちろん可能!ルータの数だけVyatta VMをデプロイでOK

Ü  クラウドネットワークを簡単構築! VyattavRouterVyattavRouter

でも、Vyatta VMをたくさんつくるのもしんどい。。。 サーバの台数が増えるのと同じだけの運用コストかかる。。。

Page 6: INTEROP2013 ORC チームvyavyavya

Vyatta「で」仮想化

Ü  実は、Vyatta自体には、ネットワーク仮想化のための機能が無い

Ü  ネットワーク仮想化の機能といえば... Ü  VRF : 経路表の仮想化

Ü  Virtual Chassis : 筐体の二身一体によるHA

Ü  Logical System : 筐体の仮想化

Ü  VLAN 4k越え : セグメント数増大

Page 7: INTEROP2013 ORC チームvyavyavya

Vyatta「で」仮想化

Ü  実は、Vyatta自体には、ネットワーク仮想化のための機能が無い

Ü  ネットワーク仮想化の機能といえば... Ü  VRF : 経路表の仮想化

Ü  Virtual Chassis : 筐体の二身一体によるHA

Ü  Logical System : 筐体の仮想化

Ü  VLAN 4k越え : セグメント数増大

全部できないじゃないですかヤダーー!!

Page 8: INTEROP2013 ORC チームvyavyavya

なので、つくってみました。

Page 9: INTEROP2013 ORC チームvyavyavya

せきや先生、VyattaでVRFしたいんですけど、Linuxで便利な何かないですか?

Page 10: INTEROP2013 ORC チームvyavyavya
Page 11: INTEROP2013 ORC チームvyavyavya

VRFができると?

Ü  1つのVyatta Networkで、複数の仮想ネットワークスライスを構築できるようになる!!

Page 12: INTEROP2013 ORC チームvyavyavya

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から叩けるようにする!

Page 13: INTEROP2013 ORC チームvyavyavya

Vyattaのネットワーク周り

Ü  VyattaのConfigシステム Ü  1つ1つのコマンドがシェルスクリプト

Ü  設定をcommitすると、createやdelete時などにキックされる

Ü  ネットワーク系は基本的にQuagga経由 Ü  IPアドレスの設定からルーティングプロトコルまで

Linux Kernel

zebra ospfd ospf6d

Vyatta CLI

Page 14: INTEROP2013 ORC チームvyavyavya

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

Page 15: INTEROP2013 ORC チームvyavyavya

追加したCLIの一部 : VRF

Ü  vrf のnode.def Ü  netnsの作成

Ü  loの生成

Ü  zebraのconfig生成

Ü  zebraの実行

Ü  access-listやroute-mapなどをコピーし、vyatta cli上では1つでも全てのVRFで共有できる。

Page 16: INTEROP2013 ORC チームvyavyavya

追加したCLIの一部 : vlan interface

Ü  VRFにアタッチするVLAN interfaceのnode.def

Page 17: INTEROP2013 ORC チームvyavyavya

veth type interface

Ü  VRFを切っただけでは、VRF間をルーティングすることができない

Ü  ip link add type veth Ü  論理的に接続された2つのインターフェースが作成される Ü  片方を別のネームスペースにいれる Ü  -> それぞれにアドレスをつけると、Namespaceを超えて通信するこ

とができる

Namespace#1 Namespace#2 veth0 veth1

kernelの内部で論理的に接続される

Page 18: INTEROP2013 ORC チームvyavyavya

現在のVyatta VRF拡張でできること

Ü  VRF

Ü  vlan interface

Ü  veth interface

Ü  OSPFv2

Ü  OSPFv3

Ü  static route

Page 19: INTEROP2013 ORC チームvyavyavya

デモ

Page 20: INTEROP2013 ORC チームvyavyavya

何VRFいけるの?@技術審査会

Ü  IXIAさんのご協力を得て計測 Ü  300 VRF, 1 Neighbor, 10 Routes = 3000 Routes

Ü  何も考えずにnetwork-typeをにbroadcastにしてたら 300 NeighborでIXIAのCPUが張り付く。。ごめんなさい。。

Ü  network-type p2pで再度計測させてください

これが先週の技術審査会での計測でした。

Page 21: INTEROP2013 ORC チームvyavyavya

何VRFいけるの?@本審査会

Ü  400 VRFに5000経路ずつ Ü  IXIAと4ポートずつ接続

Ü  各ポートでVLANを切り、1ポート100VLAN、100VRF x4

Ü  1VRFに対して5000経路投入

Page 22: INTEROP2013 ORC チームvyavyavya

何VRFいけるの?@本審査会

Ü  400 VRFに5000経路ずつ Ü  IXIAと4ポートずつ接続

Ü  各ポートでVLANを切り、1ポート100VLAN、100VRF x4

Ü  1VRFに対して5000経路投入

Ü 400 VRFで合計200万経路完食!! Ü  IXIAがBackbone Areaだと5000経路(?)

Ü  別OSPF Areaの経路にして試すとさらにいけるはず

Page 23: INTEROP2013 ORC チームvyavyavya

5000 Routes x 400 VRF = 2000000 Routes

Page 24: INTEROP2013 ORC チームvyavyavya

動画

Page 25: INTEROP2013 ORC チームvyavyavya

何VRFいけるの?@本審査会

Ü IXIAさんの本気 Ü  OSPF でAnother Areaの経路を入れる

Ü 1VRFに3000経路 Ü  1000 VRF (250 vlan interface@ 1 eth x 4)

Ü  3000 経路 x 1000 VRF = 300万経路

Page 26: INTEROP2013 ORC チームvyavyavya

300万経路食えました

Page 27: INTEROP2013 ORC チームvyavyavya

何VRFいけるの?@本審査会

Ü  1VRFに3000経路いけた次は、、、

Ü  1VRFに5000経路でいってみよう!!

Ü 1VRFに5000経路 Ü  1000 VRF (250 vlan interface per 1 eth x4)

Ü  5000 経路 x 1000 VRF = 500万経路

Page 28: INTEROP2013 ORC チームvyavyavya

500万経路おいしいですおいしいです

Page 29: INTEROP2013 ORC チームvyavyavya

これで最後

1000 VRF 、10000経路

= 1000万経路

Page 30: INTEROP2013 ORC チームvyavyavya

1000万経路

Page 31: INTEROP2013 ORC チームvyavyavya

もう無理。。。

Page 32: INTEROP2013 ORC チームvyavyavya

うっぷ、うっぷ、、でも完食

ココ

Page 33: INTEROP2013 ORC チームvyavyavya

あれ?フルルートって何経路だったっけ。。。?

Page 34: INTEROP2013 ORC チームvyavyavya

というわけで、VyattaでVRFできたよ!

Ü  これで、Vyattaで経路表の仮想化ができた! Ü  1台のVyattaで複数のネットワークを分割して管理

Ü  Dynamic Routing Protocolももちろんサポート!

Ü  ソースコードはこちら Ü  https://github.com/upa/vrf-vyatta

VyattaとVRFで楽しい仮想化ライフを?

Page 35: INTEROP2013 ORC チームvyavyavya

ありがとうございました