LAGに所属するポートのVLAN設定について(EOS,IOSXE,Nexusの違い) - NETCON lv1-8

https://zenn.dev/katshima/articles/cfbef2bf064d95

問題の解説がCiscoの挙動と違うようなので検証した。

疑問: port-channelにメンバポートを組み入れる際、メンバポートのVLANはpo側に合わせないといけないのではないか？

# 結論:
- Arista cEOSではメンバポートの設定VLANではなくpoのVLAN設定が使われる。
- Cisco IOSXEではメンバポートとpoのVLAN設定が異なると、`メンバポートがsuspend`になる
- Cisco NXOSではメンバポートとpoのVLAN設定が異なると、`コマンドが入らない`

# 共通設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30938/5d11188d-4a5f-741c-7b1e-d14d41fcaed0.png)

RT1, RT2間をeth1,2の2本のLinkでつなぐ。poをvlan100として、メンバをvlan200,300としておき、各ルータのvlan 100同士でpingが飛ぶかを確認。図はIOS-XEの例。



# cEOSでの検証
環境はContainerLab上の EOS 4.33.1.1F

Config
```
vlan 100,200,300
!
interface Port-Channel10
   switchport trunk allowed vlan 100
   switchport mode trunk
   port-channel min-links 2
!
interface Ethernet1
   switchport trunk allowed vlan 200
   switchport mode trunk
   channel-group 10 mode active
!
interface Ethernet2
   switchport trunk allowed vlan 300
   switchport mode trunk
   channel-group 10 mode active
!
interface Vlan100
   ip address 192.168.0.1/24
   ! RT2側は0.2
```

結果
```
ceos1#ping 192.168.0.2 repeat 1
PING 192.168.0.2 (192.168.0.2) 72(100) bytes of data.
80 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=2.69 ms
```

show vlan
```
ceos1#show vlan
1     default                          active
100   VLAN0100                         active    Cpu, Po10
200   VLAN0200                         active
300   VLAN0300                         active
```

# Cisco IOS-XE

CML2のIOSXE 17.15.1

Config
```
vlan 100,200,300
!
interface Port-channel10
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 100
 switchport mode trunk
!
interface Ethernet0/1
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 200
 switchport mode trunk
 channel-group 10 mode active
!
interface Ethernet0/2
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 300
 switchport mode trunk
 channel-group 10 mode active
!
interface Vlan100
 ip address 192.168.0.1 255.255.255.0
 ! RT2は192.168.0.2
```
表示

```

*Feb  1 15:29:17.763: %LINEPROTO-5-UPDOWN: Line protocol on Interface Port-channel10, changed state to down
*Feb  1 15:29:42.658: %ETC-5-CANNOT_BUNDLE2: Et0/1 is not compatible with Po10 and will be suspended (vlan mask is different)
*Feb  1 15:29:42.658: %ETC-5-CANNOT_BUNDLE2: Et0/2 is not compatible with Po10 and will be suspended (vlan mask is different)
```

結果: NG
```
rt1#ping 192.168.0.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.0.2, timeout is 2 seconds:
.....
```

show int: 以下のようにpoに参加できずsuspendになる。
```
rt1#show int status
Port         Name               Status       Vlan       Duplex  Speed Type
Et0/1                           suspended    trunk        full   auto 10/100/1000BaseTX
Et0/2                           suspended    trunk        full   auto 10/100/1000BaseTX
Po10                            notconnect   1            full   auto 10/100/1000BaseTX
```

show etherchannel
```
rt1#show etherchannel 10 summary
        I - stand-alone s - suspended
10     Po10(SD)        LACP        Et0/1(s)        Et0/2(s)
```

直す。両方でconfig修正。
```
int range eth 0/1-2
 switchport trunk allowed vlan 100
```
入れた瞬間のlog
```
*Feb  1 15:36:24.999: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/1, changed state to up
*Feb  1 15:36:24.999: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/2, changed state to up
*Feb  1 15:36:28.847: %LINK-5-UPDOWN: Interface Port-channel10, changed state to up
*Feb  1 15:36:29.847: %LINEPROTO-5-UPDOWN: Line protocol on Interface Port-channel10, changed state to up
```
結果
```
rt1#ping 192.168.0.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.0.2, timeout is 2 seconds:
.!!!!
```

# NX-OS

そもそもvlan設定が違うと入らない。

```
(config-if)# interface port-channel10
(config-if)#   switchport
(config-if)#   switchport mode trunk
(config-if)#   switchport trunk allowed vlan 100
(config)# int eth 1/33
(config-if)#    switchport
(config-if)#    switchport trunk allowed vlan 200
(config-if)#    switchport mode trunk
(config-if)#    channel-group 10 mode active
Command failed: Port not compatible
  Port allowed VLAN list : Port-channel VLAN list doesn't match the interface VLAN list
```

合わせると入る。

```
(config-if)#  int eth 1/33
(config-if)#   switchport trunk allowed vlan 100
(config-if)# channel-group 10 mode active
(config-if)#
```