vMAN(ExtremeNetworks VLAN Tunneling)をためす

広域EthernetVPN実現の基礎技術としてVLANスタッキングというものがありますが、少し試してみたくなったので実際にやってみた。

実験環境

というわけで、今回の実験環境はこんな感じ。

エッジスイッチ

  • Summit48i
    • Extremeware Version 6.2.2
  • Cisco Catalyst 3548-XL-EN
    • IOS (tm) C3500XL Software (C3500XL-C3H2S-M), Version 12.0(5)WC17

vMANコアスイッチ

  • Summit7itx
    • 7.3.3.4 patch-patch1_v733b4-r1
  • Summit48i
    • Extremeware Version 6.2.2

エッジスイッチに異なるネットワークを接続、そのトランクポートをvMANコアスイッチ(Summit7itx)に流し込みます。
その流し込んだトラフィックを対向のvMANコアスイッチ(Summit48i)から取り出します。
その取り出したトラフィックをさらにエッジスイッチに流し込むことで、最終的にタグVLANを解除します。

接続はこんな感じ。

    NW1        NW2
  vlan 10    vlan 11
     |          |
+---------------------+
|      Summit48i      |
+---------------------+
           | ここは単なるトランク
           | trunk (vlan 10+11)
           |
           |port:1
+---------------------+
|      Summit7itx     |
+---------------------+
           |port:2
           |
           | vlan "tunnel-1"
           |
           | この部分がVlanスタック
           | ExtremeWareでは configure dot1q ethertype の変更が必要
           | trunk (vlan 20) on (vlan 10+11)
           |
           |port:2
+---------------------+
|      Summit48i      |
+---------------------+
           |port:1
           |
           | ここは単なるトランク
           | trunk (vlan 10+11)
+---------------------+
| Catalyst 3548-XL-EN |
+---------------------+
     |          |
  vlan 10    vlan 11
    NW1        NW2

EthernetFrameの移り変わり

VLANスタッキングは、多重にタグVLANを構成することで実現していきます。
その際のEthernetFrameの移り変わりは以下の通りです。

EthernetFrame(ホストからエッジスイッチ間のトラフィック)
max:1518byte
+-------------------------------------------------------+
| DA(6) | SA(6) | EtherType(2) | DATA(46-1500) | FCS(4) |
+-------------------------------------------------------+

EthernetFrame with 802.1q(tagged vlan)(エッジスイッチからvMANコアスイッチ間のトラフィック)
max:1522byte
+------------------------------------------------------------------------+
| DA(6) | SA(6) | 802.1q Frame(4) | EtherType(2) | DATA(46-1500) | FCS(4)|
+------------------------------------------------------------------------+

802.1q Frameの詳細
+--------------------------------------------------------+
| TPID 0x8100(16bit) | Priority(3bit) | CFI(1) | VID(12) |
+--------------------------------------------------------+

そこで、実際に流れるトラフィックをキャプチャして確認します。
以下に示すものは実際にキャプチャしたEthernetFrameの先頭部分です。
SAが改変されているのはご愛嬌。

       | DA(6)          | SA(6)           |TPID |P+C+VID|
0000   ff ff ff ff ff ff 00 00 00 00 00 FF 81 00 00 0a
       | EtherType |
0010   08 00 

そして次が、コアの部分、VLANスタック状態のEthernetFrameです。
ちなみにこの状態のトラフィックWireSharkに流し込んでも、EthernetFrameIIと認識されるだけです。EthernetType0x88a8を解釈できないようです。

vMAN(ExtremeNetworks VLAN Tunneling)
max:1526byte
+------------------------------------------------------------------------------------------+
| DA(6) | SA(6) | vMAN Frame(4)  | 802.1q Frame(4) | EtherType(2) | DATA(46-1500) | FCS(4) |
+------------------------------------------------------------------------------------------+

vMAN Frame
+--------------------------------------------------------+
| TPID 0x88a8(16bit) | Priority(3bit) | CFI(1) | VID(12) |
+--------------------------------------------------------+

今回もEthernetFrameをキャプチャして見ます。
Vlanスタックのした側にVlan10の通信が隠されていることが分かります。

       | DA(6)          | SA(6)           |TPID |P+C+VID|
0000   ff ff ff ff ff ff 00 00 00 00 00 FF 88 a8 00 14
                                                    ↑
                                               VlanID 20
       |TPID |P+C+VID| EtherType |
0010   81 00   00 0a     08 00
                  ↑
               VlanID 10

で、最終的にトンネルの出口を作って。

       | DA(6)          | SA(6)           |TPID |P+C+VID|
0000   ff ff ff ff ff ff 00 00 00 00 00 FF 81 00 00 0a
       | EtherType |
0010   08 00

無事に取り出すことができました。

config

vMANコアスイッチにおいて少し変わった設定をする以外は、単なるVLANの設定で大丈夫です。
この時重要なのは、「configure dot1q ethertype」をvMANに接続するスイッチ間で統一しておく必要があります。
ちなみに「ethertype 0x88a8」はあらかじめExtremeNetworks vMAN用にIEEEに予約されています。マニュアルでもこの値を設定することが推奨されています。
ただし、ポート単位でEtherTypeを変更するような運用はできないので注意が必要です。

Summit7itx

configure dot1q ethertype 0x88a8
create vlan tunnel-1
configure vlan tunnel-1 tag 20
//このポートに下流のトランクポートを繋げます
configure vlan tunnel-1 add port 1 untagged
//このポートに上流、つまりvMANコアネットワークを接続します
configure vlan tunnel-1 add port 2 tagged

Summit48i

configure dot1q ethertype 88a8
create vlan tunnel-1
configure vlan tunnel-1 tag 20
configure vlan tunnel-1 add port 1 untagged
configure vlan tunnel-1 add port 2 tagged

また、場合によってはジャンボフレームの設定が必要です。

config jumbo-frame size 1530

ちなみに、CiscoQinQと同じ設定にしてみても面白いかも
(かといって相互接続できるかは不明、今度検証してみる)

configure dot1q ethertype 0x9100
       | DA(6)          | SA(6)           |TPID |P+C+VID|
0000   ff ff ff ff ff ff 00 00 00 00 00 FF 91 00 00 0a
       | EtherType |
0010   08 00

公開資料が間違っていたので

さて、今回いろいろとやったわけですが、Extremeの公開資料(http://apps.extremenetworks.com/libraries/techbriefs/Metro_TG_vMAN.asp)の図(特にEthernetFrameの図)が間違っているのを見つけたので、検証結果をつけてメーカーにメール送っておいた。