CN100344122C - 一种实现从指定端口发送数据报类型报文的方法 - Google Patents
一种实现从指定端口发送数据报类型报文的方法 Download PDFInfo
- Publication number
- CN100344122C CN100344122C CNB031220258A CN03122025A CN100344122C CN 100344122 C CN100344122 C CN 100344122C CN B031220258 A CNB031220258 A CN B031220258A CN 03122025 A CN03122025 A CN 03122025A CN 100344122 C CN100344122 C CN 100344122C
- Authority
- CN
- China
- Prior art keywords
- message
- port
- datagram
- socket
- type message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了适用于一个虚拟局域网(VLAN)接口对应多个端口的网络设备中的一种实现从指定端口发送数据报类型报文的方法,该方法通过在套接口定义(SOCKET_S)中设置用于标识指定发送数据报类型报文端口索引的参数,并设置与参数对应的SOCKET选项,在发送数据报类型报文时,将对应端口索引保存在SOCKET结构及存储器缓存(MBUF)中,网络层的输出函数从MBUF中获取端口索引,并将该报文从对应端口发送出去。该方法使路由协议、标签分发协议(LDP)及Internet组管理协议(IGMP)等应用程序能够直接将数据报类型报文从指定端口发送出去,这种发送报文的方法加快了报文发送的速度,减少了网络广播报文的流量,使网络带宽能够得到更有效的利用,并能够提高网络的安全性。
Description
技术领域
本发明涉及数据报类型报文的发送技术,更确切地说是涉及一种实现从指定端口发送数据报类型报文的方法。
背景技术
在路由器、三层交换机等网络设备中,应用程序常常需要发送各种数据报类型的报文,该数据报类型可以是用户数据报协议(UDP,User DatagramProtocol)规定的有报文边界的数据报文,也可以是原始IP(RAWIP)规定的原始套接口的数据报文。当应用程序在发送该类数据报文时,往往直接调用套接口(SOCKET)的发送函数send或sendto,然后由IP根据目的地址查找路由,得到发送报文的出端口,并根据该出端口将报文发送出去。
由于通过IP查找路由需要一些时间,因此采用这种方法发送报文会降低发送报文的效率,并且应用程序往往并不希望通过查找路由得到发送报文的出端口,其原因可能是应用程序由于某种特殊原因而需要将报文通过一个固定端口发送出去,因此希望能够指定发送该报文的端口;或者是该应用程序基于某种协议,通过该协议可以知道网络拓扑结构,因此希望能够根据网络拓扑结构直接指定发送报文的出端口,所基于的协议可以是Internet组管理协议(IGMP,Internet Group Management Protocol)、路由协议、标签分发协议(LDP,Label distribution Protocol)或动态主机配置协议(DHCP,Dynamic Host Configuration Protocol)中继等。
在现有的路由器解决方案中,提出了使路由器中的应用程序能够根据实际需要,指定数据报类型报文的出接口来发送报文的实现方法,该实现方法是在SOCKET选项中添加用于指定发送报文接口的选项SO_SENDDATAIF,将所指定的用于发送当前数据报类型报文的接口的索引通过该选项存入SOCKET结构中。由于路由器的接口所对应的端口往往就是真实的物理端口,因此通过该选项指定的某个接口的索引可以获得它所对应的物理端口的索引,然后传输层通过获得的物理端口索引将报文从该物理端口发送出去。
但在实际应用中,有的路由器具有主从端口,并且三层交换机等设备支持虚拟局域网(VLAN),一个VLAN接口可能会包含多个端口,如果这类一个接口对应多个端口的设备也通过上述方法发送报文,则需要将所发报文向该接口对应的所有端口进行广播发送,这种广播发送报文的方法会导致报文被复制,浪费了网络带宽,并使不应该收到该报文的端口也接收到该报文,降低了网络的安全性,使网络更容易受到攻击。
因此,目前业界所提出的根据实际需要从指定端口发送数据报类型报文的解决办法只适用于接口与物理端口一一对应的路由器,而对如何使一个接口对应多个端口的路由器、三层交换机等设备也实现从指定端口发送数据报类型报文,并没有提出合适的方法。
发明内容
有鉴于此,本发明的主要目的在于提供一种实现从指定端口发送数据报类型报文的方法,使一个VLAN接口对应多个端口的设备中的数据报类型报文能够被快速地从指定的端口发送出去。
为达到以上目的,本发明的方案是这样实现的:一种实现从指定端口发送数据报类型报文的方法,适用于一个虚拟局域网(VLAN)接口对应多个端口的网络设备,该网络设备中的应用程序创建套接口(SOCKET)结构,其特征在于该方法包括以下步骤:
a.在套接口定义(SOCKET_S)中设置用于标识指定发送数据报类型报文端口索引的参数;
b.判断是否需要从指定端口发送数据报类型报文,如果需要,则应用程序在SOCKET结构中设置并保存步骤a所述参数的SOCKET选项及对应的标识,否则,不作处理;
c.所述网络设备的网络层输出函数在发送数据报类型报文时,判断是否有SOCKET选项的标识,如果有,则获取该要发送数据报类型报文的指定发送端口索引,并将该要发送数据报类型报文从所获取的指定发送端口发送出去,否则,通过该报文的目的IP地址查找路由方式获得该数据报类型报文的发送端口索引,并将该数据报类型报文从所获取的发送端口发送出去。
所述步骤b进一步包括,在SOCKET结构中设置SOCKET选项及对应的标识后,传输层的输出处理函数将SOCKET结构中与该数据报类型报文对应的SOCKET选项中的指定发送端口索引填入存储器缓存(MBUF)的发送索引字段中。
该方法可以进一步包括,将步骤a所述指定发送端口索引的参数设置为四个字节,并设定其中的低两个字节保存该指定发送端口所属VLAN接口的VLAN ID,高两个字节保存该指定发送端口的端口索引。
该方法还可以进一步包括,设置一个用于标识所有端口的端口索引参考值,所述步骤c获取该要发送数据报类型报文的指定发送端口索引后,判断SOCKET选项中的端口索引值是否等于该端口索引参考值,如果等于,则网络层输出函数将该要发送的数据报类型报文从该指定发送端口索引中VLAN接口的所有端口发送出去;否则,从该端口索引对应的端口发送出去。
所述的端口索引参考值设置为0xFFFF0000。
本发明中的数据报类型报文可以是UDP规定的有报文边界的数据报文,则所述传输层的输出处理函数为UDP的输出处理函数。
本发明中的数据报类型报文还可以是原始IP规定的原始套接口的数据报文,则所述传输层的输出处理函数为原始IP的输出处理函数。
本发明方法还可以进一步包括,设置不需要从指定端口发送的指定发送端口索引参考值,则所述步骤c在网络层输出函数获取指定发送端口索引值后,判断该指定发送端口索引值是否等于该指定发送端口索引参考值,如果等于,则网络层输出函数根据该报文的目的IP地址查找路由获得发送端口,将报文从该端口发送出去;否则,根据指定的端口发送报文。
所述的指定发送端口索引参考值设置为0。
所述应用程序为路由协议、LDP、IGMP或DHCP中继的应用程序。
本发明方法通过在标准的SOCKET_S中添加用于标识数据报类型发送端口的结构体,并设置与结构体对应的SOCKET选项,在发送SOCKET中的数据报类型报文时,将该数据报类型报文的端口索引通过SOCKET选项保存在SOCKET结构及MBUF中,IP的输出函数从MBUF中获取端口索引,并将该数据报类型报文从该端口发送出去,通过这种方法使路由协议、LDP协议、IGMP及DHCP中继等应用程序不需要通过IP查找路由,而是直接将数据报类型报文从指定端口发送出去,这种发送报文的方法加快了报文发送的速度,减少了网络广播报文的流量,使网络带宽能够得到更有效的利用,并能够提高网络的安全性。
附图说明
图1为本发明中实现从指定端口发送数据报类型报文的流程图。
具体实施方式
下面结合附图及具体实施例对本发明方法作进一步详细的说明。
本发明的核心思想是:在SOCKET_S中增加一个用于标识数据报类型报文发送端口索引的参数,该参数由端口索引和该端口所属的VLAN ID组成,该参数中的信息设置在与参数对应的SOCKET选项中,并通过TCP/IP协议逐层发送下去。这里的数据报类型报文是指UDP规定的有报文边界,或RAWIP规定的原始套接口的报文。
基于上述思想,以支持VLAN的三层交换机为例,本实施例可以通过图1所示过程实现三层交换机中的应用程序从指定端口发送数据报类型的报文,具体实施步骤如下:
a.在SOCKET_S中增加用于标识数据报类型报文相关信息的参数SENDDATAPORT_S,在该参数中设置变量ulIfIndex,该变量保存所指定的报文发送端口的端口索引和该端口所属的VLAN ID,将ulIfIndex设置为四个字节,低两个字节用于保存该报文发送端口所属的VLAN ID,高两个字节用于保存应用程序所指定的报文发送端口的端口索引,通过该端口索引可以唯一地标识VLAN中的一个端口,并且为了能够通过VLAN中所有的端口发送该报文,需要设置一个用于标识所有端口的索引参考值,比如将该索引参考值设置为0xFFFF0000。
b.应用程序在发送SOCKET中的数据报类型报文时,如果需要从指定的端口发送当前数据报类型报文,该指定端口可以是由网络拓扑结构决定,也可以是应用程序根据某种特殊需要选定,则应用程序在发送每个数据报类型的报文时,都通过标准的应用程序编程接口函数(SOCKET API)setsockopt设置与SENDDATAPORT_S对应的SO_SENDDATAPORT选项及对应的标识,将该数据报类型报文对应SENDDATAPORT_S中的报文发送端口的端口索引和该端口所属的VLAN ID设置在这个选项中,并将该选项保存在创建好的SOCKET结构中。
如果有某个数据报类型报文希望通过现有的IP查找路由的方法发送,而不通过指定端口发送,则可以设置一个端口索引和VLAN ID的参考值来标识这种通过IP查找路由发送的方式,本实施例将该端口索引和VLAN ID的参考值设置为0。
c.传输层中RAWIP或UDP的输出处理函数将该数据报类型的报文封装成MBUF时,将SOCKET结构中保存的指定发送该数据报类型报文端口的端口索引和VLAN ID填入MBUF中的发送索引字段中。
d.应用程序在调用网络层的输出函数时,通过传输层的输出函数将所设置的SO_SENDDATAPORT选项的标识传给网络层的输出函数。e.网络层的输出函数在发送SOCKET中的报文时,判断是否发现该报文对应的SO_SENDDATAPORT选项的标识,如果没有发现该标识,则根据报文的目的IP地址查找路由获得发送端口;如果发现该标识,则直接从MBUF的发送索引字段中找到发送该数据报类型报文的端口索引和VLAN ID信息,判断该VLAN ID与端口索引是否为0,如果为0,则说明需要通过报文的目的IP地址查找路由的方式来获得发送该报文的端口;如果不为0,则根据这两个信息将数据报文直接传给对应的端口。对于端口索引而言,如果端口索引信息是0xFFFF0000,则采用广播发送,否则,从这个端口索引信息所指的端口将该数据报类型报文单独发送出去。
本发明方法通过设置SOCKET选项使路由协议、LDP协议、IGMP及DHCP中继等应用程序不需要通过IP查找路由,而是直接将数据报类型报文从指定端口发送出去,这种发送报文的方法加快了报文发送的速度,减少了网络广播报文的流量,使网络带宽能够得到更有效的利用,并提高了网络的安全性。
Claims (10)
1、一种实现从指定端口发送数据报类型报文的方法,适用于一个虚拟局域网VLAN接口对应多个端口的网络设备,该网络设备中的应用程序创建套接口SOCKET结构,其特征在于该方法包括以下步骤:
a.在套接口定义SOCKET_S中设置用于标识指定发送数据报类型报文端口索引的参数;
b.判断是否需要从指定端口发送数据报类型报文,如果需要,则应用程序在SOCKET结构中设置并保存步骤a所述参数的SOCKET选项及对应的标识,否则,不作处理;
c.所述网络设备的网络层输出函数在发送数据报类型报文时,判断是否有SOCKET选项的标识,如果有,则获取该要发送数据报类型报文的指定发送端口索引,并将该要发送数据报类型报文从所获取的指定发送端口发送出去,否则,通过该报文的目的IP地址查找路由方式获得该数据报类型报文的发送端口索引,并将该数据报类型报文从所获取的发送端口发送出去。
2、根据权利要求1所述的方法,其特征在于所述步骤b进一步包括,在SOCKET结构中设置SOCKET选项及对应的标识后,传输层的输出处理函数将SOCKET结构中与该数据报类型报文对应的SOCKET选项中的指定发送端口索引填入存储器缓存MBUF的发送索引字段中。
3、根据权利要求1所述的方法,其特征在于该方法进一步包括,将步骤a所述指定发送端口索引的参数设置为四个字节,并设定其中的低两个字节保存该指定发送端口所属VLAN接口的VLAN ID,高两个字节保存该指定发送端口的端口索引。
4、根据权利要求3所述的方法,其特征在于该方法进一步包括,设置一个用于标识所有端口的端口索引参考值,所述步骤c获取该要发送数据报类型报文的指定发送端口索引后,判断SOCKET选项中的端口索引值是否等于该端口索引参考值,如果等于,则网络层输出函数将该要发送的数据报类型报文从该指定发送端口索引中VLAN接口的所有端口发送出去;否则,从该端口索引对应的端口发送出去。
5、根据权利要求4所述的方法,其特征在于,所述的端口索引参考值设置为0xFFFF0000。
6、根据权利要求2所述的方法,其特征在于,所述数据报类型报文是用户数据报协议UDP规定的有报文边界的数据报文,则所述传输层的输出处理函数为UDP的输出处理函数。
7、根据权利要求2所述的方法,其特征在于,所述数据报类型报文是原始IP规定的原始套接口的数据报文,则所述传输层的输出处理函数为原始IP的输出处理函数。
8、根据权利要求1所述的方法,其特征在于该方法进一步包括,设置不需要从指定端口发送的指定发送端口索引参考值,则所述步骤c在网络层输出函数获取指定发送端口索引值后,判断该指定发送端口索引值是否等于该指定发送端口索引参考值,如果等于,则网络层输出函数根据该报文的目的IP地址查找路由获得发送端口,将报文从该端口发送出去;否则,根据指定的端口发送报文。
9、根据权利要求8所述的方法,其特征在于,所述的指定发送端口索引参考值设置为0。
10、根据权利要求1所述的方法,其特征在于,所述应用程序为路由协议、标签分发协议LDP、Internet组管理协议IGMP或动态主机配置协议DHCP中继的应用程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031220258A CN100344122C (zh) | 2003-04-22 | 2003-04-22 | 一种实现从指定端口发送数据报类型报文的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031220258A CN100344122C (zh) | 2003-04-22 | 2003-04-22 | 一种实现从指定端口发送数据报类型报文的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1540932A CN1540932A (zh) | 2004-10-27 |
CN100344122C true CN100344122C (zh) | 2007-10-17 |
Family
ID=34320934
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031220258A Expired - Fee Related CN100344122C (zh) | 2003-04-22 | 2003-04-22 | 一种实现从指定端口发送数据报类型报文的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100344122C (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100337457C (zh) * | 2005-06-03 | 2007-09-12 | 华为技术有限公司 | 以太网交换机跨虚拟局域网的二层组播数据传输方法 |
CN100579062C (zh) * | 2006-03-24 | 2010-01-06 | 中兴通讯股份有限公司 | 一种提高supervlan广播效率的装置和方法 |
CN101197781B (zh) * | 2007-12-18 | 2010-08-04 | 中兴通讯股份有限公司 | 一种ip报文发送方法及系统 |
CN101360044B (zh) * | 2008-09-11 | 2011-04-20 | 杭州华三通信技术有限公司 | 防止会话振荡的会话处理方法和会话处理单元 |
CN101447925A (zh) * | 2008-12-17 | 2009-06-03 | 中兴通讯股份有限公司 | 一种发送多路数据包的方法及系统 |
CN101577713B (zh) * | 2009-06-02 | 2012-07-04 | 中兴通讯股份有限公司 | 虚拟用户识别模块的实现方法、装置及测试系统 |
CN101702664B (zh) * | 2009-11-13 | 2012-04-25 | 华为技术有限公司 | 虚拟局域网的数据传输方法、设备与系统 |
CN103166824B (zh) * | 2011-12-13 | 2016-09-28 | 华为技术有限公司 | 一种互联方法、装置和系统 |
CN114189476B (zh) * | 2021-01-26 | 2023-12-08 | 长威信息科技发展股份有限公司 | 一种多元接口分流调用方法及终端 |
CN113259339B (zh) * | 2021-05-08 | 2022-09-30 | 珠海六点智能科技有限公司 | 一种基于udp的数据传输方法、系统及电子设备 |
CN114938395B (zh) * | 2022-05-11 | 2024-08-02 | 北京字节跳动网络技术有限公司 | 服务响应方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001041364A2 (en) * | 1999-12-01 | 2001-06-07 | Mosaid Technologies Incorporated | Method and apparatus for ip multicasting |
CN1325071A (zh) * | 2000-05-16 | 2001-12-05 | 朗迅科技公司 | 用网络接口卡进行对等层通信的系统和方法 |
CN1371202A (zh) * | 2002-02-28 | 2002-09-25 | 威盛电子股份有限公司 | 数据包传送方法及应用此方法的网络交换机 |
CN1402470A (zh) * | 2002-09-12 | 2003-03-12 | 上海华广科技有限公司 | 隧道组播方法 |
-
2003
- 2003-04-22 CN CNB031220258A patent/CN100344122C/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001041364A2 (en) * | 1999-12-01 | 2001-06-07 | Mosaid Technologies Incorporated | Method and apparatus for ip multicasting |
CN1325071A (zh) * | 2000-05-16 | 2001-12-05 | 朗迅科技公司 | 用网络接口卡进行对等层通信的系统和方法 |
CN1371202A (zh) * | 2002-02-28 | 2002-09-25 | 威盛电子股份有限公司 | 数据包传送方法及应用此方法的网络交换机 |
CN1402470A (zh) * | 2002-09-12 | 2003-03-12 | 上海华广科技有限公司 | 隧道组播方法 |
Non-Patent Citations (1)
Title |
---|
基于Socket的TCP/IP网络通讯模式研究 何进,谢松巍,计算机应用研究,第8期 2001 * |
Also Published As
Publication number | Publication date |
---|---|
CN1540932A (zh) | 2004-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101015130B1 (ko) | 데이터 분배 장치, 데이터 분배 방법 및 분배 제어 프로그램 | |
US8699500B2 (en) | Method and apparatus to perform network routing | |
US7389359B2 (en) | Method and system for intelligently forwarding multicast packets | |
US5878040A (en) | Coordination and control of data streams that terminate at different termination units | |
US8509248B2 (en) | Routing frames in a computer network using bridge identifiers | |
CN111937358B (zh) | 用于结构边缘设备的多vrf通用设备互联网协议地址 | |
CN101160850B (zh) | 一种转发报文的方法及装置 | |
AU2003243064B2 (en) | An arrangement and a method relating to ethernet access systems | |
CN101692646B (zh) | 一种二层转发处理方法和一种分布式设备 | |
WO2013168737A1 (ja) | 通信システム、制御装置、通信方法及びプログラム | |
CN100344122C (zh) | 一种实现从指定端口发送数据报类型报文的方法 | |
CN1913491A (zh) | 共存的静态和动态ip多播 | |
CN110224934A (zh) | 一种利用统一sr标签栈进行报文处理的方法及装置 | |
CN1411210A (zh) | 以太网接入应用中代理地址解析协议的方法 | |
CN112583718B (zh) | 一种SRoU场景下SRv6报文传递方法、系统、设备及介质 | |
US20030142672A1 (en) | Data packet transmission method and network switch applying same thereto | |
Hinden | Simple internet protocol plus white paper | |
CN111669337A (zh) | 一种流量控制的方法和装置 | |
CN110336796B (zh) | 一种通信方法和通信装置 | |
CN1540936A (zh) | 基于虚拟局域网的报文转发优先级控制方法 | |
JP4599429B2 (ja) | 通信システム及び通信方法 | |
CN1668030A (zh) | 对于通信网络中的多协议应用,处理字段帧的系统与方法 | |
CN1536831A (zh) | 向局域网内特定目标发送地址解析协议请求报文的方法 | |
JP2003348148A (ja) | Ipマルチキャスト制御方法およびこれを用いるipマルチキャスト制御システム | |
CN109451030B (zh) | 一种视联网文件的下载方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20071017 Termination date: 20190422 |
|
CF01 | Termination of patent right due to non-payment of annual fee |