Ubiquiti Networks Edgerouter X(ER-X) と L2 スイッチ備忘録です.
買って早々にファームウェアの書込み失敗で文鎮化した ER-X,
の通り,無事,復旧し,現在,実利用に向けて設定中なのですが,こんなことできるんだ,と驚いたことがあったので,その備忘録です.
L2 レベルルーティングのハードウェア処理
Ubiquiti の設定例を眺めると,なぜだか,ER-X を L2-Switch として設定するなんてページがあります.
これ,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つしか積まれていない,というのが理由のよう.
じゃあ,例えば,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 を認識できない
ということです(下のページの半ばに書いてある).
この制限,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 負荷が高くなってしまうようなら,回線速度が期待できないことになり,あまり嬉しくない.つまり,ハードウェア処理できると嬉しい訳ですが,
を見ると,何と,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 の設定数分利用できてしまう訳です.特に我が家の場合,
を見て頂ければ分かりますが,自宅の2階にネットワーク機器を設置するため,VLAN-enable なスイッチ GS105E
を対向で1階と2階に設置しているのですが,この片方を完全に ER-X に置き換え,さらに ER-X にルーターを任せることができるということになります.
NETGEAR の GS105E の消費電力は 3W,ER-X の消費電力は 5W ということで,差し引きたった 2W で高度なルーティング機能を利用可能という計算となりますし,大きさも実は GE105E よりも少し小さいので,いままでと同様全く目立ちません.
まぁ,eth0 が空いてしまいますが,これは管理用ポートだと思えば良く,無事,見た目の上でも,論理的な意味でも今までのネットワーク構成を変えずに本機に入れ変え可能だということが分かり一安心です.
しかしこんな機器が定価$60ですか…….良い時代になったなぁとづくづく感じます.
PS. うーん,出来ることから考えると,ER-X って手に入る中で最も安価な L3 スイッチですねぇ.普通低価格なルーターって,WAN と LAN の口が固定されているのが普通ですが,これはこの辺りが完全に設定次第ってのが良いところだと思います.