999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Linux服務器下多網口負載均衡算法的研究

2013-07-20 02:34:02幸福楊峰燕霄翔王文志
計算機工程與應用 2013年24期

幸福,楊峰,燕霄翔,王文志

中國礦業大學(北京)機電與信息工程學院計算機科學與技術系,北京 100083

Linux服務器下多網口負載均衡算法的研究

幸福,楊峰,燕霄翔,王文志

中國礦業大學(北京)機電與信息工程學院計算機科學與技術系,北京 100083

1 引言

近年來,隨著web2.0高速普及和web3.0興起,帶來了大量的數據信息和文件資料的產生,從而導致網絡業務數據量的急劇提高和多客戶端的訪問量快速增長。在這樣的背景下,網絡存儲架構需要有一個可靠穩定的后端存儲服務來支撐,因此如何保持網絡存儲服務器的高可用性至關重要。由于單網口網絡吞吐力有限,成為制約整個系統性能的瓶頸。如果單靠對網卡硬件升級來增加網絡帶寬,其性價比不高。為實現這些要求,現在Linux服務器大多是采用多網卡配置。利用鏈路聚合技術[1],將服務器的多個網口綁定成一個虛擬網卡能有效提高服務器的網絡吞吐率及高可靠性。

由于客戶端對服務器存取數據的需求逐漸增大,網口負載常常超過它的最大處理能力,網絡發生擁塞的可能性越來越大,造成數據傳輸速度下降,讀寫性能衰減。如果不對綁定的多網口負載進行有效的控制和在網卡負載過重時使網口能及時恢復到正常的狀態,就會造成嚴重的網絡擁塞,甚至導致網絡崩潰。因此,多網口負載均衡的研究與實現越來越重要[2]。

Linux的2.4.x以上內核Bonding模塊實現了一個聚合的方法,它將多個物理網口聚合為一個單一虛擬網口,同時通過六種算法模式來提供負載均衡和網絡冗余服務。由于Linux Bonding技術的不對稱性[3],對于接收數據的負載均衡只是利用ARP協商機制實現,本文針對此算法的研究分析,指出其實際存在的缺陷不足,提出另外一種在此基礎上改進的算法,即基于適應性負載均衡的動態接收算法的實現方法。并進行了實際測試驗證。

表1 Netfilter相關參數說明

2 相關研究工作

2.1 負載均衡技術

負載均衡[4]主要思想就是如何根據某種算法將網絡的業務流量平均分配到不同的服務器和網絡設備上去,以減輕單臺服務器和網絡設備的負擔,從而提高整個系統的效率。

負載均衡分為靜態均衡和動態均衡[5]。靜態均衡通過平均分配任務給計算設備節點,雖然能獲得最優負載均衡結果。但這種方法要求任務量必須是確定的值,在現實網路中任務量是隨時間的變化而變化的,很難做到任務量確定。動態均衡方法通過實時分析計算設備節點的負載狀況和任務量,選取負載最輕的節點提供服務。

2.2 Linux內核Bonding技術的實現

Linux的Bonding技術通過在數據鏈路層與網卡驅動層之間實現一個虛擬層[6],服務器接在交換機上的多個網口被綁定為一個虛擬網口,進而構成一個虛擬的網卡。服務器在收發數據時,服務器上的虛擬網卡接到請求后,根據某種算法來決定由誰處理數據的傳輸。

目前Bonding模塊中已經實現了六種算法[7],即輪轉算法(balance-rr)、主備份算法(active-backup)、異或算法(balance-xor)、廣播算法(broadcast)、傳輸負載均衡算法(balance-tlb)和適應性負載均衡算法(balance-alb),其中前五種算法只能處理發送數據的負載均衡,最后一種算法能夠處理發送和接收數據的負載均衡。

2.3 Linux內核Netfilter架構

Netfilter[8]是Linux內核的一個子系統,它的架構就是在整個網絡流程放置了5個hook檢測點,而在每個檢測點上登記了一些處理函數進行處理,如數據包過濾、數據包處理、和基于狀態的過濾等。Netfilter的關鍵參數見表1。

