1、前言
Cisco Catalyst 2960 and 2960-S Series Switches 預設值的情況下,以及搭配安裝 RHEL 4.8 AS 作業系統的主機,只要 RHEL 設定網卡 Bonding 功能,之後在 2960 Switch 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 功能,但上述訊息還是不斷出現。
文章目錄
1、前言2、實作環境
3、安裝及設定
4、解法一、由 RHEL 主機方面下手
步驟1.檢查 RHEL Bonding 設定
步驟2.改變 RHEL Bonding 設定
5、解法二、由 Cisco Switch 方面下手
步驟1.改變 Switch 設定
補充說明
6、參考
2、實作環境
- Cisco Catalyst 2960G [Version 12.2(35)SE5]
- RHEL 4.8 AS [bond0、eth1、eth2]
3、安裝及設定
上述怪異訊息出現的原因,我們可分為二方面來著手,您可改變 RHEL 的 Bonding 設定,或者改變 Cisco 2960 Switch 的設定即可。- 解法 1: 將 RHEL Bonding 模式改為 Mode=1 (即 Fault-Tolerance Active-Backup 模式)。
- 解法 2: 將 Switch 中 Bonding 相對應的 Port 設定 Channel-Group 且 Mode 為 on 即可。
4、解法一、由 RHEL 主機方面下手
步驟 1. 檢查 RHEL Bonding 設定
此例中 Bonding 網卡為 eth1、eth2,而 Bonding 網卡為 bond0 其 Bonding 模式目前為 Load Balancing (Round-Robin) 模式。# cat /etc/sysconfig/network-scripts/ifcfg-bond0
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
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
DEVICE=eth2
BOOTPROTO=none
HWADDR=00:15:17:36:98:4B
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
# cat /etc/modprobe.conf
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
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
5、解法二、由 Cisco 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
Cisco 2960 Switch 的 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
補充說明
- 更新 IOS 版本: 此次實作 2960G 為 Version 12.2(35)SE5 有更新至最新 IOS Version 12.2(53)SE5,若不作任何設定仍會出現錯誤訊息。
- 其它 Module: 很怪異的是此錯誤訊息僅會在 2960G 上出現,有嘗試過將相同環境應用於 2950、2970 上均不會出現此錯誤訊息,這點實在很怪異。
6、參考
- Cisco Systems, Inc. Catalyst 3750, 3560, 3550, 2970, and 2960 Switch System Message Guide
- Common Issues with Catalyst 4500 Switches that Run Cisco IOS Software
- Common CatOS Error Messages on Catalyst 4500/4000 Series Switches - Cisco Systems
- Linux Horizon - Bonding (Port Trunking)
- 增加頻寬、流量的好方法:EtherChannel 實作篇 @ HarlemHsu
- 聯成電子報 第十一期 2006年07月講師專欄 Linux
- 洋蔥爸的工作雜記: Linux Channel Bonding -- 實作合併網卡