站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

Catalyst 2960-Host in VLAN Flapping between port and port

前言

[Cisco Catalyst 2960 and 2960-S Series Switches] 預設值及 RHEL 4.8 AS 設定網卡 [Bonding] 功能,之後在 2960 Console 及 Logging 上會一直看到類似如下訊息 (約 10 秒出現一次)

 00:08:42: %SW_MATM-4-MACFLAP_NOTIF: Host 0015.1736.984a in vlan 1 is flapping between port Gi0/10 and port Gi0/9
 00:08:56: %SW_MATM-4-MACFLAP_NOTIF: Host 0015.1736.984a in vlan 1 is flapping between port Gi0/9 and port Gi0/10
 00:09:11: %SW_MATM-4-MACFLAP_NOTIF: Host 0015.1736.984a in vlan 1 is flapping between port Gi0/10 and port Gi0/9
 00:09:27: %SW_MATM-4-MACFLAP_NOTIF: Host 0015.1736.984a in vlan 1 is flapping between port Gi0/10 and port Gi0/9
 00:09:43: %SW_MATM-4-MACFLAP_NOTIF: Host 0015.1736.984a in vlan 1 is flapping between port Gi0/9 and port Gi0/10

查看 [Cisco Systems Catalyst 2960 Switch System Message Guide] 可知若有上述訊息出現請檢查是否接線有 Loop 的情況發生,但檢查後發現接線並無 Loop 情況且 Switch 有啟用 [Spanning-Tree] 功能,但上述訊息還是不斷出現。

實作環境

安裝及設定

找到上述訊息出現的原因,我們可分為二方面來著手,您可改變 RHEL 的 Bonding 設定或改變 Switch 的設定即可。

解法 1 - 由 RHEL 方面下手

步驟1.檢查 RHEL Bonding 設定

此例中 Bonding 網卡為 eth1、eth2,而 Bonding 網卡為 bond0 其 Bonding 模式目前為 Load Balancing (Round-Robin) 模式。

 #cat /etc/sysconfig/network-scripts/ifcfg-bond0             //查看 bonding 網卡內容
 DEVICE=bond0
 BOOTPROTO=none
 ONBOOT=yes
 NETWORK=192.168.1.0
 NETMASK=255.255.255.0
 IPADDR=192.168.1.10
 USERCTL=no
 #cat /etc/sysconfig/network-scripts/ifcfg-eth1              //查看 eth1 網卡內容
 DEVICE=eth1
 BOOTPROTO=none
 HWADDR=00:15:17:36:98:4A
 ONBOOT=yes
 MASTER=bond0
 SLAVE=yes
 USERCTL=no
 #cat /etc/sysconfig/network-scripts/ifcfg-eth2              //查看 eth1 網卡內容
 DEVICE=eth2
 BOOTPROTO=none
 HWADDR=00:15:17:36:98:4B
 ONBOOT=yes
 MASTER=bond0
 SLAVE=yes
 USERCTL=no 
 #cat /etc/modprobe.conf                                    //查看 Bonding 設定檔
 alias eth1 e1000
 alias eth2 e1000
 alias scsi_hostadapter megaraid_sas
 alias scsi_hostadapter1 ata_piix
 alias bond0 bonding                                        //bonding 設定
 options bond0 miimon=100                                   //bonding 設定 (未指定 mode 則為 mode=0)

步驟2.改變 RHEL Bonding 設定

Bonding 設定檔為 /etc/modprobe.conf 在預設情況下若不指定 Mode 則為 Mode=0 即 Load Balancing (Round-Robin),經過實測後若設為此模式但 Switch 未設定 Channel-Group 則模擬網路斷線發生時大約會掉 3 ~ 8 個封包,而此次的需求並非合併頻寬還是網路的備援而以,因此請設定 Mode=1 也就是 Fault-Tolerance Active-Backup 模式,經實測模擬網路斷線發生時大約只會掉 1 個封包而以,有關 Bonding 模式可參考 [Linux Horizon - Bonding (Port Trunking)]

 #vi /etc/modprobe.conf                                     //修改 Bonding 設定檔
 alias eth1 e1000
 alias eth2 e1000
 alias scsi_hostadapter megaraid_sas
 alias scsi_hostadapter1 ata_piix
 alias bond0 bonding                                        
 options bond0 miimon=100 mode=1                            //修改此行設定,在結尾加上 mode=1

將 RHEL 的 Bonding 設定檔更改後重新啟動 RHEL 後發現 Switch 便不會再出現類似下列錯誤訊息

 00:08:42: %SW_MATM-4-MACFLAP_NOTIF: Host 0015.1736.984a in vlan 1 is flapping between port Gi0/10 and port Gi0/9
 00:08:56: %SW_MATM-4-MACFLAP_NOTIF: Host 0015.1736.984a in vlan 1 is flapping between port Gi0/9 and port Gi0/10
 00:09:11: %SW_MATM-4-MACFLAP_NOTIF: Host 0015.1736.984a in vlan 1 is flapping between port Gi0/10 and port Gi0/9
 00:09:27: %SW_MATM-4-MACFLAP_NOTIF: Host 0015.1736.984a in vlan 1 is flapping between port Gi0/10 and port Gi0/9
 00:09:43: %SW_MATM-4-MACFLAP_NOTIF: Host 0015.1736.984a in vlan 1 is flapping between port Gi0/9 and port Gi0/10

解法 2 - 由 Switch 方面下手

步驟1.改變 Switch 設定

此例中 RHEL Bonding 網卡分別接至 Switch 的 Port 9 及 Port 10,登入 Switch 後設定這 2 Port 為 Channel-Group 即可,設定完成後便 Switch 便不會再出現錯誤訊息。

 Switch#conf t                                             //進入 Configure 模式
 Switch(config)#int range g0/9-10                          //進入 Port 9 ~ 10
 Switch(config-if-range)#channel-group 1 mode on           //設定 Port 9,10 Channel-Group 且 Mode 為 on
 Creating a port-channel interface Port-channel 1

2960 的 Channel-Group 有如下模式

 Switch(config-if)#channel-group 2 mode ?
  active     Enable LACP unconditionally
  auto       Enable PAgP only if a PAgP device is detected
  desirable  Enable PAgP unconditionally
  on         Enable Etherchannel only
  passive    Enable LACP only if a LACP device is detected

補充說明

參考

[Cisco Systems, Inc. Catalyst 3750, 3560, 3550, 2970, and 2960 Switch System Message Guide]

[http://www.cisco.com/en/US/products/hw/switches/ps4324/products_tech_note09186a008063c36f.shtml]

[Common CatOS Error Messages on Catalyst 4500/4000 Series Switches - Cisco Systems]

[Linux Horizon - Bonding (Port Trunking)]

[增加頻寬、流量的好方法:EtherChannel 實作篇 @ HarlemHsu]

[Jamyy's Weblog: Linux Bonding (合併網卡) 實作]

[聯成電子報 第十一期 2006年07月講師專欄 Linux]

[洋蔥爸的工作雜記: Linux Channel Bonding -- 實作合併網卡]

Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com