一種面向數(shù)據(jù)中心的編碼網(wǎng)絡(luò)系統(tǒng)及其工作方法
【專利摘要】本發(fā)明公開(kāi)了一種面向數(shù)據(jù)中心的編碼網(wǎng)絡(luò)系統(tǒng)及其工作方法,編碼網(wǎng)絡(luò)系統(tǒng)主要由數(shù)據(jù)中心中的多臺(tái)服務(wù)器、連接這些服務(wù)器的編碼路由器及數(shù)據(jù)鏈路。服務(wù)器和編碼路由器都構(gòu)建編碼網(wǎng)絡(luò)協(xié)議模塊、編碼網(wǎng)絡(luò)生成樹(shù)協(xié)議模塊、編碼傳輸協(xié)議模塊、編碼緩存管理模塊及Socket復(fù)用模塊,這些協(xié)議模塊協(xié)同工作,對(duì)外提供一個(gè)編碼網(wǎng)絡(luò)系統(tǒng)。工作方法包括網(wǎng)絡(luò)編碼協(xié)議的實(shí)現(xiàn)及向以太網(wǎng)、令牌環(huán)等數(shù)據(jù)鏈路層的注冊(cè)、編碼網(wǎng)絡(luò)生成樹(shù)協(xié)議和編碼傳輸協(xié)議的實(shí)現(xiàn)和向編碼網(wǎng)絡(luò)協(xié)議的注冊(cè)、路由編碼緩存管理、Socket的復(fù)用等。該系統(tǒng)使得報(bào)文能夠在中間路由進(jìn)行編碼,以降低數(shù)據(jù)中心網(wǎng)絡(luò)的負(fù)載,增加網(wǎng)絡(luò)資源利用率。
【專利說(shuō)明】—種面向數(shù)據(jù)中心的編碼網(wǎng)絡(luò)系統(tǒng)及其工作方法
[0001]
【技術(shù)領(lǐng)域】
[0002]本發(fā)明涉及數(shù)據(jù)中心(Data Center)網(wǎng)絡(luò)系統(tǒng),在目的節(jié)點(diǎn)所需信息是多個(gè)源節(jié)點(diǎn)上信息的某種編碼形式的應(yīng)用場(chǎng)景下,通過(guò)同步各個(gè)源節(jié)點(diǎn)和中間路由,組建ー個(gè)編碼網(wǎng)絡(luò)系統(tǒng),使得編碼報(bào)文能夠在中間路由進(jìn)行編碼,以降低數(shù)據(jù)中心網(wǎng)絡(luò)的負(fù)載,増加網(wǎng)絡(luò)資源利用率。編碼網(wǎng)絡(luò)系統(tǒng)由多個(gè)網(wǎng)絡(luò)協(xié)議組成的CNP/CTP協(xié)議族和若干個(gè)軟件模塊組成,編碼網(wǎng)絡(luò)能夠在編碼傳輸?shù)膽?yīng)用場(chǎng)景下,通過(guò)報(bào)文尋路找到最小代價(jià)的編碼樹(shù),并在上層的編碼傳輸協(xié)議的控制下進(jìn)行編碼傳輸。
【背景技術(shù)】
[0003]隨著云計(jì)算相關(guān)技術(shù)的迅猛發(fā)展,數(shù)據(jù)中心作為云計(jì)算的后臺(tái),提供高可靠的、高效的云計(jì)算服務(wù)。目前的研究表明,數(shù)據(jù)中心的網(wǎng)絡(luò)資源已經(jīng)很大程度上成為了數(shù)據(jù)中心運(yùn)算效率的瓶頸,另ー方面,網(wǎng)絡(luò)編碼(Network Coding)在理論上強(qiáng)大的優(yōu)勢(shì)在實(shí)際的應(yīng)用中還未得到廣泛的發(fā)揮,因此,本發(fā)明結(jié)合網(wǎng)絡(luò)編碼技術(shù),在數(shù)據(jù)中心的編碼傳輸應(yīng)用場(chǎng)景下,通過(guò)軟件協(xié)議族的模式組建ー個(gè)編碼網(wǎng)絡(luò),提供高效的編碼網(wǎng)絡(luò)通信,提高網(wǎng)絡(luò)資源利用率,降低數(shù)據(jù)中心的網(wǎng)絡(luò)負(fù)載。
【發(fā)明內(nèi)容】
[0004]本發(fā)明所要解決的技術(shù)問(wèn)題是在數(shù)據(jù)中心中提供一系列網(wǎng)絡(luò)協(xié)議族構(gòu)建ー個(gè)編碼網(wǎng)絡(luò)系統(tǒng),該網(wǎng)絡(luò)系統(tǒng)支持多個(gè)源節(jié)點(diǎn)與單個(gè)目的節(jié)點(diǎn)組建ー個(gè)編碼網(wǎng)絡(luò)系統(tǒng),并在這個(gè)編碼網(wǎng)絡(luò)系統(tǒng)中提供編碼傳輸服務(wù)和緩存管理工作。此外,本發(fā)明還提供了該系統(tǒng)的エ作方法。
[0005]本發(fā)明所述的面向數(shù)據(jù)中心的編碼網(wǎng)絡(luò)系統(tǒng),主要由數(shù)據(jù)中心中的多臺(tái)數(shù)據(jù)服務(wù)器、連接這些數(shù)據(jù)服務(wù)器的編碼路由器及數(shù)據(jù)鏈路,以編碼路由器和數(shù)據(jù)服務(wù)器作為通信節(jié)點(diǎn),其特征在于,在每個(gè)通信節(jié)點(diǎn)上都構(gòu)建有:
TCP/IP協(xié)議棧模塊:用來(lái)作為數(shù)據(jù)中心普通應(yīng)用程序的網(wǎng)絡(luò)協(xié)議支持;
編碼網(wǎng)絡(luò)協(xié)議模塊:使編碼網(wǎng)絡(luò)協(xié)議平行于IP協(xié)議,基于網(wǎng)絡(luò)編碼技術(shù)在數(shù)據(jù)中心中提供數(shù)據(jù)報(bào)文的編碼傳輸;
編碼網(wǎng)絡(luò)生成樹(shù)協(xié)議模塊:為每ー個(gè)通信特征碼標(biāo)識(shí)的編碼數(shù)據(jù)通信構(gòu)建ー個(gè)逆向多播樹(shù),以支持編碼傳輸協(xié)議;
編碼傳輸協(xié)議模塊:對(duì)于每個(gè)通信特征碼標(biāo)識(shí)的編碼數(shù)據(jù)通信,根據(jù)編碼網(wǎng)絡(luò)生成樹(shù)協(xié)議所生成的逆向多播樹(shù),同步各個(gè)葉子節(jié)點(diǎn)和中間編碼路由器,使得數(shù)據(jù)由葉子節(jié)點(diǎn)同步的傳輸?shù)礁?jié)點(diǎn),并在中間過(guò)程的交匯點(diǎn)做編碼操作;
編碼緩存管理模塊:對(duì)于每個(gè)逆向多播樹(shù)的交匯節(jié)點(diǎn),為每ー個(gè)通信特征碼管理通信節(jié)點(diǎn)的緩存,完成編碼同步和內(nèi)存的申請(qǐng)釋放; Socket復(fù)用模塊:將編碼傳輸協(xié)議注冊(cè)到Socket通信列表中,使得上層的應(yīng)用程序能夠調(diào)用該協(xié)議做編碼傳輸,編碼傳輸首先調(diào)用編碼網(wǎng)絡(luò)生成樹(shù)協(xié)議,生成一個(gè)逆向多播樹(shù),并在各個(gè)交匯節(jié)點(diǎn)做記錄,之后再同步啟動(dòng)編碼傳輸協(xié)議。
[0006]此外,本發(fā)明此還提供了所述的面向數(shù)據(jù)中心的編碼網(wǎng)絡(luò)系統(tǒng)的工作方法,具體包括以下步驟:
I)編碼網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)及其向數(shù)據(jù)鏈路層的注冊(cè),其具體步驟包括:
II)實(shí)現(xiàn)編碼接收函數(shù)cnp_rcv(),編碼接收函數(shù)在接受到數(shù)據(jù)報(bào)文后,通過(guò)本地的通信特征碼集,來(lái)確定對(duì)該數(shù)據(jù)報(bào)文的緩存操作操作還是轉(zhuǎn)發(fā)操作等,通信特征碼集由CNSTP協(xié)議維護(hù)。
[0007]111)編碼網(wǎng)絡(luò)協(xié)議對(duì)轉(zhuǎn)發(fā)到數(shù)據(jù)報(bào)文直接調(diào)用Cnp_0utput()函數(shù),該函數(shù)根據(jù)情況將數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)到下一個(gè)通信節(jié)點(diǎn)或者轉(zhuǎn)交到上層的編碼網(wǎng)絡(luò)生成樹(shù)協(xié)議、編碼傳輸協(xié)議等。
[0008]112)編碼網(wǎng)絡(luò)協(xié)議對(duì)需要編碼的數(shù)據(jù)報(bào)文調(diào)用Cnp_COde()函數(shù),該函數(shù)將數(shù)據(jù)報(bào)文緩存到編碼緩存管理模塊分配的內(nèi)存中,如果緩存中有需要編碼的數(shù)據(jù)報(bào)文,則將兩個(gè)數(shù)據(jù)報(bào)文進(jìn)行編碼之后存儲(chǔ)并更新編碼報(bào)文個(gè)數(shù),在達(dá)到該節(jié)點(diǎn)所需編碼的報(bào)文個(gè)數(shù)之后,則標(biāo)志著本通信節(jié)點(diǎn)的編碼任務(wù)完成,然后再對(duì)編碼報(bào)文調(diào)用Cnp_0utput()函數(shù)將之發(fā)送出去。
[0009]12)實(shí)現(xiàn)CNP協(xié)議的的cnp_output O函數(shù)的插口結(jié)構(gòu),供上層的CNSTP和CTP協(xié)議等調(diào)用CNP協(xié)議注冊(cè)時(shí)使用。
[0010]13)將實(shí)現(xiàn)好的CNP接收函數(shù)cnp_rcv()及選擇好的類型協(xié)議碼等組建成一個(gè)packet_type類型變量,然后調(diào)用dev_add_packO函數(shù)注冊(cè)到底層的數(shù)據(jù)鏈路層中。
[0011]14)實(shí)現(xiàn)CNP的數(shù)據(jù)報(bào)文發(fā)送函數(shù)cnp_queue_xmit O ,該函數(shù)首先添加CNP協(xié)議的報(bào)文頭部,之后調(diào)用數(shù)據(jù)鏈路層的deV_qUeUe_Xmit O函數(shù)將數(shù)據(jù)報(bào)文發(fā)送到數(shù)據(jù)鏈路層。
[0012]2)編碼網(wǎng)絡(luò)生成樹(shù)協(xié)議的實(shí)現(xiàn)與向編碼網(wǎng)絡(luò)協(xié)議的注冊(cè),其具體步驟包括:
21)該協(xié)議通過(guò)源節(jié)點(diǎn)廣播——最小代價(jià)選擇算法選擇最小代價(jià)的逆向多播路徑,具體實(shí)現(xiàn)如下:
211)每個(gè)源節(jié)點(diǎn)對(duì)當(dāng)前節(jié)點(diǎn)向目的節(jié)點(diǎn)和所有兄弟節(jié)點(diǎn)集的下一跳端口發(fā)送一個(gè)cnstp多播報(bào)文,報(bào)文中包含通信特征碼(sid)、路徑碼(rid)、目的地址(destination)和兄弟節(jié)點(diǎn)地址集(brothers)、當(dāng)前通信代價(jià)(以報(bào)文數(shù)X條數(shù)為標(biāo)度)等信息。
[0013]212)每個(gè)通信節(jié)點(diǎn)在收到cnstp多播報(bào)文之后,更新報(bào)文中的當(dāng)前通信代價(jià),并對(duì)目的節(jié)點(diǎn)和兄弟節(jié)點(diǎn)集中的每個(gè)節(jié)點(diǎn)進(jìn)行下一跳尋徑。
[0014]2121)對(duì)于所有的尋徑的下一跳都一致的情況,該通信節(jié)點(diǎn)將該cnstp報(bào)文轉(zhuǎn)發(fā)到下一跳節(jié)點(diǎn)。
[0015]2122)對(duì)于所有的尋徑不一致的情況下,該通信節(jié)點(diǎn)將此cnstp報(bào)文(主要是通信代價(jià)和源節(jié)點(diǎn))直接單播發(fā)送到目的節(jié)點(diǎn),并生成一個(gè)新的cnstp報(bào)文進(jìn)行多播,兄弟節(jié)點(diǎn)集為下一跳與目的節(jié)點(diǎn)屬于同一個(gè)端口的所有通信節(jié)點(diǎn)。
[0016]213)通信節(jié)點(diǎn)收到已緩存的通信特征碼、路徑碼標(biāo)志著多播回路的產(chǎn)生,此時(shí),算法會(huì)及時(shí)的進(jìn)行多播剪枝,以避免洪泛。
[0017]214)目的節(jié)點(diǎn)在收到所有源節(jié)點(diǎn)的通信代價(jià)信息之后,對(duì)這些信息進(jìn)行匯總,找出一個(gè)代價(jià)最小的逆向多播樹(shù)。對(duì)于多棵逆向多播樹(shù)有相同的最小代價(jià)時(shí),路徑選擇則由上層應(yīng)用層決定,隨機(jī)選擇一棵生成樹(shù)或者可將多棵生成樹(shù)協(xié)同地利用,以均衡系統(tǒng)的運(yùn)行壓力。
[0018]215)將上述步驟生成的逆向多播樹(shù)鏈路發(fā)送至每個(gè)源節(jié)點(diǎn),在每個(gè)通信節(jié)點(diǎn)上標(biāo)識(shí)(sid, nextport)通信對(duì),以供CTP等協(xié)議的使用。
[0019]216)回收該算法中的內(nèi)存等資源。
[0020]22)在CNP協(xié)議中的插口結(jié)構(gòu)中注冊(cè)CNSTP協(xié)議,將實(shí)現(xiàn)好的cnstp接收函數(shù)cnstp_rcvO及選擇好的協(xié)議類型碼注冊(cè)到cnp的插口結(jié)構(gòu)中。
[0021]23)在該協(xié)議中實(shí)現(xiàn)數(shù)據(jù)發(fā)送操作函數(shù)cnstp_xmit O函數(shù),通過(guò)添加cnp協(xié)議報(bào)文頭部之后調(diào)用cnp_xmit()函數(shù)轉(zhuǎn)交給cnp處理。
[0022]3)編碼傳輸協(xié)議的實(shí)現(xiàn)與向編碼網(wǎng)絡(luò)協(xié)議的注冊(cè),其具體步驟包括:
31)編碼傳輸協(xié)議采用類似與傳輸控制協(xié)議(TCP)的面向連接型的傳輸模式。每個(gè)通信源節(jié)點(diǎn)維護(hù)一個(gè)滑動(dòng)窗口,對(duì)超時(shí)未確認(rèn)的數(shù)據(jù)報(bào)文進(jìn)行重傳。
[0023]311)cnstp協(xié)議中的源節(jié)點(diǎn)廣播——最小代價(jià)選擇算法作為編碼網(wǎng)絡(luò)連接建立的過(guò)程,多個(gè)源節(jié)點(diǎn)和一個(gè)目的節(jié)點(diǎn)共同參與。
[0024]312)實(shí)現(xiàn)CTP協(xié)議的報(bào)文接收函數(shù)ctp_rCV O,其中滑動(dòng)窗口機(jī)制與編碼緩存管理模塊協(xié)同工作,目的節(jié)點(diǎn)每接收到一個(gè)數(shù)據(jù)報(bào)文并校驗(yàn)通過(guò),就通過(guò)多播樹(shù)多播出一個(gè)ack報(bào)文,源節(jié)點(diǎn)在收到每一個(gè)ack報(bào)文將滑動(dòng)窗口前移,以便發(fā)送更多的數(shù)據(jù)報(bào)文。
[0025]32)編碼傳輸協(xié)議將接收到的數(shù)據(jù)報(bào)文根據(jù)端口號(hào)等信息轉(zhuǎn)交到上層的應(yīng)用層。
[0026]33)在CNP協(xié)議中的插口結(jié)構(gòu)中注冊(cè)CTP協(xié)議,將實(shí)現(xiàn)好的ctp接收函數(shù)ctp_rev O及選擇好的協(xié)議類型碼注冊(cè)到cnp的插口結(jié)構(gòu)中。
[0027]34)在該協(xié)議中實(shí)現(xiàn)數(shù)據(jù)發(fā)送操作函數(shù)ctp_xmit O函數(shù),通過(guò)添加cnp協(xié)議報(bào)文頭部之后調(diào)用cnp_xmit()函數(shù)轉(zhuǎn)交給cnp的發(fā)送函數(shù)處理。
[0028]4)編碼緩存管理模塊的實(shí)現(xiàn),其具體步驟包括:
41)通信源節(jié)點(diǎn)和通信編碼節(jié)點(diǎn)都需要一個(gè)報(bào)文緩存區(qū),以緩存等待網(wǎng)絡(luò)傳輸或者等待編碼的數(shù)據(jù)報(bào)文。
[0029]411)源節(jié)點(diǎn)中的緩存區(qū)表現(xiàn)為滑動(dòng)窗口,根據(jù)網(wǎng)絡(luò)通信和編碼情況擴(kuò)大或者收縮窗口的大小,主要由CTP控制。
[0030]412)編碼節(jié)點(diǎn)中的緩存區(qū)表現(xiàn)為緩存資源池,編碼網(wǎng)絡(luò)系統(tǒng)對(duì)每個(gè)會(huì)話(session)在每個(gè)編碼節(jié)點(diǎn)維護(hù)一個(gè)編碼等待區(qū),用來(lái)放置先來(lái)到的數(shù)據(jù)報(bào)文,等待其兄弟節(jié)點(diǎn)的數(shù)據(jù)報(bào)文以便編碼。
[0031]42)滑動(dòng)窗口采用類似于TCP協(xié)議中的慢啟算法。算法每次收到確認(rèn)報(bào)文時(shí)都會(huì)增大接收窗口,增加的大小就是已確認(rèn)報(bào)文的數(shù)目。這種情況一直保持到?jīng)]有收到一些段或者窗口大小到達(dá)預(yù)先定義的閾值。如果發(fā)生丟失事件,算法就認(rèn)為這是編碼擁塞或者傳輸阻塞,就會(huì)采取措施減輕這種擁塞。一旦發(fā)生丟失事件或者到達(dá)閾值,算法就會(huì)進(jìn)入線性增長(zhǎng)階段。
[0032]43)緩存資源池采用固定上限的緩存模式,在達(dá)到最大緩存的χ倍時(shí)(推薦X取值在0.7?0.9之間),向上游的源節(jié)點(diǎn)發(fā)送源抑制報(bào)文,源節(jié)點(diǎn)收到該報(bào)文則將滑動(dòng)窗口的大小降至為1,以避免緩存溢出造成的報(bào)文丟失。[0033]5 ) Socket復(fù)用,其具體步驟包括:
51) Socket作為應(yīng)用層與底層網(wǎng)絡(luò)通信的插ロ層,屏蔽底層的通信細(xì)節(jié),提供統(tǒng)ー的調(diào)用接ロ。具體在CNP/CTP協(xié)議族中,起到流程集成的作用:
511)首先應(yīng)用通過(guò)源節(jié)點(diǎn)集合和目的節(jié)點(diǎn)調(diào)用cnp協(xié)議協(xié)議,系統(tǒng)生成ー個(gè)會(huì)話特征碼sid,作為這次會(huì)話的ID。
[0034]512)然后調(diào)用CNSTP協(xié)議,構(gòu)造編碼網(wǎng)絡(luò)所需的編碼網(wǎng)絡(luò)生成樹(shù)。
[0035]513)在上述生成樹(shù)構(gòu)造完畢之后,調(diào)用STP協(xié)議,做編碼網(wǎng)絡(luò)的數(shù)據(jù)傳輸。
[0036]514)通信結(jié)束之后收回生成樹(shù)中的sid,供下次利用,并斷開(kāi)連接。
[0037]52 )實(shí)現(xiàn)Socket與CNP/CTP協(xié)議族軟件模塊的連接。
[0038]本發(fā)明基于Linux內(nèi)核和網(wǎng)絡(luò)編碼技術(shù),通過(guò)構(gòu)建并實(shí)現(xiàn)的一系列網(wǎng)絡(luò)協(xié)議族,可以在數(shù)據(jù)中心中構(gòu)建ー個(gè)編碼網(wǎng)絡(luò)系統(tǒng),在編碼傳輸?shù)膽?yīng)用場(chǎng)景下,通過(guò)網(wǎng)絡(luò)編碼生成樹(shù)協(xié)議生成ー個(gè)編碼網(wǎng)絡(luò)生成樹(shù),并通過(guò)編碼傳輸協(xié)議在該生成樹(shù)上做編碼傳輸。上述編碼網(wǎng)絡(luò)系統(tǒng)為火速據(jù)中心中的數(shù)據(jù)節(jié)點(diǎn)提供了一種新的通信模式,可以很大程度上提高網(wǎng)絡(luò)資源的利用率,降低網(wǎng)絡(luò)的負(fù)載。
【專利附圖】
【附圖說(shuō)明】
[0039]圖1編碼網(wǎng)絡(luò)協(xié)議族層次結(jié)構(gòu)圖,
圖2系統(tǒng)場(chǎng)景結(jié)構(gòu)圖,
圖3源節(jié)點(diǎn)廣播——最小代價(jià)選擇算法流程圖,
圖4 CNP接收函數(shù)處理流程圖。
【具體實(shí)施方式】
[0040]下面結(jié)合附圖對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明。
[0041]圖1是編碼網(wǎng)絡(luò)協(xié)議族的層次結(jié)構(gòu)圖,編碼網(wǎng)絡(luò)協(xié)議(CNP)是平行與IP協(xié)議的網(wǎng)絡(luò)層協(xié)議,編碼網(wǎng)絡(luò)協(xié)議通過(guò)deV_add_paCket ()函數(shù)將自己注冊(cè)到數(shù)據(jù)鏈路層,并實(shí)現(xiàn)cnp_xmit()進(jìn)行數(shù)據(jù)報(bào)文的發(fā)送。編碼接收函數(shù)在接受到數(shù)據(jù)報(bào)文后,通過(guò)本地的通信特征碼集,來(lái)確定對(duì)該數(shù)據(jù)報(bào)文的緩存操作操作還是轉(zhuǎn)發(fā)操作等,通信特征碼集由CNSTP協(xié)議維護(hù)。編碼網(wǎng)絡(luò)生成樹(shù)協(xié)議(CNSTP)運(yùn)行在編碼網(wǎng)絡(luò)協(xié)議上,通過(guò)源節(jié)點(diǎn)廣播——最小代價(jià)選擇算法為編碼網(wǎng)絡(luò)協(xié)議提供編碼生成樹(shù)。上層的編碼傳輸協(xié)議(CTP)負(fù)責(zé)端到端的編碼傳輸。位于最上層的編碼Socket和編碼應(yīng)用程序首先調(diào)用CNSTP計(jì)算編碼生成樹(shù),并在CTP的控制下進(jìn)行編碼傳輸。
[0042]圖2是系統(tǒng)的場(chǎng)景圖,編碼網(wǎng)絡(luò)系統(tǒng)是由數(shù)據(jù)中心中的多個(gè)數(shù)據(jù)服務(wù)器和連接這些服務(wù)器的網(wǎng)絡(luò)設(shè)備構(gòu)成,每個(gè)通信節(jié)點(diǎn)(包括服務(wù)器和路由器)都運(yùn)行著本發(fā)明的所設(shè)計(jì)的編碼網(wǎng)絡(luò)協(xié)議族,當(dāng)系統(tǒng)運(yùn)行時(shí),可以為應(yīng)用層程序提供編碼網(wǎng)絡(luò)傳輸,具體來(lái)說(shuō),當(dāng)目的節(jié)點(diǎn)所需數(shù)據(jù)是多個(gè)源節(jié)點(diǎn)中數(shù)據(jù)的編碼形式,那么,系統(tǒng)可以在各個(gè)源節(jié)點(diǎn)發(fā)往目的節(jié)點(diǎn)的中間路由上發(fā)現(xiàn)編碼機(jī)會(huì),同步各個(gè)源節(jié)點(diǎn)的數(shù)據(jù)報(bào)文發(fā)送并負(fù)責(zé)在中間通信節(jié)點(diǎn)上進(jìn)行編碼,之后再將編碼后的數(shù)據(jù)再交給應(yīng)用層。相對(duì)于將各個(gè)數(shù)據(jù)報(bào)文發(fā)送到目的節(jié)點(diǎn)之后再進(jìn)行編碼,大大節(jié)省了傳輸對(duì)網(wǎng)絡(luò)資源的占用。
[0043]圖3是網(wǎng)絡(luò)編碼生成樹(shù)的源節(jié)點(diǎn)廣播——最小代價(jià)選擇算法流程圖,每個(gè)源節(jié)點(diǎn)對(duì)當(dāng)前節(jié)點(diǎn)向目的節(jié)點(diǎn)和所有兄弟節(jié)點(diǎn)集的下一跳端口發(fā)送一個(gè)cnstp多播報(bào)文,報(bào)文中包含通信特征碼(sid)、路徑碼(rid)、目的地址(destination)和兄弟節(jié)點(diǎn)地址集(brothers)、當(dāng)前通信代價(jià)(以報(bào)文數(shù)X條數(shù)為標(biāo)度)等信息。每個(gè)通信節(jié)點(diǎn)在收到cnstp多播報(bào)文之后,首先進(jìn)行重復(fù)路徑的剪枝,更新報(bào)文中的當(dāng)前通信代價(jià),并對(duì)目的節(jié)點(diǎn)和兄弟節(jié)點(diǎn)集中的每個(gè)節(jié)點(diǎn)進(jìn)行下一跳尋徑。對(duì)于所有的尋徑的下一跳都一致的情況,該通信節(jié)點(diǎn)將該cnstp報(bào)文轉(zhuǎn)發(fā)到下一跳節(jié)點(diǎn)。對(duì)于所有的尋徑不一致的情況下,該通信節(jié)點(diǎn)將此cnstp報(bào)文(主要是通信代價(jià)和源節(jié)點(diǎn))直接單播發(fā)送到目的節(jié)點(diǎn),并生成一個(gè)新的cnstp報(bào)文進(jìn)行多播,兄弟節(jié)點(diǎn)集為下一跳與目的節(jié)點(diǎn)屬于同一個(gè)端口的所有通信節(jié)點(diǎn)。目的節(jié)點(diǎn)在收到所有源節(jié)點(diǎn)的通信代價(jià)信息之后,對(duì)這些信息進(jìn)行匯總,找出一個(gè)代價(jià)最小的逆向多播樹(shù)。對(duì)于多棵逆向多播樹(shù)有相同的最小代價(jià)時(shí),路徑選擇則由上層應(yīng)用層決定,隨機(jī)選擇一棵生成樹(shù)或者可將多棵生成樹(shù)協(xié)同地利用,以均衡系統(tǒng)的運(yùn)行壓力。
[0044]圖4是CNP接收函數(shù)cnp_rcv O的處理流程,編碼接收函數(shù)在接受到數(shù)據(jù)報(bào)文后,通過(guò)本地的通信特征碼集,來(lái)確定對(duì)該數(shù)據(jù)報(bào)文進(jìn)行緩存操作還是轉(zhuǎn)發(fā)操作等,通信特征碼集由CNSTP協(xié)議維護(hù)。編碼網(wǎng)絡(luò)協(xié)議對(duì)轉(zhuǎn)發(fā)到數(shù)據(jù)報(bào)文直接調(diào)用Cnp_0utput()函數(shù),該函數(shù)根據(jù)情況將數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)到下一個(gè)通信節(jié)點(diǎn)或者轉(zhuǎn)交到上層的編碼網(wǎng)絡(luò)生成樹(shù)協(xié)議、編碼傳輸協(xié)議等。編碼網(wǎng)絡(luò)協(xié)議對(duì)需要編碼的數(shù)據(jù)報(bào)文調(diào)用Cnp_COde()函數(shù),該函數(shù)將數(shù)據(jù)報(bào)文緩存到編碼緩存管理模塊分配的內(nèi)存中,如果緩存中有需要編碼的數(shù)據(jù)報(bào)文,則將兩個(gè)數(shù)據(jù)報(bào)文進(jìn)行編碼之后存儲(chǔ)并更新編碼報(bào)文個(gè)數(shù),在達(dá)到該節(jié)點(diǎn)所需編碼的報(bào)文個(gè)數(shù)之后,則標(biāo)志著本通信節(jié)點(diǎn)的編碼任務(wù)完成,然后再對(duì)編碼報(bào)文調(diào)用Cnp_0utput()函數(shù)將之發(fā)送出去。
[0045]本發(fā)明具體應(yīng)用途徑很多,以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn),這些改進(jìn)也應(yīng)視為本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.ー種面向數(shù)據(jù)中心的編碼網(wǎng)絡(luò)系統(tǒng),該系統(tǒng)主要包括數(shù)據(jù)中心中的多臺(tái)數(shù)據(jù)服務(wù)器、連接這些數(shù)據(jù)服務(wù)器的編碼路由器及數(shù)據(jù)鏈路,以編碼路由器和數(shù)據(jù)服務(wù)器作為通信節(jié)點(diǎn),其特征在于,在每個(gè)通信節(jié)點(diǎn)上都構(gòu)建有: TCP/IP協(xié)議棧模塊:用來(lái)作為數(shù)據(jù)中心普通應(yīng)用程序的網(wǎng)絡(luò)協(xié)議支持; 編碼網(wǎng)絡(luò)協(xié)議模塊:使編碼網(wǎng)絡(luò)協(xié)議平行于IP協(xié)議,基于網(wǎng)絡(luò)編碼技術(shù)在數(shù)據(jù)中心中提供數(shù)據(jù)報(bào)文的編碼傳輸; 編碼網(wǎng)絡(luò)生成樹(shù)協(xié)議模塊:為每ー個(gè)通信特征碼標(biāo)識(shí)的編碼數(shù)據(jù)通信構(gòu)建ー個(gè)逆向多播樹(shù),以支持編碼傳輸協(xié)議; 編碼傳輸協(xié)議模塊:對(duì)于每個(gè)通信特征碼標(biāo)識(shí)的編碼數(shù)據(jù)通信,根據(jù)編碼網(wǎng)絡(luò)生成樹(shù)協(xié)議所生成的逆向多播樹(shù),同步各個(gè)葉子節(jié)點(diǎn)和中間編碼路由器,使得數(shù)據(jù)由葉子節(jié)點(diǎn)同步的傳輸?shù)礁?jié)點(diǎn),并在中間過(guò)程的交匯點(diǎn)做編碼操作; 編碼緩存管理模塊:對(duì)于每個(gè)逆向多播樹(shù)的交匯節(jié)點(diǎn),為每ー個(gè)通信特征碼管理通信節(jié)點(diǎn)的緩存,完成編碼同步和內(nèi)存的申請(qǐng)釋放; Socket復(fù)用模塊:將編碼傳輸協(xié)議注冊(cè)到Socket通信列表中,使得上層的應(yīng)用程序能夠調(diào)用該協(xié)議做編碼傳輸,編碼傳輸首先調(diào)用編碼網(wǎng)絡(luò)生成樹(shù)協(xié)議,生成一個(gè)逆向多播樹(shù),并在各個(gè)交匯節(jié)點(diǎn)做記錄,之后再同步啟動(dòng)編碼傳輸協(xié)議。
2.權(quán)利要求1所述面向數(shù)據(jù)中心的編碼網(wǎng)絡(luò)系統(tǒng)的工作方法,其特征在于包括以下步驟: 1)編碼網(wǎng)絡(luò)協(xié)議的實(shí)現(xiàn)及其向數(shù)據(jù)鏈路層的注冊(cè), 2)編碼網(wǎng)絡(luò)生成樹(shù)協(xié)議的實(shí)現(xiàn)與向編碼網(wǎng)絡(luò)協(xié)議的注冊(cè), 3)編碼傳輸協(xié)議的實(shí)現(xiàn)與向編碼網(wǎng)絡(luò)協(xié)議的注冊(cè), 4)編碼緩存管理的實(shí)現(xiàn); 5)Socket復(fù)用的實(shí)現(xiàn)。
3.根據(jù)權(quán)利要求2所述面向數(shù)據(jù)中心的編碼網(wǎng)絡(luò)系統(tǒng)的工作方法,其特征在于步驟I)具體步驟包括: 11)由各通信節(jié)點(diǎn)的編碼網(wǎng)絡(luò)協(xié)議模塊實(shí)現(xiàn)編碼接收函數(shù)Cnp_rCV(),編碼接收函數(shù)在接受到數(shù)據(jù)報(bào)文后,通過(guò)本地的通信特征碼集,來(lái)確定是對(duì)該數(shù)據(jù)報(bào)文進(jìn)行緩存操作還是轉(zhuǎn)發(fā)操作,通信特征碼集由cnstp協(xié)議維護(hù);具體為: 111)編碼網(wǎng)絡(luò)協(xié)議對(duì)轉(zhuǎn)發(fā)到數(shù)據(jù)報(bào)文直接調(diào)用Cnp_0utput()函數(shù),該函數(shù)根據(jù)情況將數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)到下ー個(gè)通信節(jié)點(diǎn)或者轉(zhuǎn)交到上層的編碼網(wǎng)絡(luò)生成樹(shù)協(xié)議、編碼傳輸協(xié)議; 112)編碼網(wǎng)絡(luò)協(xié)議對(duì)需要編碼的數(shù)據(jù)報(bào)文調(diào)用Cnp_COde()函數(shù),該函數(shù)將數(shù)據(jù)報(bào)文緩存到編碼緩存管理模塊分配的內(nèi)存中,如果緩存中有需要編碼的數(shù)據(jù)報(bào)文,則將兩個(gè)數(shù)據(jù)報(bào)文進(jìn)行編碼之后存儲(chǔ)并更新編碼報(bào)文個(gè)數(shù),在達(dá)到該節(jié)點(diǎn)所需編碼的報(bào)文個(gè)數(shù)之后,則標(biāo)志著本通信節(jié)點(diǎn)的編碼任務(wù)完成,然后再對(duì)編碼報(bào)文調(diào)用Cnp_0utput()函數(shù)將之發(fā)送出去; 12)實(shí)現(xiàn)CNP協(xié)議的cnp_output()函數(shù)的插ロ結(jié)構(gòu),供上層的CNSTP和CTP協(xié)議調(diào)用CNP協(xié)議注冊(cè)時(shí)使用; 13)將實(shí)現(xiàn)好的CNP接收函數(shù)cnp_rcv()及選擇好的類型協(xié)議碼等組建成ー個(gè)packet_type類型變量,然后調(diào)用dev_add_pack()函數(shù)注冊(cè)到底層的數(shù)據(jù)鏈路層中; 14)實(shí)現(xiàn)CNP的數(shù)據(jù)報(bào)文發(fā)送函數(shù)cnp_queue_xmit O ,該函數(shù)首先添加CNP協(xié)議的報(bào)文頭部,之后調(diào)用數(shù)據(jù)鏈路層的dev_qUeUe_Xmit()函數(shù)將數(shù)據(jù)報(bào)文發(fā)送到數(shù)據(jù)鏈路層。
4.根據(jù)權(quán)利要求2或3所述面向數(shù)據(jù)中心的編碼網(wǎng)絡(luò)系統(tǒng)的工作方法,其特征在于步驟2)具體步驟包括: 21)由編碼網(wǎng)絡(luò)生成樹(shù)協(xié)議模塊通過(guò)源節(jié)點(diǎn)廣播,以最小代價(jià)選擇算法選擇最小代價(jià)的逆向多播路徑, 22)在CNP協(xié)議中的插口結(jié)構(gòu)中注冊(cè)CNSTP協(xié)議,將實(shí)現(xiàn)好的cnstp接收函數(shù)cnstp_rev O及選擇好的協(xié)議類型碼注冊(cè)到cnp的插口結(jié)構(gòu)中, 23)在該協(xié)議中實(shí)現(xiàn)數(shù)據(jù)發(fā)送操作函數(shù)cnstp_xmit()函數(shù),通過(guò)添加cnp協(xié)議報(bào)文頭部之后調(diào)用cnp_xmit()函數(shù)轉(zhuǎn)交給cnp處理。
5.根據(jù)權(quán)利要求4所述面向數(shù)據(jù)中心的編碼網(wǎng)絡(luò)系統(tǒng)的工作方法,其特征在于步驟21)具體實(shí)現(xiàn)如下: 211)每個(gè)源節(jié)點(diǎn)對(duì)當(dāng)前節(jié)點(diǎn)向目的節(jié)點(diǎn)和所有兄弟節(jié)點(diǎn)集的下一跳端口發(fā)送一個(gè)cnstp多播報(bào)文,報(bào)文中包含通信特征碼(sid)、路徑碼(rid)、目的地址(destination)和兄弟節(jié)點(diǎn)地址集(brothers)、當(dāng)前通信代價(jià),其中當(dāng)前通信代價(jià)以報(bào)文數(shù)X條數(shù)為標(biāo)度; 212)每個(gè)通信節(jié)點(diǎn)在收到cnstp多播報(bào)文之后,更新報(bào)文中的當(dāng)前通信代價(jià),并對(duì)目的節(jié)點(diǎn)和兄弟節(jié)點(diǎn)集中的每個(gè)節(jié)點(diǎn)進(jìn)行下一跳尋徑; 213)對(duì)于所有的尋徑的下一跳都一致的情況,該通信節(jié)點(diǎn)將該cnstp報(bào)文轉(zhuǎn)發(fā)到下一跳節(jié)點(diǎn),· 或者對(duì)于所有的尋徑不一致的情況下,該通信節(jié)點(diǎn)將此cnstp報(bào)文直接單播發(fā)送到目的節(jié)點(diǎn),并生成一個(gè)新的cnstp報(bào)文進(jìn)行多播,兄弟節(jié)點(diǎn)集為下一跳與目的節(jié)點(diǎn)屬于同一個(gè)端口的所有通信節(jié)點(diǎn); 214)通信節(jié)點(diǎn)收到已緩存的通信特征碼、路徑碼標(biāo)志著多播回路的產(chǎn)生,此時(shí),算法會(huì)及時(shí)的進(jìn)行多播剪枝,以避免洪泛; 215)目的節(jié)點(diǎn)在收到所有源節(jié)點(diǎn)的通信代價(jià)信息之后,對(duì)這些信息進(jìn)行匯總,找出一個(gè)代價(jià)最小的逆向多播樹(shù),對(duì)于多棵逆向多播樹(shù)有相同的最小代價(jià)時(shí),路徑選擇則由上層應(yīng)用層決定,隨機(jī)選擇一棵生成樹(shù)或者可將多棵生成樹(shù)協(xié)同地利用,以均衡系統(tǒng)的運(yùn)行壓力; 216)將上述步驟生成的逆向多播樹(shù)鏈路發(fā)送至每個(gè)源節(jié)點(diǎn),在每個(gè)通信節(jié)點(diǎn)上標(biāo)識(shí)(sid, nextport)通信對(duì),以供其余協(xié)議的使用; 217)回收該算法中的資源。
6.根據(jù)權(quán)利要求2或3所述面向數(shù)據(jù)中心的編碼網(wǎng)絡(luò)系統(tǒng)的工作方法,其特征在于步驟3)具體步驟包括: 31)編碼傳輸協(xié)議模塊使每個(gè)通信源節(jié)點(diǎn)維護(hù)一個(gè)滑動(dòng)窗口,對(duì)超時(shí)未確認(rèn)的數(shù)據(jù)報(bào)文進(jìn)行重傳; 32)編碼傳輸協(xié)議將接收到的數(shù)據(jù)報(bào)文根據(jù)端口號(hào)等信息轉(zhuǎn)交到上層的應(yīng)用層; 33)在CNP協(xié)議中的插口結(jié)構(gòu)中注冊(cè)CTP協(xié)議,將實(shí)現(xiàn)好的ctp接收函數(shù)ctp_rcVO及選擇好的協(xié)議類型碼注冊(cè)到cnp的插口結(jié)構(gòu)中;34)在該協(xié)議中實(shí)現(xiàn)數(shù)據(jù)發(fā)送操作函數(shù)ctp_xmit()函數(shù),通過(guò)添加cnp協(xié)議報(bào)文頭部之后調(diào)用cnp_xmit()函數(shù)轉(zhuǎn)交給cnp的發(fā)送函數(shù)處理。
7.根據(jù)權(quán)利要求2或3所述面向數(shù)據(jù)中心的編碼網(wǎng)絡(luò)系統(tǒng)的工作方法,其特征在于步驟4)具體步驟包括: 41)通信源節(jié)點(diǎn)和通信編碼節(jié)點(diǎn)都設(shè)置一個(gè)報(bào)文緩存區(qū),以緩存等待網(wǎng)絡(luò)傳輸或者等待編碼的數(shù)據(jù)報(bào)文,其中源節(jié)點(diǎn)中的緩存區(qū)表現(xiàn)為滑動(dòng)窗口,根據(jù)網(wǎng)絡(luò)通信和編碼情況擴(kuò)大或者收縮窗口的大小,主要由CTP控制;編碼節(jié)點(diǎn)中的緩存區(qū)表現(xiàn)為緩存資源池,編碼網(wǎng)絡(luò)系統(tǒng)對(duì)每個(gè)會(huì)話(session)在每個(gè)編碼節(jié)點(diǎn)維護(hù)一個(gè)編碼等待區(qū),用來(lái)放置先來(lái)到的數(shù)據(jù)報(bào)文,等待其兄弟節(jié)點(diǎn)的數(shù)據(jù)報(bào)文以便編碼; 42)滑動(dòng)窗口采用類似于TCP協(xié)議中的慢啟算法,算法每次收到確認(rèn)報(bào)文時(shí)都會(huì)增大接收窗口,增加的大小就是已確認(rèn)報(bào)文的數(shù)目,這種情況一直保持到?jīng)]有收到一些段或者窗口大小到達(dá)預(yù)先定義的閾值,如果發(fā)生丟失事件,算法就認(rèn)為這是編碼擁塞或者傳輸阻塞,就會(huì)采取措施減輕這種擁塞,一旦發(fā)生丟失事件或者到達(dá)閾值,算法就會(huì)進(jìn)入線性增長(zhǎng)階段; 43)緩存資源池采用固定上限的緩存模式,在達(dá)到最大緩存的X倍時(shí)(推薦X取值在0.7~0.9之間),向上游的源節(jié)點(diǎn)發(fā)送源抑制報(bào)文,源節(jié)點(diǎn)收到該報(bào)文則將滑動(dòng)窗口的大小降至為1,以避免緩存溢出造成的報(bào)文丟失。
8.根據(jù)權(quán)利要求2或3所述面向數(shù)據(jù)中心的編碼網(wǎng)絡(luò)系統(tǒng)的工作方法,其特征在于步驟5)具體步驟包括: 51)Socket作為應(yīng)用層與底層網(wǎng)絡(luò)通信的插口層,屏蔽底層的通信細(xì)節(jié),提供統(tǒng)一的調(diào)用接口,首先應(yīng)用通過(guò)源節(jié)點(diǎn)集合和目的節(jié)點(diǎn)調(diào)用cnp協(xié)議協(xié)議,系統(tǒng)生成一個(gè)會(huì)話特征碼sid,作為這次會(huì)話的ID,然后調(diào)用CNSTP協(xié)議,構(gòu)造編碼網(wǎng)絡(luò)所需的編碼網(wǎng)絡(luò)生成樹(shù);在上述生成樹(shù)構(gòu)造完畢之后,調(diào)用STP協(xié)議,做編碼網(wǎng)絡(luò)的數(shù)據(jù)傳輸;通信結(jié)束之后收回生成樹(shù)中的sid,供下次利用,并斷開(kāi)連接; 52)實(shí)現(xiàn)Socket與CNP/CTP協(xié)議族軟件模塊的連接。
【文檔編號(hào)】H04L12/753GK103532954SQ201310486598
【公開(kāi)日】2014年1月22日 申請(qǐng)日期:2013年10月17日 優(yōu)先權(quán)日:2013年10月17日
【發(fā)明者】陳運(yùn)海, 葉保留, 陸桑璐 申請(qǐng)人:南京大學(xué)鎮(zhèn)江高新技術(shù)研究院