新聞中心
網(wǎng)絡(luò)是現(xiàn)代信息化社會中不可或缺的基礎(chǔ)設(shè)施,Linux作為一個強大的操作系統(tǒng),也同樣具備優(yōu)秀的網(wǎng)絡(luò)功能。在實際應(yīng)用中,為了滿足高性能、可靠性以及負載平衡等需求,我們需要將多張網(wǎng)卡進行綁定。本文將介紹在Linux中如何綁定網(wǎng)卡。

一、什么是網(wǎng)卡綁定?
網(wǎng)卡綁定是指將多個物理網(wǎng)卡虛擬成一個邏輯網(wǎng)卡的操作。通過網(wǎng)卡綁定,可以提高系統(tǒng)的網(wǎng)絡(luò)性能,增加帶寬,提升網(wǎng)絡(luò)傳輸速度和可靠性,實現(xiàn)負載均衡等功能。
二、綁定模式分類
在Linux系統(tǒng)中,網(wǎng)卡綁定分為四種模式:
1. 之一種是負載均衡模式(mode0),即Round Robin(輪詢)模式。多個物理網(wǎng)卡將會被視為一個大的帶寬,數(shù)據(jù)包將被依次分配到各個物理網(wǎng)卡上。
2. 第二種是Active-Backup模式(mode1),又稱為Flover模式。該模式下,所有的網(wǎng)卡都是活動的,但只有其中一張網(wǎng)卡會被用作數(shù)據(jù)傳輸,當(dāng)此網(wǎng)卡故障時,備份網(wǎng)卡將被自動激活,繼續(xù)接收和發(fā)送數(shù)據(jù)。
3. 第三種是Balance XOR模式(mode2),又稱為基于源MAC地址的負載均衡模式。該模式下,數(shù)據(jù)包中的源MAC地址和目標(biāo)MAC地址將被用作哈希關(guān)鍵字,根據(jù)哈希結(jié)果,數(shù)據(jù)包將被分配到相應(yīng)的物理網(wǎng)卡上。不同的數(shù)據(jù)流會被分配到不同的物理網(wǎng)卡上,從而實現(xiàn)負載均衡。
4. 第四種是Broadcast模式(mode3),即廣播模式,數(shù)據(jù)包將被發(fā)送到所有的網(wǎng)卡,適用于數(shù)據(jù)包廣播的場景。
三、綁定過程
以負載均衡模式為例,介紹在Linux中如何綁定網(wǎng)卡。
1. 在Linux中需要安onding驅(qū)動,以CentOS為例,可以使用以下命令進行安裝:
yum install -y bonding
2. 安裝完成后,在/etc/modprobe.d/bonding.conf中添加以下內(nèi)容:
alias bond0 bonding
options bond0 mode=0 miimon=100 指定網(wǎng)卡綁定邏輯接口名稱為bond0,綁定模式為0即Round Robin(輪詢)模式,心跳檢測為100
3. 在/etc/sysconfig/network-scripts/目錄下創(chuàng)建ifcfg-bond0文件,內(nèi)容如下:
TYPE=Bond
BONDING_MASTER=yes
DEVICE=bond0
BOOTPROTO=static 設(shè)置IP地址為靜態(tài)
IPADDR=192.168.1.252 設(shè)置IP地址
NETMASK=255.255.255.0 設(shè)置網(wǎng)絡(luò)掩碼
USERCTL=no
BONDING_OPTS=”mode=0 miimon=100″ 指定綁定模式以及心跳檢測時間
4. 配置物理網(wǎng)卡,以eth0和eth1為例,在/etc/sysconfig/network-scripts/目錄下分別創(chuàng)建ifcfg-eth0和ifcfg-eth1文件,并設(shè)置以下內(nèi)容:
DEVICE=eth0/eth1
ONBOOT=yes 設(shè)置開機自啟動
BOOTPROTO=none
MASTER=bond0 網(wǎng)卡綁定邏輯接口名稱為bond0
SLAVE=yes
5. 重啟系統(tǒng),使綁定生效。使用以下命令檢測綁定狀態(tài):
cat /proc/net/bonding/bond0
四、
本文介紹了在Linux中通過綁定物理網(wǎng)卡實現(xiàn)負載均衡的過程。網(wǎng)卡綁定是一個十分實用的方法,可以大大提高網(wǎng)絡(luò)性能和可靠性,但要注意對網(wǎng)卡適用的綁定模式以及心跳檢測時間進行正確配置。希望本文能夠?qū)Υ蠹矣兴鶐椭黾訉inux網(wǎng)絡(luò)配置的理解。
相關(guān)問題拓展閱讀:
- 請教Linux系統(tǒng)中網(wǎng)卡band以后的mac地址是什么?
- linux bonding 怎麼做到fast failover (技術(shù))
- 怎樣查看 linux 的網(wǎng)卡信息
請教Linux系統(tǒng)中網(wǎng)卡band以后的mac地址是什么?
輸入/in/ifconfig后
ethLink encap:Ethernet HWaddr 00:1D:D8:B7:22:AF
后面顯示的HWaddr后面派辯的就襲培是MAC地址拍羨唯
可以用ifconfig,這個命令跟windows下的ipconfig差不多
linux bonding 怎麼做到fast failover (技術(shù))
Linux網(wǎng)卡bonding
隨著科學(xué)技術(shù)的日益革新,數(shù)據(jù)的安全性已經(jīng)逐漸體現(xiàn)出了它的重要意義??梢栽O(shè)想,當(dāng)一個人所有的個人資料都不負存在,那手滾是多么可怕的事情。網(wǎng)絡(luò)技術(shù)的深入使用,數(shù)據(jù)的網(wǎng)絡(luò)化傳輸已經(jīng)成為了重要,甚至主要的傳輸方式。所以數(shù)據(jù)服務(wù)器能夠正常提供網(wǎng)絡(luò)服務(wù)是所有供應(yīng)商都需要考慮的問題。
在這個背景下,單網(wǎng)卡的應(yīng)用已經(jīng)捉襟見肘,設(shè)備冗余技術(shù)的普及已是枝繁葉吵薯悄茂。本文之后就引用Linux操作系統(tǒng)下的多升渣網(wǎng)卡bonding技術(shù)來闡述這一容錯概念。
負載均衡功能也是網(wǎng)卡bonding的另一個功能,它可以實現(xiàn)多網(wǎng)卡同時工作,提高系統(tǒng)網(wǎng)絡(luò)處理的吞吐能力。
一、網(wǎng)卡的負載均衡模式(mode = BOND_MODE_ROUNDROBIN)
1)建立bond虛設(shè)備
建立一個ifcfg-bond0的設(shè)備,然后配置如下信息即可。
DEVICE=bond0
BOOTPROTO=static
IPADDR=172.16.64.208
NETMASK=255.255.224.0
ONBOOT=yes
TYPE=Ethernet
2)配置接口文件
由于使用一個虛擬的ip地址,所以,其他接口設(shè)備都不配置ip信息。
3)配置bonding工作方式
打開/etc/modprobe.conf文件,將bonding的工作模式配置為如下模式。
alias bond0 bonding
options bond0 mode=0 arp_interval=500 arp_ip_target=172.16.64.86
4)啟動bonding
需要添加路由來制定發(fā)送規(guī)則,這個可以自定義添加。配置完后重啟設(shè)備即可。
ifenslave bond0 eth0 eth1
route add -net 0/0 gw 172.16.64.254
bond0 Link encap:Ethernet HWaddr 00:14:10:70:00:25
inet addr:172.16.64.208 Bcast:172.16.95.255 Mask:255.255.224.0
inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:39335 errors:0 dropped:0 overruns:0 frame:0
TX packets:3178 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:(2.8 MiB) TX bytes:(263.4 KiB)
ethLink encap:Ethernet HWaddr 00:14:10:70:00:25
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:18208 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:(1.3 MiB) TX bytes:378 (378.0 b)
ethLink encap:Ethernet HWaddr 00:14:10:70:00:25
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:21128 errors:0 dropped:0 overruns:0 frame:0
TX packets:3174 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:(1.5 MiB) TX bytes:(263.1 KiB)
如上圖所示,這種模式下bonding模塊會將虛接口和所有的slave接口的MAC地址設(shè)置為一致。通過定時器,每個slave接口不斷發(fā)送ARP包來不斷更換交換機端口與MAC的對應(yīng)關(guān)系。
這樣使得每個網(wǎng)卡都在進行工作。這個ARP的發(fā)送規(guī)則是:
每arp_interval(MS)間隔向arp_ip_target發(fā)送arp請求。也可以向多個arp_ip_target發(fā)送arp請求。
觀察交換機端口上所學(xué)習(xí)到的MAC地址,發(fā)現(xiàn)MAC會在兩個端口上反復(fù)切換。
在BOND_MODE_ROUNDROBIN模式下,bonding對于發(fā)送和接收數(shù)據(jù)的處理邏輯是不一致的,對于數(shù)據(jù)的接收,bonding基本不做任何處理,純粹依靠交換機端口與MAC的變化來實現(xiàn)交替接收數(shù)據(jù)。發(fā)送的話,交換機會根據(jù)數(shù)據(jù)的源MAC來學(xué)習(xí)端口和MAC之間的關(guān)系,所以bonding做到的就是選擇不一樣的網(wǎng)卡發(fā)送。
對于數(shù)據(jù)的發(fā)送,
static inline void bond_set_mode_ops(struct net_device *bond_dev, int mode)
{
switch (mode) {
case BOND_MODE_ROUNDROBIN:
bond_dev->hard_start_xmit = bond_xmit_roundrobin;
break;
…
bond的發(fā)送函數(shù)被注冊為bond_xmit_roundrobin。通過bond_xmit_roundrobin的實現(xiàn)可以發(fā)現(xiàn)
static int bond_xmit_roundrobin(struct sk_buff *skb, struct net_device *bond_dev)
{
read_lock(&bond->curr_slave_lock);
slave = start_at = bond->curr_active_slave;
read_unlock(&bond->curr_slave_lock);
bond_for_each_slave_from(bond, slave, i, start_at) {
if (IS_UP(slave->dev) &&
(slave->link == BOND_LINK_UP) &&
(slave->state == BOND_STATE_ACTIVE)) {
res = bond_dev_queue_xmit(bond, skb, slave->dev);
write_lock(&bond->curr_slave_lock);
bond->curr_active_slave = slave->next;
write_unlock(&bond->curr_slave_lock);
break;
}
bond_xmit_roundrobin會通過curr_active_slave指針?biāo)赶虻脑O(shè)備來進行發(fā)送,當(dāng)然curr_active_slave會在調(diào)用bond_dev_queue_xmit完成實際的發(fā)送之后指向下一個slave設(shè)備。bond_dev_queue_xmit實際是調(diào)用通用的發(fā)送函數(shù)dev_queue_xmit來進行的,它傳遞給dev_queue_xmit的是一個skb,在傳遞之前skb->dev就被指定為了當(dāng)前的slave設(shè)備,這樣內(nèi)核就會找到對應(yīng)的真實網(wǎng)卡設(shè)備來進行發(fā)送,最后curr_active_slave指針的輪詢切換,實現(xiàn)了bonding的負載均衡工作模式。
從這種模式可以看到,bonding實現(xiàn)了一個類似網(wǎng)卡驅(qū)動的模塊,對應(yīng)的bond0設(shè)備是一個純粹的虛設(shè)備,數(shù)據(jù)發(fā)送雖然說經(jīng)過了它,但通過一系列調(diào)用,轉(zhuǎn)了一圈之后才回到真正的網(wǎng)卡設(shè)備那里進行發(fā)送,無疑會消耗一定的系統(tǒng)性能。
簡單用100Mbps速率的UDP數(shù)據(jù)包測試了一下BOND_MODE_ROUNDROBIN模式。
測試過程中發(fā)現(xiàn)接收端會有較多的亂序包,觀察交換機端口情況,端口之間的切換頻率不規(guī)則,這個和交換機的配置或者性能應(yīng)該有很大聯(lián)系,有必要的話需要進一步研究。數(shù)據(jù)的正確性和時序性能否保證需要進一步仔細測試。
2、網(wǎng)卡的容錯模式(mode = BOND_MODE_ACTIVEBACKUP)
容錯模式的配置方法和負載均衡模式基本差不多,只不過修改一下/etc/modprobe.conf即可。
alias bond0 bonding
options bond0 mode=1 miimon=100
這里使用的是mii鏈路檢測方式,與之前arp檢測方式不同。當(dāng)然這兩種鏈路檢測方式在各種mode下都是可以使用的,但要注意不能同時使用。
介紹一下bonding的mii檢測實現(xiàn)。首先和arp-monitor一樣,mii也是定時器觸發(fā)
if (bond->params.miimon) { /* link check interval, in milliseconds. */
init_timer(mii_timer);
mii_timer->expires = jiffies + 1;
mii_timer->data = (unsigned long)bond_dev;
mii_timer->function = (void *)&bond_mii_monitor;
add_timer(mii_timer);
}
bond_mii_monitor函數(shù)其本質(zhì)的原理就是檢測網(wǎng)卡的鏈路狀態(tài),bonding定義網(wǎng)卡有4個鏈路狀態(tài):
BOND_LINK_UP: 正常狀態(tài)(處于該狀態(tài)的網(wǎng)卡是是潛在的發(fā)送數(shù)據(jù)包的候選者)
BOND_LINK_FAIL: 網(wǎng)卡出現(xiàn)故障,向狀態(tài)BOND_LINK_DOWN 切換中
BOND_LINK_DOWN: 失效狀態(tài)
BOND_LINK_BACK:網(wǎng)卡恢復(fù),向狀態(tài)BOND_LINK_UP切換中
從上到下,表示了網(wǎng)卡鏈路從正常到失效再到恢復(fù)狀態(tài)。bond_mii_monitor函數(shù)就是依次檢查網(wǎng)卡的鏈路狀態(tài)是否處于這些狀態(tài),然后通過標(biāo)記do_failover變量來說明當(dāng)前是否需要切換slave網(wǎng)卡。代碼篇幅較大,但邏輯還是很清晰的,故此處不羅列了。
在BOND_MODE_ACTIVEBACKUP模式下,兩塊網(wǎng)卡其實有一塊是不工作的,被設(shè)置為IFF_NOARP的狀態(tài)。同時,bond虛設(shè)備,還有slave設(shè)備的MAC地址均一致,所以這張網(wǎng)卡不會被外界察覺存在。交換機也不存在想該端口發(fā)包的情況。當(dāng)bond的mii檢測發(fā)現(xiàn)當(dāng)前的active設(shè)備失效了之后,會切換到這個備份設(shè)備上。
在bond_change_active_slave函數(shù)中
if (bond->params.mode == BOND_MODE_ACTIVEBACKUP) {
if (old_active) {
bond_set_slave_inactive_flags(old_active);
}
if (new_active) {
bond_set_slave_active_flags(new_active);
}
}
這個就是在BOND_MODE_ACTIVEBACKUP模式下的切換邏輯,很簡單,需要注意的是,在bond_set_slave_inactive_flags(old_active)中,需要將接口的狀態(tài)設(shè)置為IFF_NOARP,不然交換機就可能會把數(shù)據(jù)包發(fā)送到一個錯誤的端口上。
BOND_MODE_ACTIVEBACKUP模式下的數(shù)據(jù)發(fā)送非常簡單,可想而知curr_active_slave指針始終都指向當(dāng)前可用的設(shè)備,所以直接發(fā)送就可以,沒有之前BOND_MODE_ROUNDROBIN模式下slave設(shè)備切換的過程。
3、網(wǎng)卡虛擬化方式(mode = BOND_MODE_ALB)
經(jīng)過考察,許多磁盤陣列設(shè)備采用了網(wǎng)卡虛擬化方式進行多網(wǎng)卡應(yīng)用。實際就是Linux的bonding技術(shù)。它采用了mode = BOND_MODE_ALB的方式。
BOND_MODE_ALB的實現(xiàn)方式比較復(fù)雜,還有一些不理解的地方,就不做深入分析了。其核心思想可以用下圖解釋:
從這個圖中可以看到,客戶端A與服務(wù)器的傳輸使用的是MAC A;而客戶端B與服務(wù)器傳輸使用的是MAC B,但對于IP層來說,客戶端A與B都與服務(wù)器X.X.X.X 的IP地址進行通訊,并不感知底層傳輸接口的變化。這樣,服務(wù)器對于客戶端整體上的工作模式就處于負載均衡的狀態(tài)。當(dāng)然,這個過程的控制就是bonding模塊所完成的。
通過測試發(fā)現(xiàn)兩臺客戶端展現(xiàn)的arp表是一致的,如下(服務(wù)器端地址為172.16.64.208,服務(wù)器端首選接口的MAC為-25)
CLIENT A
172.16.64.5 dynamic
CLIENT B
172.16.64.5 dynamic
通過抓包可以看到,兩次回復(fù)的ARP應(yīng)答的源MAC地址是不一樣的,分別為
-25和
-26。
所以說,能夠?qū)崿F(xiàn)這種處理方法的原因就是bonding修改了ARP應(yīng)答的源地址導(dǎo)致,使得外界并不感知服務(wù)器存在多網(wǎng)卡的狀態(tài),在網(wǎng)絡(luò)上確定了IP和MAC的唯一對應(yīng)關(guān)系,保證了上層業(yè)務(wù)傳輸?shù)倪壿嬕恢滦?。同時內(nèi)部的處理又交給不同的網(wǎng)卡,實現(xiàn)了負載均衡。
另外,也給了我們一定的容錯性,當(dāng)一個接口失效后,bonding會迅速將另外一塊網(wǎng)卡設(shè)置為首選slave設(shè)備,并修改其MAC地址。由于外界學(xué)習(xí)到的服務(wù)器MAC地址始終是不變的,所以鏈路的狀態(tài)不會受很大影響。
Bonding的模式一共有7種:
#define BOND_MODE_ROUNDROBIN
#define BOND_MODE_ACTIVEBACKUP 1
#define BOND_MODE_XOR2
#define BOND_MODE_BROADCAST
#define BOND_MODE_8023AD
#define BOND_MODE_TLB5
#define BOND_MODE_ALB6
每種方式都有它的特點,有些需要交換機支持,比如 BOND_MODE_8023AD和BOND_MODE_XOR。本文就介紹了3種方式,可以在無需交換機支持或者簡單配置交換機的情況下運行。
怎樣查看 linux 的網(wǎng)卡信息
如何詳細查看硬盤信息fdisk-l:查看分1如何查看內(nèi)存信息,大概有以下幾種方式2如棚搜何查看CPU信息cat/斗判proc/cpuinfo:通3如何查空和改看網(wǎng)卡,顯卡等板卡信息
查看 linux 的網(wǎng)卡信息步驟如下:
工具原料:linux操作薯賀舉系統(tǒng)
①啟動 linux 操作系統(tǒng),進入到桌面;
②啟動終端;
③終端輸入命令 ifconfig eth0,回車;
④linux 的網(wǎng)卡信息解讀:
1.查看網(wǎng)卡生產(chǎn)廠商和信號:
查看基本信息:lspci
查看詳細信數(shù)碧息:lspci -vvv # 3個小寫的v
查看網(wǎng)卡信息:lspci | grep Ethernet;
2.查看網(wǎng)卡驅(qū)動:
查看網(wǎng)卡驅(qū)動信息:lspci -vvv # 找到網(wǎng)卡設(shè)備的詳細信息,包括網(wǎng)卡驅(qū)動
# lod 列出加載的所有驅(qū)動,包括網(wǎng)卡驅(qū)動;
3.查看網(wǎng)卡驅(qū)動版本
查看模塊信息:modifo # 其中包含version信拍御息或 # ethtool-i ;
4.查看網(wǎng)絡(luò)接口隊列數(shù)
查看網(wǎng)卡接口的中斷信息:#cat /proc/interrupts | grep eth0或 # ethtool-S eth0;
5.查看網(wǎng)卡驅(qū)動源碼的版本號
解壓Intel網(wǎng)卡驅(qū)動源碼,打開解壓縮目錄下的*.spec文件查看驅(qū)動的版本;
關(guān)于linux 網(wǎng)卡bound的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都網(wǎng)站推廣找創(chuàng)新互聯(lián),老牌網(wǎng)站營銷公司
成都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)(www.cdcxhl.com)專注高端網(wǎng)站建設(shè),網(wǎng)頁設(shè)計制作,網(wǎng)站維護,網(wǎng)絡(luò)營銷,SEO優(yōu)化推廣,快速提升企業(yè)網(wǎng)站排名等一站式服務(wù)。IDC基礎(chǔ)服務(wù):云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗、服務(wù)器租用、服務(wù)器托管提供四川、成都、綿陽、雅安、重慶、貴州、昆明、鄭州、湖北十堰機房互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)。
新聞名稱:Linux網(wǎng)絡(luò)配置:如何綁定網(wǎng)卡? (linux 網(wǎng)卡bound)
標(biāo)題鏈接:http://m.fisionsoft.com.cn/article/cojijdc.html


咨詢
建站咨詢