3 適應性負載均衡算法的研究

3.1 算法原理的研究

適應性負載均衡算法的原理采用輪換分配Bonding設備中多個網口的MAC地址。當雙方建立通信時,服務器端通過發送ARP廣播報文通知對端,當ARP應答從對端到達時,Bonding驅動把對端的信息從ARP包中復制并保存下來,并發起一個ARP應答讓對端的ARP緩存記錄服務器端本次分配出的網口MAC地址。同時通過給所有的對端發送更新(ARP應答包)來解決ARP廣播請求帶來的物理網段中的對端ARP緩存記錄覆蓋的問題。ARP應答包中包含了服務器端Bonding設備分配給所有對端的唯一MAC地址。

3.2 算法性能缺陷的研究

此算法的設計只是一種通過預先靜態分配網口來實現接收流量的負載均衡的算法,但是在實際的復雜網絡環境下,客戶端機往往數量很多。在實際測試中發現,當出現分配到同一MAC地址的客戶端同時向服務器寫數據時,他們只會根據自己本地ARP緩存記錄的服務器網口MAC地址發送數據,而不管此網口負載情況,這樣就會造成服務器Bonding設備的網口中出現“一忙多閑”的現象。同時如果對同一網口傳輸的客戶端不斷增加或者傳輸數據速度升高,導致此網口負載加重,超過網口最大傳輸速度,網口內的每個客戶端IP流量的傳輸速度就會急劇下降,這樣造成網絡I/O性能的降低,影響服務器寫性能。

4 基于適應性負載均衡的動態接收算法

4.1 算法描述實現

基于適應性負載均衡的動態接收算法的核心原理是:通過Bonding模塊里的鏈路監控函數周期性地監控Bonding中的每個slave網口流量總和,監控采用循環Bonding中的所有網口,通過3 s采樣,即3 s內每一秒計算一次每個網口流量情況,當發現有某個網口流量和在3 s內有2次超過網口工作最大闕值,就判定此網口高負載,觸發調用調整策略。調整策略會將此網口內的所有IP流量分攤到剩余Bonding中的其他空閑網口中,使整個Bonding設備內的多網口實現接收數據負載均衡。算法主要流程圖如圖1所示。

圖1 適應性負載均衡動態接收算法操作流程

客戶端的信息保存在一個以IP為哈希鍵的結構體數組中,將前一秒此客戶端接收到的數據長度總和rx_history記錄下來,同時在鏈路監控函數中每秒獲取一次當前客戶端接收到的數據長度總和rx_bytes,將兩者相減得到客戶端當前時刻的傳輸速度rx_second。

本算法中的關鍵參數說明:

(1)網口闕值。考慮到網卡實際帶寬的處理能力,設定網口最大工作能力為理論最大傳輸速度的80%。

(2)3 s采樣。在網絡流量很大的情況下經常會由于cpu調度中斷導致當前時刻從網卡驅動到的數據為零,因此采用3 s采樣的方法來避免數據錯誤導致的監控失效。

4.2 客戶端IP流量的統計

客戶端向服務器傳輸數據是基于IP流傳輸,單個網口高負載正是由于此網口接收到的IP流增多,傳輸流量總和超過其最大處理能力,導致每個IP流傳輸速度下降。因此,為了能動態地對負載網口內的所有基于客戶端IP流調整,需要實時獲取每個客戶端IP流速率,這樣才能實現動態地將當前負載網口中的IP流量調整到空閑或者負載低的其他剩余網口中。為此,在Bonding模塊中加入Netfilter技術。當加載Bonding模塊的算法時,算法初始化函數在NF_IP_LOCAL_IN點會注冊一個鉤子函數,當經路由查找后送往本機的數據包經過此處時觸發鉤子函數。

此鉤子函數主要功能是:對確定接收為本機的數據包每當經過此注冊點時,就通過NF_HOOK回調函數進入此自定義函數,然后將此數據包IP頭取出,以源IP地址為哈希key值在客戶端結構體鏈表中查找出Bonding中登記的客戶端信息,當查找成功后再通過累加的方式統計此客戶端接收數據包流量總值rx_bytes。函數返回NF_ACCEPT完成數據包的統計工作。

