国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種實現(xiàn)從指定端口發(fā)送數(shù)據(jù)報類型報文的方法

      文檔序號:7907291閱讀:529來源:國知局
      專利名稱:一種實現(xiàn)從指定端口發(fā)送數(shù)據(jù)報類型報文的方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及數(shù)據(jù)報類型報文的發(fā)送技術(shù),更確切地說是涉及一種實現(xiàn)從指定端口發(fā)送數(shù)據(jù)報類型報文的方法。
      背景技術(shù)
      在路由器、三層交換機(jī)等網(wǎng)絡(luò)設(shè)備中,應(yīng)用程序常常需要發(fā)送各種數(shù)據(jù)報類型的報文,該數(shù)據(jù)報類型可以是用戶數(shù)據(jù)報協(xié)議(UDP,User DatagramProtocol)規(guī)定的有報文邊界的數(shù)據(jù)報文,也可以是原始IP(RAWIP)規(guī)定的原始套接口的數(shù)據(jù)報文。當(dāng)應(yīng)用程序在發(fā)送該類數(shù)據(jù)報文時,往往直接調(diào)用套接口(SOCKET)的發(fā)送函數(shù)send或sendto,然后由IP根據(jù)目的地址查找路由,得到發(fā)送報文的出端口,并根據(jù)該出端口將報文發(fā)送出去。
      由于通過IP查找路由需要一些時間,因此采用這種方法發(fā)送報文會降低發(fā)送報文的效率,并且應(yīng)用程序往往并不希望通過查找路由得到發(fā)送報文的出端口,其原因可能是應(yīng)用程序由于某種特殊原因而需要將報文通過一個固定端口發(fā)送出去,因此希望能夠指定發(fā)送該報文的端口;或者是該應(yīng)用程序基于某種協(xié)議,通過該協(xié)議可以知道網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),因此希望能夠根據(jù)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)直接指定發(fā)送報文的出端口,所基于的協(xié)議可以是Internet組管理協(xié)議(IGMP,Internet Group Management Protocol)、路由協(xié)議、標(biāo)簽分發(fā)協(xié)議(LDP,Label distribution Protocol)或動態(tài)主機(jī)配置協(xié)議(DHCP,Dynamic Host Configuration Protocol)中繼等。
      在現(xiàn)有的路由器解決方案中,提出了使路由器中的應(yīng)用程序能夠根據(jù)實際需要,指定數(shù)據(jù)報類型報文的出接口來發(fā)送報文的實現(xiàn)方法,該實現(xiàn)方法是在SOCKET選項中添加用于指定發(fā)送報文接口的選項SO_SENDDATAIF,將所指定的用于發(fā)送當(dāng)前數(shù)據(jù)報類型報文的接口的索引通過該選項存入SOCKET結(jié)構(gòu)中。由于路由器的接口所對應(yīng)的端口往往就是真實的物理端口,因此通過該選項指定的某個接口的索引可以獲得它所對應(yīng)的物理端口的索引,然后傳輸層通過獲得的物理端口索引將報文從該物理端口發(fā)送出去。
      但在實際應(yīng)用中,有的路由器具有主從端口,并且三層交換機(jī)等設(shè)備支持虛擬局域網(wǎng)(VLAN),一個VLAN接口可能會包含多個端口,如果這類一個接口對應(yīng)多個端口的設(shè)備也通過上述方法發(fā)送報文,則需要將所發(fā)報文向該接口對應(yīng)的所有端口進(jìn)行廣播發(fā)送,這種廣播發(fā)送報文的方法會導(dǎo)致報文被復(fù)制,浪費了網(wǎng)絡(luò)帶寬,并使不應(yīng)該收到該報文的端口也接收到該報文,降低了網(wǎng)絡(luò)的安全性,使網(wǎng)絡(luò)更容易受到攻擊。
      因此,目前業(yè)界所提出的根據(jù)實際需要從指定端口發(fā)送數(shù)據(jù)報類型報文的解決辦法只適用于接口與物理端口一一對應(yīng)的路由器,而對如何使一個接口對應(yīng)多個端口的路由器、三層交換機(jī)等設(shè)備也實現(xiàn)從指定端口發(fā)送數(shù)據(jù)報類型報文,并沒有提出合適的方法。

      發(fā)明內(nèi)容
      有鑒于此,本發(fā)明的主要目的在于提供一種實現(xiàn)從指定端口發(fā)送數(shù)據(jù)報類型報文的方法,使一個VLAN接口對應(yīng)多個端口的設(shè)備中的數(shù)據(jù)報類型報文能夠被快速地從指定的端口發(fā)送出去。
      為達(dá)到以上目的,本發(fā)明的方案是這樣實現(xiàn)的一種實現(xiàn)從指定端口發(fā)送數(shù)據(jù)報類型報文的方法,適用于一個虛擬局域網(wǎng)(VLAN)接口對應(yīng)多個端口的網(wǎng)絡(luò)設(shè)備,該網(wǎng)絡(luò)設(shè)備中的應(yīng)用程序創(chuàng)建套接口(SOCKET)結(jié)構(gòu),其特征在于該方法包括以下步驟a.在套接口定義(SOCKET_S)中設(shè)置用于標(biāo)識指定發(fā)送數(shù)據(jù)報類型報文端口索引的參數(shù);b.判斷是否需要從指定端口發(fā)送數(shù)據(jù)報類型報文,如果需要,則應(yīng)用程序在SOCKET結(jié)構(gòu)中設(shè)置保存步驟a所述參數(shù)的SOCKET選項及對應(yīng)的標(biāo)識,否則,不作處理;c.所述網(wǎng)絡(luò)設(shè)備的網(wǎng)絡(luò)層輸出函數(shù)在發(fā)送數(shù)據(jù)報類型報文時,判斷是否有SOCKET選項的標(biāo)識,如果有,則獲取該要發(fā)送數(shù)據(jù)報類型報文的指定發(fā)送端口索引,并將該要發(fā)送數(shù)據(jù)報類型報文從所獲取的指定發(fā)送端口發(fā)送出去,否則,通過該報文的目的IP地址查找路由方式獲得該數(shù)據(jù)報類型報文的發(fā)送端口索引,并將該數(shù)據(jù)報類型報文從所獲取的發(fā)送端口發(fā)送出去。
      所述步驟b進(jìn)一步包括,在SOCKET結(jié)構(gòu)中設(shè)置SOCKET選項及對應(yīng)的標(biāo)識后,傳輸層的輸出處理函數(shù)將SOCKET結(jié)構(gòu)中與該數(shù)據(jù)報類型報文對應(yīng)的SOCKET選項中的指定發(fā)送端口索引填入存儲器緩存(MBUF)的發(fā)送索引字段中。
      該方法可以進(jìn)一步包括,將步驟a所述指定發(fā)送端口索引的參數(shù)設(shè)置為四個字節(jié),并設(shè)定其中的低兩個字節(jié)保存該指定發(fā)送端口所屬VLAN接口的VLAN ID,高兩個字節(jié)保存該指定發(fā)送端口的端口索引。
      該方法還可以進(jìn)一步包括,設(shè)置一個用于標(biāo)識所有端口的端口索引參考值,所述步驟c獲取該要發(fā)送數(shù)據(jù)報類型報文的指定發(fā)送端口索引后,判斷SOCKET選項中的端口索引值是否等于該端口索引參考值,如果等于,則網(wǎng)絡(luò)層輸出函數(shù)將該要發(fā)送的數(shù)據(jù)報類型報文從該指定發(fā)送端口索引中VLAN接口的所有端口發(fā)送出去;否則,從該端口索引對應(yīng)的端口發(fā)送出去。
      所述的端口索引參考值設(shè)置為0xFFFF0000。
      本發(fā)明中的數(shù)據(jù)報類型報文可以是UDP規(guī)定的有報文邊界的數(shù)據(jù)報文,則所述傳輸層的輸出處理函數(shù)為UDP的輸出處理函數(shù)。
      本發(fā)明中的數(shù)據(jù)報類型報文還可以是RAW IP規(guī)定的原始套接口的數(shù)據(jù)報文,則所述傳輸層的輸出處理函數(shù)為RAWIP的輸出處理函數(shù)。
      本發(fā)明方法還可以進(jìn)一步包括,設(shè)置不需要從指定端口發(fā)送的指定發(fā)送端口索引參考值,則所述步驟c在網(wǎng)絡(luò)層輸出函數(shù)獲取指定發(fā)送端口索引值后,判斷該指定發(fā)送端口索引值是否等于該指定發(fā)送端口索引參考值,如果等于,則網(wǎng)絡(luò)層輸出函數(shù)根據(jù)該報文的目的IP地址查找路由獲得發(fā)送端口,將報文從該端口發(fā)送出去;否則,根據(jù)指定的端口發(fā)送報文。
      所述的指定發(fā)送端口索引參考值設(shè)置為0。
      所述應(yīng)用程序為路由協(xié)議、LDP、IGMP或DHCP中繼的應(yīng)用程序。
      本發(fā)明方法通過在標(biāo)準(zhǔn)的SOCKET_S中添加用于標(biāo)識數(shù)據(jù)報類型發(fā)送端口的結(jié)構(gòu)體,并設(shè)置與結(jié)構(gòu)體對應(yīng)的SOCKET選項,在發(fā)送SOCKET中的數(shù)據(jù)報類型報文時,將該數(shù)據(jù)報類型報文的端口索引通過SOCKET選項保存在SOCKET結(jié)構(gòu)及MBUF中,IP的輸出函數(shù)從MBUF中獲取端口索引,并將該數(shù)據(jù)報類型報文從該端口發(fā)送出去,通過這種方法使路由協(xié)議、LDP協(xié)議、IGMP及DHCP中繼等應(yīng)用程序不需要通過IP查找路由,而是直接將數(shù)據(jù)報類型報文從指定端口發(fā)送出去,這種發(fā)送報文的方法加快了報文發(fā)送的速度,減少了網(wǎng)絡(luò)廣播報文的流量,使網(wǎng)絡(luò)帶寬能夠得到更有效的利用,并能夠提高網(wǎng)絡(luò)的安全性。


      圖1為本發(fā)明中實現(xiàn)從指定端口發(fā)送數(shù)據(jù)報類型報文的流程圖。
      具體實施例方式
      下面結(jié)合附圖及具體實施例對本發(fā)明方法作進(jìn)一步詳細(xì)的說明。
      本發(fā)明的核心思想是在SOCKET_S中增加一個用于標(biāo)識數(shù)據(jù)報類型報文發(fā)送端口索引的參數(shù),該參數(shù)由端口索引和該端口所屬的VLAN ID組成,該參數(shù)中的信息設(shè)置在與參數(shù)對應(yīng)的SOCKET選項中,并通過TCP/IP協(xié)議逐層發(fā)送下去。這里的數(shù)據(jù)報類型報文是指UDP規(guī)定的有報文邊界,或RAWIP規(guī)定的原始套接口的報文。
      基于上述思想,以支持VLAN的三層交換機(jī)為例,本實施例可以通過圖1所示過程實現(xiàn)三層交換機(jī)中的應(yīng)用程序從指定端口發(fā)送數(shù)據(jù)報類型的報文,具體實施步驟如下a.在SOCKET_S中增加用于標(biāo)識數(shù)據(jù)報類型報文相關(guān)信息的參數(shù)SENDDATAPORT_S,在該參數(shù)中設(shè)置變量ulIfIndex,該變量保存所指定的報文發(fā)送端口的端口索引和該端口所屬的VLAN ID,將ulIfIndex設(shè)置為四個字節(jié),低兩個字節(jié)用于保存該報文發(fā)送端口所屬的VLAN ID,高兩個字節(jié)用于保存應(yīng)用程序所指定的報文發(fā)送端口的端口索引,通過該端口索引可以唯一地標(biāo)識VLAN中的一個端口,并且為了能夠通過VLAN中所有的端口發(fā)送該報文,需要設(shè)置一個用于標(biāo)識所有端口的索引參考值,比如將該索引參考值設(shè)置為0xFFFF0000。
      b.應(yīng)用程序在發(fā)送SOCKET中的數(shù)據(jù)報類型報文時,如果需要從指定的端口發(fā)送當(dāng)前數(shù)據(jù)報類型報文,該指定端口可以是由網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)決定,也可以是應(yīng)用程序根據(jù)某種特殊需要選定,則應(yīng)用程序在發(fā)送每個數(shù)據(jù)報類型的報文時,都通過標(biāo)準(zhǔn)的應(yīng)用程序編程接口函數(shù)(SOCKET API)setsockopt設(shè)置與SENDDATAPORT_S對應(yīng)的SO_SENDDATAPORT選項及對應(yīng)的標(biāo)識,將該數(shù)據(jù)報類型報文對應(yīng)SENDDATAPORT_S中的報文發(fā)送端口的端口索引和該端口所屬的VLAN ID設(shè)置在這個選項中,并將該選項保存在創(chuàng)建好的SOCKET結(jié)構(gòu)中。
      如果有某個數(shù)據(jù)報類型報文希望通過現(xiàn)有的IP查找路由的方法發(fā)送,而不通過指定端口發(fā)送,則可以設(shè)置一個端口索引和VLAN ID的參考值來標(biāo)識這種通過IP查找路由發(fā)送的方式,本實施例將該端口索引和VLAN ID的參考值設(shè)置為0。
      c.傳輸層中RAWIP或UDP的輸出處理函數(shù)將該數(shù)據(jù)報類型的報文封裝成MBUF時,將SOCKET結(jié)構(gòu)中保存的指定發(fā)送該數(shù)據(jù)報類型報文端口的端口索引和VLAN ID填入MBUF中的發(fā)送索引字段中。
      d.應(yīng)用程序在調(diào)用網(wǎng)絡(luò)層的輸出函數(shù)時,通過傳輸層的輸出函數(shù)將所設(shè)置的SO_SENDDATAPORT選項的標(biāo)識傳給網(wǎng)絡(luò)層的輸出函數(shù)。e.網(wǎng)絡(luò)層的輸出函數(shù)在發(fā)送SOCKET中的報文時,判斷是否發(fā)現(xiàn)該報文對應(yīng)的SO_SENDDATAPORT選項的標(biāo)識,如果沒有發(fā)現(xiàn)該標(biāo)識,則根據(jù)報文的目的IP地址查找路由獲得發(fā)送端口;如果發(fā)現(xiàn)該標(biāo)識,則直接從MBUF的發(fā)送索引字段中找到發(fā)送該數(shù)據(jù)報類型報文的端口索引和VLAN ID信息,判斷該VLAN ID與端口索引是否為0,如果為0,則說明需要通過報文的目的IP地址查找路由的方式來獲得發(fā)送該報文的端口;如果不為0,則根據(jù)這兩個信息將數(shù)據(jù)報文直接傳給對應(yīng)的端口。對于端口索引而言,如果端口索引信息是0xFFFF0000,則采用廣播發(fā)送,否則,從這個端口索引信息所指的端口將該數(shù)據(jù)報類型報文單獨發(fā)送出去。
      本發(fā)明方法通過設(shè)置SOCKET選項使路由協(xié)議、LDP協(xié)議、IGMP及DHCP中繼等應(yīng)用程序不需要通過IP查找路由,而是直接將數(shù)據(jù)報類型報文從指定端口發(fā)送出去,這種發(fā)送報文的方法加快了報文發(fā)送的速度,減少了網(wǎng)絡(luò)廣播報文的流量,使網(wǎng)絡(luò)帶寬能夠得到更有效的利用,并提高了網(wǎng)絡(luò)的安全性。
      權(quán)利要求
      1.一種實現(xiàn)從指定端口發(fā)送數(shù)據(jù)報類型報文的方法,適用于一個虛擬局域網(wǎng)(VLAN)接口對應(yīng)多個端口的網(wǎng)絡(luò)設(shè)備,該網(wǎng)絡(luò)設(shè)備中的應(yīng)用程序創(chuàng)建套接口(SOCKET)結(jié)構(gòu),其特征在于該方法包括以下步驟a.在套接口定義(SOCKET_S)中設(shè)置用于標(biāo)識指定發(fā)送數(shù)據(jù)報類型報文端口索引的參數(shù);b.判斷是否需要從指定端口發(fā)送數(shù)據(jù)報類型報文,如果需要,則應(yīng)用程序在SOCKET結(jié)構(gòu)中設(shè)置保存步驟a所述參數(shù)的SOCKET選項及對應(yīng)的標(biāo)識,否則,不作處理;c.所述網(wǎng)絡(luò)設(shè)備的網(wǎng)絡(luò)層輸出函數(shù)在發(fā)送數(shù)據(jù)報類型報文時,判斷是否有SOCKET選項的標(biāo)識,如果有,則獲取該要發(fā)送數(shù)據(jù)報類型報文的指定發(fā)送端口索引,并將該要發(fā)送數(shù)據(jù)報類型報文從所獲取的指定發(fā)送端口發(fā)送出去,否則,通過該報文的目的IP地址查找路由方式獲得該數(shù)據(jù)報類型報文的發(fā)送端口索引,并將該數(shù)據(jù)報類型報文從所獲取的發(fā)送端口發(fā)送出去。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于所述步驟b進(jìn)一步包括,在SOCKET結(jié)構(gòu)中設(shè)置SOCKET選項及對應(yīng)的標(biāo)識后,傳輸層的輸出處理函數(shù)將SOCKET結(jié)構(gòu)中與該數(shù)據(jù)報類型報文對應(yīng)的SOCKET選項中的指定發(fā)送端口索引填入存儲器緩存(MBUF)的發(fā)送索引字段中。
      3.根據(jù)權(quán)利要求1所述的方法,其特征在于該方法進(jìn)一步包括,將步驟a所述指定發(fā)送端口索引的參數(shù)設(shè)置為四個字節(jié),并設(shè)定其中的低兩個字節(jié)保存該指定發(fā)送端口所屬VLAN接口的VLAN ID,高兩個字節(jié)保存該指定發(fā)送端口的端口索引。
      4.根據(jù)權(quán)利要求3所述的方法,其特征在于該方法進(jìn)一步包括,設(shè)置一個用于標(biāo)識所有端口的端口索引參考值,所述步驟c獲取該要發(fā)送數(shù)據(jù)報類型報文的指定發(fā)送端口索引后,判斷SOCKET選項中的端口索引值是否等于該端口索引參考值,如果等于,則網(wǎng)絡(luò)層輸出函數(shù)將該要發(fā)送的數(shù)據(jù)報類型報文從該指定發(fā)送端口索引中VLAN接口的所有端口發(fā)送出去;否則,從該端口索引對應(yīng)的端口發(fā)送出去。
      5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述的端口索引參考值設(shè)置為0xFFFF0000。
      6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)報類型報文是用戶數(shù)據(jù)報協(xié)議(UDP)規(guī)定的有報文邊界的數(shù)據(jù)報文,則所述傳輸層的輸出處理函數(shù)為UDP的輸出處理函數(shù)。
      7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述數(shù)據(jù)報類型報文是原始IP(RAW IP)規(guī)定的原始套接口的數(shù)據(jù)報文,則所述傳輸層的輸出處理函數(shù)為RAW IP的輸出處理函數(shù)。
      8.根據(jù)權(quán)利要求1所述的方法,其特征在于該方法進(jìn)一步包括,設(shè)置不需要從指定端口發(fā)送的指定發(fā)送端口索引參考值,則所述步驟c在網(wǎng)絡(luò)層輸出函數(shù)獲取指定發(fā)送端口索引值后,判斷該指定發(fā)送端口索引值是否等于該指定發(fā)送端口索引參考值,如果等于,則網(wǎng)絡(luò)層輸出函數(shù)根據(jù)該報文的目的IP地址查找路由獲得發(fā)送端口,將報文從該端口發(fā)送出去;否則,根據(jù)指定的端口發(fā)送報文。
      9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述的指定發(fā)送端口索引參考值設(shè)置為0。
      10.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述應(yīng)用程序為路由協(xié)議、標(biāo)簽分發(fā)協(xié)議(LDP)、Internet組管理協(xié)議(IGMP)或動態(tài)主機(jī)配置協(xié)議(DHCP)中繼的應(yīng)用程序。
      全文摘要
      本發(fā)明公開了適用于一個虛擬局域網(wǎng)(VLAN)接口對應(yīng)多個端口的網(wǎng)絡(luò)設(shè)備中的一種實現(xiàn)從指定端口發(fā)送數(shù)據(jù)報類型報文的方法,該方法通過在套接口定義(SOCKET_S)中設(shè)置用于標(biāo)識指定發(fā)送數(shù)據(jù)報類型報文端口索引的參數(shù),并設(shè)置與參數(shù)對應(yīng)的SOCKET選項,在發(fā)送數(shù)據(jù)報類型報文時,將對應(yīng)端口索引保存在SOCKET結(jié)構(gòu)及存儲器緩存(MBUF)中,網(wǎng)絡(luò)層的輸出函數(shù)從MBUF中獲取端口索引,并將該報文從對應(yīng)端口發(fā)送出去。該方法使路由協(xié)議、標(biāo)簽分發(fā)協(xié)議(LDP)及Internet組管理協(xié)議(IGMP)等應(yīng)用程序能夠直接將數(shù)據(jù)報類型報文從指定端口發(fā)送出去,這種發(fā)送報文的方法加快了報文發(fā)送的速度,減少了網(wǎng)絡(luò)廣播報文的流量,使網(wǎng)絡(luò)帶寬能夠得到更有效的利用,并能夠提高網(wǎng)絡(luò)的安全性。
      文檔編號H04L12/28GK1540932SQ0312202
      公開日2004年10月27日 申請日期2003年4月22日 優(yōu)先權(quán)日2003年4月22日
      發(fā)明者于勇, 于 勇 申請人:華為技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1