こんにちは。ccieojisan です。
April Release (virl.0.9.242) で追加された L2スイッチングが使えるようになった IOSvL2 を使ってみました。
1点注意が必要なのは、従来使っていた Unmanaged Switch と異なり、IOSvL2 はノードカウントされてしまう点です。そのため、上限の15台制限に含まれてしまいます。
そのため、CCIEの勉強などでルータをより多く起動させた人などは Unmanaged Switch をつまく使い、スイッチの勉強部分で IOSvL2 を使うという方法が良いかなと思います。
virl.0.9.242 の IOSvL2 で使える機能は下記の通りです。
- Layer-2 forwarding (auto-config’d)
- Switchport (auto-config’d)
- 802.1q trunk, 802.1q vlans (auto-config’d)
- Spanning Tree (auto-config’d)
- Port-Channel (Pagp and Lacp)
- 802.1x passthrough
- Port-ACLs
- Dynamic Arp Inspection
- DHCP Snooping
- IP device tracking
- Switched Virtual Interfaces
- Layer-3 forwarding over SVIs
- Routing protocol support
※ auto-config’d と書かれているのは、AutoNetkit での自動生成がサポートされているという意味です。
また、Port mirroring(SPAN) 及び Private Vlans は現時点ではサポートされていません。
試しに、IOSvL2 ノードのみで、下記のような三角形のトポロジーを作成し、AutoNetkit でコンフィグを生成してみました。
AutoNetkit で生成されるコンフィグは非常に簡単なもので、下記になります。Gi0/0 は access port で Vlan1 に属し、OOB インタフェースとしてコンフィグの抽出などに使われます。
Gi0/1 及び Gi0/2 は他の IOSvL2 ルータとの接続インタフェースですが、デフォルトでは dot1q trunk になります。
interface GigabitEthernet0/0 description Mapped to Vlan1 for management switchport mode access media-type rj45 negotiation auto ! interface GigabitEthernet0/1 description to iosvl2-2 switchport trunk encapsulation dot1q switchport mode trunk media-type rj45 negotiation auto ! interface GigabitEthernet0/2 description to iosvl2-3 switchport trunk encapsulation dot1q switchport mode trunk media-type rj45 negotiation auto ! interface Vlan1 description OOB Management ip address 10.255.0.7 255.255.0.0 !
IOSvL2 では接続する機器により、デフォルトの設定が変わります。
- IOSvL2 <-> Host or Router : アクセスポート(default vlan2)
- IOSvL2 <-> IOSvL2 : .1q トランクポート
- IOSvL2 <-> Unmanaged switch : アクセスポート(default vlan2)
※ IOSvL2 及び Unmanaged Switch から Flat へ接続するのはサポートされません。
簡単にいくつか L2 機能を試してみました。
Spanning Tree
IOSvL2 3台全てで Vlan2 を作成します。
iosvl2-1#conf t Enter configuration commands, one per line. End with CNTL/Z. iosvl2-1(config)#vlan 2 iosvl2-1(config-vlan)#exit iosvl2-1(config)#end
Spanning Tree のステータスを確認すると、ちゃんと動作していることが分かります。
iosvl2-1#show spanning-tree vlan 2 VLAN0002 Spanning tree enabled protocol ieee Root ID Priority 32770 Address fa16.3e18.7a4f Cost 4 Port 3 (GigabitEthernet0/2) Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 32770 (priority 32768 sys-id-ext 2) Address fa16.3ed9.441c Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 300 sec Interface Role Sts Cost Prio.Nbr Type ------------------- ---- --- --------- -------- -------------------------------- Gi0/1 Altn BLK 4 128.2 Shr Gi0/2 Root FWD 4 128.3 Shr
SVI
各 IOSvL2 スイッチに Vlan2 インタフェースを作成し、192.168.1.x/24 のアドレスを設定します。
iosvl2-1#conf t Enter configuration commands, one per line. End with CNTL/Z. iosvl2-1(config)#int vlan 2 iosvl2-1(config-if)#ip address 192.168.1.1 255.255.255.0 iosvl2-1(config-if)#no shut iosvl2-1(config-if)#end
ping も通り、ARP及びmac address-tableも問題なく学習します。
iosvl2-1#ping 192.168.1.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 13/17/23 ms iosvl2-1# iosvl2-1#show arp Protocol Address Age (min) Hardware Addr Type Interface Internet 10.255.0.7 - fa16.3ed9.8001 ARPA Vlan1 Internet 192.168.1.1 - fa16.3ed9.8002 ARPA Vlan2 Internet 192.168.1.2 0 fa16.3e5e.8002 ARPA Vlan2 iosvl2-1# iosvl2-1#show mac address-table vlan 2 Mac Address Table ------------------------------------------- Vlan Mac Address Type Ports ---- ----------- -------- ----- 2 fa16.3e18.8002 DYNAMIC Gi0/2 2 fa16.3e5e.8002 DYNAMIC Gi0/2 Total Mac Addresses for this criterion: 2
SVIルーティング
下記 OSPF 設定を IOSvL2 スイッチ 3台に行い、OSPFを動作させてみます。※ Vlan1 は OOB のため、passive にしておきます。
iosvl2-1#conf t Enter configuration commands, one per line. End with CNTL/Z. iosvl2-1(config)#router ospf 1 iosvl2-1(config-router)#passive-interface vlan1 iosvl2-1(config-router)#network 0.0.0.0 0.0.0.0 area 0 iosvl2-1(config-router)#end
また、各ルータで適当にループバックインタフェースにアドレスを設定しておきます。(設定省略) 例 : iosvl2-1 lo0 1.1.1.1/32
OSPFネイバ確立及びOSPF経路学習が問題なくできていることが確認できます。
iosvl2-1#show ip ospf nei Neighbor ID Pri State Dead Time Address Interface 192.168.1.2 1 FULL/BDR 00:00:31 192.168.1.2 Vlan2 192.168.1.3 1 FULL/DROTHER 00:00:36 192.168.1.3 Vlan2 iosvl2-1#show ip route ospf Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP a - application route + - replicated route, % - next hop override Gateway of last resort is not set 2.0.0.0/32 is subnetted, 1 subnets O 2.2.2.2 [110/2] via 192.168.1.2, 00:01:43, Vlan2 3.0.0.0/32 is subnetted, 1 subnets O 3.3.3.3 [110/2] via 192.168.1.3, 00:01:30, Vlan2
Port-Channel
最後はポートチャネルを試してみます。iosvl2-1 <-> iosvl2-2 間を下記のように 2本 で接続する構成にしました。
起動させて、iosvl2-1 及び iosvl2-2 に下記 L2 Port-Channel の設定を入れます。
iosvl2-1(config)#int range giga0/1, giga0/3 iosvl2-1(config-if-range)#switchport trunk encapsulation dot1q iosvl2-1(config-if-range)#switchport mode trunk iosvl2-1(config-if-range)#channel-group 1 mode active Creating a port-channel interface Port-channel 1 iosvl2-1(config-if-range)#no shut iosvl2-1(config-if-range)#end
Port-Channel もちゃんと動作しています。
iosvl2-1#show etherchannel summary Flags: D - down P - bundled in port-channel I - stand-alone s - suspended H - Hot-standby (LACP only) R - Layer3 S - Layer2 U - in use f - failed to allocate aggregator M - not in use, minimum links not met u - unsuitable for bundling w - waiting to be aggregated d - default port Number of channel-groups in use: 1 Number of aggregators: 1 Group Port-channel Protocol Ports ------+-------------+-----------+----------------------------------------------- 1 Po1(SU) LACP Gi0/1(P) Gi0/3(P)
まとめ
上記より、L2 Feature の基本的な設定や動作などのお勉強としては便利かなと思いますが、やはりノードカウントに入ってしまうというデメリットが大きいです。。なので、私は極力 Unmanaged switch を使うと思います。