本發(fā)明涉及一種實現(xiàn)方法,尤其涉及的是一種以數(shù)據(jù)為中心的通信方法。
背景技術(shù):
網(wǎng)絡(luò)已經(jīng)成為人類生活中不可缺少的一部分,它提供多種數(shù)據(jù)服務(wù),因此降低數(shù)據(jù)通信延遲尤為重要。近年來,很多研究工作致力于網(wǎng)絡(luò)的數(shù)據(jù)通信工作,以便使人們能夠快速獲取網(wǎng)絡(luò)服務(wù)。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)的數(shù)據(jù)通信技術(shù)會進一步提高服務(wù)質(zhì)量。
目前,網(wǎng)絡(luò)的數(shù)據(jù)通信延遲和代價都比較大,降低了網(wǎng)絡(luò)服務(wù)性能。因此,如何降低網(wǎng)絡(luò)的數(shù)據(jù)通信的延遲和代價成為近年來研究的熱點問題。
技術(shù)實現(xiàn)要素:
發(fā)明目的:本發(fā)明所要解決的技術(shù)問題是針對現(xiàn)有技術(shù)的不足,提供一種以數(shù)據(jù)為中心的通信方法。
技術(shù)方案:本發(fā)明公開了一種以數(shù)據(jù)為中心的通信方法,所述網(wǎng)絡(luò)包括IPv6骨干網(wǎng)、以數(shù)據(jù)為中心的子網(wǎng)以及IP子網(wǎng),以數(shù)據(jù)為中心的子網(wǎng)稱為數(shù)據(jù)子網(wǎng);
IP子網(wǎng)包括接入路由器,IP普通設(shè)備,IP數(shù)據(jù)提供者和IP數(shù)據(jù)消費者;IP子網(wǎng)通過接入路由器連接到IPv6骨干網(wǎng);在IP子網(wǎng)中,IP數(shù)據(jù)提供者是能夠產(chǎn)生或者提供一種數(shù)據(jù)的服務(wù)器或者節(jié)點,支持IP協(xié)議;IP數(shù)據(jù)消費者是授權(quán)能夠獲取一種數(shù)據(jù)的節(jié)點,例如有權(quán)限查看某些文件或者點播某些節(jié)目,支持IP協(xié)議;IP普通設(shè)備既不是數(shù)據(jù)消費者也不是數(shù)據(jù)提供者,用于執(zhí)行路由轉(zhuǎn)發(fā)功能,支持IP協(xié)議;
數(shù)據(jù)子網(wǎng)包括數(shù)據(jù)接入路由器、普通設(shè)備,數(shù)據(jù)提供者和數(shù)據(jù)消費者;數(shù)據(jù)接入路由器支持IP協(xié)議,數(shù)據(jù)子網(wǎng)通過數(shù)據(jù)接入路由器連接到IPv6骨干網(wǎng);在數(shù)據(jù)子網(wǎng)中,數(shù)據(jù)提供者是能夠產(chǎn)生或者提供某種數(shù)據(jù)的服務(wù)器或者節(jié)點,不支持IP協(xié)議;數(shù)據(jù)消費者是授權(quán)能夠獲取某種數(shù)據(jù)的節(jié)點,例如有權(quán)限查看某些文件或者點播某些節(jié)目,不支持IP協(xié)議;普通設(shè)備既不是數(shù)據(jù)消費者也不是數(shù)據(jù)提供者,用于執(zhí)行路由轉(zhuǎn)發(fā)功能,不支持IP協(xié)議;
在所述網(wǎng)絡(luò)中,一種數(shù)據(jù)由一個數(shù)據(jù)名稱唯一定義,一個數(shù)據(jù)名稱由名稱前綴和名稱ID構(gòu)成;在IP網(wǎng)絡(luò)中,一個IP地址由路由前綴和接口ID構(gòu)成;在所述網(wǎng)絡(luò)中,一個名稱前綴映射為一個路由前綴,一個名稱ID映射為一個接口ID,由此一個數(shù)據(jù)名稱能夠映射為一個IP地址,即一種數(shù)據(jù)由一個數(shù)據(jù)名稱以及該數(shù)據(jù)名稱映射的IP地址唯一定義;名稱前綴與路由前綴的映射關(guān)系以及名稱ID與接口ID的映射關(guān)系預(yù)先設(shè)定,每個接入路由器、數(shù)據(jù)接入路由器、數(shù)據(jù)消費者和數(shù)據(jù)提供者維護一個映射表來保存映射關(guān)系;例如名稱前綴China/Jiangsu/Cslg映射為網(wǎng)絡(luò)前綴3fe8:1ab0:2:1::,名稱ID N6/402/V1映射為接口ID 1:1:1:1,因此由數(shù)據(jù)名稱China/Jiangsu/Cslg/N6/402/V1定義的數(shù)據(jù)同時也能夠由IP地址3fe8:1ab0:2:1:1:1:1:1來定義;
能夠映射為一種數(shù)據(jù)名稱的IP地址稱為任播地址,即任播地址定義了一種數(shù)據(jù),能夠提供該種數(shù)據(jù)的所有數(shù)據(jù)提供者構(gòu)建成任播組,該任播組由該任播地址唯一標識;
在IP子網(wǎng)中,接入路由器或者普通設(shè)備維護一個任播路由表,每個表項由四個域構(gòu)成:任播地址,下一跳,距離以及生命周期;接入路由器、普通設(shè)備或者數(shù)據(jù)提供者維護一個任播請求表,每個表項由兩個域構(gòu)成:任播地址和下一跳;
在數(shù)據(jù)子網(wǎng)中,數(shù)據(jù)接入路由器或者普通設(shè)備維護一個名稱路由表,每個表項由四個域構(gòu)成:數(shù)據(jù)名稱,接口,距離以及生命周期;數(shù)據(jù)接入路由器、普通設(shè)備或者數(shù)據(jù)提供者維護一個是名稱請求表,每個表項由兩個域構(gòu)成:任播地址和接口。
上述過程能夠有效實現(xiàn)數(shù)據(jù)子網(wǎng)和IP子網(wǎng)的融合,從而實現(xiàn)數(shù)據(jù)子網(wǎng)和IP子網(wǎng)的通信。
本發(fā)明所述方法中,在IP數(shù)據(jù)提供者P1為任播組成員,該任播組由任播地址A1標識,任播地址A1定義了數(shù)據(jù)C1,IP數(shù)據(jù)提供者P1能夠產(chǎn)生和提供數(shù)據(jù)C1,IP數(shù)據(jù)提供者P1位于IP子網(wǎng)內(nèi),該IP子網(wǎng)的接入路由器為AR1,IP數(shù)據(jù)提供者P1的單播地址為U1的情況下,IP數(shù)據(jù)提供者P1產(chǎn)生數(shù)據(jù)C1后,執(zhí)行下述過程來發(fā)布數(shù)據(jù)C1:
步驟101:開始;
步驟102:IP數(shù)據(jù)提供者P1發(fā)送一條數(shù)據(jù)發(fā)布消息,數(shù)據(jù)發(fā)布消息的目的地址為接入路由器AR1的單播地址,源地址為U1,負載為任播地址A1以及距離參數(shù)dist,距離參數(shù)dist的初始值為0;
步驟103:接入路由器或者IP普通設(shè)備從上一跳接收到該數(shù)據(jù)發(fā)布消息后,查看任播路由表,如果存在任播地址域值為A1且下一跳域值為上一跳單播地址的表項,則進行步驟104,否則執(zhí)行步驟105;
步驟104:從上一跳接收到該數(shù)據(jù)發(fā)布消息的接入路由器或者IP普通設(shè)備在任播路由表中創(chuàng)建一個表項,該表項的任播地址域為A1,下一跳域值為上一跳的單播地址,距離域值為數(shù)據(jù)發(fā)布消息中的距離參數(shù)dist值,生命周期域值設(shè)置為最大值,例如30分鐘,執(zhí)行步驟106;
步驟105:從上一跳接收到該數(shù)據(jù)發(fā)布消息的接入路由器或者IP普通設(shè)備更新任播地址域值為A1且下一跳域值為上一跳單播地址的表項,即將該表項的距離域值設(shè)置為數(shù)據(jù)發(fā)布消息中的距離參數(shù)dist值;
步驟106:如果從上一跳接收到該數(shù)據(jù)發(fā)布消息的接入路由器為AR1,則執(zhí)行步驟109,否則執(zhí)行步驟107;
步驟107:接收到該數(shù)據(jù)發(fā)布消息的IP普通設(shè)備判斷在步驟104創(chuàng)建或者在步驟105更新的表項的距離域值是否大于其他所有任播域值等于A1的表項的距離域值,如果是,進行步驟108,否則進行步驟109;
步驟108:接收到該數(shù)據(jù)發(fā)布消息的IP普通設(shè)備將數(shù)據(jù)發(fā)布消息中的距離參數(shù)dist遞增1,將源地址更新為自己的單播地址,然后發(fā)送該數(shù)據(jù)發(fā)布消息,執(zhí)行步驟103;
步驟109:結(jié)束。
上述過程實現(xiàn)了數(shù)據(jù)發(fā)布從而使其他設(shè)備能夠獲取數(shù)據(jù)。
本發(fā)明所述方法中,在數(shù)據(jù)子網(wǎng)中,數(shù)據(jù)接入路由器啟動后,執(zhí)行下述過程以建立到達自己的路由:
步驟201:開始;
步驟202:數(shù)據(jù)接入路由器從自己的每個接口發(fā)送路由器發(fā)布消息;
步驟203:普通設(shè)備、數(shù)據(jù)提供者或者數(shù)據(jù)消費者從自己的接口f收到該數(shù)據(jù)接入路由器發(fā)布消息后,保存接口f,接口f為普通設(shè)備、數(shù)據(jù)提供者或者數(shù)據(jù)消費者與數(shù)據(jù)接入路由器相連的接口;
步驟204:判斷收到該數(shù)據(jù)接入路由器發(fā)布消息的是否為普通設(shè)備,如果是執(zhí)行步驟205,否則執(zhí)行步驟206;
步驟205:收到該路由器發(fā)布消息的普通設(shè)備從除了接收到路由器發(fā)布消息的接口以外的所有接口發(fā)布路由器發(fā)布消息,執(zhí)行步驟203;
步驟206:結(jié)束。
本發(fā)明所述方法中,在數(shù)據(jù)提供者P4能夠產(chǎn)生和提供數(shù)據(jù)C3,數(shù)據(jù)C3由數(shù)據(jù)名稱N3定義,數(shù)據(jù)提供者P4位于數(shù)據(jù)子網(wǎng)內(nèi),該數(shù)據(jù)子網(wǎng)的數(shù)據(jù)接入路由器為CAR3的情況下,數(shù)據(jù)提供者P4產(chǎn)生數(shù)據(jù)C3后,執(zhí)行下述過程來發(fā)布數(shù)據(jù)C3:
步驟301:開始;
步驟302:數(shù)據(jù)提供者P4構(gòu)建一個數(shù)據(jù)名稱發(fā)布消息,該數(shù)據(jù)名稱發(fā)布消息的負載為數(shù)據(jù)名稱N3以及距離參數(shù)dist,距離參數(shù)dist的初始值為0,然后從到達接入路由器CAR3的接口發(fā)送該數(shù)據(jù)名稱發(fā)布消息;
步驟303:數(shù)據(jù)接入路由器或者普通設(shè)備從接口f’接收到該數(shù)據(jù)名稱發(fā)布消息后,查看名稱路由表,如果存在數(shù)據(jù)名稱域值為N3且接口域值為f’的表項,則進行步驟304,否則執(zhí)行步驟305;
步驟304:從接口f’接收到數(shù)據(jù)發(fā)布消息的數(shù)據(jù)接入路由器或者普通設(shè)備在名稱路由表中創(chuàng)建一個表項,該表項的數(shù)據(jù)名稱域為N3,接口域值為f’,距離域值為數(shù)據(jù)名稱發(fā)布消息中的距離參數(shù)dist值,生命周期域值設(shè)置為最大值,例如30分鐘,執(zhí)行步驟306;
步驟305:從接口f’接收到該數(shù)據(jù)發(fā)布消息的數(shù)據(jù)接入路由器或者普通設(shè)備更新數(shù)據(jù)名稱域值為N3且接口域值為f’的表項,即將該表項的距離域值設(shè)置為數(shù)據(jù)名稱發(fā)布消息中的距離參數(shù)dist值;
步驟306:判斷接收到該數(shù)據(jù)名稱發(fā)布消息的數(shù)據(jù)接入路由器是否為數(shù)據(jù)接入路由器CAR3,是則執(zhí)行步驟309,否則執(zhí)行步驟307;
步驟307:接收到該數(shù)據(jù)發(fā)布消息的普通設(shè)備判斷在步驟304創(chuàng)建或者在步驟305更新的表項的距離域值是否大于其他所有數(shù)據(jù)名稱域值等于N3的表項的距離域值,如果是,進行步驟308,否則進行步驟309;
步驟308:接收到該數(shù)據(jù)名稱發(fā)布消息的普通設(shè)備將數(shù)據(jù)名稱發(fā)布消息中的距離參數(shù)dist遞增1,然后從到達接入路由器CAR3的接口發(fā)送該消息,執(zhí)行步驟303;
步驟309:結(jié)束。
上述過程實現(xiàn)了數(shù)據(jù)發(fā)布從而使其他設(shè)備能夠獲取數(shù)據(jù)。
本發(fā)明所述方法中,在IP數(shù)據(jù)消費之S1位于IP子網(wǎng),該IP子網(wǎng)的接入路由器為AR1,數(shù)據(jù)C2由任播地址A2定義的情況下,如果在相同的IP子網(wǎng)內(nèi)至少有一個能夠提供數(shù)據(jù)C2的IP數(shù)據(jù)提供者,則IP數(shù)據(jù)消費者S1能夠通過下述過程獲取數(shù)據(jù)C2:
步驟401:開始;
步驟402:IP數(shù)據(jù)消費者S1構(gòu)建數(shù)據(jù)請求消息,該數(shù)據(jù)請求消息的目的地址為任播地址A2,源地址為自己的單播地址,然后IP數(shù)據(jù)消費者S1將該數(shù)據(jù)請求消息發(fā)送到到達接入路由器AR1的下一跳;
步驟403:如果是任播地址A2標識的任播組成員從上一跳H1接收到該數(shù)據(jù)請求消息,H1是個變量,用于記錄上一跳的IP地址,則進行步驟404,否則進行步驟407;
步驟404:任播組成員查看任播請求表,判斷是否存在任播地址域值為A2且下一跳域值為H1的表項,如果是,進行步驟406,否則進行步驟405;
步驟405:任播組成員在任播請求表中創(chuàng)建一個表項,該表項的任播地址為A2,下一跳為H1;
步驟406:任播組成員構(gòu)建一個數(shù)據(jù)響應(yīng)消息,該數(shù)據(jù)響應(yīng)消息的源地址為A2,目的地址為數(shù)據(jù)消費者S1的單播地址,負載為數(shù)據(jù)C2,然后執(zhí)行步驟415;
步驟407:IP普通設(shè)備或者接入路由器AR1從上一跳H2接收到該數(shù)據(jù)請求消息后,H2為變量值,用于記錄上一跳的IP地址,查看任播請求表,判斷是否存在任播地址為A2的表項,如果是,則進行步驟408,否則進行步驟410;
步驟408:IP普通設(shè)備或者接入路由器AR1判斷是否存在任播地址為A2且下一跳域值為H2的表項,如果是,進行步驟415,否則進行步驟409;
步驟409:IP普通設(shè)備或者接入路由器AR1在任播請求表中創(chuàng)建一個表項,該表項的任播地址為A2,下一跳為H2,然后執(zhí)行步驟415;
步驟410:IP普通設(shè)備或者接入路由器AR1在任播請求表中創(chuàng)建一個表項,該表項的任播地址為A2,下一跳為H2;
步驟411:判斷是否為接入路由器AR1接收到數(shù)據(jù)請求消息,如果是,則進行步驟414,否則進行步驟412;
步驟412:IP普通設(shè)備查看任播路由表,判斷是否存在任播地址域值為A2的表項,如果有,則進行步驟414,否則進行步驟413;
步驟413:IP普通設(shè)備將數(shù)據(jù)請求消息發(fā)送到達到接入路由器AR1的下一跳,執(zhí)行步驟403;
步驟414:IP普通設(shè)備或者接入路由器AR1將數(shù)據(jù)請求消息轉(zhuǎn)發(fā)到任播地址域值為A2的表項的下一跳,執(zhí)行步驟403;
步驟415:IP普通設(shè)備或者接入路由器AR1創(chuàng)建或者接收到數(shù)據(jù)響應(yīng)消息后,查看任播請求表,對于每個任播地址等于A2的表項,IP普通設(shè)備或者接入路由器AR1將數(shù)據(jù)響應(yīng)消息的目的地址更新為該表項的下一跳域值,然后轉(zhuǎn)發(fā)該數(shù)據(jù)響應(yīng)消息,同時從任播請求表中刪除該表項;
步驟416:判斷是否是IP數(shù)據(jù)消費者S1接收到數(shù)據(jù)響應(yīng)消息,如果是,進行步驟417,否則進行步驟415;
步驟417:IP數(shù)據(jù)消費者S1保存數(shù)據(jù)響應(yīng)消息中的數(shù)據(jù)C2;
步驟418:結(jié)束。
通過上述過程,數(shù)據(jù)消費者能夠快速獲取數(shù)據(jù)。
本發(fā)明所述方法中,在數(shù)據(jù)消費者S3位于數(shù)據(jù)子網(wǎng)內(nèi),該數(shù)據(jù)子網(wǎng)的數(shù)據(jù)接入路由器為CAR4,數(shù)據(jù)C4由數(shù)據(jù)名稱N4定義的情況下,如果在該數(shù)據(jù)子網(wǎng)內(nèi)至少有一個能夠提供數(shù)據(jù)C4的數(shù)據(jù)提供者,則數(shù)據(jù)消費者S3能夠通過下述過程獲取數(shù)據(jù)C4:
步驟501:開始;
步驟502:數(shù)據(jù)消費者S3構(gòu)建數(shù)據(jù)名稱請求消息,該數(shù)據(jù)名稱請求消息的數(shù)據(jù)名字為N4,然后從到達數(shù)據(jù)接入路由器CAR4的接口發(fā)送該數(shù)據(jù)名稱請求消息;
步驟503:如果是數(shù)據(jù)C4的數(shù)據(jù)提供者從接口f2接收到該數(shù)據(jù)名稱請求消息,則進行步驟504,否則進行步驟507;
步驟504:數(shù)據(jù)提供者查看名稱請求表,判斷是否存在數(shù)據(jù)名稱為N4且接口域為f2的表項,如果是,進行步驟506,否則進行步驟505;
步驟505:數(shù)據(jù)提供者在名稱請求表中創(chuàng)建一個表項,該表項的數(shù)據(jù)名稱域為N4,接口域值為f2;
步驟506:數(shù)據(jù)提供者構(gòu)建一個數(shù)據(jù)名稱響應(yīng)消息,該數(shù)據(jù)名稱響應(yīng)消息的負載為數(shù)據(jù)C4,執(zhí)行步驟515;
步驟507:普通設(shè)備或者數(shù)據(jù)接入路由器CAR4從接口f3接收到該數(shù)據(jù)名稱請求消息后,查看名稱請求表,判斷是否存在數(shù)據(jù)名稱為N4的表項,如果是,則進行步驟508,否則進行步驟510;
步驟508:普通設(shè)備或者數(shù)據(jù)接入路由器CAR4判斷是否存在數(shù)據(jù)名稱為N4且接口域值為f3的表項,如果是,進行步驟515,否則進行步驟509;
步驟509:普通設(shè)備或者數(shù)據(jù)接入路由器CAR4在名稱請求表中創(chuàng)建一個表項,該表項的數(shù)據(jù)名稱為N4,接口域值為f3,然后執(zhí)行步驟515;
步驟510:普通設(shè)備或者數(shù)據(jù)接入路由器CAR4在名稱請求表中創(chuàng)建一個表項,該表項的數(shù)據(jù)名稱域值為N4,接口域值為f3;
步驟511:判斷是否為數(shù)據(jù)接入路由器CAR4接收到數(shù)據(jù)名稱請求消息,如果是,則進行步驟514,否則進行步驟512;
步驟512:普通設(shè)備查看名稱路由表,判斷是否存在數(shù)字名稱域值為N4的表項,如果有,則進行步驟514,否則進行步驟513;
步驟513:普通設(shè)備從到達數(shù)據(jù)接入路由器CAR4的接口發(fā)送數(shù)據(jù)名稱請求消息,執(zhí)行步驟503;
步驟514:普通設(shè)備或者數(shù)據(jù)接入路由器CAR4從數(shù)據(jù)名稱域值為N4的表項的接口域值轉(zhuǎn)發(fā)該數(shù)據(jù)名稱請求消息,執(zhí)行步驟503;
步驟515:普通設(shè)備或者數(shù)據(jù)接入路由器CAR4創(chuàng)建或者接收到數(shù)據(jù)名稱響應(yīng)消息后,查看名稱請求表,對于每個數(shù)據(jù)名稱域值等于N4的表項,普通設(shè)備或者數(shù)據(jù)接入路由器CAR4從該表項的接口域轉(zhuǎn)發(fā)該數(shù)據(jù)名稱響應(yīng)消息,同時從名稱請求表中刪除該表項;
步驟516:判斷是否是數(shù)據(jù)消費者S3接收到數(shù)據(jù)名稱響應(yīng)消息,如果是,進行步驟517,否則進行步驟515;
步驟517:數(shù)據(jù)消費者S3保存數(shù)據(jù)名稱響應(yīng)消息中的數(shù)據(jù)C4;
步驟518:結(jié)束。
通過上述過程,數(shù)據(jù)消費者能夠快速獲取數(shù)據(jù)。
本發(fā)明所述方法中,在IP數(shù)據(jù)消費者S1位于IP子網(wǎng),該IP子網(wǎng)的接入路由器為AR1,數(shù)據(jù)C3由任播地址A3或者數(shù)據(jù)名稱N3定義,數(shù)據(jù)名稱N3的名稱前綴為NP3,NP3定義的數(shù)據(jù)子網(wǎng)的數(shù)據(jù)接入路由器為CAR3的情況下,如果在該IP子網(wǎng)內(nèi)沒有能夠提供數(shù)據(jù)C3的IP數(shù)據(jù)提供者,則IP數(shù)據(jù)消費者S1通過下述過程獲取數(shù)據(jù)C3:
步驟601:開始;
步驟602:IP數(shù)據(jù)消費者S1構(gòu)建數(shù)據(jù)請求消息,該建數(shù)據(jù)請求消息的目的地址為任播地址A3,源地址為自己的單播地址,然后IP數(shù)據(jù)消費者S1將該建數(shù)據(jù)請求消息發(fā)送到到達接入路由器AR1的下一跳;
步驟603:IP普通設(shè)備或者接入路由器AR1從上一跳H3接收到該數(shù)據(jù)請求消息后,查看任播請求表,如果存在任播地址為A3的表項,則進行步驟604,否則進行步驟606;
步驟604:IP普通設(shè)備或者接入路由器AR1查看任播請求表,判斷是否存在任播地址為A3且下一跳為H3的表項,如果是,進行步驟618,否則進行步驟605;
步驟605:IP普通設(shè)備或者接入路由器AR1在任播請求表中創(chuàng)建一個表項,該表項的任播地址為A3,下一跳為H3,執(zhí)行步驟618;
步驟606:IP普通設(shè)備或者接入路由器AR1在任播請求表中創(chuàng)建一個表項,該表項的任播地址為A3,下一跳為H3,判斷是否為接入路由器AR1接收到數(shù)據(jù)請求消息,如果是,則執(zhí)行步驟608,否則執(zhí)行步驟607;
步驟607:IP普通設(shè)備將數(shù)據(jù)請求消息轉(zhuǎn)發(fā)到到達接入路由器AR1的下一跳,執(zhí)行步驟603;
步驟608:接入路由器AR1將數(shù)據(jù)請求消息轉(zhuǎn)發(fā)到到達數(shù)據(jù)接入路由器CAR4的下一跳;
步驟609:中間接入路由器、中間數(shù)據(jù)接入路由器或者數(shù)據(jù)接入路由器CAR3從上一跳HAR收到數(shù)據(jù)請求消息后,查看任播路由表,如果存在任播地址為A4的表項,則執(zhí)行步驟610,否則執(zhí)行步驟612;
步驟610:中間接入路由器、中間數(shù)據(jù)接入路由器或者數(shù)據(jù)接入路由器CAR3查看任播請求表,判斷是否存在任播地址為A4且下一跳為HAR的表項,如果存在,執(zhí)行步驟618,否則執(zhí)行步驟611;
步驟611:中間接入路由器、中間數(shù)據(jù)接入路由器或者數(shù)據(jù)接入路由器CAR3在任播請求表中建一個表項,任播地址為A4,下一跳域值為HAR,然后執(zhí)行步驟618;
步驟612:中間接入路由器、中間數(shù)據(jù)接入路由器或者數(shù)據(jù)接入路由器CAR3在任播請求表中建一個表項,任播地址為A4,下一跳域值為HAR;
步驟613:判斷是否為數(shù)據(jù)接入路由器CAR3接收到數(shù)據(jù)請求消息,如果是,則執(zhí)行步驟616,否則執(zhí)行步驟614;
步驟614:中間接入路由器或者中間數(shù)據(jù)接入路由器查看任播路由表或者名字路由表,判斷是否存在任播域值為A3或者數(shù)據(jù)名稱域值為N3的表項,如果存在,則執(zhí)行步驟616,否則執(zhí)行步驟615;
步驟615:中間接入路由器或者中間數(shù)據(jù)接入路由器將數(shù)據(jù)請求消息轉(zhuǎn)發(fā)到到達數(shù)據(jù)接入路由器CAR4的下一跳,執(zhí)行步驟609;
步驟616:如果中間接入路由器的任播路由表有任播域值為A3的表項,則中間接入路由器作為數(shù)據(jù)消費者執(zhí)行步驟401~418獲取數(shù)據(jù)C3,如果中間數(shù)據(jù)接入路由器或者數(shù)據(jù)接入路由器CAR3的名稱路由表有數(shù)據(jù)名稱域值為N3的表項,則中間數(shù)據(jù)接入路由器或者數(shù)據(jù)接入路由器CAR3作為數(shù)據(jù)消費者執(zhí)行501~518獲取數(shù)據(jù)C3;
步驟617:中間接入路由器、中間數(shù)據(jù)接入路由器或者數(shù)據(jù)接入路由器CAR3獲取數(shù)據(jù)C3后,創(chuàng)建一個數(shù)據(jù)響應(yīng)消息,該數(shù)據(jù)響應(yīng)消息的源地址為A3,目的地址為IP數(shù)據(jù)消費者S1的單播地址,負載為數(shù)據(jù)C3;
步驟618:中間接入路由器、中間數(shù)據(jù)接入路由器、數(shù)據(jù)接入路由器CAR3、接入路由器AR1或者IP普通設(shè)備創(chuàng)建或者接收到數(shù)據(jù)響應(yīng)消息后,查看任播請求表,對于每個任播地址等于A3的表項,中間接入路由器、中間數(shù)據(jù)接入路由器、數(shù)據(jù)接入路由器CAR3、接入路由器AR1或者普通設(shè)備將數(shù)據(jù)響應(yīng)消息的目的地址更新為該表項的下一跳域值,然后轉(zhuǎn)發(fā)該數(shù)據(jù)響應(yīng)消息,同時從任播請求表中刪除該表項;
步驟619:判斷是否是IP數(shù)據(jù)消費者S1接收到數(shù)據(jù)響應(yīng)消息,如果是,進行步驟620,否則進行步驟618;
步驟620:IP數(shù)據(jù)消費者S1保存數(shù)據(jù)響應(yīng)消息中的數(shù)據(jù)C2;
步驟621:結(jié)束。
上述過程實現(xiàn)了IP子網(wǎng)和數(shù)據(jù)子網(wǎng)的融合與通信,從而數(shù)據(jù)消費者能夠快速獲取遠程數(shù)據(jù)。
本發(fā)明所述方法中,在數(shù)據(jù)消費者S3位于數(shù)據(jù)子網(wǎng)內(nèi),該數(shù)據(jù)子網(wǎng)的數(shù)據(jù)接入路由器為CAR3,數(shù)據(jù)C2由任播地址A2或者數(shù)據(jù)名稱N2定義,任播地址A2的網(wǎng)絡(luò)前綴定義的IP子網(wǎng)的接入路由器為AR2,如果在數(shù)據(jù)消費者S3所在的數(shù)據(jù)子網(wǎng)內(nèi)沒有能夠提供數(shù)據(jù)C2的數(shù)據(jù)提供者,則數(shù)據(jù)消費者S3通過下述過程獲取數(shù)據(jù)C2:
步驟701:開始;
步驟702:數(shù)據(jù)消費者S3構(gòu)建數(shù)據(jù)名稱請求消息,該數(shù)據(jù)名稱請求消息的數(shù)據(jù)名字為N2,然后從到達數(shù)據(jù)接入路由器CAR3的接口發(fā)送該數(shù)據(jù)名稱請求消息;
步驟703:普通設(shè)備或者數(shù)據(jù)接入路由器CAR3從接口f4接收到該數(shù)據(jù)名稱請求消息后,查看名字請求表,如果存在數(shù)據(jù)名稱域值為N2的表項,則進行步驟704,否則進行步驟706;
步驟704:普通設(shè)備或者數(shù)據(jù)接入路由器CAR3查看名稱請求表,判斷是否存在數(shù)據(jù)名稱為N2且接口域值為f4的表項,如果是,進行步驟718,否則進行步驟705;
步驟705:普通設(shè)備或者數(shù)據(jù)接入路由器CAR3在名稱請求表中創(chuàng)建一個表項,該表項的數(shù)據(jù)名稱為N2,接口域值為f4,執(zhí)行步驟718;
步驟706:普通設(shè)備或者數(shù)據(jù)接入路由器CAR3在名稱請求表中創(chuàng)建一個表項,該表項的數(shù)據(jù)名稱域值為N2,接口域值為f4,然后判斷是否為數(shù)據(jù)接入路由器CAR3接收到數(shù)據(jù)名稱請求消息,如果是,則執(zhí)行步驟708,否則執(zhí)行步驟707;
步驟707:普通設(shè)備從到達數(shù)據(jù)接入路由器CAR3的接口轉(zhuǎn)發(fā)數(shù)據(jù)名稱請求消息,執(zhí)行步驟703;
步驟708:數(shù)據(jù)接入路由器CAR3發(fā)送一條數(shù)據(jù)請求消息,該數(shù)據(jù)請求消息的源地址為它的單播地址,目的地址為任播地址A2;
步驟709:中間接入路由器、中間數(shù)據(jù)接入路由器或者接入路由器AR2從上一跳HAR1收到數(shù)據(jù)請求消息后,查看任播路由表,如果存在任播地址為A2的表項,則執(zhí)行步驟710,否則執(zhí)行步驟712;
步驟710:中間接入路由器、中間數(shù)據(jù)接入路由器或者接入路由器AR2查看任播請求表,判斷是否存在任播地址為A2且下一跳為HAR1的表項,如果存在,執(zhí)行步驟718,否則執(zhí)行步驟711;
步驟711:中間接入路由器、中間數(shù)據(jù)接入路由器或者接入路由器AR2在任播請求表中建一個表項,任播地址為A2,下一跳域值為HAR1,然后執(zhí)行步驟718;
步驟712:中間接入路由器、中間數(shù)據(jù)接入路由器或者接入路由器AR2在任播請求表中建一個表項,任播地址為A2,下一跳域值為HAR1;
步驟713:判斷是否為接入路由器AR2接收到數(shù)據(jù)請求消息,如果是,則執(zhí)行步驟716,否則執(zhí)行步驟714;
步驟714:中間接入路由器或者中間數(shù)據(jù)接入路由器查看任播路由表或者名字路由表,判斷是否存在任播域值為A2或者數(shù)據(jù)名稱域值為N2的表項,如果存在,則執(zhí)行步驟716,否則執(zhí)行步驟715;
步驟715:中間接入路由器或者中間數(shù)據(jù)接入路由器將數(shù)據(jù)請求消息轉(zhuǎn)發(fā)到到達接入路由器AR2的下一跳,執(zhí)行步驟709;
步驟716:如果中間接入路由器或者接入路由器AR2的任播路由表有任播域值為A2的表項,則中間接入路由器作或者接入路由器AR2為數(shù)據(jù)消費者執(zhí)行步驟401~418獲取數(shù)據(jù)C2,如果中間數(shù)據(jù)接入路由器的名稱路由表有數(shù)據(jù)名稱域值為N2的表項,則中間數(shù)據(jù)接入路由器作為數(shù)據(jù)消費者執(zhí)行501~518獲取數(shù)據(jù)C2;
步驟717:中間接入路由器、中間數(shù)據(jù)接入路由器或者接入路由器AR2獲取數(shù)據(jù)C2后,創(chuàng)建一個數(shù)據(jù)響應(yīng)消息,該數(shù)據(jù)響應(yīng)消息的源地址為A2,目的地址為數(shù)據(jù)消費者S1的單播地址,負載為數(shù)據(jù)C2;
步驟718:中間接入路由器、中間數(shù)據(jù)接入路由器、數(shù)據(jù)接入路由器CAR3、接入路由器AR1創(chuàng)建或者接收到數(shù)據(jù)響應(yīng)消息后,查看任播請求表,對于每個任播地址等于A2的表項,中間接入路由器、中間數(shù)據(jù)接入路由器、數(shù)據(jù)接入路由器CAR3、接入路由器AR1將數(shù)據(jù)響應(yīng)消息的目的地址更新為該表項的下一跳域值,然后轉(zhuǎn)發(fā)該數(shù)據(jù)響應(yīng)消息,同時從任播請求表中刪除該表項;
步驟719:判斷是否是數(shù)據(jù)接入路由器CAR3接收到數(shù)據(jù)響應(yīng)消息,如果是,進行步驟720,否則進行步驟718;
步驟720:數(shù)據(jù)接入路由器CAR3構(gòu)建一個數(shù)據(jù)名稱響應(yīng)消息,該數(shù)據(jù)名稱響應(yīng)消息的負載為數(shù)據(jù)C2;
步驟721:普通設(shè)備或者數(shù)據(jù)接入路由器CAR3創(chuàng)建或者接收到數(shù)據(jù)名稱響應(yīng)消息后,查看名稱請求表,對于每個數(shù)據(jù)名稱域值等于N2的表項,普通設(shè)備或者數(shù)據(jù)接入路由器CAR3從該表項的接口域轉(zhuǎn)發(fā)該數(shù)據(jù)名稱響應(yīng)消息,同時從名稱請求表中刪除該表項;
步驟722:判斷是否是數(shù)據(jù)消費者S3接收到數(shù)據(jù)名稱響應(yīng)消息,如果是,進行步驟723,否則進行步驟721;
步驟723:數(shù)據(jù)消費者S3保存數(shù)據(jù)名稱響應(yīng)消息中的數(shù)據(jù)C2;
步驟724:結(jié)束。
上述過程實現(xiàn)了IP子網(wǎng)和數(shù)據(jù)子網(wǎng)的融合與通信,從而數(shù)據(jù)消費者能夠快速獲取遠程數(shù)據(jù)。
有益效果:本發(fā)明提供了一種以數(shù)據(jù)為中心的通信方法,節(jié)點通過本發(fā)明所提供的通信方法能夠從距離最近的節(jié)點以單播方式獲取服務(wù)數(shù)據(jù),縮短了獲取服務(wù)數(shù)據(jù)的延遲和代價,提高了服務(wù)質(zhì)量,本發(fā)明可應(yīng)用于大數(shù)據(jù)獲取等領(lǐng)域,具有廣泛的應(yīng)用前景。
附圖說明
下面結(jié)合附圖和具體實施方式對本發(fā)明做更進一步的具體說明,本發(fā)明的上述和/或其他方面的優(yōu)點將會變得更加清楚。
圖1為本發(fā)明所述的網(wǎng)絡(luò)體系結(jié)構(gòu)示意圖。
圖2為本發(fā)明所述的IP數(shù)據(jù)提供者發(fā)布數(shù)據(jù)流程示意圖。
圖3為本發(fā)明所述的建立路由的流程示意圖。
圖4為本發(fā)明所述的數(shù)據(jù)提供者發(fā)布數(shù)據(jù)流程示意圖。
圖5為本發(fā)明所述的IP數(shù)據(jù)消費者獲取數(shù)據(jù)流程示意圖。
圖6為本發(fā)明所述的數(shù)據(jù)消費者獲取數(shù)據(jù)流程示意圖。
圖7為本發(fā)明所述的IP數(shù)據(jù)消費者獲取遠程數(shù)據(jù)流程示意圖。
圖8為本發(fā)明所述的數(shù)據(jù)消費者獲取遠程數(shù)據(jù)流程示意圖。
具體實施方式:
本發(fā)明提供了一種以數(shù)據(jù)為中心的通信方法,節(jié)點通過本發(fā)明所提供的通信方法能夠從距離最近的節(jié)點以單播方式獲取服務(wù)數(shù)據(jù),縮短了獲取服務(wù)數(shù)據(jù)的延遲和代價,提高了服務(wù)質(zhì)量,本發(fā)明可應(yīng)用于大數(shù)據(jù)獲取等領(lǐng)域,具有廣泛的應(yīng)用前景。
圖1為本發(fā)明所述的網(wǎng)絡(luò)體系結(jié)構(gòu)示意圖。所述網(wǎng)絡(luò)包括IPv6骨干網(wǎng)1、以數(shù)據(jù)為中心的子網(wǎng)以及IP子網(wǎng)2,以數(shù)據(jù)為中心的子網(wǎng)稱為數(shù)據(jù)子網(wǎng)3。
圖2為本發(fā)明所述的IP數(shù)據(jù)提供者發(fā)布數(shù)據(jù)流程示意圖。IP子網(wǎng)包括接入路由器,IP普通設(shè)備,IP數(shù)據(jù)提供者和IP數(shù)據(jù)消費者;IP子網(wǎng)通過接入路由器連接到IPv6骨干網(wǎng);在IP子網(wǎng)中,IP數(shù)據(jù)提供者是能夠產(chǎn)生或者提供一種數(shù)據(jù)的服務(wù)器或者節(jié)點,支持IP協(xié)議;IP數(shù)據(jù)消費者是授權(quán)能夠獲取一種數(shù)據(jù)的節(jié)點,例如有權(quán)限查看某些文件或者點播某些節(jié)目,支持IP協(xié)議;IP普通設(shè)備既不是數(shù)據(jù)消費者也不是數(shù)據(jù)提供者,用于執(zhí)行路由轉(zhuǎn)發(fā)功能,支持IP協(xié)議;
數(shù)據(jù)子網(wǎng)包括數(shù)據(jù)接入路由器、普通設(shè)備,數(shù)據(jù)提供者和數(shù)據(jù)消費者;數(shù)據(jù)接入路由器支持IP協(xié)議,數(shù)據(jù)子網(wǎng)通過數(shù)據(jù)接入路由器連接到IPv6骨干網(wǎng);在數(shù)據(jù)子網(wǎng)中,數(shù)據(jù)提供者是能夠產(chǎn)生或者提供某種數(shù)據(jù)的服務(wù)器或者節(jié)點,不支持IP協(xié)議;數(shù)據(jù)消費者是授權(quán)能夠獲取某種數(shù)據(jù)的節(jié)點,例如有權(quán)限查看某些文件或者點播某些節(jié)目,不支持IP協(xié)議;普通設(shè)備既不是數(shù)據(jù)消費者也不是數(shù)據(jù)提供者,用于執(zhí)行路由轉(zhuǎn)發(fā)功能,不支持IP協(xié)議;
在所述網(wǎng)絡(luò)中,一種數(shù)據(jù)由一個數(shù)據(jù)名稱唯一定義,一個數(shù)據(jù)名稱由名稱前綴和名稱ID構(gòu)成;在IP網(wǎng)絡(luò)中,一個IP地址由路由前綴和接口ID構(gòu)成;在所述網(wǎng)絡(luò)中,一個名稱前綴映射為一個路由前綴,一個名稱ID映射為一個接口ID,由此一個數(shù)據(jù)名稱能夠映射為一個IP地址,即一種數(shù)據(jù)由一個數(shù)據(jù)名稱以及該數(shù)據(jù)名稱映射的IP地址唯一定義;名稱前綴與路由前綴的映射關(guān)系以及名稱ID與接口ID的映射關(guān)系預(yù)先設(shè)定,每個接入路由器、數(shù)據(jù)接入路由器、數(shù)據(jù)消費者和數(shù)據(jù)提供者維護一個映射表來保存映射關(guān)系;例如名稱前綴China/Jiangsu/Cslg映射為網(wǎng)絡(luò)前綴3fe8:1ab0:2:1::,名稱ID N6/402/V1映射為接口ID 1:1:1:1,因此由數(shù)據(jù)名稱China/Jiangsu/Cslg/N6/402/V1定義的數(shù)據(jù)同時也能夠由IP地址3fe8:1ab0:2:1:1:1:1:1來定義;
能夠映射為一種數(shù)據(jù)名稱的IP地址稱為任播地址,即任播地址定義了一種數(shù)據(jù),能夠提供該種數(shù)據(jù)的所有數(shù)據(jù)提供者構(gòu)建成任播組,該任播組由該任播地址唯一標識;
在IP子網(wǎng)中,接入路由器或者普通設(shè)備維護一個任播路由表,每個表項由四個域構(gòu)成:任播地址,下一跳,距離以及生命周期;接入路由器、普通設(shè)備或者數(shù)據(jù)提供者維護一個任播請求表,每個表項由兩個域構(gòu)成:任播地址和下一跳;
在數(shù)據(jù)子網(wǎng)中,數(shù)據(jù)接入路由器或者普通設(shè)備維護一個名稱路由表,每個表項由四個域構(gòu)成:數(shù)據(jù)名稱,接口,距離以及生命周期;數(shù)據(jù)接入路由器、普通設(shè)備或者數(shù)據(jù)提供者維護一個是名稱請求表,每個表項由兩個域構(gòu)成:任播地址和接口。
上述過程能夠有效實現(xiàn)數(shù)據(jù)子網(wǎng)和IP子網(wǎng)的融合,從而實現(xiàn)數(shù)據(jù)子網(wǎng)和IP子網(wǎng)的通信。
本發(fā)明所述方法中,在IP數(shù)據(jù)提供者P1為任播組成員,該任播組由任播地址A1標識,任播地址A1定義了數(shù)據(jù)C1,IP數(shù)據(jù)提供者P1能夠產(chǎn)生和提供數(shù)據(jù)C1,IP數(shù)據(jù)提供者P1位于IP子網(wǎng)內(nèi),該IP子網(wǎng)的接入路由器為AR1,IP數(shù)據(jù)提供者P1的單播地址為U1的情況下,IP數(shù)據(jù)提供者P1產(chǎn)生數(shù)據(jù)C1后,執(zhí)行下述過程來發(fā)布數(shù)據(jù)C1:
步驟101:開始;
步驟102:IP數(shù)據(jù)提供者P1發(fā)送一條數(shù)據(jù)發(fā)布消息,數(shù)據(jù)發(fā)布消息的目的地址為接入路由器AR1的單播地址,源地址為U1,負載為任播地址A1以及距離參數(shù)dist,距離參數(shù)dist的初始值為0;
步驟103:接入路由器或者IP普通設(shè)備從上一跳接收到該數(shù)據(jù)發(fā)布消息后,查看任播路由表,如果存在任播地址域值為A1且下一跳域值為上一跳單播地址的表項,則進行步驟104,否則執(zhí)行步驟105;
步驟104:從上一跳接收到該數(shù)據(jù)發(fā)布消息的接入路由器或者IP普通設(shè)備在任播路由表中創(chuàng)建一個表項,該表項的任播地址域為A1,下一跳域值為上一跳的單播地址,距離域值為數(shù)據(jù)發(fā)布消息中的距離參數(shù)dist值,生命周期域值設(shè)置為最大值,例如30分鐘,執(zhí)行步驟106;
步驟105:從上一跳接收到該數(shù)據(jù)發(fā)布消息的接入路由器或者IP普通設(shè)備更新任播地址域值為A1且下一跳域值為上一跳單播地址的表項,即將該表項的距離域值設(shè)置為數(shù)據(jù)發(fā)布消息中的距離參數(shù)dist值;
步驟106:如果從上一跳接收到該數(shù)據(jù)發(fā)布消息的接入路由器為AR1,則執(zhí)行步驟109,否則執(zhí)行步驟107;
步驟107:接收到該數(shù)據(jù)發(fā)布消息的IP普通設(shè)備判斷在步驟104創(chuàng)建或者在步驟105更新的表項的距離域值是否大于其他所有任播域值等于A1的表項的距離域值,如果是,進行步驟108,否則進行步驟109;
步驟108:接收到該數(shù)據(jù)發(fā)布消息的IP普通設(shè)備將數(shù)據(jù)發(fā)布消息中的距離參數(shù)dist遞增1,將源地址更新為自己的單播地址,然后發(fā)送該數(shù)據(jù)發(fā)布消息,執(zhí)行步驟103;
步驟109:結(jié)束。
上述過程實現(xiàn)了數(shù)據(jù)發(fā)布從而使其他設(shè)備能夠獲取數(shù)據(jù)。
圖3為本發(fā)明所述的建立路由的流程示意圖。在數(shù)據(jù)子網(wǎng)中,數(shù)據(jù)接入路由器啟動后,執(zhí)行下述過程以建立到達自己的路由:
步驟201:開始;
步驟202:數(shù)據(jù)接入路由器從自己的每個接口發(fā)送路由器發(fā)布消息;
步驟203:普通設(shè)備、數(shù)據(jù)提供者或者數(shù)據(jù)消費者從自己的接口f收到該數(shù)據(jù)接入路由器發(fā)布消息后,保存接口f,接口f為普通設(shè)備、數(shù)據(jù)提供者或者數(shù)據(jù)消費者與數(shù)據(jù)接入路由器相連的接口;
步驟204:判斷收到該數(shù)據(jù)接入路由器發(fā)布消息的是否為普通設(shè)備,如果是執(zhí)行步驟205,否則執(zhí)行步驟206;
步驟205:收到該路由器發(fā)布消息的普通設(shè)備從除了接收到路由器發(fā)布消息的接口以外的所有接口發(fā)布路由器發(fā)布消息,執(zhí)行步驟203;
步驟206:結(jié)束。
圖4為本發(fā)明所述的數(shù)據(jù)提供者發(fā)布數(shù)據(jù)流程示意圖。在數(shù)據(jù)提供者P4能夠產(chǎn)生和提供數(shù)據(jù)C3,數(shù)據(jù)C3由數(shù)據(jù)名稱N3定義,數(shù)據(jù)提供者P4位于數(shù)據(jù)子網(wǎng)內(nèi),該數(shù)據(jù)子網(wǎng)的數(shù)據(jù)接入路由器為CAR3的情況下,數(shù)據(jù)提供者P4產(chǎn)生數(shù)據(jù)C3后,執(zhí)行下述過程來發(fā)布數(shù)據(jù)C3:
步驟301:開始;
步驟302:數(shù)據(jù)提供者P4構(gòu)建一個數(shù)據(jù)名稱發(fā)布消息,該數(shù)據(jù)名稱發(fā)布消息的負載為數(shù)據(jù)名稱N3以及距離參數(shù)dist,距離參數(shù)dist的初始值為0,然后從到達接入路由器CAR3的接口發(fā)送該數(shù)據(jù)名稱發(fā)布消息;
步驟303:數(shù)據(jù)接入路由器或者普通設(shè)備從接口f’接收到該數(shù)據(jù)名稱發(fā)布消息后,查看名稱路由表,如果存在數(shù)據(jù)名稱域值為N3且接口域值為f’的表項,則進行步驟304,否則執(zhí)行步驟305;
步驟304:從接口f’接收到數(shù)據(jù)發(fā)布消息的數(shù)據(jù)接入路由器或者普通設(shè)備在名稱路由表中創(chuàng)建一個表項,該表項的數(shù)據(jù)名稱域為N3,接口域值為f’,距離域值為數(shù)據(jù)名稱發(fā)布消息中的距離參數(shù)dist值,生命周期域值設(shè)置為最大值,例如30分鐘,執(zhí)行步驟306;
步驟305:從接口f’接收到該數(shù)據(jù)發(fā)布消息的數(shù)據(jù)接入路由器或者普通設(shè)備更新數(shù)據(jù)名稱域值為N3且接口域值為f’的表項,即將該表項的距離域值設(shè)置為數(shù)據(jù)名稱發(fā)布消息中的距離參數(shù)dist值;
步驟306:判斷接收到該數(shù)據(jù)名稱發(fā)布消息的數(shù)據(jù)接入路由器是否為數(shù)據(jù)接入路由器CAR3,是則執(zhí)行步驟309,否則執(zhí)行步驟307;
步驟307:接收到該數(shù)據(jù)發(fā)布消息的普通設(shè)備判斷在步驟304創(chuàng)建或者在步驟305更新的表項的距離域值是否大于其他所有數(shù)據(jù)名稱域值等于N3的表項的距離域值,如果是,進行步驟308,否則進行步驟309;
步驟308:接收到該數(shù)據(jù)名稱發(fā)布消息的普通設(shè)備將數(shù)據(jù)名稱發(fā)布消息中的距離參數(shù)dist遞增1,然后從到達接入路由器CAR3的接口發(fā)送該消息,執(zhí)行步驟303;
步驟309:結(jié)束。
上述過程實現(xiàn)了數(shù)據(jù)發(fā)布從而使其他設(shè)備能夠獲取數(shù)據(jù)。
圖5為本發(fā)明所述的IP數(shù)據(jù)消費者獲取數(shù)據(jù)流程示意圖。在IP數(shù)據(jù)消費之S1位于IP子網(wǎng),該IP子網(wǎng)的接入路由器為AR1,數(shù)據(jù)C2由任播地址A2定義的情況下,如果在相同的IP子網(wǎng)內(nèi)至少有一個能夠提供數(shù)據(jù)C2的IP數(shù)據(jù)提供者,則IP數(shù)據(jù)消費者S1能夠通過下述過程獲取數(shù)據(jù)C2:
步驟401:開始;
步驟402:IP數(shù)據(jù)消費者S1構(gòu)建數(shù)據(jù)請求消息,該數(shù)據(jù)請求消息的目的地址為任播地址A2,源地址為自己的單播地址,然后IP數(shù)據(jù)消費者S1將該數(shù)據(jù)請求消息發(fā)送到到達接入路由器AR1的下一跳;
步驟403:如果是任播地址A2標識的任播組成員從上一跳H1接收到該數(shù)據(jù)請求消息,則進行步驟404,否則進行步驟407;H1是個變量,用于記錄上一跳的IP地址;
步驟404:任播組成員查看任播請求表,判斷是否存在任播地址域值為A2且下一跳域值為H1的表項,如果是,進行步驟406,否則進行步驟405;
步驟405:任播組成員在任播請求表中創(chuàng)建一個表項,該表項的任播地址為A2,下一跳為H1;進行步驟406;
步驟406:任播組成員構(gòu)建一個數(shù)據(jù)響應(yīng)消息,該數(shù)據(jù)響應(yīng)消息的源地址為A2,目的地址為數(shù)據(jù)消費者S1的單播地址,負載為數(shù)據(jù)C2,然后執(zhí)行步驟415;
步驟407:IP普通設(shè)備或者接入路由器AR1從上一跳H2接收到該數(shù)據(jù)請求消息后,H2為變量值,用于記錄上一跳的IP地址,查看任播請求表,判斷是否存在任播地址為A2的表項,如果是,則進行步驟408,否則進行步驟410;
步驟408:IP普通設(shè)備或者接入路由器AR1判斷是否存在任播地址為A2且下一跳域值為H2的表項,如果是,進行步驟415,否則進行步驟409;
步驟409:IP普通設(shè)備或者接入路由器AR1在任播請求表中創(chuàng)建一個表項,該表項的任播地址為A2,下一跳為H2,然后執(zhí)行步驟415;
步驟410:IP普通設(shè)備或者接入路由器AR1在任播請求表中創(chuàng)建一個表項,該表項的任播地址為A2,下一跳為H2;
步驟411:判斷是否為接入路由器AR1接收到數(shù)據(jù)請求消息,如果是,則進行步驟414,否則進行步驟412;
步驟412:IP普通設(shè)備查看任播路由表,判斷是否存在任播地址域值為A2的表項,如果有,則進行步驟414,否則進行步驟413;
步驟413:IP普通設(shè)備將數(shù)據(jù)請求消息發(fā)送到達到接入路由器AR1的下一跳,執(zhí)行步驟403;
步驟414:IP普通設(shè)備或者接入路由器AR1將數(shù)據(jù)請求消息轉(zhuǎn)發(fā)到任播地址域值為A2的表項的下一跳,執(zhí)行步驟403;
步驟415:IP普通設(shè)備或者接入路由器AR1創(chuàng)建或者接收到數(shù)據(jù)響應(yīng)消息后,查看任播請求表,對于每個任播地址等于A2的表項,IP普通設(shè)備或者接入路由器AR1將數(shù)據(jù)響應(yīng)消息的目的地址更新為該表項的下一跳域值,然后轉(zhuǎn)發(fā)該數(shù)據(jù)響應(yīng)消息,同時從任播請求表中刪除該表項;
步驟416:判斷是否是IP數(shù)據(jù)消費者S1接收到數(shù)據(jù)響應(yīng)消息,如果是,進行步驟417,否則進行步驟415;
步驟417:IP數(shù)據(jù)消費者S1保存數(shù)據(jù)響應(yīng)消息中的數(shù)據(jù)C2;
步驟418:結(jié)束。
通過上述過程,數(shù)據(jù)消費者能夠快速獲取數(shù)據(jù)。
圖6為本發(fā)明所述的數(shù)據(jù)消費者獲取數(shù)據(jù)流程示意圖。在數(shù)據(jù)消費者S3位于數(shù)據(jù)子網(wǎng)內(nèi),該數(shù)據(jù)子網(wǎng)的數(shù)據(jù)接入路由器為CAR4,數(shù)據(jù)C4由數(shù)據(jù)名稱N4定義的情況下,如果在該數(shù)據(jù)子網(wǎng)內(nèi)至少有一個能夠提供數(shù)據(jù)C4的數(shù)據(jù)提供者,則數(shù)據(jù)消費者S3能夠通過下述過程獲取數(shù)據(jù)C4:
步驟501:開始;
步驟502:數(shù)據(jù)消費者S3構(gòu)建數(shù)據(jù)名稱請求消息,該數(shù)據(jù)名稱請求消息的數(shù)據(jù)名字為N4,然后從到達數(shù)據(jù)接入路由器CAR4的接口發(fā)送該數(shù)據(jù)名稱請求消息;
步驟503:如果是數(shù)據(jù)C4的數(shù)據(jù)提供者從接口f2接收到該數(shù)據(jù)名稱請求消息,則進行步驟504,否則進行步驟507;
步驟504:數(shù)據(jù)提供者查看名稱請求表,判斷是否存在數(shù)據(jù)名稱為N4且接口域為f2的表項,如果是,進行步驟506,否則進行步驟505;
步驟505:數(shù)據(jù)提供者在名稱請求表中創(chuàng)建一個表項,該表項的數(shù)據(jù)名稱域為N4,接口域值為f2;執(zhí)行步驟506;
步驟506:數(shù)據(jù)提供者構(gòu)建一個數(shù)據(jù)名稱響應(yīng)消息,該數(shù)據(jù)名稱響應(yīng)消息的負載為數(shù)據(jù)C4,執(zhí)行步驟515;
步驟507:普通設(shè)備或者數(shù)據(jù)接入路由器CAR4從接口f3接收到該數(shù)據(jù)名稱請求消息后,查看名稱請求表,判斷是否存在數(shù)據(jù)名稱為N4的表項,如果是,則進行步驟508,否則進行步驟510;
步驟508:普通設(shè)備或者數(shù)據(jù)接入路由器CAR4判斷是否存在數(shù)據(jù)名稱為N4且接口域值為f3的表項,如果是,進行步驟515,否則進行步驟509;
步驟509:普通設(shè)備或者數(shù)據(jù)接入路由器CAR4在名稱請求表中創(chuàng)建一個表項,該表項的數(shù)據(jù)名稱為N4,接口域值為f3,然后執(zhí)行步驟515;
步驟510:普通設(shè)備或者數(shù)據(jù)接入路由器CAR4在名稱請求表中創(chuàng)建一個表項,該表項的數(shù)據(jù)名稱域值為N4,接口域值為f3;
步驟511:判斷是否為數(shù)據(jù)接入路由器CAR4接收到數(shù)據(jù)名稱請求消息,如果是,則進行步驟514,否則進行步驟512;
步驟512:普通設(shè)備查看名稱路由表,判斷是否存在數(shù)字名稱域值為N4的表項,如果有,則進行步驟514,否則進行步驟513;
步驟513:普通設(shè)備從到達數(shù)據(jù)接入路由器CAR4的接口發(fā)送數(shù)據(jù)名稱請求消息,執(zhí)行步驟503;
步驟514:普通設(shè)備或者數(shù)據(jù)接入路由器CAR4從數(shù)據(jù)名稱域值為N4的表項的接口域值轉(zhuǎn)發(fā)該數(shù)據(jù)名稱請求消息,執(zhí)行步驟503;
步驟515:普通設(shè)備或者數(shù)據(jù)接入路由器CAR4創(chuàng)建或者接收到數(shù)據(jù)名稱響應(yīng)消息后,查看名稱請求表,對于每個數(shù)據(jù)名稱域值等于N4的表項,普通設(shè)備或者數(shù)據(jù)接入路由器CAR4從該表項的接口域轉(zhuǎn)發(fā)該數(shù)據(jù)名稱響應(yīng)消息,同時從名稱請求表中刪除該表項;
步驟516:判斷是否是數(shù)據(jù)消費者S3接收到數(shù)據(jù)名稱響應(yīng)消息,如果是,進行步驟517,否則進行步驟515;
步驟517:數(shù)據(jù)消費者S3保存數(shù)據(jù)名稱響應(yīng)消息中的數(shù)據(jù)C4;
步驟518:結(jié)束。
通過上述過程,數(shù)據(jù)消費者能夠快速獲取數(shù)據(jù)。
圖7為本發(fā)明所述的IP數(shù)據(jù)消費者獲取遠程數(shù)據(jù)流程示意圖。在IP數(shù)據(jù)消費者S1位于IP子網(wǎng),該IP子網(wǎng)的接入路由器為AR1,數(shù)據(jù)C3由任播地址A3或者數(shù)據(jù)名稱N3定義,數(shù)據(jù)名稱N3的名稱前綴為NP3,NP3定義的數(shù)據(jù)子網(wǎng)的數(shù)據(jù)接入路由器為CAR3的情況下,如果在該IP子網(wǎng)內(nèi)沒有能夠提供數(shù)據(jù)C3的IP數(shù)據(jù)提供者,則IP數(shù)據(jù)消費者S1通過下述過程獲取數(shù)據(jù)C3:
步驟601:開始;
步驟602:IP數(shù)據(jù)消費者S1構(gòu)建數(shù)據(jù)請求消息,該建數(shù)據(jù)請求消息的目的地址為任播地址A3,源地址為自己的單播地址,然后IP數(shù)據(jù)消費者S1將該建數(shù)據(jù)請求消息發(fā)送到到達接入路由器AR1的下一跳;
步驟603:IP普通設(shè)備或者接入路由器AR1從上一跳H3接收到該數(shù)據(jù)請求消息后,查看任播請求表,如果存在任播地址為A3的表項,則進行步驟604,否則進行步驟606;
步驟604:IP普通設(shè)備或者接入路由器AR1查看任播請求表,判斷是否存在任播地址為A3且下一跳為H3的表項,如果是,進行步驟618,否則進行步驟605;
步驟605:IP普通設(shè)備或者接入路由器AR1在任播請求表中創(chuàng)建一個表項,該表項的任播地址為A3,下一跳為H3,執(zhí)行步驟618;
步驟606:IP普通設(shè)備或者接入路由器AR1在任播請求表中創(chuàng)建一個表項,該表項的任播地址為A3,下一跳為H3,判斷是否為接入路由器AR1接收到數(shù)據(jù)請求消息,如果是,則執(zhí)行步驟608,否則執(zhí)行步驟607;
步驟607:IP普通設(shè)備將數(shù)據(jù)請求消息轉(zhuǎn)發(fā)到到達接入路由器AR1的下一跳,執(zhí)行步驟603;
步驟608:接入路由器AR1將數(shù)據(jù)請求消息轉(zhuǎn)發(fā)到到達數(shù)據(jù)接入路由器CAR4的下一跳;
步驟609:中間接入路由器、中間數(shù)據(jù)接入路由器或者數(shù)據(jù)接入路由器CAR3從上一跳HAR收到數(shù)據(jù)請求消息后,查看任播路由表,如果存在任播地址為A4的表項,則執(zhí)行步驟610,否則執(zhí)行步驟612;
步驟610:中間接入路由器、中間數(shù)據(jù)接入路由器或者數(shù)據(jù)接入路由器CAR3查看任播請求表,判斷是否存在任播地址為A4且下一跳為HAR的表項,如果存在,執(zhí)行步驟618,否則執(zhí)行步驟611;
步驟611:中間接入路由器、中間數(shù)據(jù)接入路由器或者數(shù)據(jù)接入路由器CAR3在任播請求表中建一個表項,任播地址為A4,下一跳域值為HAR,然后執(zhí)行步驟618;
步驟612:中間接入路由器、中間數(shù)據(jù)接入路由器或者數(shù)據(jù)接入路由器CAR3在任播請求表中建一個表項,任播地址為A4,下一跳域值為HAR;
步驟613:判斷是否為數(shù)據(jù)接入路由器CAR3接收到數(shù)據(jù)請求消息,如果是,則執(zhí)行步驟616,否則執(zhí)行步驟614;
步驟614:中間接入路由器或者中間數(shù)據(jù)接入路由器查看任播路由表或者名字路由表,判斷是否存在任播域值為A3或者數(shù)據(jù)名稱域值為N3的表項,如果存在,則執(zhí)行步驟616,否則執(zhí)行步驟615;
步驟615:中間接入路由器或者中間數(shù)據(jù)接入路由器將數(shù)據(jù)請求消息轉(zhuǎn)發(fā)到到達數(shù)據(jù)接入路由器CAR4的下一跳,執(zhí)行步驟609;
步驟616:如果中間接入路由器的任播路由表有任播域值為A3的表項,則中間接入路由器作為數(shù)據(jù)消費者執(zhí)行步驟401~418獲取數(shù)據(jù)C3,如果中間數(shù)據(jù)接入路由器或者數(shù)據(jù)接入路由器CAR3的名稱路由表有數(shù)據(jù)名稱域值為N3的表項,則中間數(shù)據(jù)接入路由器或者數(shù)據(jù)接入路由器CAR3作為數(shù)據(jù)消費者執(zhí)行501~518獲取數(shù)據(jù)C3;
步驟617:中間接入路由器、中間數(shù)據(jù)接入路由器或者數(shù)據(jù)接入路由器CAR3獲取數(shù)據(jù)C3后,創(chuàng)建一個數(shù)據(jù)響應(yīng)消息,該數(shù)據(jù)響應(yīng)消息的源地址為A3,目的地址為IP數(shù)據(jù)消費者S1的單播地址,負載為數(shù)據(jù)C3;
步驟618:中間接入路由器、中間數(shù)據(jù)接入路由器、數(shù)據(jù)接入路由器CAR3、接入路由器AR1或者IP普通設(shè)備創(chuàng)建或者接收到數(shù)據(jù)響應(yīng)消息后,查看任播請求表,對于每個任播地址等于A3的表項,中間接入路由器、中間數(shù)據(jù)接入路由器、數(shù)據(jù)接入路由器CAR3、接入路由器AR1或者普通設(shè)備將數(shù)據(jù)響應(yīng)消息的目的地址更新為該表項的下一跳域值,然后轉(zhuǎn)發(fā)該數(shù)據(jù)響應(yīng)消息,同時從任播請求表中刪除該表項;
步驟619:判斷是否是IP數(shù)據(jù)消費者S1接收到數(shù)據(jù)響應(yīng)消息,如果是,進行步驟620,否則進行步驟618;
步驟620:IP數(shù)據(jù)消費者S1保存數(shù)據(jù)響應(yīng)消息中的數(shù)據(jù)C2;
步驟621:結(jié)束。
上述過程實現(xiàn)了IP子網(wǎng)和數(shù)據(jù)子網(wǎng)的融合與通信,從而數(shù)據(jù)消費者能夠快速獲取遠程數(shù)據(jù)。
圖8為本發(fā)明所述的數(shù)據(jù)消費者獲取遠程數(shù)據(jù)流程示意圖。在數(shù)據(jù)消費者S3位于數(shù)據(jù)子網(wǎng)內(nèi),該數(shù)據(jù)子網(wǎng)的數(shù)據(jù)接入路由器為CAR3,數(shù)據(jù)C2由任播地址A2或者數(shù)據(jù)名稱N2定義,任播地址A2的網(wǎng)絡(luò)前綴定義的IP子網(wǎng)的接入路由器為AR2,如果在數(shù)據(jù)消費者S3所在的數(shù)據(jù)子網(wǎng)內(nèi)沒有能夠提供數(shù)據(jù)C2的數(shù)據(jù)提供者,則數(shù)據(jù)消費者S3通過下述過程獲取數(shù)據(jù)C2:
步驟701:開始;
步驟702:數(shù)據(jù)消費者S3構(gòu)建數(shù)據(jù)名稱請求消息,該數(shù)據(jù)名稱請求消息的數(shù)據(jù)名字為N2,然后從到達數(shù)據(jù)接入路由器CAR3的接口發(fā)送該數(shù)據(jù)名稱請求消息;
步驟703:普通設(shè)備或者數(shù)據(jù)接入路由器CAR3從接口f4接收到該數(shù)據(jù)名稱請求消息后,查看名字請求表,如果存在數(shù)據(jù)名稱域值為N2的表項,則進行步驟704,否則進行步驟706;
步驟704:普通設(shè)備或者數(shù)據(jù)接入路由器CAR3查看名稱請求表,判斷是否存在數(shù)據(jù)名稱為N2且接口域值為f4的表項,如果是,進行步驟718,否則進行步驟705;
步驟705:普通設(shè)備或者數(shù)據(jù)接入路由器CAR3在名稱請求表中創(chuàng)建一個表項,該表項的數(shù)據(jù)名稱為N2,接口域值為f4,執(zhí)行步驟718;
步驟706:普通設(shè)備或者數(shù)據(jù)接入路由器CAR3在名稱請求表中創(chuàng)建一個表項,該表項的數(shù)據(jù)名稱域值為N2,接口域值為f4,然后判斷是否為數(shù)據(jù)接入路由器CAR3接收到數(shù)據(jù)名稱請求消息,如果是,則執(zhí)行步驟708,否則執(zhí)行步驟707;
步驟707:普通設(shè)備從到達數(shù)據(jù)接入路由器CAR3的接口轉(zhuǎn)發(fā)數(shù)據(jù)名稱請求消息,執(zhí)行步驟703;
步驟708:數(shù)據(jù)接入路由器CAR3發(fā)送一條數(shù)據(jù)請求消息,該數(shù)據(jù)請求消息的源地址為它的單播地址,目的地址為任播地址A2;
步驟709:中間接入路由器、中間數(shù)據(jù)接入路由器或者接入路由器AR2從上一跳HAR1收到數(shù)據(jù)請求消息后,查看任播路由表,如果存在任播地址為A2的表項,則執(zhí)行步驟710,否則執(zhí)行步驟712;
步驟710:中間接入路由器、中間數(shù)據(jù)接入路由器或者接入路由器AR2查看任播請求表,判斷是否存在任播地址為A2且下一跳為HAR1的表項,如果存在,執(zhí)行步驟718,否則執(zhí)行步驟711;
步驟711:中間接入路由器、中間數(shù)據(jù)接入路由器或者接入路由器AR2在任播請求表中建一個表項,任播地址為A2,下一跳域值為HAR1,然后執(zhí)行步驟718;
步驟712:中間接入路由器、中間數(shù)據(jù)接入路由器或者接入路由器AR2在任播請求表中建一個表項,任播地址為A2,下一跳域值為HAR1;
步驟713:判斷是否為接入路由器AR2接收到數(shù)據(jù)請求消息,如果是,則執(zhí)行步驟716,否則執(zhí)行步驟714;
步驟714:中間接入路由器或者中間數(shù)據(jù)接入路由器查看任播路由表或者名字路由表,判斷是否存在任播域值為A2或者數(shù)據(jù)名稱域值為N2的表項,如果存在,則執(zhí)行步驟716,否則執(zhí)行步驟715;
步驟715:中間接入路由器或者中間數(shù)據(jù)接入路由器將數(shù)據(jù)請求消息轉(zhuǎn)發(fā)到到達接入路由器AR2的下一跳,執(zhí)行步驟709;
步驟716:如果中間接入路由器或者接入路由器AR2的任播路由表有任播域值為A2的表項,則中間接入路由器作或者接入路由器AR2為數(shù)據(jù)消費者執(zhí)行步驟401~418獲取數(shù)據(jù)C2,如果中間數(shù)據(jù)接入路由器的名稱路由表有數(shù)據(jù)名稱域值為N2的表項,則中間數(shù)據(jù)接入路由器作為數(shù)據(jù)消費者執(zhí)行501~518獲取數(shù)據(jù)C2;
步驟717:中間接入路由器、中間數(shù)據(jù)接入路由器或者接入路由器AR2獲取數(shù)據(jù)C2后,創(chuàng)建一個數(shù)據(jù)響應(yīng)消息,該數(shù)據(jù)響應(yīng)消息的源地址為A2,目的地址為數(shù)據(jù)消費者S1的單播地址,負載為數(shù)據(jù)C2;
步驟718:中間接入路由器、中間數(shù)據(jù)接入路由器、數(shù)據(jù)接入路由器CAR3、接入路由器AR1創(chuàng)建或者接收到數(shù)據(jù)響應(yīng)消息后,查看任播請求表,對于每個任播地址等于A2的表項,中間接入路由器、中間數(shù)據(jù)接入路由器、數(shù)據(jù)接入路由器CAR3、接入路由器AR1將數(shù)據(jù)響應(yīng)消息的目的地址更新為該表項的下一跳域值,然后轉(zhuǎn)發(fā)該數(shù)據(jù)響應(yīng)消息,同時從任播請求表中刪除該表項;
步驟719:判斷是否是數(shù)據(jù)接入路由器CAR3接收到數(shù)據(jù)響應(yīng)消息,如果是,進行步驟720,否則進行步驟718;
步驟720:數(shù)據(jù)接入路由器CAR3構(gòu)建一個數(shù)據(jù)名稱響應(yīng)消息,該數(shù)據(jù)名稱響應(yīng)消息的負載為數(shù)據(jù)C2;
步驟721:普通設(shè)備或者數(shù)據(jù)接入路由器CAR3創(chuàng)建或者接收到數(shù)據(jù)名稱響應(yīng)消息后,查看名稱請求表,對于每個數(shù)據(jù)名稱域值等于N2的表項,普通設(shè)備或者數(shù)據(jù)接入路由器CAR3從該表項的接口域轉(zhuǎn)發(fā)該數(shù)據(jù)名稱響應(yīng)消息,同時從名稱請求表中刪除該表項;
步驟722:判斷是否是數(shù)據(jù)消費者S3接收到數(shù)據(jù)名稱響應(yīng)消息,如果是,進行步驟723,否則進行步驟721;
步驟723:數(shù)據(jù)消費者S3保存數(shù)據(jù)名稱響應(yīng)消息中的數(shù)據(jù)C2;
步驟724:結(jié)束。
上述過程實現(xiàn)了IP子網(wǎng)和數(shù)據(jù)子網(wǎng)的融合與通信,從而數(shù)據(jù)消費者能夠快速獲取遠程數(shù)據(jù)。
實施例1
基于表1的仿真參數(shù),本實施例模擬了本發(fā)明中以數(shù)據(jù)為中心的通信方法,性能分析如下:當節(jié)點從本地子網(wǎng)獲取數(shù)據(jù)時,數(shù)據(jù)通信延遲和代價比較小,當節(jié)點從遠程子網(wǎng)獲取網(wǎng)絡(luò)時,數(shù)據(jù)通信延遲和代價比較大。當節(jié)點從本地子網(wǎng)獲取數(shù)據(jù)時,獲取服務(wù)數(shù)據(jù)的平均延遲為40ms,平均代價為7。當節(jié)點從遠程子網(wǎng)獲取網(wǎng)絡(luò)時,獲取服務(wù)數(shù)據(jù)的平均延遲為70ms,平均代價為12。
表1仿真參數(shù)
本發(fā)明提供了一種以數(shù)據(jù)為中心的通信方法的思路,具體實現(xiàn)該技術(shù)方案的方法和途徑很多,以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。本實施例中未明確的各組成部份均可用現(xiàn)有技術(shù)加以實現(xiàn)。