Ubiquiti Networks Edgerouter X と L2 スイッチ備忘録

Networks
Photo by hyt.

Ubiquiti Networks Edgerouter X(ER-X) と L2 スイッチ備忘録です.

買って早々にファームウェアの書込み失敗で文鎮化した ER-X,

文鎮化した Ubiquiti Networks Edgerouter X を復旧した備忘録
文鎮化した Ubiquiti Networks Edgerouter X を復旧した備忘録です. まずは,ER-X ってなに?ってところからスタートしたいと思います.なお,今回は手順が多いのでとても記事が 長い! です.御注意ください. U...

の通り,無事,復旧し,現在,実利用に向けて設定中なのですが,こんなことできるんだ,と驚いたことがあったので,その備忘録です.

L2 レベルルーティングのハードウェア処理

Ubiquiti の設定例を眺めると,なぜだか,ER-X を L2-Switch として設定するなんてページがあります.

Ubiquiti Help Center
Find help and support for Ubiquiti products, view online documentation and get the latest downloads.

これ,GUI から簡単に設定可能なんですが,実際に設定すると,CUI から確認できる設定は,

interfaces {
...
      switch switch0 {
        mtu 1500
        switch-port {
            interface eth1 {
            }
            interface eth2 {
            }
            interface eth3 {
            }
            interface eth4 {
            }
        }
....

みたいになります.この場合,eth1, eth2, eth3, eth4 から成る switch0 が構成されたことになる訳です.

で,この switch0 というのは,ER-X の場合,

作れるのは1つだけ

です.なんでかというと,どうも switch0 での L2 レベルルーティングはハードウェア処理される,つまり CPU に負荷を掛けず高速に処理可能みたいなんですが,そのための chip はさすがに1つしか積まれていない,というのが理由のよう.

https://kazoo.ga/the-switch-in-edgerouter-x/
https://community.ubnt.com/t5/EdgeRouter/Can-i-create-an-additional-Switch-1-with-ETH3-and-ETH4-in-it/td-p/1462572

じゃあ,例えば,eth1, eth2 から成る L2 スイッチと,eth3, eth4 から成る L2 スイッチの2つを構成したい場合はどうするかと言うと,

  • eth1 と eth2 は switch0 として構成
  • eth3 と eth4 は br0 として構成(eth3 と eth4 をブリッジする)

の様にすれば良いようで(もちろん逆でも可),もちろんこの場合,eth3 と eth4 の L2 レベルルーティングは CPU を使って行うことになる訳です.

VLAN-Aware の定義と制限事項

さて,この switch0 なんですが,単に L2 レベルルーティングのハードウェア処理が可能というだけではなくて,VLAN を理解できるスイッチとして構成することができます.

これも GUI から定義可能で,実際に設定すると CUI から確認できる設定は,

interfaces {
....
      switch switch0 {
        mtu 1500
        switch-port {
            interface eth1 {
                vlan {
                    vid 1
                    vid 10
                    vid 100
                    vid 1000
                }
            }
            interface eth2 {
                vlan {
                    pvid 1
                    vid 10
                }
            }
            interface eth3 {
                vlan {
                    pvid 10
                }
            }
            interface eth4 {
                vlan {
                    vid 1
                    vid 10
                    vid 100
                    vid 1000
                }
            }
            vlan-aware enable
        }
....

のような感じになり,この場合,例えば eth2 は,VLAN1 のパケットを Untag して,VLAN10 のパケットは Tag 付きのまま取り扱うということになります.

※ 以下の制限は現行 Firmware(v1.10.5) で改善されているようです.


で,注意しないといけないのは,

eth0 は VLAN を認識できない

ということです(下のページの半ばに書いてある).

Ubiquiti Help Center
Find help and support for Ubiquiti products, view online documentation and get the latest downloads.

この制限,GUI から設定した場合は,VLAN aware にチェックを付けても eth0 に VID と PVID を設定する項目が出てこないので分かり易いんですが,CUI からだと設定自体は作れてしまうんです.しかし,commit するとなにやらエラーが出て,show configure で設定をもう一度見ると,switch-port の部分の設定が崩れてしまう.なんでそうなるのか訳が分からずに色々調べて初めて上の記事に気が付きました.で,上の記事に目を通すと,単に VLAN-aware にできるだけではないんだなと言うことに気が付きました.


VLAN のスイッチ内ルーティング

VLAN-aware なスイッチとして switch0 を構成できる(する)ということは,switch0 に異なるネットワークのパケットを流せる(流す)ということですから,これらのネットワークの間のパケットをルーティングできると嬉しい訳です.例えば,VLAN ID 1000 を WAN に割り当て,VLAN ID 1 を LAN に割り当てるとすると,switch0 の中で VLAN ID 1 と VLAN ID 1000 の通信を NAT できると嬉しい.

これは,switch0 に vif (Virtual Interface) を割り当てることで可能,しかも,この設定も GUI から定義可能で,実際に設定すると CUI から確認できる内容は,

interfaces {
    switch switch0 {
        mtu 1500
        switch-port {
            interface eth1 {
                vlan {
                    pvid 1
                    vid 1000
                }
            }
            interface eth2 {
                vlan {
                    pvid 1
          vid 10
                }
            }
            interface eth3 {
                vlan {
                    pvid 1
                }
            }
            interface eth4 {
                vlan {
                    pvid 1000
                }
            }
            vlan-aware enable
        }
        vif 1 {
            address 192.168.100.0/24
            .....
        }
.....
        vif 1000 {
            address dhcp
            ....
         }
....
}
service {
....
     nat {
         rule 5010 {
             description "masquerade for VLAN ID 1000"
             outbound-interface switch0.1000
             type masquerade
         }
...

みたいな感じになります.これで,eth4 に WAN 回線をつなぎ,eth1, eth2, eth3 を LAN として利用するできる.もちろん実際の設定はこれだけでは足りないですし,さらに,この場合は素直に eth4 を直接NATした方が良いとは思いますが,目的は達成できている訳です.

NAT とか VLAN とかのハードウェア処理

ここまで,switch0 の中でVLAN 間の通信を処理できることが分かりました.しかし,この処理をさせることで ER-X の CPU 負荷が高くなってしまうようなら,回線速度が期待できないことになり,あまり嬉しくない.つまり,ハードウェア処理できると嬉しい訳ですが,

Ubiquiti Help Center
Find help and support for Ubiquiti products, view online documentation and get the latest downloads.

を見ると,何と,ER-X は,

Bridged Interfaces, Deep Packet Inspection, NAT,  VLANs, GRE, PPPoE

のハードウェア処理に対応しています.

これ,初期状態だと無効みたいで,有効にしたければ,CUI で,

# set system offload hwnat enable
# commit
# save
$ exit
$ show ubnt offload
IPSec offload module: not loaded

HWNAT offload module: loaded

Traffic Analysis    :
  export    : enabled
  dpi       : enabled
    version       : 1.354

のようにすれば有効化できる.

実際に試すと,確かに CPU 負荷がものすごく下がります.設定は面倒ですが,switch0 の中で VLAN 間の通信を行わせても,実用上の問題は生じ無さそうなことが分かりました.

ただし,ちょっと疑問もあります.と言うのも,bridge interfaces もハードウェア処理可能となっていますから,別に switch0 を利用しなくても高速処理できるように見えるからです.

恐らく bridge interfaces, …, PoE をハードウェア処理する chip と switch0 を処理する chip が違っており,処理を分けた方が有利なんだろうなと思ってはいるのですが,実際にそうなのかどうかは今のところよく分かっていません.

結論

さて,ここまで分かると,本機(ER-X)の場合,eth1, eth2, eth3, eth4 のどれを WAN にするとか LAN にするとかいう設定とはせず,switch0 としてまとめた方が後々のネットワークの自由度を確保するという意味で望ましそうだな,という結論となります.

要するに,本機の場合,VLAN を使えば,WAN と LAN を VLAN の設定数分利用できてしまう訳です.特に我が家の場合,

自宅 LAN の理想と現実 (2) 〜タグVLANの使いどころ〜
自宅でタグVLANって便利ですよ.何で? って記事です.どんな複雑なことやってんだ!って言われそうですが,我が家ではNTTのフレッツ光用のホームゲートウェイと高速無線LANルーター,それにFAXをそれぞれ離れたところに設置するために使ってま...

を見て頂ければ分かりますが,自宅の2階にネットワーク機器を設置するため,VLAN-enable なスイッチ GS105E

NETGEAR GS105E 雑感
NETGEAR のスイッチ ProSAFE GS105E .これ値段から考えたら信じられないクオリティのスイッチ. ホームページを見ればわかりますが,ビジネス向けを謳う製品で,定価で7128円,Amazonなんかだと5000円を切る値付けな...

を対向で1階と2階に設置しているのですが,この片方を完全に ER-X に置き換え,さらに ER-X にルーターを任せることができるということになります.

NETGEAR の GS105E の消費電力は 3W,ER-X の消費電力は 5W ということで,差し引きたった 2W で高度なルーティング機能を利用可能という計算となりますし,大きさも実は GE105E よりも少し小さいので,いままでと同様全く目立ちません.

まぁ,eth0 が空いてしまいますが,これは管理用ポートだと思えば良く,無事,見た目の上でも,論理的な意味でも今までのネットワーク構成を変えずに本機に入れ変え可能だということが分かり一安心です.

しかしこんな機器が定価$60ですか…….良い時代になったなぁとづくづく感じます.

PS. うーん,出来ることから考えると,ER-X って手に入る中で最も安価な L3 スイッチですねぇ.普通低価格なルーターって,WAN と LAN の口が固定されているのが普通ですが,これはこの辺りが完全に設定次第ってのが良いところだと思います.

NetworksServer
スポンサーリンク
Following hyt!
タイトルとURLをコピーしました