由于內核處理速度很快,此數據統計過程額外的開銷可以忽略不計,不會對網絡數據傳輸造成影響。

4.3 調整策略

調整策略的主要思路是:首先會從客戶端接收哈希鏈表中查找出此負載網口中當前正在傳輸的N個客戶端,由于同一網段網口之間總是會有流量很小的測試報文在接收,對網口傳輸性能無影響,基于實際考慮,定義客戶端數據傳輸的最小速率為5 KB/s,低于此值的客戶端IP流量全部忽略,不作為調整的N個客戶端之內。

當N為1時,表示此網口中只有一個客戶端在傳輸數據,定義這樣的客戶端IP流為單個大流量,這是不需要調整出去的;否則將N個客戶端IP流按當前傳輸速度從大到小的順序排序,再循環這些客戶端IP流,按照選擇最優網口原則最大程度地將每個IP流分配到Bonding中的其他網口上去,分配調整的方法是通過本機發送ARP學習更新包,讓客戶端更新自己的ARP緩存表信息。

選擇最優網口原則如下:

(1)當客戶端中無單個最大流量時只循環N-1次,否則就循環N次。

(2)當客戶端是單個最大流量時跳過此客戶端循環下一個。

(3)當選擇最優網口時不滿足以下3點,跳過此客戶端循環下一個:

①最優網口為當前負載最輕的網口;

②客戶端IP流分配到新的網口后不會造成最優網口超過負載閥值;

③客戶端IP流的速度小于高負載的網口與最優網口流量總和差值;

(4)當選擇的最優網口等于高負載的網口時,立即終止循環。

4.4 算法復雜度分析

新算法主要增加了周期性監控所有Bonding網口,客戶端IP流量統計和動態調整負載網口3個模塊。

周期性監控模塊中每秒更新所有客戶端的流量信息,查找客戶端時間復雜度為O(n)。

客戶端IP流量統計只是對單一數據包處理,其時間復雜度為O(1)。

檢查所有網口的時間復雜度為O(n)。當觸發調整函數后,篩選出需要調整的客戶端,時間復雜度為O(n),然后會對需要調整的客戶端根據IP流速率大小排序,排序算法采用快速排序,時間復雜度為O(nlbn),最后將排好序的IP流遷移到最優網口,時間復雜度為O(n)。新算法時間復雜度為Ο(n+1+n(n+nlbn+n))=Ο(n2(2+lbn)+n+1)=Ο(n2lbn)。

受硬件的制約,單臺服務器能夠支持的網卡數量有限,目前市場上的高性能存儲服務器最多也只能支持20個網口,而內核Bonding模塊最大支持客戶端數為256。按照上面的時間復雜度公式,該算法在每次監控網口時最多執行次數為20+1+20×(256+256×lb256+256)=51 221次。在面對網路數據傳輸高負荷的情況下,該算法執行效率很高。

5 測試驗證

為了驗證算法性能,在此給出在Bonding模塊實現階段對改進算法的測試實驗結果,通過搭建的模擬復雜環境對改進前后的算法進行流量測試。需要先將修改的Bonding模塊內核編譯,執行加載命令:modprobe bonding mode= 6 miimon=100,加載修改后的bonding模塊,調度算法為適應性動態接收算法。

測試軟件環境:SUSE Linux11(內核2.6.27.19)。

測試硬件環境:一臺服務器S(2塊支持MII狀態字寄存器的千兆網卡,每個網卡上有一個網口,即eth0和eth1);一臺千兆交換機;4臺客戶機(千兆網卡)C1,C2,C3,C4;服務器和客戶機與交換機相連。

測試軟件:Netperf。Netperf是一種網絡性能的測量工具,可以模擬出需要的傳輸速度來進行實驗。

