Upgrade to Pro — share decks privately, control downloads, hide ads and more …

L2 over L3 トンネル方式について考える 〜 VXLAN、NVGRE、STT、Gene...

L2 over L3 トンネル方式について考える 〜 VXLAN、NVGRE、STT、Geneve などの各方式比較検討〜

各種 L2 over L3 encapsulation 方式について比較検討をします。VXLAN, NVGRE, STT, Geneve, L2TP static tunneling, VXLAN-gpe (eVXLAN) などをカバーしています。

More Decks by Motonori Shindo / 進藤資訓

Other Decks in Technology

Transcript

  1. © 2014 VMware Inc. All rights reserved. L2 over L3

    トンネル方式について考える VXLAN、NVGRE、STT、Geneve などの各方式比較検討 ヴイエムウェア(株) ネットワーク&セキュリティー事業部 テクニカル・リーダー 進藤 資訓
  2. Tunneling vs Encapsulation • トンネリング・プロトコル – Signaling + Encapsulation •

    通常なにかしらの “シグナリング” を持ち、トンネルの維持・管理をする機構がプトロコルに含まれている • Encapsulation も必要 – 例) PPTP、L2TP、IPsec (IKE)、など • Encapsulation – なにかをなにかで “くるむ” 仕組み – 例) GRE、VXLAN、NVGRE、STT、(Ethernet, IP, TCP, ….) • 今日お話ししするのは厳密には “Encapsulation” です。 • また、コントロールプレーンのお話は(とても大切ですが)しません。 CONFIDENTIAL 2
  3. 代表的な L2 over L3 encapsulation • GRE (Generic Routing Encapsulation)

    * • VXLAN (Virtual Extensible LAN) • NVGRE (Network Virtualization using GRE) • STT (Stateless Transport Tunneling) * 厳密に言うと GRE は L2 over L3 とは限りません。
  4. VXLAN • Cumulus / Arista / Broadcom / Cisco /

    VMware / Citrix / RedHat らが提唱 – draft-mahalingam-dutt-dcops-vxlan-09.txt • VLAN ID (12bit) を VNI (24bit) に拡張 • UDP/IP で Encapsulation – L3 オーバーレイ – マルチパス可能 • Ethernet Frame を仮定 • ハードウェアで処理し易いように設計 • エコシステムの形成
  5. VXLAN ヘッダー 0 1 2 3 0 1 2 3

    4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |R|R|R|R|I|R|R|R| Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | VXLAN Network Identifier (VNI) | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  6. Fabric のトレンド • Service Oriented Architecture の台頭 • 2 or

    3階層のネットワークから Leaf / Spineネッ トワークへ • 非常に高い密度と帯域の要求 • Layer 3 で ECMP • オーバーサブスクライブの低減 • 低く、かつ、一様な遅延特性 • Wire & configure once なネットワーク • 一様なネットワーク設定 WAN/Internet WAN/Internet
  7. マルチパス特性 • 背景 – East-West トラフィックの増大に対応するため、マルチパスによる Fabric ネットワークが広く用いられるように なってきている。 •

    要件 – 1つのフローは同じパスを通ること – マルチパスを有効に活用するために十分なエントロピーを持つこと
  8. VXLAN のマルチパス VXLAN (8) UDP (8) IP (20) Hash (src/dst

    MAC addr, src/dst IP addr, src/dst port number, etc.) * dst port = 4789 src port = Hash() Ether IP TCP Data 元パケット * 何をハッシュするか、どのようにハッシュするかは厳密には決められておらず、実装依存です。
  9. VXLAN エコシステム • スイッチ・ルータ – Arista、Brocade、Cisco、Cumulus、DELL、HP、 Huawei、Juniper、Open vSwitch、Pica8 • オペレーティングシステム

    – Linux、VMware • アプライアンス – A10、Citrix、F5 • テスター – IXIA、Spirent • ASIC / NIC – Broadcom、Intel (Fulcrum)、Emulex、Mellanox • Cloud Orchestrator – CloudStack、OpenStack、vCAC CONFIDENTIAL 9 Note: this is not an exhaustive list
  10. NVGRE • Microsoft / Arista / Intel / Google /

    HP / Broadcom / Emulex らが提唱 – draft-sridharan-virtualization-nvgre-04.txt • 24bit の Virtual Subnet ID (VSID) と 8bit の FlowID • Encapsulation は GRE のまま – Key Field に VSID + FlowID – L3 オーバーレイ – マルチパス可能(理論上) • Windows との親和性
  11. NVGRE ヘッダー 0 1 2 3 0 1 2 3

    4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0| |1|0| Reserved0 | Ver | Protocol Type 0x6558 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Virtual Subnet ID (VSID) | FlowID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  12. NVGRE のマルチパス GRE (8) IP (20) Hash (src/dst MAC addr,

    src/dst IP addr, src/dst port number, etc.) * FlowID = Hash() Ether IP TCP Data 元パケット * 何をハッシュするか、どのようにハッシュするかは厳密には決められておらず、実装依存です。 ルータ・スイッチは GRE の Key Field まで含めて ECMP する必要がある!
  13. NVGRE エコシステム • スイッチ・ルータ – Huawei – Arista や Brocade

    も対応は表明しているが、まだモノは出ていない?? • オペレーティングシステム – Microsoft (Windows Server 2012 R2) • アプライアンス – F5 • ASIC / NIC – Emulex、Mellanox • Cloud Orchestrator – System Center 2012 R2 CONFIDENTIAL 13 Note: this is not an exhaustive list
  14. STT (Stateless Transport Tunneling) • VMware が提唱する L2 over L3

    Encapsulation 手法 – draft-davie-stt-06.txt • Why yet another L2 over L3 encapsulation ? – 性能 – 多くのコンテクスト情報 – マルチパス可能 – ソフトウェア指向
  15. TSO (TCP Segmentation Offload) • 最近の(ここ4〜5年に出た)NIC には様々なハードウェア・アクセラレーション機能が搭載されている – RSS、GSO/TSO、Checksum Offload、etc.

    • TSO は、通常 OS(ソフトウェア)が行わなければいけないSegmentation 処理をNICがハードウェア で行ってくれる – 最大 64K bytes のパケットを送れる à Context Switch を劇的に減らせる • NICには “TCP” に見えるようなパケットで Encapsulation してやる事により、TSO のメリットを享受で きる!
  16. Encapsulation / Segmentation 処理の流れ STT (18) TCP’ (20) IP (20)

    Payload 1 STT (18) TCP’ (20) IP (20) Payload 2 TCP’ (20) IP (20) Payload n TCP’ (20) IP (20) L2 Frame (up to ≒ 64K) ! ! ! ! (HWによる) Segmentation 処理
  17. TCP-like ヘッダー 0 1 2 3 0 1 2 3

    4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Port | Destination Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number(*) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Acknowledgment Number(*) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | |U|A|P|R|S|F| | | Offset| Reserved |R|C|S|S|Y|I| Window | | | |G|K|H|T|N|N| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | Urgent Pointer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  18. STT ヘッダー 0 1 2 3 0 1 2 3

    4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version | Flags | L4 Offset | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Max. Segment Size | PCP |V| VLAN ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Context ID (64 bits) + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Padding | data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | |
  19. スループットと CPU 使用率 0 10 20 30 40 50 60

    70 80 90 100 0 1 2 3 4 5 6 7 8 9 10 Linux Bridge OVS Bridge OVS-GRE OVS-STT スループット CPU (Receive) CPU (Send) (Gbps) (%) 出典: http://networkheresy.com/2012/06/08/the-overhead-of-software-tunneling/
  20. STT のマルチパス STT (18) TCP’ (20) IP (20) Hash (src/dst

    MAC addr, src/dst IP addr, src/dst port number, etc.) dst port = 7471 (TBD) src port = Hash() Ether IP TCP Data 元パケット * 何をハッシュするか、どのようにハッシュするかは厳密には決められておらず、実装依存です。
  21. Geneve (Generic Network Virtualization Encapsulation) • VMware, Microsoft, RedHat, Intel

    が提唱する新たな encapsulation – draft-gross-geneve-00.txt • ゴール – 拡張性を備えること • Service Chaining や Metadata のサポート – NIC 等のオフロード機能を有効に活用できること – これら2つを「同時に」満たすこと! • 特徴 – Option フィールドで TLV 形式の情報を追加できる – ハードウェアが TSO を実行できるように、どこから TSO すべきかを NIC が判断可能 – OAM や Option 解釈必須の有無などを指定可能 CONFIDENTIAL 21
  22. Geneve Header & Option Header Geneve Header 0 1 2

    3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Ver| Opt Len |O|C| Rsvd. | Protocol Type | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Virtual Network Identifier (VNI) | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Variable Length Options | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Option 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Option Class | Type |R|R|R| Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Variable Option Data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  23. Geneve 実装 • Open vSwitch (OVS)に実装され、master branch にマージ – VNI

    の指定が可能 – Geneve Options の指定は(まだ)できない – OAM フラグを立てることはできない? – Critical フラグは Critical Options があれば自動的に立つ(ようにコード上は読める) • Wireshark に Geneve の dissector が実装され、master branch にマージ • Geneve に対応した NIC は今後リリース予定 CONFIDENTIAL 23
  24. Running Geneve on Open vSwtich CONFIDENTIAL 24 host-1:~$ sudo ovs-vsctl

    add-br br0 host-1:~$ sudo ovs-vsctl add-br br1 host-1:~$ sudo ovs-vsctl add-port bra eth0 host-1:~$ sudo ifconfig eth0 0 host-1:~$ sudo dhclient br0 host-1:~$ sudo ifconfig br1 10.0.0.1 netmask 255.255.255.0 host-1:~$ sudo ovs-vsctl add-port br1 geneve1 -- set interface \ geneve1 type=geneve options:remote_ip=192.168.203.149 host-2:~$ sudo ovs-vsctl add-br br0 host-2:~$ sudo ovs-vsctl add-br br1 host-2:~$ sudo ovs-vsctl add-port bra eth0 host-2:~$ sudo ifconfig eth0 0 host-2:~$ sudo dhclient br0 host-2:~$ sudo ifconfig br1 10.0.0.2 netmask 255.255.255.0 host-2:~$ sudo ovs-vsctl add-port br1 geneve1 -- set interface \ geneve1 type=geneve options:remote_ip=192.168.203.151
  25. Geneve に関する情報 • 英語 – http://tools.ietf.org/html/draft-gross-geneve-00 – http://cto.vmware.com/geneve-vxlan-network-virtualization-encapsulations/ – http://www.enterprisenetworkingplanet.com/netsp/geneve-generic-network-virtualization-encapsulation-

    protocol-advances-video.html – http://searchsdn.techtarget.com/news/2240219051/VMware-Microsoft-end-encapsulation-protocol-turf- war-with-GENEVE – http://www.plexxi.com/2014/06/attention-overlay-tunnel-construction-ahead • 日本語 – http://blog.shin.do/2014/05/geneve-encapsulation/ – http://blog.shin.do/2014/07/geneve-on-open-vswitch/ CONFIDENTIAL 27
  26. Geneve replaces VXLAN / STT / NVGRE ? • Geneve

    は VXLAN を置き換えるか? – NO – VXLAN のエコシステムはすでに短時間で置き換えることができないほど大きく成長している – VMware は引き続き VXLAN をサポートし、パートナーと連携をしていく • Geneve は STT を置き換えるか? – 短期的には NO。長期的には Maybe。 – Geneve が広く受け入れられ、多くの NIC でオフロードができるようになるのが前提 • Geneve は NVGRE を置き換えるか? – 短期的には NO。長期的には Maybe。 – Geneve が Windows に実装され、現在の NVGRE と同程度のエコシステムが形成されれば・・・ CONFIDENTIAL 28
  27. 世の中一筋縄にはいかない^^ • Geneve に反対している人たちもいる! • 主な主張 – Geneve で実現しようとしていることは、既存の encapsulation

    (L2TPv3 static tunneling や VXLAN)もしくは それらの若干の拡張で実現可能!? – Service Chaining や Metadata を encapsulation と bind すべきではない(Encapsulation 独立であるべ き)!? – VNI が 24bit では不十分!? CONFIDENTIAL 30
  28. L2TPv3 static tunneling • L2TP は本来シグナリングを伴うが、L2TPv3 static tunneling はシグナリングを使わず、両端に静的 に設定を設定をすることで

    L2TPv3 を encapsulation (i.e. Pseudo Wire)として使う方法 • L2TPv3 自体は2005年に RFC (3931) になっており、枯れた仕様。Cisco IOS や Linux の実装あり。 CONFIDENTIAL 31 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |T|x|x|x|x|x|x|x|x|x|x|x| Ver | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Session ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Cookie (optional, maximum 64 bits)... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  29. L2TPv3 static tunneling を L2 over L3 encapsulation とみた場合 •

    Session ID (32bit) が VNI に相当する • L2TPv3 は IP でも UDP でもトランスポートできるが、マルチパス性を考えると UDP が有利 • より多くのコンテキスト情報(メタデータやService Chaining)は両端に静的に設定し、Session ID で 暗黙に表現することになる – したがって 32bit の Session ID を純粋に VNI として使うことはできない • 厳密には L2TPv3 には規定はないが、L2TPv2 の名残りの「オフセット」フィールドを使い、パケットの どこから TSO をするべきか伝えることは可能かも?? CONFIDENTIAL 32
  30. VXLAN Generic Protocol Extension (a.k.a. eVXLAN) • Cisco、Huawei、Intel、Microsoftらが提唱 – draft-quinn-vxlan-gpe-03.txt

    • VXLAN の拡張 – 複数プロトコルのサポート • IPv4 (0x01)、IPv6 (0x02)、Ethernet (0x03)、Network Service Header [NSH] (0x04) – OAM サポート – バージョン • Cisco ACI で使われている CONFIDENTIAL 33 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |R|R|R|R|I|P|R|O|Ver| Reserved |Next Protocol | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | VXLAN Network Identifier (VNI) | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  31. VXLAN-gpe を L2 over L3 encapsulation とみた場合 • ほぼ VXLAN

    と同様の特性 – VNI 長 – マルチパス性 – ハードウェアでの実装のし易さ • 最大の特徴は NSH ヘッダを使った Service Chaining を可能にすること! • 拡張性はなし CONFIDENTIAL 34
  32. 各種 encapsulation 方式比較 VXLAN NVGRE STT Geneve L2TPv3 static tunnel

    VXLAN-gpe 仮想ネットワ ーク識別子 VNI (24bit) VSID (24bit) Context ID (64bit) VNI (24bit) Session ID (32bit) VNI (24bit) トランスポー ト UDP GRE TCP UDP IP or UDP UDP マルチパス性 ◦ △ ◦ ◦ ◦ ◦ ハードウェア 実装のし易さ ◦ ◦ △ ◦ ◦ ◦ TSO との親 和性 △ △ ◦ ◦ △ △ Metadata サ ポート × × △ ◦ △ × Next Protocol (Service Chaining) × ◦ × ◦ △ ◦ 拡張性 × × × ◦ × × CONFIDENTIAL 36