CN116095197B - 数据传输方法及相关装置 - Google Patents
数据传输方法及相关装置 Download PDFInfo
- Publication number
- CN116095197B CN116095197B CN202210780046.4A CN202210780046A CN116095197B CN 116095197 B CN116095197 B CN 116095197B CN 202210780046 A CN202210780046 A CN 202210780046A CN 116095197 B CN116095197 B CN 116095197B
- Authority
- CN
- China
- Prior art keywords
- message
- header information
- udp
- fragment
- information
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 83
- 230000005540 biological transmission Effects 0.000 title claims abstract description 42
- 239000012634 fragment Substances 0.000 claims abstract description 177
- 238000013507 mapping Methods 0.000 claims abstract description 113
- 238000006243 chemical reaction Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 abstract description 34
- 238000013467 fragmentation Methods 0.000 abstract description 25
- 238000006062 fragmentation reaction Methods 0.000 abstract description 25
- 230000009286 beneficial effect Effects 0.000 abstract description 6
- 230000001133 acceleration Effects 0.000 description 30
- 238000004891 communication Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 11
- 238000013519 translation Methods 0.000 description 6
- 230000011218 segmentation Effects 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/164—Adaptation or special uses of UDP protocol
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
Abstract
本申请提供了一种数据传输方法及相关装置,有利于提高路由设备转发分片报文的效率。该方法包括:接收UDP报文的第一分片报文,第一分片报文是对UDP报文进行分片处理得到的多个分片报文中的一个,且第一分片报文不是首个分片报文,多个分片报文的预设标识相同;首个分片报文包括UDP头部信息,UDP头部信息包括UDP报文的源端口和目的端口;基于预设标识,获取第一映射关系,第一映射关系包括预设标识与UDP头部信息的映射关系,且第一映射关系根据首个分片报文的IP头部信息和UDP头部信息确定;基于第一映射关系,确定UDP头部信息;基于IP头部信息和UDP头部信息,传输第一分片报文。
Description
技术领域
本申请涉及通信领域,更具体地,涉及一种数据传输方法及相关装置。
背景技术
通常,为了加速广域网(wide area network,WAN)端口与局域网(local areanetwork,LAN)端口之间的报文转发性能,路由器可以学习一条传输控制协议(transmission control protocol,TCP)连接或用户数据报协议(user datagramprotocol,UDP)连接上传输的报文,基于该条TCP连接或UDP连接上传输的报文的五元组信息,获取与该五元组信息关联的转发信息,并将该转发信息保存在硬件加速表中。其中,五元组信息包括源网络协议(internet protocol,IP)地址、目的IP地址、源端口、目的端口以及协议类型。对于下行传输(数据从服务器发出,经由路由器转发至路由器下挂的终端设备)而言,该转发信息用于路由器将报文从WAN端口转发至LAN端口,该转发信息包括:目的地址转换(destination network address translation,DNAT)信息以及物理端口转发信息。在获取到该转发信息之后,路由器若在该连接上再接收到报文,路由器可以获取报文中的五元组信息,并在硬件加速表中查找与该五元组信息对应的转发信息。基于该转发信息,路由器直接通过硬加速通道(从WAN端口到LAN端口的通道)对报文进行转发。这样,由于路由器通过硬件加速表即可得到DNAT信息以及物理端口转发信息,而无需将报文传输至网络协议栈再去进行标准的DNAT转换和路由转发流程,因此可以节省报文的处理时间,提高了报文的转发效率。
目前,常见的经过路由器转发的网络业务报文包括TCP报文和UDP报文。在路由器转发报文的场景中,如果UDP报文过大,服务器通过IP协议对UDP报文进行分片,得到多个分片报文。但是,多个分片报文中只有第一个分片包中包含了从硬件加速表中查询转发信息所需的完整的五元组信息,而后续的分片报文中仅包括源IP地址、目的IP地址和协议类型,缺少源端口和目的端口,这样,路由器在接收到后续的分片报文之后,无法从后续的分片报文中获取到完整的五元组信息,从而无法从硬件加速表中查询转发信息,也就是无法走硬加速通道转发,这样会降低路由器转发UDP报文的效率。
基于此,亟需提供一种可以解决UDP报文分片后无法通过硬加速通道进行传输的方法。
发明内容
本申请提供一种数据传输方法及相关装置,有利于解决UDP报文分片后无法通过硬加速通道进行传输的问题,进而提高路由设备转发UDP报文的分片报文的效率。
第一方面,提供了一种数据传输方法,应用于路由设备,该方法包括:接收UDP报文的第一分片报文;基于预设标识,获取第一映射关系,第一映射关系包括预设标识与UDP头部信息的映射关系,且第一映射关系根据首个分片报文的IP头部信息和UDP头部信息确定;基于第一映射关系,确定UDP头部信息;基于IP头部信息和UDP头部信息,传输第一分片报文。
在本申请中,第一分片报文是对UDP报文进行分片处理得到的多个分片报文中的一个,且第一分片报文不是多个分片报文中的首个分片报文;多个分片报文中的每个分片报文包括IP头部信息,IP头部信息包括UDP报文的源IP地址、目的IP地址以及预设标识,多个分片报文的预设标识相同;首个分片报文还包括UDP头部信息,UDP头部信息包括UDP报文的源端口和目的端口。
基于本技术方案,路由设备从第一分片报文的IP头部信息中可以获取源IP地址、目的IP地址以及协议类型,并基于第一映射关系获取UDP头部信息中的源端口和目的端口,这样,路由设备集齐了第一分片报文的五元组信息,进而,路由设备可以基于五元组信息在WAN端口获取DNAT信息和物理端口转发信息,直接通过硬加速通道转发第一分片报文,有利于解决UDP报文分片后无法通过硬加速通道进行传输的问题。
基于本技术方案,路由设备无需将第一分片报文传输至网络协议栈进行DNAT转化以及查找路由表的操作。第一分片报文从硬件层传输至网络协议栈需要耗费时间,并且在网络协议栈进行DNAT转化以及遍历查找路由表需要耗费大量的时间,而本申请实施例中路由设备只需在WAN端口查找第一分片报文的五元组信息对应的DNAT信息和物理端口转发信息,有利于节省大量的报文处理时间,提高路由设备对UDP报文的分片报文的转发效率。
结合第一方面,在第一方面的某些实现方式中,该方法还包括:接收首个分片报文;基于首个分片报文的IP头部信息中的预设标识,以及首个分片报文的UDP头部信息,确定第一映射关系。
在本申请中,路由设备在网络层对一个UDP报文进行分片处理,得到多个分片报文。多个分片报文具有相同的预设标识,且多个分片报文中的首个分片报文包括IP头部信息和UDP头部信息,而其他的分片报文包括IP头部信息,不包括UDP头部信息。基于此,路由设备在接收到首个分片报文之后,可以建立预设标识与UDP头部信息之间的第一映射关系。第一映射关系可用户同一组分片报文中除首个分片报文以外的其他分片报文获取UDP头部信息,有利于路由设备获取其他分片报文的完整的五元组信息。
结合第一方面,在第一方面的某些实现方式中,IP头部信息还包括协议类型。在基于首个分片报文的IP头部信息中的预设标识,以及首个分片报文的UDP头部信息,确定第一映射关系之前,该方法还包括:确定协议类型是否为UDP协议;在协议类型为UDP协议的情况下,基于首个分片报文的IP头部信息中的预设标识,以及首个分片报文的UDP头部信息,确定第一映射关系。
结合第一方面,在第一方面的某些实现方式中,IP头部信息还包括指示信息,指示信息用于指示首个分片报文是否为分片报文。在基于首个分片报文的IP头部信息中的预设标识,以及首个分片报文的UDP头部信息,确定第一映射关系之前,该方法还包括:基于指示信息,确定首个分片报文是否为分片报文;在首个分片报文为分片报文的情况下,基于首个分片报文的IP头部信息中的预设标识,以及首个分片报文的UDP头部信息,确定第一映射关系。
结合第一方面,在第一方面的某些实现方式中,在确定第一映射关系之后,该方法还包括:将第一映射关系存入路由设备中。
结合第一方面,在第一方面的某些实现方式中,路由设备中存有哈希表。将第一映射关系存入路由设备中,包括:以预设标识为键,将第一映射关系写入哈希表中。
结合第一方面,在第一方面的某些实现方式中,基于预设标识,获取第一映射关系,包括:以预设标识为键,从哈希表中获取第一映射关系。
结合第一方面,在第一方面的某些实现方式中,在基于IP头部信息和UDP头部信息,传输第一分片报文之前,该方法还包括:获取转发信息,转发信息包括UDP报文的DNAT信息和物理端口转发信息。基于IP头部信息和UDP头部信息,传输第一分片报文,包括:基于IP头部信息、UDP头部信息以及转发信息,传输第一分片报文。
结合第一方面,在第一方面的某些实现方式中,基于IP头部信息、UDP头部信息以及转发信息,传输第一分片报文,包括:基于DNAT信息,将目的IP地址转换成LAN的目的IP地址,将目的端口转换成LAN的目的端口;基于物理端口转发信息,确定用于传输UDP报文的LAN端口;基于源IP地址、源端口、LAN的目的IP地址、LAN的目的端口以及LAN端口,通过WAN端口和LAN端口之间的通道传输第一分片报文。
在本申请中,路由设备可以基于第一分片报文的五元组信息获取DNAT信息和物理端口转发信息,基于DNAT信息对目的IP地址和目的端口进行转换,基于物理端口转发信息确定向终端设备发送第一分片报文的LAN端口,这样路由设备便可以通过WAN端口至LAN端口之间的硬加速通道传输第一分片报文,有利于提高路由设备转发第一分片报文的效率。
第二方面,提供一种数据传输装置,包括:用于执行上述第一方面中任一种可能的实现方式中的方法。具体地,包括用于执行上述第一方面中任一种可能的实现方式中的方法的模块。
第三方面,提供了另一种数据传输装置,包括处理器和存储器,该处理器与存储器耦合,该存储器可用于存储计算机程序,该处理器可用于调用并执行存储器中的计算机程序,以实现上述第一方面中任一种可能实现方式中的方法。
在一种实现方式中,该数据传输装置为路由设备。当该数据传输装置为路由设备时,通信接口可以是收发器,或,输入/输出接口。
在另一种实现方式中,该数据传输装置为配置于路由设备中的芯片。当该数据传输装置为配置于路由设备中的芯片时,通信接口可以是输入/输出接口。
第四方面,提供了一种处理器,包括:输入电路、输出电路和处理电路。处理电路用于通过输入电路接收信号,并通过输出电路发射信号,使得处理器执行上述第一方面中任一种可能实现方式中的方法。
在具体实现过程中,上述处理器可以为芯片,输入电路可以为输入管脚,输出电路可以为输出管脚,处理电路可以为晶体管、门电路、触发器和各种逻辑电路等。输入电路所接收的输入的信号可以是由例如但不限于接收器接收并输入的,输出电路所输出的信号可以是例如但不限于输出给发射器并由发射器发射的,且输入电路和输出电路可以是同一电路,该电路在不同的时刻分别用作输入电路和输出电路。本申请对处理器及各种电路的具体实现方式不作限定。
第五方面,提供了一种处理装置,包括处理器和存储器。该处理器用于读取存储器中存储的指令,并可通过接收器接收信号,通过发射器发射信号,以执行上述第一方面中任一种可能实现方式中的方法。
可选地,处理器为一个或多个,存储器为一个或多个。
可选地,存储器可以与处理器集成在一起,或者存储器与处理器分离设置。
在具体实现过程中,存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(read only memory,ROM),其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请对存储器的类型以及存储器与处理器的设置方式不作限定。
应理解,相关的数据交互过程例如发送指示信息可以为从处理器输出指示信息的过程,接收能力信息可以为处理器接收输入能力信息的过程。具体地,处理输出的数据可以输出给发射器,处理器接收的输入数据可以来自接收器。其中,发射器和接收器可以统称为收发器。
上述第五方面中的处理装置可以是一个芯片,该处理器可以通过硬件来实现也可以通过软件来实现,当通过硬件实现时,该处理器可以是逻辑电路、集成电路等;当通过软件来实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器可以集成在处理器中,可以位于该处理器之外,独立存在。
第六方面,提供了一种计算机程序产品,计算机程序产品包括:计算机程序代码,当该计算机程序代码被运行时,使得计算机执行上述第一方面中任一种可能实现方式中的方法。
第七方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,当该计算机程序被运行时,使得计算机执行上述第一方面中任一种可能实现方式中的方法。
附图说明
图1是一种通过网络协议栈转发报文的示意图;
图2是一种通过硬加速通道转发报文的示意图;
图3是一种对报文分段的示意图;
图4是一种对报文分片的示意图;
图5是本申请实施例适用的一种通信场景的示意图;
图6是本申请实施例提供的一种数据传输方法的示意性流程图;
图7是本申请实施例提供的确定第一映射关系的示意性流程图;
图8是本申请实施例提供的一种哈希表的示意图;
图9是本申请实施例提供的另一种数据传输方法的示意性流程图;
图10是本申请实施例提供的一种数据传输装置的示意性框图;
图11是本申请实施例提供的另一种数据传输装置的示意性框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请中,“示例性地”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性地”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性地”或者“例如”等词旨在以具体方式呈现相关概念。
此外,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b和c中的至少一项(个),可以表示:a,或b,或c,或a和b,或a和c,或b和c,或a、b和c,其中a,b,c可以是单个,也可以是多个。
图1是一种通过网络协议栈转发报文的示意图。图1中示出了路由设备01,示例性地,路由设备01可以为路由器等具有报文转发能力的设备。路由设备01包括WAN端口和无线保真(wireless Fidelity,Wi-Fi)0号端口,称为Wi-Fi 0端口,Wi-Fi 0端口是路由设备01的至少一个LAN端口中的一个,LAN端口是路由设备01的物理端口。
路由设备01包括WAN端口和至少一个LAN端口,图1中示出了一个LAN端口,即Wi-Fi0端口。WAN端口主要用于连接外部网络,LAN端口主要用于连接家庭内部网络。用户可以将网线接入路由设备01的WAN端口,并将自己的笔记本电脑接到路由设备01的LAN端口,这样便可以接入网络上网。
通过路由设备01接入网络的设备是路由设备01下挂的终端设备,可简称为下挂设备。下挂设备通过路由设备01向服务器请求网络业务,例如,游戏、视频、音乐等。路由设备01向服务器转发该请求,服务器接收到该请求后,可以经过路由设备01向下挂设备发送网络业务报文。
示例性地,如图1所示,在服务器至下挂设备这条连接上传输的报文的源IP(source IP)地址为10.146.20.140,源端口(source port)为6293,目的IP(destinationIP)地址为192.168.4.2,目的端口(destination port)为8000,协议类型为TCP。当协议类型为UDP时,表示网络业务报文为UDP协议的报文,可称为UDP报文。当协议类型为TCP时,表示网络业务报文为TCP协议的报文,可称为TCP报文。
本申请实施例中将源IP地址、源端口、目的IP地址、目的端口以及协议类型称为报文的五元组信息。应理解的是,在同一条连接上的传输的报文具有相同的五元组信息。在本申请中,一条连接是指从服务器至下挂设备的一条TCP连接或者UDP连接。
路由设备01接收到网络业务报文后,为了加速WAN端口与LAN端口之间的报文转发性能,可以学习一条连接上传输的报文,基于该条连接上的报文的五元组信息,获取与该五元组信息关联的转发信息,并将该转发信息保存在路由设备01的硬件加速表中。
如图1所示,路由设备01的WAN端口接收到报文之后,可以学习服务器至下挂设备这条连接上传输的前N个报文的转发信息。以前N个报文中的报文A为例,示例性地,报文A的源IP地址为10.146.20.140,源端口为6293,目的IP地址为192.168.4.2,目的端口为8000,协议类型为TCP。
路由设备01可以将报文A通过驱动层、设备层上传至网络协议栈,在网络协议栈首先对报文A进行DNAT转换。之后路由设备01再查询路由表,确定通过至少一个LAN端口中的哪个LAN端口向下挂设备发送报文A。
如图1所示,转换后报文A的源IP地址为10.146.20.140,源端口为6293,目的IP地址为192.168.3.2,目的端口为4000,协议类型为TCP。可以看到,经过DNAT转换后,报文A中的目的IP地址由192.168.4.2转换为192.168.3.2,目的端口由8000转换为4000,报文A通过Wi-Fi 0端口发送给下挂设备。
需要说明的是,下挂设备为局域网的设备,下挂设备连接到路由设备01之后,路由设备01为下挂设备分配的是局域网的IP地址和端口。在本示例中,下挂设备的局域网的IP地址为192.168.3.2,端口为4000。但是,在下挂设备接入路由设备01上网时,出于节约IP地址资源以及安全性的考虑,路由设备01会对下挂设备向服务器发送的报文的IP地址和端口进行转换,转换成广域网的IP地址和端口,转换后的广域网的IP地址为192.168.4.2,端口为8000。因此,在本示例中,服务器接收到经过路由设备01转发的报文后,得到的是下挂设备的广域网的IP地址192.168.4.2和广域网的端口8000。这样,服务器通过路由设备01向下挂设备发送报文A时,报文A中的目的IP地址为下挂设备的广域网的IP地址192.168.4.2,目的端口为下挂设备的广域网的端口8000。
需要说明的是,当路由设备01基于第一次下挂设备向服务器发送的报文进行DNAT转换之后,服务器到下挂设备这条连接上的DNAT转换关系不变。
经过DNAT转换后,路由设备01确定下挂设备的局域网的IP地址和局域网的端口。经过查询路由表后,路由设备01确定物理端口转发信息,这样,路由设备01将经过DNAT转换后的报文A通过查询到的物理端口发送给下挂设备。
示例性地,路由设备01查询路由表,确定下挂设备是通过Wi-Fi 0端口接入路由设备01的,那么路由设备01可以确定使用Wi-Fi 0端口向下挂设备发送报文。
路由设备01可以将报文A的DNAT信息以及物理端口转发信息在WAN端口的硬件加速表中进行存储,得到从服务器至下挂设备这条连接上的转发信息,即转发信息包括DNAT信息和物理端口转发信息。在本示例中,DNAT信息包括:局域网的IP地址192.168.3.2与广域网的IP地址192.168.4.2的转换,局域网的端口4000与广域网的端口8000的转换。端口转发信息包括:通过Wi-Fi 0端口转发。
图2是一种通过硬加速通道转发报文的示意图。如图2所示,路由设备01在得到从服务器至下挂设备这条连接上的转发信息之后,示例性地,路由设备01在这条连接上接收到报文B。路由设备01获取报文B中的五元组信息,并从WAN端口存储的硬件加速表中查找与报文B的五元组信息对应的转发信息。基于该转发信息,路由设备01直接通过硬加速通道对报文进行转发,而无需再将报文B上传至网络协议栈进行DNAT转换以及查找路由表的操作,这样可以节省路由设备01对报文的处理时间,提高对报文的转发效率。
应理解的是,在同一条连接上的传输的报文具有相同的五元组信息,上文描述的报文A和报文B具有相同的五元组信息,因此学习得到的报文A的五元组信息对应的转发信息同样是报文B的五元组信息对应的转发信息。
上述通过路由设备01的硬加速通道转发的报文可以是TCP报文或者UDP报文,但是,网络节点在物理层上传输数据时是以帧为单位进行传输的,一帧的大小不能超过最大传输单元(maximum transmission unit,MTU),通常,以太网的MTU是1500字节。TCP报文过大时,在传输层需要对TCP报文进行分段;UDP报文过大时,在网络层需要对UDP报文进行IP分片传输。
下面首先介绍TCP报文的分段过程。
TCP是基于连接的传输层协议,TCP协议通信之前,通信双发会进行TCP三次握手建立连接,然后才会进行数据传输。TCP三次握手会协商最大报文段(maximum segment size,MSS),MSS表示每一个TCP分段报文所能承受的最大业务数据的长度。MSS可以根据通信链路中的MTU计算出:MSS=MTU-IP报文头(IP header)-TCP报文头(TCP header)。通常,MTU是1500字节,IP报文头是20字节,TCP报文头是20字节,则协商的MSS=1500-20-20=1460字节。
图3是一种对报文分段的示意图,如图3所示,应用层待传输的报文的大小为3000字节,超过MSS=1460字节,那么在传输层会基于协商的MSS对待传输的报文进行分段,将待传输的报文中的3000字节数据分成两个1460字节和一个80字节,在传输层得到三个TCP分段报文。其中,第一个TCP分段报文包括20字节的TCP报文头和1460字节的有效载荷(payload),第二个TCP分段报文包括20字节的TCP报文头和1460字节的有效载荷,第三个TCP分段报文包括20字节的TCP报文头和80字节的有效载荷。
在传输层分段之后,在网络层对三个TCP分段报文分别添加IP报文头,得到三个IP分段报文。其中,第一个IP分段报文包括20字节的IP报文头、20字节的TCP报文头以及1460字节的有效载荷;第二个IP分段报文包括20字节的IP报文头、20字节的TCP报文头以及1460字节的有效载荷;第三个IP分段报文包括20字节的IP报文头、20字节的TCP报文头以及80字节的有效载荷。其中,IP报文头包括源IP地址、目的IP地址、协议类型,TCP报文头包括源端口和目的端口。
在如图3所示得到多个IP分段报文后,服务器依次向路由设备发送IP分段报文,在一个IP分段报文到达路由器之后,路由器可以从IP分段报文的IP报文头中获取源IP地址、目的IP地址、协议类型,从IP分段报文的TCP报文头中获取源端口和目的端口,这样路由设备可以获取到完整的五元组信息,这样路由设备就可以在WAN端口的硬件加速表中确定与该五元组信息对应的转发信息,基于转发信息通过硬加速通道转发报文,提高报文的转发效率。
下面介绍UDP报文的分片过程。
图4是一种对报文分片的示意图,基于UDP协议通信之前,通信双方不需要建立连接,因此不会像TCP协议那样协商MSS。如图4所示,应用层待传输的报文的大小为3000字节,超过MTU。待传输的报文到达传输层,传输层为待传输的报文添加UDP报文头,得到UDP报文,但是传输层的UDP协议不会对UDP报文进行分段。在UDP报文从传输层传输到网络层之后,在网络层对UDP报文进行IP分片处理,得到三个IP分片报文。其中,第一个IP分片报文包括20字节的IP报文头、8字节的UDP报文头以及1472字节的有效载荷;第二个IP分片报文包括20字节的IP报文头和1480字节的有效载荷;第三个IP分片报文包括20字节的IP报文头和48字节的有效载荷。其中,IP报文头包括源IP地址、目的IP地址、协议类型,UDP报文头包括源端口和目的端口。
可以看到,只有第一个IP分片报文包括UDP报文头,即只有第一个IP分片报文携带源端口和目的端口,而其余两个IP分片报文未携带源端口和目的端口。这样,在第一个IP分片报文到达路由设备之后,路由设备可以从第一个IP分片报文中获取完整的五元组信息,将第一个IP分片报文通过硬加速通道发送给终端设备。
但是当第二个IP分片报文和第三个IP分片报文到达路由设备之后,路由设备无法获取到源端口和目的端口,因此无法获取到完整的五元组信息,进而无法在WAN端口查找到转发信息,IP分片报文无法走硬加速通道。路由设备需要将第二个IP分片报文和第三个IP分片报文通过驱动层、设备层上传至网络协议栈,在网络协议栈进行DNAT转换、查询路由表等操作。在查询路由表时,路由设备需要遍历路由表来确定物理端口转发信息,耗时较多,转发报文的效率低下。
有鉴于路由设备无法获取到IP分片报文完整的五元组信息,进而无法走硬加速通道的问题,本申请实施例提供一种数据传输方法以相关装置,以图4中的第一个UDP报文、第二个UDP报文为例,在本申请实施例提供的技术方案中,由于对一个UDP报文进行分片处理后得到的多个分片报文具有相同的预设标识,且多个分片报文中的首个分片报文包括IP头部信息和UDP头部信息,而多个分片报文中的其他分片报文包括IP头部信息,不包括UDP头部信息。因此,路由设备在接收到首个分片报文之后,可以基于首个分片报文的预设标识和UDP头部信息确定第一映射关系,第一映射关系包括预设标识和UDP头部信息的映射关系。这样,路由设备在接收到第一分片报文后,可以基于第一分片报文中的预设标识去获取第一映射关系,再基于第一映射关系获取第一分片报文的UDP头部信息。这样,路由设备便可以获取到第一分片报文的IP头部信息和UDP头部信息,也即获取到第一分片报文完整的五元组信息。进而,路由设备确定与第一分片报文的五元组信息对应的转发信息,基于转发信息通过硬加速通道向终端设备发送第一分片报文,这样有利于解决UDP报文分片后无法通过硬加速通道进行传输的问题,有利于提高路由设备转发IP分片报文的效率。
图5是本申请实施例适用的一种通信场景500的示意图。通信场景500包括路由设备01、服务器02以及终端设备03。路由设备01包括WAN端口、LAN端口1以及LAN端口2。
路由设备01逻辑上可划分为硬件层、驱动层、设备层以及网络协议栈。WAN端口、LAN端口1以及LAN端口2在硬件层。
图5中以路由设备01包括一个WAN端口和两个LAN端口为例,本申请实施例对路由设备01的WAN端口的数量和LAN端口的数量不作限定。
终端设备03是路由设备02的下挂设备,终端设备03可接入路由设备01入网,通过路由设备01向服务器02请求网络业务。
在本申请实施例中,路由设备01接收来自服务器02的多个IP分片报文,并通过WAN端口和LAN端口之间的硬加速通道向终端设备03发送多个IP分片报文。
路由设备01可以是例如路由器的任何具有路由转发、报文处理能力的设备。
示例性地,终端设备03可以为手机、平板电脑、笔记本电脑、音箱、耳机、智能手表等。
图6是本申请实施例提供的一种数据传输方法600的示意性流程图。方法600可适用于如图所示的通信场景500,但本申请实施例对此不作限定。方法600的步骤可以由路由设备执行,示例性地,路由设备可以为路由器等具有报文转发、处理能力的设备。方法600包括S601至S604,具体步骤如下:
S601,接收UDP报文的第一分片报文。
在本步骤中,第一分片报文是对UDP报文进行分片处理得到的多个分片报文中的一个,且第一分片报文不是多个分片报文中的首个分片报文。多个分片报文中的每个分片报文包括IP头部信息,IP头部信息包括UDP报文的源IP地址、目的IP地址以及预设标识,多个分片报文的预设标识相同。首个分片报文还包括UDP头部信息,UDP头部信息包括UDP报文的源端口和目的端口。
应理解的是,由同一个UDP报文分片得到的多个分片报文的IP报文头相同,IP报文头包括IP头部信息。本申请实施例所描述的分片报文为IP分片报文。
示例性地,第一分片报文可以为针对图4所描述的第二个IP分片报文或者第三个IP分片报文。首个分片报文可以为针对图4所描述的第一个IP分片报文。
需要说明的是,首个分片报文是对一个UDP报文进行分片处理得到的第一个分片报文,只有第一个分片报文中包括UDP头部信息,之后分片得到分片报文中不包括UDP头部信息。本申请实施例中的第一分片报文是除首个分片报文以外的其他分片报文中的任意一个。
首个分片报文包括IP头部信息和UDP头部信息,这样,首个分片报文包括完整的五元组信息,五元组信息包括:源IP地址、目的IP地址、源端口、目的端口以及协议类型。
第一分片报文包括IP头部信息,这样,第一分片报文的五元组信息不完整,仅包括源IP地址、目的IP地址以及协议类型,缺少源端口和目的端口。由于路由设备在向终端设备发送IP分片报文时需要DNAT信息,而获取DNAT信息需要知道目的端口和目的IP地址,但是第一分片报文中未携带目的端口信息。
S602,基于预设标识,获取第一映射关系。
每个分片报文的IP头部信息还包括预设标识,预设标识用于标识同一组分片报文,由同一个UDP报文分片得到的多个分片报文为同一组分片报文,这多个分片报文的预设标识相同。
第一映射关系包括预设标识与UDP头部信息的映射关系,且第一映射关系是根据首个分片报文的IP头部信息和UDP头部信息确定的。
路由设备可以从WAN端口的芯片中获取第一映射关系。
示例性地,预设标识为0xe525,路由设备基于0xe525从WAN端口的芯片中获取第一映射关系,第一映射关系包括预设标识0xe525与UDP头部信息中的源端口6293和目的端口8000的映射关系,第一映射关系可记为(0xe525;6293,8000)。
S603,基于第一映射关系,确定UDP头部信息。
在本步骤中,由于第一映射关系包括预设标识与UDP头部信息的映射关系,因此,路由设备可以根据第一映射关系得到UDP头部信息。
示例性地,路由设备从第一映射关系(0xe525;6293,8000)中确定UDP报文的UDP头部信息,UDP头部信息中的源端口为6293,目的端口为8000。
S604,基于IP头部信息和UDP头部信息,传输第一分片报文。
在本步骤中,路由设备从第一分片报文的IP头部信息中可以获取源IP地址、目的IP地址以及协议类型,并基于第一映射关系获取UDP头部信息中的源端口和目的端口,这样,路由设备集齐了完整的五元组信息,可以基于五元组信息在WAN端口获取DNAT信息和物理端口转发信息,直接通过硬加速通道转发第一分片报文,有利于解决UDP报文分片后无法通过硬加速通道进行传输的问题。
在本申请实施例中,路由设备无需将第一分片报文传输至网络协议栈进行DNAT转化以及查找路由表的操作。第一分片报文从硬件层传输至网络协议栈需要耗费时间,并且在网络协议栈进行DNAT转化以及遍历查找路由表需要耗费大量的时间,而本申请实施例中路由设备只需在WAN端口查找第一分片报文的五元组信息对应的DNAT信息和物理端口转发信息,有利于节省大量的报文处理时间,提高路由设备对IP分片报文的转发效率。
方法600中的第一映射关系是根据首个分片报文的IP头部信息和UDP头部信息确定的。下面结合附图介绍路由设备确定第一映射关系的过程。
图7是本申请实施例提供的确定第一映射关系的示意性流程图。方法700可应用于如图5所示的通信场景500,但本申请实施例对此不作限定。方法700的步骤可以由路由设备在方法600之前执行,方法700包括S701至S703,具体步骤如下:
S701,接收首个分片报文。
路由设备接收到一个报文之后,首先识别当前接收到的报文是否为分片报文,如果是分片报文,那么是否为首个分片报文。在本申请实施例中,首个分片报文也可称为第一个分片报文,首个分片报文中包括IP头部信息和UDP头部信息,IP头部信息包括源IP地址、目的IP地址、协议类型,UDP头部信息包括源端口、目的端口。
一个报文是否为分片报文可以通过报文的IP报文头的分片(fragments)信息确定。如果是分片报文,则分片(fragments)信息中的不分片(don’t fragment)字段的值设置为0,表示支持分片功能,更多分片(more fragments)字段的值设置为1,表示后续还有分片报文。如果不是分片报文,则不分片(don’t fragment)字段的值设置为1,表示不支持分片功能。
若路由设备检测到接收到的报文中的不分片(don’t fragment)字段的值为0,更多分片(more fragments)字段的值为1,且接收到的报文中包括UDP头部信息,则路由设备可以确定当前接收到的报文是首个分片报文。
进一步地,若路由设备检测到接收到的报文中的协议类型字段为UDP,则路由设备可以确定当前接收到的报文为一个UDP报文的首个分片报文。
S702,基于首个分片报文的IP头部信息中的预设标识,以及首个分片报文的UDP头部信息,确定第一映射关系。
在本申请实施例中,IP头部信息还包括预设标识,同一组IP分片报文具有相同的预设标识。路由设备在确定接收到的是UDP报文的首个分片报文之后,可以从首个分片报文的IP报文头中获取标识(identification)字段的值,标识(identification)字段的值即为本申请实施例的预设标识。路由设备从首个分片报文中获取UDP头部信息,即获取源端口和目的端口,建立预设标识与UDP头部信息(源端口和目的端口)的映射关系,得到第一映射关系。
由于同一组IP分片报文具有相同的预设标识,因此路由设备可以建立预设标识与UDP头部信息的映射关系。这样路由设备再接收到第一分片报文之后,虽然第一分片报文中不包括UDP头部信息,即不包括源端口和目的端口,但是第一分片报文中包括与首个分片报文相同的预设标识,在获取到第一分片报文的预设标识之后,路由设备可以基于预设标识获取第一映射关系,由于第一映射关系包括预设标识与UDP头部信息的映射关系,因此路由设备可以基于第一映射关系获取UDP头部信息,即获取源端口和目的端口。路由设备可以从第一分片报文的IP头部信息中获取源IP地址、目的IP地址以及协议类型,这样,路由设备可以获取第一分片报文的完整的五元组信息。
可选地,方法700还包括:S703,将第一映射关系存入路由设备中。
路由设备在基于首个分片报文的预设标识和UDP头部信息确定第一映射关系后,可以将第一映射关系进行存储,以便于在接收到除首个分片报文以外的其他分片报文时获取其他分片报文的完整的五元组信息。
可选地,路由设备可以以预设标识为哈希表的键(key),将第一映射关系写入哈希表中。
示例性地,路由设备可以在WAN端口的芯片对应的驱动程序中增加一个哈希表,在确定接收到的报文为一个UDP报文的首个分片报文时,路由设备以预设标识为键进行哈希计算,通过取模的方式确定存放第一映射关系的哈希桶的索引:
hlist_index_1=预设标识%255
其中,hlist_index_1表示存放第一映射关系的哈希桶的索引,255是预设的哈希桶的数量。
图8是本申请实施例提供的一种哈希表的示意图。示例性地,hlist_index_1=0,路由设备可以在索引为0的哈希桶对应的链表中添加第一映射关系。每个哈希桶可以对应至少一个链表节点,示例性地,链表节点1中存储的是预设标识1与源端口1和目的端口1的映射关系,链表节点2中存储的是预设标识2与源端口2和目的端口2的映射关系。预设标识1和预设标识2是两组不同的分片报文的预设标识,每一组分片报文包括多个分片报文。
示例性地,首个分片报文的预设标识为图8中的预设标识1,首个分片报文的UDP头部信息包括源端口1和目的端口1,链表节点1中存储有预设标识1与源端口1和目的端口1的映射关系。
以上结合图7和图8描述了路由设备确定第一映射关系并存储第一映射关系的过程。下面将结合图9介绍路由设备通过硬加速通道发送第一分片报文的过程。
图9是本申请实施例提供的另一种数据传输方法900的示意性流程图。方法900可应用于如图5所示的通信场景500,但本申请实施例对此不作限定。方法900的步骤可以由路由设备执行,方法900包括S901至S905,具体步骤如下:
S901,接收第一分片报文。
路由设备接收到一个报文之后,首先识别当前接收到的报文是否为分片报文,如果是分片报文,那么是否为首个分片报文。
一个报文是否为分片报文可以通过报文的IP报文头的分片(fragments)信息确定。如果是分片报文,则分片(fragments)信息中的不分片(don’t fragment)字段的值设置为0,表示支持分片功能;更多分片(more fragments)字段的值设置为1,表示后续还有分片报文;更多分片(more fragments)字段的值设置为0,表示后续没有分片报文。
若路由设备检测到第一分片报文中的不分片(don’t fragment)字段的值为0,更多分片(more fragments)字段的值为1或者0,且第一分片报文中不包括UDP头部信息,则路由设备确定第一分片报文为一个分片报文,但不是首个分片报文。
进一步地,若路由设备检测到第一分片报文中的协议类型字段为UDP,则路由设备可以确定第一分片报文为一个UDP报文的分片报文,但不是首个分片报文。
S902,以预设标识为键,从哈希表中获取第一映射关系。
结合上文的描述,路由设备的WAN端口的芯片中存储有哈希表,哈希表中包括第一映射关系。路由设备在接收到第一分片报文之后,可以从第一分片报文中获取预设标识。路由设备以从第一分片报文中获取的预设标识为键进行哈希计算,通过取模的方式确定存放第一映射关系的哈希桶的索引:
hlist_index_2=预设标识%255
由于首个分片报文的预设标识与第一分片报文的预设标识相同,因此,hlist_index_1和hlist_index_2相同,指向同一个哈希桶。路由设备可以在索引为hlist_index_2的哈希桶中得到第一映射关系。
示例性地,hlist_index_2的值为0,如图8所示,路由设备可以在索引为0的哈希桶对应的链表中获取第一映射关系,第一映射关系包括预设标识与UDP头部信息(源端口和目的端口)的映射关系。
应理解的是,以相同的预设标识为键进行哈希计算,通过取模的方式得到的是相同的哈希桶的索引,但是也可能存在以不同的预设标识为键进行哈希计算,通过取模的方式得到相同的哈希桶的索引。因此,如图8所示,每个哈希桶可以对应至少一个链表节点,示例性地,链表节点1中存储的是预设标识1与源端口1和目的端口1的映射关系,链表节点2中存储的是预设标识2与源端口2和目的端口2的映射关系。
当一个哈希桶中存储有多个预设标识与源端口和目的端口的映射关系时,路由设备通过查找多个映射关系中的预设标识,确定多个映射关系中的预设标识与第一分片报文的预设标识相同的映射关系为第一映射关系。示例性地,第一分片报文的预设标识为预设标识1,则路由设备可以确定预设标识1与源端口1和目的端口1的映射关系为第一映射关系。
S903,基于第一映射关系,确定UDP头部信息。
如图8所示,在获取第一映射关系后,路由设备便可以确定与第一分片报文的预设标识对应的UDP头部信息,即确定第一分片报文的源端口和目的端口。
路由设备从第一分片报文的IP报文头中获取源IP地址、目的IP地址、协议类型,又基于第一映射关系获取到了源端口和目的端口,这样,路由设备获取到了第一分片报文的完整的五元组信息。
S904,获取转发信息,转发信息包括UDP报文的DNAT信息和物理端口转发信息。
在本申请实施例中,第一分片报文中的目的IP地址是终端设备的广域网的IP地址,第一分片报文中的目的端口是终端设备的广域网的IP地址。为了使分片报文顺利传输至局域网侧的终端设备,路由设备需要对分片报文中的目的IP地址进行DNAT转换。DNAT转换用于将第一分片报文中的目的IP地址转换为终端设备的局域网的IP地址,将第一分片报文中的目的端口转换成终端设备的局域网的端口。
物理端口转发信息用于指示从路由设备的至少一个物理端口中的哪一个物理端口向终端设备发送第一分片报文。
如上文针对图1的描述,在终端设备和服务器经过路由设备通信时,一条从服务器到终端设备的UDP连接上的前N个IP分片报文会经由硬件层、驱动层、设备层传输至网络协议栈,在网络协议栈进行标准的DNAT转换和路由转发流程,这是转发信息的学习阶段。WAN端口的芯片最终可以学习到一条UDP连接上传输的IP分片报文的五元组信息对应的转发信息。
示例性地,N=1,路由设备在接收到从服务器到终端设备这一条UDP连接上传输的第一个报文时,路由设备将第一个报文上传至网络协议栈,在网络协议栈对第一个报文进行DNAT转换和路由转发。示例性地,这第一个报文的源IP地址为10.146.20.140,源端口为6293,目的IP地址为192.168.4.2,目的端口为8000,协议类型为UDP。
经过DNAT转换后,这第一报文的源IP地址、源端口不变,目的IP地址转换为192.168.3.2,目的端口转换为4000。
这样,路由设备学习得到的DNAT信息包括:终端设备的广域网的IP地址192.168.4.2与终端设备的局域网的IP地址192.168.3.2具有转换关系,终端设备的广域网的端口8000与终端设备的局域网的端口4000具有转换关系。
经过查询路由表进行路由转发后,路由设备学习到的物理端口转发信息包括:通过LAN端口1向终端设备转发报文。
路由设备可以将学习到的转发信息在硬件加速表中进行存储,以供路由设备将后续在同一条UDP连接上传输的报文通过硬加速通道发送终端设备。
S905,基于IP头部信息、UDP头部信息以及转发信息,传输第一分片报文。
路由设备基于IP头部信息和UDP头部信息可以获取到完整的五元组信息。
示例性地,第一分片报文中的源IP地址为10.146.20.140,源端口为6293,目的IP地址为192.168.4.2,目的端口为8000,协议类型为UDP。
在从硬件加速表中获取转发信息之后,路由设备确定DNAT信息中指示的与广域网的IP地址192.168.4.2具有转换关系的局域网的IP地址为192.168.3.2,与广域网的端口8000具有转换关系的局域网的端口为4000,物理端口转发信息指示的物理端口为LAN端口1。
因此,路由设备将第一分片报文的目的IP地址转换为192.168.3.2,目的端口转换为4000,源IP地址、源端口、协议类型不变。
路由设备确定物理端口转发信息指示的转发端口为LAN端口1,这样,路由设备便可以通过WAN端口至LAN端口1之间的硬加速通道向终端设备转发第一分片报文,有利于提高路由设备对IP分片报文的转发效率。
应理解,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
上文中结合图1至图9,详细描述了根据本申请实施例的数据传输方法,下面将结合图10和图11详细描述根据本申请实施例的数据传输装置。
图10示出了本申请实施例提供的一种数据传输装置1000的示意性框图,该数据传输装置1000包括收发模块1010和处理模块1020。
其中,收发模块1010用于:接收UDP报文的第一分片报文;处理模块1020用于:基于预设标识,获取第一映射关系,第一映射关系包括预设标识与UDP头部信息的映射关系,且第一映射关系根据首个分片报文的IP头部信息和UDP头部信息确定;基于第一映射关系,确定UDP头部信息;以及,基于IP头部信息和UDP头部信息,传输第一分片报文。
其中,第一分片报文是对UDP报文进行分片处理得到的多个分片报文中的一个,且第一分片报文不是多个分片报文中的首个分片报文;多个分片报文中的每个分片报文包括IP头部信息,IP头部信息包括UDP报文的源IP地址、目的IP地址以及预设标识,多个分片报文的预设标识相同;首个分片报文还包括UDP头部信息,UDP头部信息包括UDP报文的源端口和目的端口。
可选地,收发模块1010用于:接收首个分片报文。处理模块1020用于:基于首个分片报文的IP头部信息中的预设标识,以及首个分片报文的UDP头部信息,确定第一映射关系。
可选地,IP头部信息还包括协议类型。处理模块1020用于:确定协议类型是否为UDP协议;以及,在协议类型为UDP协议的情况下,基于首个分片报文的IP头部信息中的预设标识,以及首个分片报文的UDP头部信息,确定第一映射关系。
可选地,IP头部信息还包括指示信息,指示信息用于指示首个分片报文是否为分片报文。处理模块1020用于:基于指示信息,确定首个分片报文是否为分片报文;在首个分片报文为分片报文的情况下,基于首个分片报文的IP头部信息中的预设标识,以及首个分片报文的UDP头部信息,确定第一映射关系。
可选地,处理模块1020用于:将第一映射关系存入路由设备中。
可选地,路由设备中存有哈希表。处理模块1020用于:以预设标识为键,将第一映射关系写入哈希表中。
可选地,处理模块1020用于:以预设标识为键,从哈希表中获取第一映射关系。
可选地,处理模块1020用于:获取转发信息,转发信息包括UDP报文的DNAT信息和物理端口转发信息;以及,基于IP头部信息、UDP头部信息以及转发信息,传输第一分片报文。
可选地,处理模块1020用于:基于DNAT信息,将目的IP地址转换成LAN的目的IP地址,将目的端口转换成LAN的目的端口;基于物理端口转发信息,确定用于传输UDP报文的LAN端口;以及,基于源IP地址、源端口、LAN的目的IP地址、LAN的目的端口以及LAN端口,通过WAN端口和LAN端口之间的通道传输第一分片报文。
在一个可选的例子中,本领域技术人员可以理解,装置1000可以具体为上述实施例中的路由设备,或者,上述实施例中路由设备的功能可以集成在装置1000中。上述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。装置1000可以用于执行上述方法实施例中与路由设备对应的各个流程和/或步骤。
应理解,这里的数据处理装置1000以功能模块的形式体现。这里的术语“模块”可以指应用特有集成电路(application specific integrated circuit,ASIC)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。在本申请的实施例,图10中的装置1000也可以是芯片或者芯片系统,例如:片上系统(system on chip,SoC)。
图11示出了本申请实施例提供的另一种数据处理装置1100的示意性框图。该数据处理装置1100包括处理器1110、收发器1120和存储器1130。其中,处理器1110、收发器1120和存储器1130通过内部连接通路互相通信,该存储器1130用于存储指令,该处理器1110用于执行该存储器1130存储的指令,以控制该收发器1120发送信号和/或接收信号。
应理解,数据处理装置1100可以用于执行上述方法实施例中与路由设备对应的各个步骤和/或流程。可选地,该存储器1130可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。该处理器1110可以用于执行存储器中存储的指令,并且该处理器执行该指令时,该处理器可以执行上述方法实施例中与路由设备对应的各个步骤和/或流程。
应理解,在本申请实施例中,该处理器1110可以是中央处理单元(centralprocessing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时可实现上述任一方法实施例中路由设备所执行的方法。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时可实现上述任一方法实施例中路由设备所执行的方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。因此,本申请实施例的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种数据传输方法,其特征在于,应用于路由设备,包括:
接收用户数据报协议UDP报文的第一分片报文,所述第一分片报文是对所述用户数据报协议UDP报文进行分片处理得到的多个分片报文中的一个,且所述第一分片报文不是所述多个分片报文中的首个分片报文;所述多个分片报文中的每个分片报文包括互联网协议IP头部信息,所述IP头部信息包括所述用户数据报协议UDP报文的源IP地址、目的IP地址以及预设标识,所述多个分片报文的所述预设标识相同;所述首个分片报文还包括UDP头部信息,所述UDP头部信息包括所述用户数据报协议UDP报文的源端口和目的端口;
基于所述预设标识,获取第一映射关系,所述第一映射关系包括所述预设标识与所述UDP头部信息的映射关系,且所述第一映射关系根据所述首个分片报文的IP头部信息和UDP头部信息确定;
基于所述第一映射关系,确定所述UDP头部信息;
基于所述IP头部信息和所述UDP头部信息,传输所述第一分片报文;
所述方法还包括:
接收所述首个分片报文;
基于所述首个分片报文的IP头部信息中的所述预设标识,以及所述首个分片报文的所述UDP头部信息,确定所述第一映射关系;
在所述基于所述IP头部信息和所述UDP头部信息,传输所述第一分片报文之前,所述方法还包括:
获取转发信息,所述转发信息包括所述用户数据报协议UDP报文的目的地址转换DNAT信息和物理端口转发信息;
所述基于所述IP头部信息和所述UDP头部信息,传输所述第一分片报文,包括:
基于所述IP头部信息、所述UDP头部信息以及所述转发信息,传输所述第一分片报文。
2.根据权利要求1所述的方法,其特征在于,所述IP头部信息还包括协议类型;
在所述基于所述首个分片报文的IP头部信息中的所述预设标识,以及所述首个分片报文的所述UDP头部信息,确定所述第一映射关系之前,所述方法还包括:
确定所述协议类型是否为UDP协议;
在所述协议类型为UDP协议的情况下,基于所述首个分片报文的IP头部信息中的所述预设标识,以及所述首个分片报文的所述UDP头部信息,确定所述第一映射关系。
3.根据权利要求1或2所述的方法,其特征在于,所述IP头部信息还包括指示信息,所述指示信息用于指示所述首个分片报文是否为分片报文;
在所述基于所述首个分片报文的IP头部信息中的所述预设标识,以及所述首个分片报文的所述UDP头部信息,确定所述第一映射关系之前,所述方法还包括:
基于所述指示信息,确定所述首个分片报文是否为分片报文;
在所述首个分片报文为分片报文的情况下,基于所述首个分片报文的IP头部信息中的所述预设标识,以及所述首个分片报文的所述UDP头部信息,确定所述第一映射关系。
4.根据权利要求1或2所述的方法,其特征在于,在确定所述第一映射关系之后,所述方法还包括:
将所述第一映射关系存入所述路由设备中。
5.根据权利要求4所述的方法,其特征在于,所述路由设备中存有哈希表,所述将所述第一映射关系存入所述路由设备中,包括:
以所述预设标识为键,将所述第一映射关系写入所述哈希表中。
6.根据权利要求5所述的方法,其特征在于,所述基于所述预设标识,获取第一映射关系,包括:
以所述预设标识为键,从所述哈希表中获取所述第一映射关系。
7.根据权利要求1所述的方法,其特征在于,所述基于所述IP头部信息、所述UDP头部信息以及所述转发信息,传输所述第一分片报文,包括:
基于所述DNAT信息,将所述目的IP地址转换成局域网LAN的目的IP地址,将所述目的端口转换成所述LAN的目的端口;
基于所述物理端口转发信息,确定用于传输所述用户数据报协议UDP报文的LAN端口;
基于所述源IP地址、所述源端口、所述LAN的目的IP地址、所述LAN的目的端口以及所述LAN端口,通过广域网WAN端口和所述LAN端口之间的通道传输所述第一分片报文。
8.一种数据传输装置,其特征在于,包括用于执行如权利要求1至7中任一项所述方法的模块。
9.一种数据传输装置,其特征在于,包括:处理器和存储器,其中,
所述存储器用于存储计算机程序;
所述处理器用于调用并执行所述计算机程序,以使所述装置执行如权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210780046.4A CN116095197B (zh) | 2022-07-04 | 2022-07-04 | 数据传输方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210780046.4A CN116095197B (zh) | 2022-07-04 | 2022-07-04 | 数据传输方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116095197A CN116095197A (zh) | 2023-05-09 |
CN116095197B true CN116095197B (zh) | 2023-12-12 |
Family
ID=86201235
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210780046.4A Active CN116095197B (zh) | 2022-07-04 | 2022-07-04 | 数据传输方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116095197B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117097678B (zh) * | 2023-10-20 | 2024-01-26 | 深圳华云信息系统科技股份有限公司 | 分片报文的流式转发方法、装置、设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1863158A (zh) * | 2005-10-31 | 2006-11-15 | 华为技术有限公司 | 一种ip报文分片缓存及转发方法 |
CN104202268A (zh) * | 2014-09-16 | 2014-12-10 | 桂林电子科技大学 | 无线传感器网络IPv6路由协议报文分片重组的方法 |
CN105791214A (zh) * | 2014-12-18 | 2016-07-20 | 中兴通讯股份有限公司 | 一种RapidIO报文和以太网报文之间的转换方法和设备 |
CN105992186A (zh) * | 2015-02-06 | 2016-10-05 | 中兴通讯股份有限公司 | 数据传输方法及装置 |
CN111510513A (zh) * | 2020-01-03 | 2020-08-07 | 普联国际有限公司 | 一种map-e链路加速方法、装置、存储介质及网络设备 |
CN112311692A (zh) * | 2019-07-31 | 2021-02-02 | 华为技术有限公司 | 报文处理方法及装置、端设备 |
-
2022
- 2022-07-04 CN CN202210780046.4A patent/CN116095197B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1863158A (zh) * | 2005-10-31 | 2006-11-15 | 华为技术有限公司 | 一种ip报文分片缓存及转发方法 |
CN104202268A (zh) * | 2014-09-16 | 2014-12-10 | 桂林电子科技大学 | 无线传感器网络IPv6路由协议报文分片重组的方法 |
CN105791214A (zh) * | 2014-12-18 | 2016-07-20 | 中兴通讯股份有限公司 | 一种RapidIO报文和以太网报文之间的转换方法和设备 |
CN105992186A (zh) * | 2015-02-06 | 2016-10-05 | 中兴通讯股份有限公司 | 数据传输方法及装置 |
CN112311692A (zh) * | 2019-07-31 | 2021-02-02 | 华为技术有限公司 | 报文处理方法及装置、端设备 |
CN111510513A (zh) * | 2020-01-03 | 2020-08-07 | 普联国际有限公司 | 一种map-e链路加速方法、装置、存储介质及网络设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116095197A (zh) | 2023-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113709057B (zh) | 网络拥塞的通告方法、代理节点、网络节点及计算机设备 | |
CN113411313B (zh) | 数据传输方法、装置和系统 | |
EP3422656B1 (en) | Udp protocol acceleration method and system | |
CN110138618B (zh) | 一种报文处理方法、装置及系统 | |
CN109218111B (zh) | 一种处理报文的方法和转发器 | |
US20230247118A1 (en) | Method for Processing Packet and Apparatus | |
US10791051B2 (en) | System and method to bypass the forwarding information base (FIB) for interest packet forwarding in an information-centric networking (ICN) environment | |
CN108347392B (zh) | 业务报文跨板处理方法、装置及系统 | |
KR101330900B1 (ko) | 가변 프레임 크기를 가진 링크 상에서 더 높은 데이터 레이트를 지원하는 장치 및 방법 | |
CN110535812B (zh) | 报文传输方法、通信装置和系统 | |
CN116095197B (zh) | 数据传输方法及相关装置 | |
CN112448887A (zh) | 分段路由方法及装置 | |
WO2016119269A1 (zh) | 一种业务流数据包的处理方法及装置 | |
CN108777654B (zh) | 报文转发方法及路由设备 | |
US8249101B2 (en) | Mobile ad hoc network configured as a virtual internet protocol network | |
JP4063814B2 (ja) | Atm通信装置およびその通信方法 | |
CN112788116A (zh) | 一种报文转发的方法及装置 | |
WO2014007247A1 (ja) | ネットワーク装置、パケット処理方法及びプログラム、並びにネットワークシステム | |
CN114079675B (zh) | 报文处理方法、装置、终端设备及移动宽带上网设备 | |
CN105874755B (zh) | 数据包转发处理方法及装置 | |
CN106982216B (zh) | 一种无线自组网中以太网业务接入方法 | |
WO2023005723A1 (zh) | 一种报文传输方法以及通信装置 | |
WO2023040782A1 (zh) | 处理报文的方法、系统、设备和存储介质 | |
WO2023078144A1 (zh) | 报文处理方法、装置及系统 | |
CN116016391A (zh) | 一种基于nat网关的报文转发方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |