CN110519169B - 一种应用层复用网络报文头部的方法 - Google Patents
一种应用层复用网络报文头部的方法 Download PDFInfo
- Publication number
- CN110519169B CN110519169B CN201910817557.7A CN201910817557A CN110519169B CN 110519169 B CN110519169 B CN 110519169B CN 201910817557 A CN201910817557 A CN 201910817557A CN 110519169 B CN110519169 B CN 110519169B
- Authority
- CN
- China
- Prior art keywords
- label
- mapping
- network
- message
- application
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
- H04L12/4645—Details on frame tagging
- H04L12/465—Details on frame tagging wherein a single frame includes a plurality of VLAN tags
-
- 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/50—Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种应用层复用网络报文头部的方法,对IP网络的各层头部字段进行自定义映射,转换为应用层标签,将转换后的标签通过协议栈上送到应用层,应用层直接利用上送的标签作为会话ID对数据进行处理,应用层对网络底层头部标签进行映射复用。本发明降低了冗余,提升了整个网络的数据处理性能。同时,标签的统一可以降低网络问题诊断的难度。
Description
技术领域
本发明属于通信技术领域,具体涉及一种应用层复用网络报文头部的方法。
背景技术
对于网络报文的处理,存在多种设备和软件,这些设备和软件所处的层次可以分为网络层和应用层,两者各司其职。网络层设备和软件依据报文的头部对报文进行处理和转发,应用层设备和软件依据报文内容对数据进行处理和应答。
网络层采用分层结构,数据包在各个层次都有不同的头部字段(即标签),不同的标签适用于不同的网络场景。例如Mac标签用于二层转发,IP标签用于三层转发,Vlan标签用于Vlan隔离。
应用层的会话标签通常由应用程序单独生成、管理和使用,与网络协议栈各层的标签没有关系。比如,Linux系统上应用层的一条TCP连接会有独立的会话标签(文件描述符),而这个标签并不是根据底层的某个数据包头部映射来的。再如,一次WEB页面浏览产生的HTTP会话,通常这个HTTP会话标签由WEB应用的编写者自己生成,与底层头部无关。目前并没有一种通用的技术方案,可以将底层网络头部信息映射为应用层的会话标签。
对于很多网络应用来说,底层网络数据包头部可以用来标识用户和会话,应用层与网络层标签的分离是没有必要的,分离反而降低了数据处理的效率。比如,在一个以Mac地址标识用户的私有网络中,对数据进行处理的应用程序,可以将Mac地址映射为会话的标签,而不用再重新生成。
现在的应用程序却都没有这样复用,而是重新独立生成会话标签。综上所述,目前存在如下问题:
1.应用层独立生成会话标签
这种做法是目前网络应用程序中的最常规做法,应用层与底层网络完全解耦,其缺点前文已经有所描述,主要是冗余,降低数据处理效率,网络问题追踪诊断困难。
2.应用层使用网络层IP地址标作为会话标签
目前主流网络协议栈的实现,都可以通过SOCKET接口获取到IP地址信息,因此很多网络应用使用IP源地址作为会话标识。但是IP地址很多时候不能代表一台主机或者一个用户。比如在不同的VLAN和VXLAN域中,相同IP地址的报文可能来自于不同的主机,还需要进一步依据VLAN或VXLAN头部信息进行用户区分和标识。缺点主要是不够用。
3.Linux防火墙报文标记
Linux内核提供了基本的网络防火墙功能即Netfilter/Iptables,防火墙可以比较灵活的依据规则对报文打上标记,但遗憾的是该标记不能被应用层获取到,只能被Linux内核协议栈使用。
本发明的目的是为应用程序提供一种标签复用方案,以降低冗余,提升整个网络的数据处理性能。同时,标签的统一可以降低网络问题诊断的难度。
发明内容
本发明公开了一种应用层复用网络报文头部的方法,本发明通过应用层对网络底层头部标签进行映射复用,以降低冗余,提升整个网络的数据处理性能。
本发明主要通过以下技术方案实现:一种应用层复用网络报文头部的方法,对IP网络的各层头部字段进行自定义映射,转换为应用层标签,将转换后的标签通过协议栈上送到应用层,应用层直接利用上送的标签作为会话ID对数据进行处理,应用层对网络底层头部标签进行映射复用。
为了更好的实现本发明,进一步的,输入的报文依次经过标签映射、网络协议栈、标签提取处理后进入应用程序;输入方向的报文处理步骤如下:
步骤S1:提取映射字段;
步骤S2:根据映射算法进行映射,得到应用标签值;
步骤S3:将步骤S2中映射得到的标签写入协议栈中的报文控制结构;
步骤S4:应用程序从协议栈获取标签值。
为了更好的实现本发明,进一步的,所述步骤S1中提取的字段包括Mac地址、以太协议号、VLAN Tag、VXLAN ID、IP地址、IP协议号、IP端口号中的任意一种或者多种字段。
为了更好的实现本发明,进一步的,所述步骤S2中映射算法采用一一映射或者根据多个字段组合进行哈希散列计算,哈希算法为CRC16或CRC32或MD5;所述一一映射直接使用报文字段作为应用标签,哈希映射则使用散列结果作为应用标签。
为了更好的实现本发明,进一步的,若存在哈希冲突,则将冲突链的序列号同时上送应用程序;对于同时上送了冲突序列号的hash值,应用程序需要使用(标签,序列号)二元组作为标签值。
为了更好的实现本发明,进一步的,输出的报文依次经过应用程序、标签写入、网络协议栈、标签反向映射处理后输出;输出方向的报文处理步骤如下:
步骤L1:应用程序将标签写入协议栈报文控制字段;
步骤L2:将标签写入报文。
为了更好的实现本发明,进一步的,所述步骤L1中复用报文控制结构中已有字段或者新添加一个字段。
为了更好的实现本发明,进一步的,报文输出方向的标签反向映射不支持哈希映射。
本发明中将网络报文头部映射转化为应用层会话标签。使用哈希算法对多个字段进行散列映射得到会话标签。允许将会话标签反向映射回数据报文头部的某一字段。
本发明的有益效果:
(1)本发明通过应用层对网络底层头部标签进行映射复用,以降低冗余,提升整个网络的数据处理性能。
(2)应用层复用网络层的头部字段,降低了重新生成会话标签的冗余开销,提升了网络处理系统的性能。同时,网络层与应用层会话ID的统一,使得数据流追踪变得更容易,降低了网络处理系统问题的诊断难度。
附图说明
图1为本发明的原理框图;
图2为输入报文的处理流程图;
图3位输出报文的处理流程图。
具体实施方式
实施例1:
一种应用层复用网络报文头部的方法,对IP网络的各层头部字段进行自定义映射,转换为应用层标签,将转换后的标签通过协议栈上送到应用层,应用层直接利用上送的标签作为会话ID对数据进行处理,而不是自行生成一套会话标签。关键点是应用层对网络底层头部标签进行映射复用,以降低冗余,提升整个网络的数据处理性能。同时,标签的统一可以降低网络问题诊断的难度。
如图1所示,输入方向:报文依次经过“标签映射->网络协议栈->标签提取->应用程序”几个数据处理模块。输出方向:报文依次经过“应用程序->标签写入->网络协议栈->标签反向映射”几个数据处理模块。
实施例2:
本实施例是在实施例1的基础上进行优化,如图2所示,输入方向的报文,依次经过如下处理步骤:
1.提取映射源字段。提取依据是应用程序设定的,可选的字段包括Mac地址、以太协议号、VLAN Tag、VXLAN ID、IP地址、IP协议号、IP端口号等。可以是单个字段,也可以是多个字段的组合。
2.根据映射算法进行映射,得到应用标签值。映射算法由应用进行设定,可以是简单的一一映射,也可以是根据多个字段组合进行哈希散列计算,可选的计算哈希算法包括CRC16, CRC32,MD5等。一一映射即直接使用某个报文字段比如Mac地址作为应用标签,哈希映射则使用散列结果作为应用标签。
如果存在哈希冲突,则将冲突链的序列号同时上送应用程序。
3.映射得到的标签写入协议栈中的报文控制结构。对于不同的协议栈,该步骤实现方式可能略有差异,有的可以复用报文控制结构中已有字段,比如Linux协议栈可以复用SO_MARK字段,有的则需要在报文控制结构中新添加一个标签字段。
4.应用从协议栈获取标签值。对于在操作系统内核实现的协议栈,通常是调用一个系统API,比如Linux协议栈的getsockopt系统调用。
5.对于同时上送了冲突序列号的hash值,应用程序需要使用(标签,序列号)二元组作为标签值。
6.应用程序根据用户标签对数据报文进行处理。
本实施例的其他部分与实施例1相同,故不再赘述。
实施例3:
本实施例是在实施例1或2的基础上进行优化,如图2所示,输出方向的报文依次经过如下步骤:
1.应用将标签写入协议栈报文控制字段。类似输入方向,对于不同的协议栈实现,该步骤实现方式可能略有差异,有的可以复用报文控制结构中已有字段,有的则需要新添加一个字段。
2.将标签写入报文。与报文输入方向不同,输出方向的标签反向映射不支持哈希映射。原因是,由于传统网络设备的限制,网络层报文头部不能被任意修改。但有的场景网络层还是允许修改头部的,比如网络层使用的是用户自定义的SDN网络。本方案中依然允许应用程序指定标签写入的报文头部字段,可以是Mac地址、以太协议号、VALN Tag、VXLANID、IP地址、IP协议号、IP端口号等中的任意一个。
本实施例的其他部分与上述实施例1或2相同,故不再赘述。
实施例4:
一种应用层复用网络报文头部的方法,使用MAC地址映射标识DHCP服务器应用中请求主机:
1)提取请求报文中的源MAC字段;
2)根据CRC16算法对源MAC地址的6个字节进行计算,得到一个2字节长度的HASH值。
控制冲突链的长度在256个以内,即可以用1字节表示。
3)将Hash计算的结果写入到Linux协议栈SKB控制结构中的SO_MARK字段;
4)DHCP服务器通过GETSOCKOPT接口获取读取SO_MARK作为请求主机的身份标识;
5)DHCP服务器根据主机身份为用户分配IP地址;
该实施例中DHCP协议不用更改,但是服务器实现内部的客户端标识使用标签映射。映射地址长度只有2字节,加上冲突链只有3字节。满足客户端主机小于65536台的场景。节省了服务器分配和存储ID的CPU与内存资源。
更进一步,不采用现有的DHCP协议,可以设计一种新协议实现IP地址的分配。依据MAC和应用层标签的映射,可以在地址请求和回复报文中不传递客户端的网卡地址,优化网络传输效率。
实施例5:
一种应用层复用网络报文头部的方法,使用VXLAN ID进行应用资源限制:
1)提取请求报文中的源VXLAN ID字段;
2)对VXLAN ID进行一一映射,转化为用户标签,即VXLAN ID直接作为用户标签;
3)将Hash计算的结果写入到Linux协议栈SKB控制结构中的SO_MARK字段;
4)私有云中的应用程序通过GETSOCKOPT接口获取读取SO_MARK作为用户的身份标识;
5)应用程序根据用户标签查询并检查用户所占有的资源;
6)根据资源占有情况对用户请求报文进行应答,如果访问的资源非法则拒绝访问;
该实例中复用了网络层的VXLAN ID作为应用程序中的应用标签,进行资源管理和检查。本发明降低了冗余,提升了整个网络的数据处理性能。同时,标签的统一可以降低网络问题诊断的难度。
以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护范围之内。
Claims (6)
1.一种应用层复用网络报文头部的方法,其特征在于,对IP网络的各层头部字段进行自定义映射,转换为应用层标签,将转换后的标签通过协议栈上送到应用层,应用层直接利用上送的标签作为会话ID对数据进行处理,应用层对网络底层头部标签进行映射复用;
输入的报文依次经过标签映射、网络协议栈、标签提取处理后进入应用程序;输入方向的报文处理步骤如下:
步骤S1:提取映射字段;
步骤S2:根据映射算法进行映射,得到应用标签值;
步骤S3:将步骤S2中映射得到的标签写入协议栈中的报文控制结构;
步骤S4:应用程序从协议栈获取标签值;
输出的报文依次经过应用程序、标签写入、网络协议栈、标签反向映射处理后输出;输出方向的报文处理步骤如下:
步骤L1:应用程序将标签写入协议栈报文控制字段;
步骤L2:将标签写入报文。
2.根据权利要求1所述的一种应用层复用网络报文头部的方法,其特征在于,所述步骤S1中提取的字段包括Mac地址、以太协议号、VLAN Tag、VXLAN ID、IP地址、IP协议号、IP端口号中的任意一种或者多种字段。
3.根据权利要求1所述的一种应用层复用网络报文头部的方法,其特征在于,所述步骤S2中映射算法根据多个字段组合进行哈希散列计算,哈希算法为CRC16或CRC32或MD5, 哈希映射使用散列结果作为应用标签。
4.根据权利要求3所述的一种应用层复用网络报文头部的方法,其特征在于,若存在哈希冲突,则将冲突链的序列号同时上送应用程序;对于同时上送了冲突序列号的hash值,应用程序需要使用: 标签,序列号二元组作为标签值。
5.根据权利要求1-4任一项所述的一种应用层复用网络报文头部的方法,其特征在于,所述步骤L1中复用报文控制结构中已有字段或者新添加一个字段。
6.根据权利要求1-4任一项所述的一种应用层复用网络报文头部的方法,其特征在于,报文输出方向的标签反向映射不支持哈希映射。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910817557.7A CN110519169B (zh) | 2019-08-30 | 2019-08-30 | 一种应用层复用网络报文头部的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910817557.7A CN110519169B (zh) | 2019-08-30 | 2019-08-30 | 一种应用层复用网络报文头部的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110519169A CN110519169A (zh) | 2019-11-29 |
CN110519169B true CN110519169B (zh) | 2021-11-26 |
Family
ID=68628646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910817557.7A Active CN110519169B (zh) | 2019-08-30 | 2019-08-30 | 一种应用层复用网络报文头部的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110519169B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114844963B (zh) * | 2022-03-31 | 2023-02-17 | 慧之安信息技术股份有限公司 | 基于开源协议栈eXosip的扩展头部信息提取方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101060472A (zh) * | 2006-04-17 | 2007-10-24 | 中国科学院计算技术研究所 | 基于路由的会话初始化协议透明穿越网络地址转换的方法 |
CN101072174A (zh) * | 2007-03-23 | 2007-11-14 | 南京邮电大学 | 基于净荷深度检测和会话关联技术的腾讯语音识别方法 |
CN102170386A (zh) * | 2010-02-26 | 2011-08-31 | 中兴通讯股份有限公司 | 身份标识与位置分离的实现方法、系统及数据封装方法 |
-
2019
- 2019-08-30 CN CN201910817557.7A patent/CN110519169B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101060472A (zh) * | 2006-04-17 | 2007-10-24 | 中国科学院计算技术研究所 | 基于路由的会话初始化协议透明穿越网络地址转换的方法 |
CN101072174A (zh) * | 2007-03-23 | 2007-11-14 | 南京邮电大学 | 基于净荷深度检测和会话关联技术的腾讯语音识别方法 |
CN102170386A (zh) * | 2010-02-26 | 2011-08-31 | 中兴通讯股份有限公司 | 身份标识与位置分离的实现方法、系统及数据封装方法 |
Non-Patent Citations (1)
Title |
---|
"基于身份位置分离的新协议栈设计与实现";董庆洲;《中国优秀硕士论文电子期刊网》;20120815;正文第3页-第70页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110519169A (zh) | 2019-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3854038B1 (en) | Segment routing with fast reroute for container networking | |
US6560630B1 (en) | Receive load balancing and fail over with multiple network interface cards | |
EP3353997B1 (en) | Technologies for offloading data object replication and service function chain management | |
US6799220B1 (en) | Tunneling management messages over a channel architecture network | |
CN113326228B (zh) | 基于远程直接数据存储的报文转发方法、装置及设备 | |
CN102104541B (zh) | 报头处理引擎 | |
EP3404879B1 (en) | Metro ethernet network with virtual local area network information specifying a broadcast domain and including a service instance identifier | |
JP4053967B2 (ja) | Vlanサーバ | |
US7924840B1 (en) | Virtualizing the operation of intelligent network interface circuitry | |
US11907749B2 (en) | RDMA with virtual address space | |
US7106751B2 (en) | Apparatus for linking a SAN with a LAN | |
CN108768866B (zh) | 组播报文跨卡转发方法、装置、网络设备及可读存储介质 | |
CN107770026B (zh) | 租户网络数据传输方法、租户网络系统和相关设备 | |
US20160065386A1 (en) | Scalable virutal networks in sdn-based ethernet networks using vlans | |
JP2019527988A (ja) | パケット伝送 | |
US8539089B2 (en) | System and method for vertical perimeter protection | |
CN104468401A (zh) | 一种报文处理方法和装置 | |
CN106713144A (zh) | 一种报文出口信息的读写方法及转发引擎 | |
CN112968919B (zh) | 一种数据处理方法、装置、设备和存储介质 | |
CN104734930B (zh) | Vlan接入vf网络的实现方法及装置、fcf | |
CN110519169B (zh) | 一种应用层复用网络报文头部的方法 | |
CN114050998A (zh) | 实现远程直接内存访问的方法、装置、电子设备及介质 | |
CN112583655B (zh) | 数据传输方法、装置、电子设备及可读存储介质 | |
CN109286564B (zh) | 一种报文转发方法及装置 | |
WO2024001701A1 (zh) | 数据处理方法、装置及系统 |
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 |