這篇文章給大家介紹如何進行linux下的雙網卡綁定,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
Linux上雙網卡綁定實現就是使用兩塊網卡虛擬成為一塊網卡,這個結合起來的設備看起來是一個單獨的以太網接口設備,通俗點講就是兩塊網卡具有相同的IP地址而并行鏈接聚合成一個邏輯鏈路工作。其實這項技術在Sun和Cisco中早已存在,被稱為Trunking和Etherchannel 技術,在Linux的2.4.x的內核中也采用這這種技術,被稱為bonding。
bonding技術的最早應用是在集群——beowulf上,為了提高集群節點間的數據傳輸而設計的。下面我們討論一下bonding 的原理,什么是bonding需要從網卡的混雜(promisc)模式說起。我們知道,在正常情況下,網卡只接收目的硬件地址(MAC Address)是自身Mac的以太網幀,對于別的數據幀都濾掉,以減輕驅動程序的負擔。但是網卡也支持另外一種被稱為混雜promisc的模式,可以接收網絡上所有的幀,比如說tcpdump,就是運行在這個模式下。bonding也運行在這個模式下,而且修改了驅動程序中的mac地址,將兩塊網卡的 Mac地址改成相同,可以接收特定MAC的數據幀。然后把相應的數據幀傳送給bond驅動程序處理。
[root@redhat6 ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ~/ifcfg-eth0.bak[root@redhat6 ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth2 ~/ifcfg-eth2.bak
虛擬網絡接口配置文件,指定網卡IP,ifcfg-bond0:
[root@redhat6 ~]#vi /etc/sysconfig/network-scripts/ifcfg-bond0DEVICE=bond0 IPADDR=192.168.1.111NETMASK=255.255.255.0ONBOOT=yes BOOTPROTO=none USERCTL=noNM_CONTROLLED=noBONDING_OPTS="mode=1 miimon=100"
配置真實的網卡,eth0 and eth2
[root@redhat6 ~]#vi /etc/sysconfig/network-scripts/ifcfg-eth<N>DEVICE=eth<N>BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes USERCTL=noNM_CONTROLLED=no
NM_CONTROLLED=no NetworkManager is not permitted to configure this device.USERCTL=no Non-root users are not allowed to control this device.
BOOTPROTO=none No boot-time protocol should be used
[root@redhat6 ~]#service network restart
拔下一根網線看ping數據,確認沒問題之后插上該網線連通之后,再拔下另外一根網線,觀察雙網卡綁定效果。
define BOND_MODE_ROUNDROBIN 0 (balance-rr模式)網卡的負載均衡模式
define BOND_MODE_ACTIVEBACKUP 1 (active-backup模式)網卡的容錯模式
define BOND_MODE_XOR 2 (balance-xor模式)需要交換機支持
define BOND_MODE_BROADCAST 3 (broadcast模式)
define BOND_MODE_8023AD 4 (IEEE 802.3ad動態鏈路聚合模式)需要交換機支持
define BOND_MODE_TLB 5 自適應傳輸負載均衡模式
define BOND_MODE_ALB 6 網卡虛擬化方式
mode的值共有0-6 七種模式,常用的為0,1,6三種。
mode=0:平衡負載模式,有自動備援,但需要”Switch”支援及設定。
mode=1:自動備援模式,其中一條線若斷線,其他線路將會自動備援。
mode=6:平衡負載模式,有自動備援,不需要”Switch”支援及設定。
linux系統下bond mode參數說明:(mode=4 在交換機支持LACP時推薦使用,其能提供更好的性能和穩定性)
0-輪詢模式,所綁定的網卡會針對訪問以輪詢算法進行平分。1-高可用模式,運行時只使用一個網卡,其余網卡作為備份,在負載不超過單塊網卡帶寬或壓力時建議使用。2-基于HASH算法的負載均衡模式,網卡的分流按照xmit_hash_policy的TCP協議層設置來進行HASH計算分流,使各種不同處理來源的訪問都盡量在同一個網卡上進行處理。3-廣播模式,所有被綁定的網卡都將得到相同的數據,一般用于十分特殊的網絡需求,如需要對兩個互相沒有連接的交換機發送相同的數據。4-802.3ab負載均衡模式,要求交換機也支持802.3ab模式,理論上服務器及交換機都支持此模式時,網卡帶寬最高可以翻倍(如從1Gbps翻到2Gbps)5-適配器輸出負載均衡模式,輸出的數據會通過所有被綁定的網卡輸出,接收數據時則只選定其中一塊網卡。如果正在用于接收數據的網卡發生故障,則由其他網卡接管,要求所用的網卡及網卡驅動可通過ethtool命令得到speed信息。6-適配器輸入/輸出負載均衡模式,在”模式5″的基礎上,在接收數據的同時實現負載均衡,除要求ethtool命令可得到speed信息外,還要求支持對網卡MAC地址的動態修改功能。
雙網卡綁定模式下,網卡的性能不是向大多數人猜想的那樣帶寬加倍,傳輸速度加倍;而實際上可能恰好相反。
這個問題還是要看到瓶頸在哪。
一般多網卡綁定,處理器應該沒有問題,能力很強,網絡也很強,瓶頸在網卡,所以多綁定幾塊可以解決網卡的瓶頸,并且提高可靠性。
如果是板子的話,雖然網絡也很強,但估計瓶頸不是網卡了,而是板子的處理能力了。加多個網卡,可能卻降低了板子的性能。多網卡綁定,應該在混雜模式,把本來硬件處理的部分交給了驅動來自,增加了軟件/板子的負擔了。
普通臺式機服務器,現在性能應該很強大,不是瓶頸,所以采用多網卡綁定能體現出優勢。
任何方法 都有其前提的。
了解了一下bonding各模式的算法,負載均衡模式用的輪轉算法,熱備份用的備份算法。
理論下,雙網卡綁定備份模式下,只有一塊網卡工作,流量測試的結果應該和用單個網卡相同。
同樣是理論上,雙網卡綁定負載均衡模式下,收發一般的網絡數據,我是指小于1588的報文等不用分片的數據時,帶寬加倍,速度加倍。
我的猜測:現在我在負載均衡模式下,傳輸一個4GB的文件,文件被分片處理,在輪轉算法下連續的片被兩個網卡分別處理,一方面軟件算法消耗了時間,另一方面可能會有分片亂序的可能,申請重發或者其他原因消耗了時間。
現在的問題有兩個,1、為什么只有round-robin模式,開發板上兩個網卡是一樣的型號;2、負載均衡模式下傳輸文件的速度比用單網卡要慢。
期待各位大哥解惑,謝謝了。
總結一下
1、只能進入負載均衡的問題;模塊加載的時候讀取的配置文件modules.conf、modprobe.conf,這兩個文件分別適用于舊和新兩種內核版本,二這兩個文件中mode參數用于設置綁定模式,如果文件名錯了,設置當然無效;另外bongding在內核中需要編譯成模塊,而不是直接加到內核。
2、網卡綁定時傳輸大文件比不綁定時更慢;測試顯示負載均衡模式下,傳輸大文件所需時間是不綁定用單網口傳輸的兩倍,熱備份模式所需時間是單網口的四倍。猜測且沒有得到證實的原因:負載均衡時,網絡上傳輸的報文一般都小于1588,網卡處理這些典型的網絡報文很快;但現在傳輸的是一個很大的文件,文件大于1588,文件被分成很多片,文件重組需求分片按次序到達,可能因為被兩個網卡處理造成分片次序顛倒等原因申請重發分片,另外增加的綁定算法也需要耗費時間;熱備份時,綁定算法耗費時間。
關于如何進行linux下的雙網卡綁定就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。