測試步驟:首先服務器S按上面的命令加載Bonding模塊,接著通過修改服務器/ete/sysconfig/network-script下的網口配置文件將2個網口綁定成一個虛擬網口Bond1,然后讓C1~C4客戶機與服務器通信,查看客戶機ARP緩存表信息可知,C1和C3記錄S網口0的MAC地址,C2和C4記錄S網口1的MAC地址。接著進行3次模擬測試,第一次C1向服務器發送文件,第二次C3向服務器發送文件,第三次C1和C3同時向服務器發送文件。測試結果見表2。

表2 測試結果

根據以上實驗結果得知:當同時有多個客戶機向服務器發送數據時,適應性負載均衡算法不會根據網口負載情況作出相應調整,導致網口eth0滿負荷工作,而網口eth1卻空閑沒得到利用,實際吞吐率僅為112.7 Mb/s,負載均衡失效。而改進的適應性動態接收算法會根據網口實際負載情況,當發現網口高負荷后,實時動態地調整客戶端的傳輸通道,吞吐率達到161.6 Mb/s,新算法比原算法吞吐率提高43%。新算法大大提高了服務器網絡吞吐量和網口利用率,實現多網口動態負載均衡。

6 結束語

本文針對Linux Bonding模式6下會出現寫性能下降的問題,通過對該算法進行研究介紹,分析其存在的缺陷不足,并詳細描述了基于適應性負載均衡的動態接收算法的實現流程和關鍵技術,最后通過實際測試對新算法性能進行驗證。該算法能高效處理復雜網絡環境下多網口服務器接收數據負載均衡的問題。然而目前Bonding技術只能通過ARP協商機制來實現接收負載均衡,這要求客戶端必須在同一物理網段,因此有必要進一步研究和改進。

[1]胡修林,王運鵬,郭輝.多網卡鏈路綁定策略的研究與實現[J].小型微型計算機系統,2005(2).

[2]Zhang Wensong,Jin Shiyao,Wu Quanyuan.Linux director:a connection router for scalable internet services[J].Journal of Computer Science&Technology,2000,15(6):560-571.

[3]石磊.多網卡bonding技術的研究與實現[D].長沙:國防科技大學,2005.

[4]路明懷,龔正虎.Linux服務器下多網卡負載均衡的研究與實現[J].計算機與信息技術,2006(6).

[5]羅擁軍,李曉樂,孫如祥.負載均衡算法綜述[J].科技情報開發與經濟,2008(18).

[6]毛德操,胡希明.LINUX內核源代碼情景分析[M].杭州:浙江大學出版社,2006.

[7]Davis T.Linux Ethernet bonding driver HOWTO[EB/OL]. [2011-12-10].http://www.kernel.org/doc/Documentation/networking/bonding.txt.

[8]劉建峰,潘軍,李祥和.Linux防火墻內核中Netfilter和Iptables的分析[J].微計算機信息,2006,22(3):7-8.

XING Fu,YANG Feng,YAN Xiaoxiang,WANG Wenzhi

Department of Computer Science and Technology,School of Mechanical Electronic&Information Engineering,China University of Mining and Technology(Beijing),Beijing 100083,China

Network storage architecture requires a high reliability and high availability back-end storage server to provide network storage services,but the single Ethernet port configuration restricts the server data transfer performance.Linux kernel bonding technology has realized multiple physical network ports aggregate to a single virtual network port.But when receiving data,this technology just through the ARP consultation mechanism realizes statically distributing multiple network port,therefore performance defects exist in the practical.In view of this,after researching related technology and algorithm,this paper puts forward another improved algorithm,which is based on adaptive load balance dynamic receiving algorithm,and realizes this algorithm by netfilter technology and so on.The actual test verification is done.The new algorithm can significantly improve the multiple network port server transfer throughput rate while receiving data.

Linux bonding;load balancing;Address Resolution Protocol(ARP);netfilter

