專利名稱:網(wǎng)絡(luò)設(shè)備中基于接口的數(shù)據(jù)報(bào)類型報(bào)文的發(fā)送方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,尤其涉及一種網(wǎng)絡(luò)設(shè)備中基于接口的數(shù)據(jù)報(bào)類型報(bào)文的發(fā)送方法。
本發(fā)明的目的是這樣實(shí)現(xiàn)的網(wǎng)絡(luò)設(shè)備中基于接口的數(shù)據(jù)報(bào)類型報(bào)文的發(fā)送方法,包括(1)根據(jù)需要在封裝報(bào)文的數(shù)據(jù)結(jié)構(gòu)中建立指定發(fā)送接口字段,指定發(fā)送接口字段用于承載發(fā)送接口信息;(2)判斷報(bào)文是否為通過指定的發(fā)送接口發(fā)送,如果是,執(zhí)行步驟(3),否則,執(zhí)行步驟(4);(3)從封裝報(bào)文的數(shù)據(jù)結(jié)構(gòu)中查找報(bào)文的發(fā)送接口信息;(4)從路由轉(zhuǎn)發(fā)表中查找報(bào)文的發(fā)送接口信息;(5)將報(bào)文從查找到的發(fā)送接口發(fā)送出去。
所述的步驟(1)包括(21)在標(biāo)準(zhǔn)的接口數(shù)據(jù)結(jié)構(gòu)中增加建立指定發(fā)送接口結(jié)構(gòu)體域,指定發(fā)送接口結(jié)構(gòu)體域中包括接口索引字段和對(duì)應(yīng)的指定接口IP地址字段;(22)對(duì)于需要指定發(fā)送接口的報(bào)文,將報(bào)文的源IP地址和根據(jù)接口索引確定的指定接口填入報(bào)文的封裝結(jié)構(gòu)中;(23)將設(shè)定的指定報(bào)文發(fā)送接口標(biāo)志傳給IP的輸出函數(shù)。
所述的步驟(2)為根據(jù)IP的輸出函數(shù)中是否存在指定報(bào)文發(fā)送接口標(biāo)志,判斷報(bào)文是否為指定發(fā)送接口發(fā)送,如果存在指定報(bào)文發(fā)送接口標(biāo)志,則報(bào)文為指定發(fā)送接口發(fā)送,執(zhí)行步驟(3),否則,執(zhí)行步驟(4)。
所述的報(bào)文均為有報(bào)文邊界的報(bào)文。
所述的報(bào)文的TTL(time-to-live存活時(shí)間)值設(shè)置為1。
所述的報(bào)文的封結(jié)構(gòu)為MUBF結(jié)構(gòu)。
由上述技術(shù)方案可以看出,本發(fā)明提供了一種簡(jiǎn)單、有效的基于接口的數(shù)據(jù)報(bào)類型報(bào)文的發(fā)送方法,使得某些應(yīng)用程序在發(fā)送數(shù)據(jù)報(bào)文時(shí)可以跳過根據(jù)IP地址查找路由轉(zhuǎn)發(fā)表的處理過程,以滿足某些情況下需指定報(bào)文發(fā)送接口的需要。同時(shí)由于跳過了根據(jù)IP地址查找路由轉(zhuǎn)發(fā)表的處理過程,還提高了報(bào)文的發(fā)送效率。而且,本發(fā)明和標(biāo)準(zhǔn)的SOCKET(接口)選項(xiàng)的實(shí)現(xiàn)及應(yīng)用保持一致,保證了本發(fā)明的實(shí)現(xiàn)簡(jiǎn)單、方便。
變量“ulIfIndex”用來保存應(yīng)用程序所指定報(bào)文發(fā)送接口的接口索引,該接口索引唯一對(duì)應(yīng)一個(gè)接口;變量“ulSrcAddr”用來保存所發(fā)送報(bào)文的源IP地址;步驟2創(chuàng)建了新的SOCKET(接口)數(shù)據(jù)結(jié)構(gòu)后,通過標(biāo)準(zhǔn)的SOCKET API(應(yīng)用程序編程接口)函數(shù)“setsockopt”設(shè)置SO_SENDDATAIF(指定發(fā)送接口)標(biāo)志選項(xiàng);并將設(shè)置好的SENDDATAIF_S類型的變量傳給函數(shù)“setsockopt”,所述的變量包括發(fā)送報(bào)文的接口和源IP地址信息,然后,“setsockopt”函數(shù)將該變量的值保存在步驟1中已創(chuàng)建好SOCKET結(jié)構(gòu)中;步驟3將需要指定發(fā)送接口進(jìn)行發(fā)送的報(bào)文封裝成MBUF(存放報(bào)文的數(shù)據(jù)和相關(guān)信息的數(shù)據(jù)結(jié)構(gòu))結(jié)構(gòu);步驟4根據(jù)保存在新建的SOCKET數(shù)據(jù)結(jié)構(gòu)中的接口索引確定需要指定的接口,并將其填入該報(bào)文的MBUF結(jié)構(gòu)中;步驟5將報(bào)文的源IP地址填寫為SOCKET數(shù)據(jù)結(jié)構(gòu)中接口索引對(duì)應(yīng)的IP地址;步驟6調(diào)用IP的輸出函數(shù),將步驟2中設(shè)置的SO_SENDDATAIF標(biāo)志傳給IP的輸出函數(shù);步驟7在進(jìn)行報(bào)文發(fā)送的處理過程中,判斷報(bào)文的IP輸出函數(shù)中是否存在SO_SENDDATAIF標(biāo)志,如果存在,執(zhí)行步驟8,否則,執(zhí)行步驟9;步驟8直接從封裝報(bào)文的MBUF結(jié)構(gòu)中查找報(bào)文發(fā)送所應(yīng)用的接口信息,執(zhí)行步驟10;
步驟9查找網(wǎng)絡(luò)設(shè)備中的路由轉(zhuǎn)發(fā)表獲取報(bào)文發(fā)送所應(yīng)用的接口信息,執(zhí)行步驟10;步驟10將該報(bào)文從所查找到的接口發(fā)送出去。
經(jīng)過上述對(duì)報(bào)文封裝發(fā)送的處理過程,本發(fā)明實(shí)現(xiàn)了將報(bào)文從指定的接口發(fā)送出去,而不考慮報(bào)文的目的地址信息的發(fā)明目的。另外,為了防止目的地址是廣播或多播地址的報(bào)文引發(fā)廣播風(fēng)暴,設(shè)置該屬性的報(bào)文的TTL值為1。
權(quán)利要求
1.一種網(wǎng)絡(luò)設(shè)備中基于接口的數(shù)據(jù)報(bào)類型報(bào)文的發(fā)送方法,包括(1)根據(jù)需要在封裝報(bào)文的數(shù)據(jù)結(jié)構(gòu)中建立指定發(fā)送接口字段,指定發(fā)送接口字段用于承載發(fā)送接口信息;(2)判斷報(bào)文是否為通過指定的發(fā)送接口發(fā)送,如果是,執(zhí)行步驟(3),否則,執(zhí)行步驟(4);(3)從封裝報(bào)文的數(shù)據(jù)結(jié)構(gòu)中查找報(bào)文的發(fā)送接口信息;(4)從路由轉(zhuǎn)發(fā)表中查找報(bào)文的發(fā)送接口信息;(5)將報(bào)文從查找到的發(fā)送接口發(fā)送出去。
2.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)設(shè)備中基于接口的數(shù)據(jù)報(bào)類型報(bào)文的發(fā)送方法,其特征在于所述的步驟(1)包括(21)在標(biāo)準(zhǔn)的接口數(shù)據(jù)結(jié)構(gòu)中增加建立指定發(fā)送接口結(jié)構(gòu)體域,指定發(fā)送接口結(jié)構(gòu)體域中包括接口索引字段和對(duì)應(yīng)的指定接口IP地址字段;(22)對(duì)于需要指定發(fā)送接口的報(bào)文,將報(bào)文的源IP地址和根據(jù)接口索引確定的指定接口填入報(bào)文的封裝結(jié)構(gòu)中;(23)將設(shè)定的指定報(bào)文發(fā)送接口標(biāo)志傳給IP的輸出函數(shù)。
3.根據(jù)權(quán)利要求2所述的網(wǎng)絡(luò)設(shè)備中基于接口的數(shù)據(jù)報(bào)類型報(bào)文的發(fā)送方法,其特征在于所述的步驟(2)為根據(jù)IP的輸出函數(shù)中是否存在指定報(bào)文發(fā)送接口標(biāo)志,判斷報(bào)文是否為指定發(fā)送接口發(fā)送,如果存在指定報(bào)文發(fā)送接口標(biāo)志,則報(bào)文為指定發(fā)送接口發(fā)送,執(zhí)行步驟(3),否則,執(zhí)行步驟(4)。
4.根據(jù)權(quán)利要求1、2或3所述的網(wǎng)絡(luò)設(shè)備中基于接口的數(shù)據(jù)報(bào)類型報(bào)文的發(fā)送方法,其特征在于所述的報(bào)文為有報(bào)文邊界的數(shù)據(jù)報(bào)類型報(bào)文。
5.根據(jù)權(quán)利要求1、2或3所述的網(wǎng)絡(luò)設(shè)備中基于接口的數(shù)據(jù)報(bào)類型報(bào)文的發(fā)送方法,其特征在于所述的報(bào)文的TTL(time-to-live存活時(shí)間)值設(shè)置為1。
6.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)設(shè)備中基于接口的數(shù)據(jù)報(bào)類型報(bào)文的發(fā)送方法,其特征在于所述的報(bào)文的封結(jié)構(gòu)為MUBF結(jié)構(gòu)。
全文摘要
本發(fā)明涉及一種網(wǎng)絡(luò)設(shè)備中基于接口的數(shù)據(jù)報(bào)類型報(bào)文的發(fā)送方法。該方法包括首先,根據(jù)需要在封裝報(bào)文的數(shù)據(jù)結(jié)構(gòu)中建立指定發(fā)送接口字段,指定發(fā)送接口字段用于承載接口信息;然后,判斷報(bào)文是否為通過指定的發(fā)送接口發(fā)送,如果是,從封裝報(bào)文的數(shù)據(jù)結(jié)構(gòu)中查找報(bào)文的發(fā)送接口信息;否則,從路由轉(zhuǎn)發(fā)表中查找報(bào)文的發(fā)送接口信息;最后,將報(bào)文從查找到的發(fā)送接口發(fā)送出去。本發(fā)明提供了一種簡(jiǎn)單、有效的基于接口的數(shù)據(jù)報(bào)類型報(bào)文的發(fā)送方法,使得發(fā)送數(shù)據(jù)報(bào)文時(shí)可以指定報(bào)文的發(fā)送接口,以滿足某些特殊情況下的需要。同時(shí),本發(fā)明還具有提高了報(bào)文的發(fā)送效率的優(yōu)點(diǎn)。另外,本發(fā)明和標(biāo)準(zhǔn)的SOCKET選項(xiàng)的實(shí)現(xiàn)及應(yīng)用保持一致,保證了本發(fā)明的實(shí)現(xiàn)簡(jiǎn)單、方便。
文檔編號(hào)H04L12/54GK1412984SQ0211789
公開日2003年4月23日 申請(qǐng)日期2002年5月27日 優(yōu)先權(quán)日2002年5月27日
發(fā)明者馬云 申請(qǐng)人:華為技術(shù)有限公司