VIRL : IOSvL2 使用レビュー

こんにちは。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 でコンフィグを生成してみました。

virl123

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本 で接続する構成にしました。

virl124

起動させて、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 を使うと思います。