網絡存儲架構需要一個高可靠性和高可用性的后端存儲服務器來提供網絡存儲服務,而單網口配置制約了服務器數據傳輸性能。目前Linux內核bonding技術已經實現了將多個物理網口聚合為一個單一虛擬網口的方法。但這種不對稱的技術在實現接收數據負載均衡時,只是通過ARP協商機制實現靜態分配多網口,因此在實際應用中存在性能上的缺陷。鑒于此,在對現有的相關技術和算法進行研究后,提出了另外一種在此基礎上改進的算法,即基于適應性負載均衡的動態接收算法,利用netfilter等技術對此算法進行了實現,進行了實際測試驗證。新算法能顯著提高多網口服務器接收數據時網絡傳輸吞吐率。

Linux bonding;負載均衡;地址解析協議;netfilter

A

TP316.81

10.3778/j.issn.1002-8331.1202-0265

XING Fu,YANG Feng,YAN Xiaoxiang,et al.Research of Linux server multiple Ethernet ports load balancing algorithm. Computer Engineering and Applications,2013,49(24):93-96.

國家自然基金儀器專項(No.50927805);十二五國家科技支撐計劃(No.2011BAK06B01,No.2011BAD04B05)。

幸福(1986—),男,碩士研究生,研究領域為計算機信息處理和計算機網絡;楊峰,男,教授;燕霄翔,男,碩士研究生;王文志,男,碩士研究生。E-mail:xingfudage1986@126.com

2012-02-15

2012-04-23

1002-8331(2013)24-0093-04

CNKI出版日期:2012-06-15http://www.cnki.net/kcms/detail/11.2127.TP.20120615.1726.033.html

主站蜘蛛池模板: 欧美视频二区| 波多野结衣国产精品| 亚洲高清无码精品| 欧美日韩国产精品va| 久久鸭综合久久国产| 亚洲精品欧美日本中文字幕 | 日韩精品无码免费一区二区三区 | 亚洲a级毛片| 97国产一区二区精品久久呦| 久久频这里精品99香蕉久网址| 日日拍夜夜操| 亚洲AV无码乱码在线观看裸奔| 99国产在线视频| 五月综合色婷婷| 国产区网址| AV不卡无码免费一区二区三区| 国产欧美性爱网| 五月激情综合网| 中文字幕2区| 国产美女叼嘿视频免费看| 就去吻亚洲精品国产欧美| 欧美亚洲香蕉| 精品福利国产| 欧美不卡二区| 波多野结衣中文字幕一区| 亚洲免费福利视频| 亚洲欧美国产视频| 毛片在线看网站| 国产精品污污在线观看网站| 国产人人乐人人爱| 第一页亚洲| 欧亚日韩Av| 久久婷婷色综合老司机| 精品国产自在在线在线观看| 91福利国产成人精品导航| 亚洲香蕉在线| 亚洲成人77777| 亚洲女同一区二区| 不卡视频国产| 欧美日韩一区二区三| 夜夜拍夜夜爽| 国产精品性| 欧洲欧美人成免费全部视频| 67194亚洲无码| Aⅴ无码专区在线观看| 国产一区二区影院| 亚洲视频在线青青| 亚洲精品无码久久毛片波多野吉| 亚洲欧美另类日本| 国产成人高清精品免费| 国产午夜一级淫片| 一区二区欧美日韩高清免费| 亚洲系列无码专区偷窥无码| 国产成人久久777777| 久久免费精品琪琪| 日韩一区精品视频一区二区| 99久久无色码中文字幕| 免费a在线观看播放| 91破解版在线亚洲| 久久一本日韩精品中文字幕屁孩| 国产精品午夜福利麻豆| 欧美国产日韩一区二区三区精品影视| 国产精品亚洲天堂| 99久久免费精品特色大片| 国内a级毛片| 久久久久免费看成人影片 | 亚洲欧洲日韩综合| 国产亚洲欧美在线人成aaaa| 激情爆乳一区二区| 国产亚洲欧美在线人成aaaa | 九色最新网址| 国产精品久久自在自线观看| 国产三级毛片| 在线精品亚洲一区二区古装| 国产三级国产精品国产普男人| 美女无遮挡拍拍拍免费视频| 欧美综合成人| 国产jizz| 亚洲国产欧美国产综合久久 | 四虎成人精品| 在线日韩日本国产亚洲| 亚洲国产综合精品一区|