專利名稱:一種提高以太網(wǎng)帶寬的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)通信技術(shù)領(lǐng)域,特別是指一種提高以太網(wǎng)帶寬的方法。
背景技術(shù):
隨著計(jì)算機(jī)的處理能力越來越強(qiáng)大,網(wǎng)絡(luò)的I/O性能越來越成為系統(tǒng)的一個(gè)瓶頸,特別是在機(jī)群系統(tǒng)中,進(jìn)行高性能計(jì)算的網(wǎng)絡(luò)需要很大的帶寬來解決計(jì)算速度這一問題。
通常解決這一問題主要采取以下兩種措施一是采用更加快速的網(wǎng)絡(luò),如千兆網(wǎng)絡(luò)或光纖技術(shù)(Myrinet)網(wǎng)絡(luò),但這需要很大的投資,而且改造舊系統(tǒng)的難度很大。
另一種方法是采用Linux中的綁定(Bonding)技術(shù)。將多塊網(wǎng)卡虛擬成為一塊網(wǎng)卡,使其具有相同的IP地址,來實(shí)現(xiàn)提升主機(jī)的網(wǎng)絡(luò)帶寬。Bonding靠多網(wǎng)卡來提高網(wǎng)絡(luò)帶寬,它把多塊網(wǎng)卡的硬件地址(MAC)改為相同,然后實(shí)現(xiàn)了一個(gè)虛擬的主機(jī)bond0,發(fā)送數(shù)據(jù)包時(shí),bond0首先接收到數(shù)據(jù),然后把它平均分配給多個(gè)網(wǎng)卡來發(fā)送,當(dāng)對(duì)方也有多個(gè)網(wǎng)卡時(shí),就可以提高帶寬。但Bonding需要交換機(jī)支持中繼(Trunk)技術(shù)或以太網(wǎng)通路(EtherChannel)技術(shù),也就是說,某主機(jī)單一IP地址下的多塊網(wǎng)卡必須設(shè)置成為相同的MAC地址,由交換機(jī)識(shí)別硬件地址的變化并負(fù)責(zé)分配通信信道,從而實(shí)現(xiàn)帶寬的提升。此方法在構(gòu)建系統(tǒng)時(shí)必須選用價(jià)格較貴的能夠支持Trunk或EtherChannel技術(shù)的具有多端口綁定技術(shù)的以太網(wǎng)交換機(jī)。經(jīng)試驗(yàn),測得兩塊百兆網(wǎng)卡經(jīng)綁定技術(shù)處理后,其實(shí)際帶寬為130mbit/s左右。比單塊百兆網(wǎng)卡的帶寬僅提高了30%左右,兩塊網(wǎng)卡的性能并沒有得到充分發(fā)揮,效率較低。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種提高以太網(wǎng)帶寬的方法。應(yīng)用多塊網(wǎng)卡綁定技術(shù),使單一IP地址對(duì)應(yīng)多個(gè)MAC地址,從而擺脫了機(jī)群系統(tǒng)對(duì)交換機(jī)的依賴,更有效的提高了網(wǎng)絡(luò)帶寬。同時(shí),如果其中一塊網(wǎng)卡發(fā)生故障,其它的網(wǎng)卡仍然可以正常工作,提高了系統(tǒng)的穩(wěn)定性。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種提高以太網(wǎng)帶寬的方法,該方法包含以下步驟在各個(gè)主機(jī)上設(shè)置多個(gè)具有同一IP地址不同MAC地址的以太網(wǎng)卡;在各個(gè)主機(jī)上設(shè)置一個(gè)ARP表,在該ARP表中,根據(jù)IP地址可以查到該IP地址對(duì)應(yīng)的多個(gè)MAC地址;當(dāng)一個(gè)第一主機(jī)需要向一個(gè)第二主機(jī)發(fā)送IP數(shù)據(jù)包時(shí),通過查詢所述的ARP表,獲得目標(biāo)IP地址的多個(gè)MAC地址,向該多個(gè)MAC地址輪循發(fā)送。
較佳地,第三個(gè)步驟設(shè)置在網(wǎng)絡(luò)硬件層,并且進(jìn)一步包含以下步驟當(dāng)?shù)谝恢鳈C(jī)需要向第二主機(jī)需要發(fā)送一個(gè)IP數(shù)據(jù)包時(shí),首先取得該數(shù)據(jù)包的目的IP地址,然后根據(jù)目的IP地址在所述的ARP表中查詢是否有MAC地址對(duì)應(yīng)項(xiàng),如果不存在則根據(jù)該IP數(shù)據(jù)包中原有的目的方MAC地址直接轉(zhuǎn)發(fā)出去,否則根據(jù)查得的MAC地址修改數(shù)據(jù)包中目的方MAC地址,再轉(zhuǎn)發(fā)出去;當(dāng)該第一主機(jī)下一次向同一IP地址發(fā)送數(shù)據(jù)包時(shí),該主機(jī)使用這個(gè)IP地址對(duì)應(yīng)的另一個(gè)MAC地址修改數(shù)據(jù)包的目的方MAC地址,再通過自身的另一個(gè)以太網(wǎng)卡轉(zhuǎn)發(fā)出去;以此不斷輪循。
較佳地,在各個(gè)主機(jī)上構(gòu)造一個(gè)虛擬的設(shè)備,所有傳輸?shù)腎P數(shù)據(jù)包都要經(jīng)過該虛擬的設(shè)備,通過該虛擬的設(shè)備的驅(qū)動(dòng)程序中取得各個(gè)IP數(shù)據(jù)包的目的IP地址。
較佳的,在第三個(gè)步驟中,第一主機(jī)調(diào)用LINUx操作系統(tǒng)的dev_queue_xmit函數(shù),將IP數(shù)據(jù)包轉(zhuǎn)發(fā)出去。
較佳地,所述的ARP表可以通過靜態(tài)手工配置的或動(dòng)態(tài)解析得到。
應(yīng)用本發(fā)明,可以代替價(jià)格昂貴的高速網(wǎng)絡(luò),但同樣達(dá)到提高網(wǎng)絡(luò)帶寬的效果,使系統(tǒng)原有的網(wǎng)卡依然發(fā)揮作用,最大限度地保護(hù)了用戶的利益,節(jié)約投資。同時(shí),擺脫了對(duì)交換機(jī)的依賴,并盡可能的提高了網(wǎng)絡(luò)的帶寬,發(fā)揮出多塊網(wǎng)卡的效能。在一塊網(wǎng)卡發(fā)生故障時(shí),其它網(wǎng)卡仍然可以正常工作,提高了系統(tǒng)穩(wěn)定性、可靠性。
圖1為Linux網(wǎng)絡(luò)層次模型;圖2為Linux網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序的結(jié)構(gòu)圖;圖3為單IP多MAC地址通信過程。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明做進(jìn)一步詳細(xì)說明。
圖1所示為Linux網(wǎng)絡(luò)層次模型。Linux的網(wǎng)絡(luò)部分沿用了傳統(tǒng)的層次結(jié)構(gòu)。網(wǎng)絡(luò)數(shù)據(jù)從用戶進(jìn)程到網(wǎng)絡(luò)設(shè)備要經(jīng)過四個(gè)層次。每個(gè)層次的內(nèi)部還可以再細(xì)分為很多層次,但數(shù)據(jù)的傳輸過程只能依照層次的劃分,自上而下進(jìn)行,不能跨越其中的某個(gè)或某些層次,這就使得網(wǎng)絡(luò)傳輸只有一條而且是唯一的一條路徑。這樣做的目的是為了提高整個(gè)網(wǎng)絡(luò)的可靠性和準(zhǔn)確性。
一個(gè)套接字就是網(wǎng)絡(luò)中的一個(gè)連接,它向用戶提供了文件的I/O接口,并和網(wǎng)絡(luò)協(xié)議緊密地聯(lián)系在一起,體現(xiàn)了網(wǎng)絡(luò)、文件系統(tǒng)和進(jìn)程管理之間的關(guān)系,它是網(wǎng)絡(luò)傳輸?shù)娜肟凇?br>
網(wǎng)絡(luò)協(xié)議是一種網(wǎng)絡(luò)語言,它規(guī)定了通信雙方之間交換信息的一種規(guī)范,是網(wǎng)絡(luò)傳輸?shù)幕A(chǔ)。
網(wǎng)絡(luò)設(shè)備接口控制著網(wǎng)絡(luò)數(shù)據(jù)由軟件到硬件再到軟件的傳遞過程,體現(xiàn)了網(wǎng)絡(luò)和設(shè)備的關(guān)系,是網(wǎng)絡(luò)傳輸?shù)臉蛄?。Linux網(wǎng)絡(luò)接口的適用面很廣,所有的Linux主機(jī)都遵循同樣的接口,它提供了豐富的接口功能。
網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序的功能可分為兩部分即發(fā)送數(shù)據(jù)功能和接收數(shù)據(jù)功能。在發(fā)送數(shù)據(jù)時(shí),設(shè)備驅(qū)動(dòng)程序全權(quán)負(fù)責(zé)把來自協(xié)議層網(wǎng)絡(luò)緩沖區(qū)的數(shù)據(jù)幀發(fā)送到物理介質(zhì)上,并且接受硬件產(chǎn)生的應(yīng)答信號(hào);在接收數(shù)據(jù)時(shí),設(shè)備驅(qū)動(dòng)程序接收來自網(wǎng)絡(luò)介質(zhì)上的數(shù)據(jù)幀,并把它轉(zhuǎn)換成能被網(wǎng)絡(luò)協(xié)議識(shí)別的網(wǎng)絡(luò)緩沖區(qū)中的數(shù)據(jù)幀,然后把它傳遞給接收數(shù)據(jù)包函數(shù)。
圖2所示為Linux網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序的結(jié)構(gòu)圖。在發(fā)送數(shù)據(jù)時(shí),從協(xié)議層過來的數(shù)據(jù)幀經(jīng)過內(nèi)核發(fā)送數(shù)據(jù)包函數(shù)(dev_queue_xmit)發(fā)送到網(wǎng)卡上,然后經(jīng)網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)函數(shù)(hard_start_xmit),將該數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)設(shè)備和介質(zhì)上;當(dāng)有數(shù)據(jù)到達(dá)網(wǎng)絡(luò)設(shè)備和介質(zhì)時(shí),網(wǎng)卡要產(chǎn)生一個(gè)中斷,在網(wǎng)卡驅(qū)動(dòng)程序中的中斷處理函數(shù)(mydev_interrupt)中,處理接收到的數(shù)據(jù),并把它交給上層內(nèi)核的接收數(shù)據(jù)包函數(shù)(netif_rx),繼續(xù)協(xié)議層的處理。初始化例程的作用是在網(wǎng)卡剛剛啟動(dòng),對(duì)網(wǎng)卡進(jìn)行初始化,即在網(wǎng)卡剛剛啟動(dòng),將網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)函數(shù)中所有函數(shù)的指針,登記到安裝設(shè)備驅(qū)動(dòng)程序(device)的數(shù)據(jù)結(jié)構(gòu)中,網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)函數(shù)在接收或發(fā)送數(shù)據(jù)時(shí),都是通過device數(shù)據(jù)結(jié)構(gòu)來完成的。
為了提高網(wǎng)絡(luò)帶寬,把多塊網(wǎng)卡設(shè)為一個(gè)IP地址,同時(shí)保持它們本身的MAC地址不變,這樣一個(gè)IP地址就對(duì)應(yīng)了多個(gè)MAC地址。Linux原有的地址解析協(xié)議(ARP)表中,一個(gè)IP地址只對(duì)應(yīng)一個(gè)MAC地址,不適用于這種情況。為此,需要建立自己的ARP表,在這個(gè)ARP表中,根據(jù)一個(gè)IP地址能夠查到它對(duì)應(yīng)的多個(gè)MAC地址。MAC地址可以靜態(tài)的手工設(shè)入ARP表中,也可以通過動(dòng)態(tài)解析攝入到ARP表中。
首先構(gòu)造一個(gè)虛擬的網(wǎng)絡(luò)設(shè)備,所有需要傳輸?shù)臄?shù)據(jù)包都要經(jīng)過該設(shè)備,在該虛擬設(shè)備的驅(qū)動(dòng)程序中取得這個(gè)數(shù)據(jù)包的目的IP地址,然后根據(jù)該IP地址在自己建立的ARP表中查詢是否有對(duì)應(yīng)的多個(gè)MAC地址,如果該IP地址下只對(duì)應(yīng)一個(gè)MAC地址,則根據(jù)此MAC地址直接調(diào)用dev_queue_xmit函數(shù)將數(shù)據(jù)包轉(zhuǎn)發(fā)出去;如果該IP地址下對(duì)應(yīng)多個(gè)MAC地址,則需要根據(jù)查到的MAC地址修改數(shù)據(jù)包中目的方MAC地址,再調(diào)用dev_queue_xmit函數(shù)將此數(shù)據(jù)包轉(zhuǎn)發(fā)出去;當(dāng)下一次向同一IP地址發(fā)送數(shù)據(jù)包時(shí),就用這個(gè)IP地址對(duì)應(yīng)的另一個(gè)MAC地址修改數(shù)據(jù)包中目的方的MAC地址后,再調(diào)用dev_queue_xmit函數(shù)將此數(shù)據(jù)包轉(zhuǎn)發(fā)出去。以此類推,不斷執(zhí)行輪循發(fā)送。同時(shí),在發(fā)送數(shù)據(jù)包時(shí),發(fā)送方的網(wǎng)卡也在不斷輪循。這樣就實(shí)現(xiàn)了在不依賴交換機(jī)的情況下,自動(dòng)分配通信信道,從而提高了網(wǎng)絡(luò)的帶寬。
圖3所示為單IP多MAC地址通信過程。圖左側(cè)是一個(gè)虛擬的設(shè)備bond0,右邊的兩個(gè)是實(shí)際的主機(jī)eth0和eth1。數(shù)據(jù)包從協(xié)議層傳過來以后,首先經(jīng)過bond0,在bond0的驅(qū)動(dòng)程序中取得這個(gè)數(shù)據(jù)包的目的IP地址,然后根據(jù)該IP地址在ARP表中查詢對(duì)應(yīng)的MAC地址,并修改數(shù)據(jù)包中目的方MAC地址,以此實(shí)現(xiàn)bond0把數(shù)據(jù)包輪循地發(fā)向eth0和eth1的過程。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種提高以太網(wǎng)帶寬的方法,其特征在于包含以下步驟在各個(gè)主機(jī)上設(shè)置多個(gè)具有同一IP地址不同MAC地址的以太網(wǎng)卡;在各個(gè)主機(jī)上設(shè)置一個(gè)ARP表,在該ARP表中,根據(jù)IP地址可以查到該IP地址對(duì)應(yīng)的多個(gè)MAC地址;當(dāng)一個(gè)第一主機(jī)需要向一個(gè)第二主機(jī)發(fā)送IP數(shù)據(jù)包時(shí),通過查詢所述的ARP表,獲得目標(biāo)IP地址的多個(gè)MAC地址,向該多個(gè)MAC地址輪循發(fā)送。
2.根據(jù)權(quán)利要求1所述的提高以太網(wǎng)帶寬的方法,其特征在于第三個(gè)步驟設(shè)置在網(wǎng)絡(luò)硬件層,并且進(jìn)一步包含以下步驟當(dāng)?shù)谝恢鳈C(jī)需要向第二主機(jī)需要發(fā)送一個(gè)IP數(shù)據(jù)包時(shí),首先取得該數(shù)據(jù)包的目的IP地址,然后根據(jù)目的IP地址在所述的ARP表中查詢是否有MAC地址對(duì)應(yīng)項(xiàng),如果不存在則根據(jù)該IP數(shù)據(jù)包中原有的目的方MAC地址直接轉(zhuǎn)發(fā)出去,否則根據(jù)查得的MAC地址修改數(shù)據(jù)包中目的方MAC地址,再轉(zhuǎn)發(fā)出去;當(dāng)該第一主機(jī)下一次向同一IP地址發(fā)送數(shù)據(jù)包時(shí),該主機(jī)使用這個(gè)IP地址對(duì)應(yīng)的另一個(gè)MAC地址修改數(shù)據(jù)包的目的方MAC地址,再通過自身的另一個(gè)以太網(wǎng)卡轉(zhuǎn)發(fā)出去;以此不斷輪循。
3.根據(jù)權(quán)利要求1所述的提高以太網(wǎng)帶寬的方法,其特征在于,在各個(gè)主機(jī)上構(gòu)造一個(gè)虛擬的設(shè)備,所有傳輸?shù)腎P數(shù)據(jù)包都要經(jīng)過該虛擬的設(shè)備,通過該虛擬的設(shè)備的驅(qū)動(dòng)程序中取得各個(gè)IP數(shù)據(jù)包的目的IP地址。
4.根據(jù)權(quán)利要求1所述的提高以太網(wǎng)帶寬的方法,其特征在于在第三個(gè)步驟中,第一主機(jī)調(diào)用LINUX操作系統(tǒng)的dev_queue_xmit函數(shù),將IP數(shù)據(jù)包轉(zhuǎn)發(fā)出去。
5.根據(jù)權(quán)利要求1所述的一種提高以太網(wǎng)帶寬的方法,其特征在于,所述的ARP表可以通過靜態(tài)手工配置的或動(dòng)態(tài)解析得到。
全文摘要
本發(fā)明提供了一種提高以太網(wǎng)帶寬的方法,該方法包括以下步驟在各個(gè)主機(jī)上設(shè)置多個(gè)具有同一IP地址不同MAC地址的以太網(wǎng)卡;在各個(gè)主機(jī)上設(shè)置一個(gè)ARP表,在該ARP表中,根據(jù)IP地址可以查到該IP地址對(duì)應(yīng)的多個(gè)MAC地址;當(dāng)一個(gè)第一主機(jī)需要向一個(gè)第二主機(jī)發(fā)送IP數(shù)據(jù)包時(shí),通過查詢所述的ARP表,獲得目標(biāo)IP地址的多個(gè)MAC地址,向該多個(gè)MAC地址輪循發(fā)送。應(yīng)用本發(fā)明,可代替價(jià)格昂貴的高速網(wǎng)絡(luò),但同樣達(dá)到提高網(wǎng)絡(luò)帶寬的效果,使系統(tǒng)原有的網(wǎng)卡依然發(fā)揮作用,并盡可能發(fā)揮出多塊網(wǎng)卡的效能。在一塊網(wǎng)卡發(fā)生故障時(shí),其它網(wǎng)卡仍然可以正常工作,提高了系統(tǒng)穩(wěn)定性、可靠性。
文檔編號(hào)H04L29/06GK1505335SQ02153540
公開日2004年6月16日 申請(qǐng)日期2002年12月4日 優(yōu)先權(quán)日2002年12月4日
發(fā)明者王加森, 徐武, 柳書廣, 肖利民 申請(qǐng)人:聯(lián)想(北京)有限公司