CN105791128A - 一种ip报文接收处理方法及装置 - Google Patents
一种ip报文接收处理方法及装置 Download PDFInfo
- Publication number
- CN105791128A CN105791128A CN201610061358.4A CN201610061358A CN105791128A CN 105791128 A CN105791128 A CN 105791128A CN 201610061358 A CN201610061358 A CN 201610061358A CN 105791128 A CN105791128 A CN 105791128A
- Authority
- CN
- China
- Prior art keywords
- data message
- module
- message bag
- bag
- data
- 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.)
- Granted
Links
Classifications
-
- 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
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种IP报文的接收处理装置以及处理方法。来自MAC层的数据报文信息通过报文接收模块先缓存下来,报文接收模块同时控制着接收速度;接收到的速度合适的数据报文信息被放到缓存单元后,通过格式处理模块为后续的处理预留空白头,并添加头尾信息;然后数据一次进入长度校验模块和差错校验模块检验数据报文信息是否正确;未发生错误的数据报文信息随后一次进入填充处理模块和解封装处理模块,通过这些模块配合网络层的最大最小包限制;之后数据报文信息进入提取查找关键字模块,配合后面的路由表项查找与结果返回模块实现路由算法;最后通过转发模块形成处理好的IP报文发送至传输层。
Description
技术领域
本发明涉及网络通信技术领域,尤其是涉及一种IP(InternetProtocol,网络协议)报文的接收处理方法及装置。所谓IP报文,就是在网络层传输的一个一个的数据包信息。
背景技术
当今的世界是信息技术大爆炸的时代,信息技术已经得到革命性的发展,甚至关系到一个国家的经济命脉,各国都在大力发展信息技术,信息技术的普及与发展离不开网络,正是由于网络的发展,才更快速的刺激信息技术的广泛传播,所以网络是这个时代发展的基石,是推动信息技术快速发展的重要媒介,一个国家要想大力发展信息技术,网络技术的发展就不可忽视。现今,信息网络技术已经成为人类生存与发展的一个重要手段和基本条件,人们利用网络获取信息,与他人进行交流,与团队合作开展工作;利用网络认识自我和发展自我,认识自然和改造自然。网络正以前所未有的速度改变着人们的生活方式和认知方式,人们已经离不开网络技术了。
伴随着网络的流行,与网络相关的技术也蓬勃发展,有越来越多的科研技术人员投入网络行业。而今,网络处理器非常流行,与网络处理器相关的技术也是蓬勃发展,特别是IP报文的各种处理与转发更是被很多工程师所青睐,IP报文的处理涉及的是网络层,处于OSI(开放系统互联,OpenSystemInterconnection)模型的第三层,OSI模型七层网络协议是现在比较盛行的网络协议栈,OSI模型共分七层,每层都可以有几个子层,OSI的7层从上到下分别是应用层、表示层、会话层、传输层、网络层、数据链路层和物理层,其中应用层、表示层、会话层和传输层定义了应用程序的功能,而网络层、数据链路层和物理层则主要面向通过网络的端到端的数据流。
OSI七层网络协议中,数据链路层到网络层的传输过程中需要对到来的数据报文进行一定的处理,现有专利中很少有专门描述这块的技术操作,也鲜有如此细化的,本专利提供一种方法,是对MAC(MediaAccessControl,媒体介入控制层)层发送过来的数据进行处理。本发明要做的就是对MAC层过来的数据进行格式处理,与网络层相对应。这种处理过程可以封装成为一个单独的模块,可供他人调用,也可以直接使用。这样就能很好地缩短开发周期,提高开发质量。
对于MAC层和网络层之间传输的数据报文包的处理,目前还没有比较成形的实现装置。至于具体如何处理,各个公司也都有自己的见解。本发明希望能建立一个统一的处理标准,让网络处理更加规范化,缩短IP报文的接收处理装置的开发周期,提高开发质量。
本发明为IP数据报文提供了模块化的处理方法,缩短了后续IP报文的接收处理装置的开发周期,提高了开发质量。
本发明的关键在于,在本发明中,将MAC的数据处理模块也即本发明中的格式处理模块,单独放到一个模块中,可以对格式处理模块重复利用。
本发明在需要信息同步的时候自行组织缓冲单元。缓冲单元使用地址访问存储内容,丢失一个地址,该地址对应的内容就随之丢弃,下面的地址和内容还是一一对应的关系,这样就不会访问错误信息,这是非常独特的地方。除此之外,本发明自行编写了TCAM单元和DDR单元用以存储路由表项。由TCAM单元和DDR单元联合组成存储单元,通过硬件的方式进行路由表项的存储于查找,提高了存储于查找的效率。
本发明利用硬件描述语言实现,将所有模块都集中到一个芯片中,麻雀虽小五脏俱全,可以在单片的小范围内就能实现路由功能。
发明内容
本发明所要解决的技术问题是提供一种IP报文的接收处理方法及装置,技术方案如下:
一种IP报文处理装置,其特征在于包括顺序连接的报文接收模块、格式处理模块、长度校验模块、差错校验模块、填充处理模块、解封装处理模块、提取查找关键字模块、路由表项查找与结果返回模块以及转发模块;
报文接收模块接收来自MAC层的数据报文包,将MAC层的数据报文包进行缓存,同时计算数据报文包的个数以及数据报文包的拍数,进行流量控制。
格式处理模块,接收报文接收模块缓存的数据报文包,在数据报文包中报文的最前面加上两拍空白头,去除数据报文包的头部,根据剥离出的数据报文包的头部信息,获得报文的长度,报文有无错误等信息。
长度校验模块,对格式处理模块处理后的报文进行长度校验,若报文的长度符合数据报文包的头部信息中第一拍低16位记录的数据长度,则将报文送至差错校验模块;若报文的长度不符合数据报文包的头部信息中第一拍低16位记录的数据长度,则不予处理。长度校验模块的目的主要是为了校验有无丢失数据,本模块可初步验证数据的正确性。
差错校验模块,对长度校验模块校验后的报文进行差错校验,具体步骤如下:首先将数据报文包的头部信息中除报头校验和的16位外的所有数据报文包的头部信息的低16位与高16位相加,然后将计算溢出的高位部分再循环加进来,将最终的运算结果取反并与报文头部校验和进行校验,若两者相同则表示数据报文信息就是完全正确,将数据包文包传输至填充处理模块进行后续的处理;若两者不同则表示传输过程中出现错误,将出现错误的数据报文包丢弃。差错校验模块主要是校验数据报文包是否正确传输,进一步检验没有丢失数据或是出现数据异常。
填充处理模块,对差错校验模块校验后的数据报文包进行处理,保证数据报文包的大小符合网络层传输的字节要求,若数据报文包的长度小于48字节则填充空白字节将数据报文包的长度补充到48字节;若数据报文包的长度超过1500字节则丢弃冗余信息;填充处理模块调整好数据包文报的大小后,将处理后的数据包文包发送至解封装处理模块。
解封装处理模块,接收填充处理模块处理后的数据报文包,并判断传输机制是否与数据报文包的标识相同,若相同则直接将数据报文包发送至提取查找关键字模块;若不同则在数据报文包的头部前加上需要传输的机制的头部,再将加上新头部信息的数据报文包发送至提取查找关键字模块。
提取查找关键字模块,查找数据报文包的头部信息,将得到的关键字存入存储单元,具体需要查找的关键字有:起始与结束地址Start_end_addr、查询类型Lookup_type、物理端口Sph_port、源IP地址Sip、目标IP地址Dip、协议类型Protocol、源地址端口Sport、目标地址端口Dport和IPV6数据包流标签Flow_lable。这些关键字都是根据数据报文包头部的信息加上需要传输的物理设备端口信息而提取的
存储单元由DDR(DoubleDataRate,双倍速率同步动态随机存储器)单元和TCAM(ternarycontentaddressablememory,三态内容寻址存储器)单元组成,TCAM单元的地址返回端连接DDR单元输入端,TCAM单元存储关键字内容,DDR单元存储TCAM单元返回的地址。DDR单元和TCAM单元这两个外部存储器共同联合存储路由表项,实现路由表项的查找。在具体实现时,TCAM单元存储的关键字内容包括:起始与结束地址Start_end_addr、查询类型Lookup_type、物理端口Sph_port、源IP地址Sip、目标IP地址Dip、协议类型Protocol、源地址端口Sport、目标地址端口Dport和IPV6数据包流标签Flow_lable,而DDR存储单元存储TCAM返回的地址。
这样,可以利用关键字在CAM单元里按内容寻址,得到地址后再利用DDR存储单元双倍存储速率的特点去快速读取DDR存储单元里的内容,结合两种存储单元各自的优势,有效地提高了查找速度
路由表项查找与结果返回模块,查询存储单元中的路由表项信息,若与需要传输的路由信息匹配则返回匹配的结果;若不匹配,则表示查找失败,不进行处理。
转发模块,根据路由表项查找与结果返回模块查找到的路由表项对数据报文包进行格式调整,去除格式处理模块中加上的两拍空白头,添加数据包文报对应的头部,然后将调整好的报文转发出去。
本发明的各个模块都通过硬件描述语言实现,不需要设置外部存储硬件。通过硬件描述语言实现外部硬件,并将这些模块做在一个die单元(裸片)内,可以单片实现路由功能。而且本发明通过硬件方式进行路由表项的查找,不用将软件翻译为硬件结构去执行,执行效率比软件实现的方式更高。
一种IP报文处理方法,其特征在于,处理步骤如下:
第一步,在数据报文接收模块中接收MAC层传输过来的数据报文包,将数据报文包进行缓存,同时计算数据报文包的个数以及数据报文包的拍数,进行流量控制;
第二步,在格式处理模块中接收报文接收模块缓存过的数据报文包,在数据报文包中报文的最前面加上两拍空白头,去除数据报文包的头部,根据剥离出的数据报文包的头部信息,获得报文的长度,报文有无错误等信息;
第三步,在长度校验模块中对格式处理模块处理后的报文进行长度校验,若报文的长度符合数据报文包的头部信息中第一拍低16位记录的数据长度,则将报文送至差错校验模块;若报文的长度不符合数据报文包的头部信息中第一拍低16位记录的数据长度,则不予处理;
第四步,在差错校验模块中对长度校验模块校验后的报文进行差错校验,具体步骤如下:首先将数据报文包的头部信息中除报头校验和的16位外的所有数据报文包的头部信息的低16位与高16位相加,然后将计算溢出的高位部分再循环加进来,将最终的运算结果取反并与报文头部校验和进行校验,若两者相同则表示数据报文信息就是完全正确,将数据包文包传输至填充处理模块进行后续的处理;若两者不同则表示传输过程中出现错误,将出现错误的数据报文包丢弃;
第五步,在填充处理模块中对差错校验模块校验后的数据报文包进行处理,保证数据报文包的大小符合网络层传输的字节要求,若数据报文包的长度小于48字节则填充空白字节将数据报文包的长度补充到48字节;若数据报文包的长度超过1500字节则丢弃冗余信息;填充处理模块调整好数据包文报的大小后,将处理后的数据包文包发送至解封装处理模块;
第六步,在解封装处理模块中接收填充处理模块处理后的数据报文包,并判断传输机制是否与数据报文包的标识相同,若相同则直接将数据报文包发送至提取查找关键字模块;若不同则在数据报文包的头部前加上需要传输的机制的头部,再将加上新头部信息的数据报文包发送至提取查找关键字模块;
第七步,由提取查找关键字模块查找数据报文包的头部信息,将得到的关键字存入存储单元,具体需要查找的关键字有:起始与结束地址Start_end_addr、查询类型Lookup_type、物理端口Sph_port、源IP地址Sip、目标IP地址Dip、协议类型Protocol、源地址端口Sport、目标地址端口Dport和IPV6数据包流标签Flow_lable;存储单元由DDR单元和TCAM单元组成,TCAM单元的地址返回端连接DDR单元输入端,TCAM单元存储关键字的内容,DDR单元存储TCAM单元返回的地址;
第八步,由路由表项查找与结果返回模块查询存储单元中的路由表项信息,若与需要传输的路由信息匹配则返回匹配的结果;若不匹配,则表示查找失败,不进行处理;
第九步,由转发模块根据路由表项查找与结果返回模块查找到的路由表项对数据报文包进行格式调整,去除格式处理模块中加上的两拍空白头,添加数据包文报对应的头部,然后将调整好的报文转发出去;
所述IP报文处理装置应用于OSI模型的第三层。
所述数据报文接收模块,接收来自MAC层的数据报文包。数据报文包中包含有数据总线数据以及各种控制总线数据,且数据位宽不一致。数据总线数据就是报文数据,控制总线包括数据报文包的头部信息与尾部标识符、端口标识符等控制信息。数据报文接收模块负责接收这些数据,并将这些数据缓存到缓存单元。除此之外,数据报文接收模块还同时计算数据报文包的个数以及数据报文包的拍数,控制着接收速度。当流量过大,导致数据报文接收模块来不及接收时,就开始丢弃数据报文信息;而当流量可以接收时,数据报文接收模块才将数据报文包接收下来,缓存到缓存单元。本模块所采用的缓存单元为FIFO,缓存单元按数据报文包接收的先后顺序进行存储,先进先出,取出时,也是一样。
所述格式处理模块,实现的主要功能是在数据报文包中报文的最前面加上两拍的空白头,为后续封装、填充处理填充标志位预留空间。接收到的数据报文包被存入缓存单元后,为了将数据报文接收模块的数据进行有效整合,要将数据包文报封装成一定的格式。报文的头部和尾部都要封装到数据载荷信息里,数据头部也要和数据载荷部分一起作为后续处理的总的数据部分。为了后续的封装和填充,这个格式处理模块还需要对数据报文包的头部信息进行处理,在头部之前再添加保留字段,用于以后的处理操作。由于MAC层传输过来的数据都是帧格式的,而网络层无法识别帧格式的数据,因此,需要去除MAC帧的头部,并根据剥离出的数据报文包的头部信息,获得报文的长度,报文有无错误等信息
所述解封装模块,需要根据转发的主机的要求判断是否需要解封装。由于现在IPV4与IPV6共存,考虑到隧道机制的作用,有可能出现需要在IPV6机制中传输IPV4报文的情况,这样就需要在数据报文包的头部信息之前再加一个IPV6格式的头部,或者,当本身需要在IPV4机制中传输IPV6报文时,就需要在数据报文包的头部信息之前再加一个IPV4格式的头部。这是双栈机制发展的需求,也是当下比较流行的处理方法。
所述提取查找关键字模块负责提取路由表项查找与结果返回模块需要查找使用的比对关键字,将关心的数据信息提取处理,组装成一个较长的查找关键字进行路由表项的查找。本发明中使用片外存储单元存储各种路由表项,通过硬件方式进行路由表项的查找,速度更高,同步性更好。
有益效果
与现有技术相比,本发明的优势在于:
网络层的数据不可避免的会涉及到路由转发,路由表项查找就显得非常重要,这是路由的核心模块。本发明将提取查找关键字模块所要查找的各种路由表项存入片外存储单元,通过硬件方式进行路由表项的查找,速度更高,同步性更好。在具体实现时,利用自制的CAM(内容寻址)存储单元和DDR(DoubleDataRate,双倍数据率)存储单元联合存储路由表项,将内容存储到CAM单元,将对应地址存储到DDR存储单元。这样,可以利用关键字在CAM单元里按内容寻址,得到地址后再利用DDR存储单元双倍存储速率的特点去快速读取DDR存储单元里的内容,结合两种存储单元各自的优势,有效地提高了查找速度。
本发明在需要信息同步的时候自行组织缓冲单元。缓冲单元使用地址访问存储内容,丢失一个地址,该地址对应的内容就随之丢弃,后面的地址和内容还是一一对应的关系,这样就不会访问错误信息,这是非常独特的地方。
本发明利用硬件描述语言实现,不需要设置外部存储硬件。通过硬件描述语言实现外部硬件,并将这些模块做在一个die单元(裸片)内,可以单片实现路由功能,功能强大。
传统的软件查找需要将软件翻译为硬件结构去执行,而本发明直接通过硬件方式进行路由表项的查找,执行效率比软件实现的效率高,因而查找速度更高,同步性更好。
本发明将MAC层数据的处理模块也即本发明中的格式处理模块,单独放到一个模块中,可以对格式处理模块重复利用。这样,格式处理模块可以像IP一样,不需要每次都重新去写,而是可以直接拿过来用,省时省力,节省了人力财力。
本发明为数据报文的处理提供了模块化的处理方法,缩短了后续IP报文的接收处理装置的开发周期,提高了开发质量。
附图说明
图1为七层OSI模型。
图2为本发明装置的流程图。
图3为IPV4头部信息。
图4需要查找的关键字格式。
图5CPU与其他模块交互。
图6封装后的格式。(其中,Phy_sport为物理端口(0-3);Payload为完整IP包;Sop为10;Eop为01;Mty为eop中无效的字节数(0-3);协议域中,0x0021标识Payload里面为IPV4包,0x0057标识Payload里面为IPV6包。)
图7处理后的封装格式。
图8CAM和DDR联合存储数据格式。
图9IPV6包及头部。
具体实施方式
为了突出本发明的技术特点与优势,下面将结合图对本发明进行详细描述。
本发明的关键在于:在网络中的第三层,即网络层(七层OSI模型参见图1),提出一种针对IP数据报文的处理方法及实现装置,为从MAC到网络层的数据报文的处理提供了一种模块化的实现方案。
参考图2装置的流程图,本发明内容如下:
一种IP报文处理装置,其特征在于包括顺序连接的报文接收模块、格式处理模块、长度校验模块、差错校验模块、填充处理模块、解封装处理模块、提取查找关键字模块、路由表项查找与结果返回模块以及转发模块,提取查找关键字模块的输出端连接存储单元的输入端,而存储单元的输出端连接路由表项查找与结果返回模块。
这种IP报文处理装置的处理步骤如下:
第一步,由报文接收模块接收来自MAC层的数据报文包,将MAC层的数据报文包进行缓存,同时计算数据报文包的个数以及数据报文包的拍数,进行流量控制。
报文接收模块,所接收的从MAC层传输过来的数据报文包是一拍一拍的发送过来的。这些数据报文包中包含有各种控制信息,即各种控制总线数据,如,标识报文第一拍的标识符、标识报文最后一拍的标识符以及报文端口标识符。这些数据报文包中除了控制信息外,还记录有数据总线数据,即报文的数据信息,报文的数据信息部分包含头部信息部分和数据部分,数据部分就是通常所说的有效载荷,而头部信息符就是IPV4头或IPV6头。且这些数据位宽均不一致。IPV4头部参考图3,其中包含了处理数据报文的所有信息,包括版本号,长度,头部长度,标识,标识等各个字段。IPV4头的详细信息可参照图3。本发明中的报文接收模块,不仅需要接受数据报文包,还要对数据报文包的流量进行控制。流量控制主要依靠后续的缓冲模块来实现。后续的缓冲模块会设置一个阈值,当MAC层传输来的数据报文包流量过大时,后续的缓冲单元将无法消化接收,也来不及缓存,这时就会进行丢包操作。丢包操作也就是不存储数据报文包,这样超过流量上限的数据报文包将无法传送到下一级处理单元,也就等于丢弃了数据报文包。而当统计的由MAC层传输来的数据报文包的流量可以接收时,数据报文接收模块才将数据报文包接收下来,缓存到缓存单元。本模块所采用的缓存单元为FIFO,缓存单元按数据报文包接收的先后顺序进行存储,先进先出,取出时,也是一样。本模块在接收数据报文信息与进行流量控制时,都需要记录数据报文包的个数以及数据报文包的拍数。为实现这一功能,本模块中还设置有计算器模块,用以记录报文的统计信息。而所有这些操作都要通知CPU,所以,如图2所示,所有模块都会和CPU有交互部分,这个模块也不例外。
第二步,由格式处理模块接收报文接收模块缓存的数据报文包,在数据报文包中报文的最前面加上两拍空白头,去除数据报文包的头部,根据剥离出的数据报文包的头部信息,获得报文的长度,报文有无错误等信息。
格式处理模块在数据报文包中报文的最前面加上两拍空白头为后续封装、填充处理填充标志位预留空间。接收到的数据报文包被存入缓存单元后,为了将数据报文接收模块的数据进行有效整合,要将数据包文报封装成一定的格式。报文的头部和尾部都要封装到数据载荷信息里,数据头部也要和数据载荷部分一起作为后续处理的总的数据部分。为了后续的封装和填充,这个格式处理模块还需要对数据报文包的头部信息进行处理,在头部之前再添加保留字段,用于以后的处理操作。由于MAC层传输过来的数据都是帧格式的,而网络层无法识别帧格式的数据,因此,需要去除MAC帧的头部,并根据剥离出的数据报文包的头部信息,获得报文的长度,报文有无错误等信息
第三步,由长度校验模块对格式处理模块处理后的报文进行长度校验,若报文的长度符合数据报文包的头部信息中第一拍低16位记录的数据长度,则将报文送至差错校验模块;若报文的长度不符合数据报文包的头部信息中第一拍低16位记录的数据长度,则不予处理。长度校验模块的目的主要是为了校验有无丢失数据,本模块可初步验证数据的正确性。
IP报文的头部包含有16位记录的数据长度,这个是原始报文发送时就已经匹配好的。报文的长度与数据长度在理论上是一致的。但是由于网络传输并不能完全可靠,有可能会出现丢失某拍信息的情况,所以有必要校验一下数据长度。只有数据长度信息匹配的报文才能进行下一步操作。如果报文的长度信息都不匹配,那么这个报文必定是不完整的,将是毫无用处的,必须丢失信息的报文丢弃,这是判断报文能否正确传输的第一步。此处以IPV4头为例进行说明,如图3。匹配长度信息时可以看到,IPV4头的第一拍的低16位信息是数据长度信息,长度校验模块也会在接收数据报文包时计算实际到达的数据长度信息,并将计算结果存到计算器里。接收完毕后将提取出的16位数据长度信息与计算器里统计的信息进行比对,如果一致就让数据包通过,送至下一单元,如果不一致就不予处理,也就是丢弃数据报文信息。
第四步,由差错校验模块对长度校验模块校验后的报文进行差错校验。第三步进行长度校验后,并不能完全保证数据报文信息就是完全正确的,如果传输过程中只是某一位或几位发送错误,长度信息没变,但是报文信息的本意已经被改变,所以此时需要采取一定的校验算法校验报文的正确性。差错校验的具体步骤如下:首先将数据报文包的头部信息中除报头校验和的16位外的所有数据报文包的头部信息的低16位与高16位相加,然后将计算溢出的高位部分再循环加进来,将最终的运算结果取反并与报文头部校验和进行校验,若两者相同则表示数据报文信息就是完全正确,将数据包文包传输至填充处理模块进行后续的处理;若两者不同则表示传输过程中出现错误,将出现错误的数据报文包丢弃。差错校验模块主要是利用头部信息中的校验和字段来校验数据报文包是否正确传输的。这样可以进一步检验有没有丢失数据或是出现数据异常。
第五步,由填充处理模块对差错校验模块校验后的数据报文包进行处理,保证数据报文包的大小符合网络层传输的字节要求。若数据报文包的长度小于48字节则填充空白字节将数据报文包的长度补充到48字节;若数据报文包的长度超过1500字节则丢弃冗余信息;填充处理模块调整好数据包文报的大小后,将处理后的数据包文包发送至解封装处理模块。
相应的,由于数据经过填充模块处理后,满足了网络传输时最大最小字节的要求,在数据报文包的长度小于最小字节时进行了一定的填充。因此,当数据进行反向的传输时,到达本模块的数据报文包就一定是经过填充处理的。也就是说,反向的传输时,到达本模块的数据报文包增加了冗余的辅助信息。这时,本模块的作用就转变为去除这些冗余的信息,丢弃填充的辅助信息,留下最真实的数据报文的信息部分。
第六步,由解封装处理模块接收填充处理模块处理后的数据报文包,并根据转发的主机的要求判断传输机制是否与数据报文包的标识相同,判断是否需要进行解封装。现在IPV4与IPV6共存,考虑到隧道机制的作用,有可能出现需要在IPV6机制中传输IPV4报文。这样就需要在数据报文包的头部信息之前再加一个IPV6格式的头部(如图9所示,为IPV6包头部),或者,当本身需要在IPV4机制中传输IPV6报文时,就需要在数据报文包的头部信息之前再加一个IPV4格式的头部。也就是说,若传输机制与数据报文包的标示相同,则直接将数据报文包发送至提取查找关键字模块;若不同则需要在数据报文包的头部前加上需要传输的机制的头部,再将加上新头部信息的数据报文包发送至提取查找关键字模块。这是双栈机制发展的需求,也是当下比较流行的处理方法。封装后的格式如图6所示。而图7表示的是处理后的封装格式。
第七步,由提取查找关键字模块查找数据报文包的头部信息,将路由表项查找与结果返回模块需要查找使用的比对关键字存入存储单元。本模块负责提取,将关心的数据信息提取并处理,组装成一个较长的查找关键字以便后面进行路由表项的查找。在路由转发时,需要知道数据报文信息将要发送到哪里,也就是目的IP地址,同时也要告诉目的主机自己来自己哪里,也就是源IP地址,本模块是基于端口传输,所以也要知道目的端口和源端口信息,由于支持双栈协议,因此还要知道协议类型,因为查找的不仅是一种路由表项,可能有好几种,所以还要针对每个数据报文提取出查找类型,不同的数据报文信息需要查找不同类型的路由表项,因此关键字信息包括起始与结束地址、查询类型、物理端口、源IP地址、目的IP地址、协议类型、源地址端口、目的地址端口和数据包流标签等。因而,具体需要查找的关键字参考图4,包括:起始与结束地址Start_end_addr、查询类型Lookup_type、物理端口Sph_port、源IP地址Sip、目标IP地址Dip、协议类型Protocol、源地址端口Sport、目标地址端口Dport和IPV6数据包流标签Flow_lable。
本模块是为了配合下一步而设置的。在下一步进行路由表项的查找时,需要比对提取出来的关键字信息。因而需要从数据报文的信息部分提取出有效信息,作为第八步所查找的关键字,本模块就是为了提取关键字信息而设的。
本模块将查找到的各种路由表项存入片外存储单元,通过硬件方式进行路由表项的查找,速度更高,同步性更好。片外存储单元由DDR(DoubleDataRate,双倍速率同步动态随机存储器)单元和TCAM(ternarycontentaddressablememory,三态内容寻址存储器)单元组成,TCAM单元的地址返回端连接DDR单元输入端,TCAM单元存储关键字内容,DDR单元存储TCAM单元返回的地址。CAM和DDR联合存储数据具体的实现方式参考图8。DDR单元和TCAM单元这两个外部存储器共同联合存储路由表项,实现路由表项的查找。在具体实现时,TCAM单元存储的关键字内容包括:起始与结束地址Start_end_addr、查询类型Lookup_type、物理端口Sph_port、源IP地址Sip、目标IP地址Dip、协议类型Protocol、源地址端口Sport、目标地址端口Dport和IPV6数据包流标签Flow_lable,而DDR存储单元存储TCAM返回的地址。
第八步,由路由表项查找与结果返回模块查询存储单元中的路由表项信息。若与需要传输的路由信息匹配则返回匹配的结果;若不匹配,则表示查找失败,不进行处理。
网络层的数据不可避免的会涉及到路由转发,而此时,路由表项查找就显得非常重要,这是路由的核心模块,本发明中,借助外部存储器存储路由表项,实现路由表项的查找,大大提高了路由速度。在具体实现时,利用自制的CAM(内容寻址存储单元)和DDR存储模块联合存储路由表项,将内容存储到CAM单元,将对应地址存储到DDR(DoubleDataRate,双倍数据率)存储单元,这样联合存储的方法会更有效率,利用了双方各自的存储优势,即,CAM是内容寻址的,而DDR拥有双倍存储速率。这里结合两者特性存储有效地提高了存储查找速度,而且所有部分不需要外部存储硬件,完全依靠硬件描述语言实现,相当于实现了外部硬件的行为,做成了内部芯片。依靠硬件描述语言,将这些模块做在一个die单元(裸片)内,功能更加强大。本模块需要查找的路由表项包括acl(AccessControlList,访问控制列表)表、pbr(policy-Basedrouting,策略路由)表和net6(网络表)表。这些表项可以有效的明确转发方向和处理机制,根据查找到的表项,找到对应路由,进行转发。
第九步,由转发模块根据路由表项查找与结果返回模块查找到的路由表项对数据报文包进行格式调整,去除格式处理模块中加上的两拍空白头,添加数据包文报对应的头部,然后将调整好的报文转发出去。
转发模块的主要工作就是根据后续模块的要求调整数据格式,然后转发出去。数据报文信息经过了一系列的处理后,路由表项查找与结果返回模块也得到了所需的路由转发信息,明确了目的主机的位置,接下来转发模块的工作就是将这些信息整合,并按照目的主机中的接收机制将数据报文包调整成相应的路由能接收的模式,将所需要的信息封装在头部的预留区域里,这样在下个系统接收时,就可以优先提取信息了。
本发明的重点是存储单元。存储单元存储了步骤8中路由表项查找与查找结果返回模块所要查找的各种路由表项和数据。本发明利用CAM和DDR模块联合存储路由表项,利用硬件描述语言模仿这两个存储单元的行为,在行为级上实现这一功能。由于CAM芯片不开放,不能很好地控制,处理起来也受到多方面的限制,CAM模块一直是路由领域比较难以控制的模块。本发明自行研制CAM模块,结构相对熟悉,控制起来更加方便。至于DDR模块,本发明同样通过硬件描述语言实现其行为级的描述。本发明借助EDA工具将存储单元做成硬件,更方便的实现对存储单元的控制。这种实现方式可以实现两种存储芯片的优势互补,同时结合路由转发的要求,提高性能。
本发明中各个模块均通过CPU模块进行调控,CPU模块配合各个模块的需求完成数据的传输,起到中心控制中枢的作用。本发明中的所有模块都会和CPU单元进行通信,CPU控制着所有模块的传输,本发明附图中简化了存储模块、CPU单元与其他模块之间的连接关系。但之前的描述完全可以推定这些连接关系。图5为CPU与其他模块交互的示意图。
与现有技术相比,本发明的优势在于:
本发明为数据报文的处理提供了模块化的处理方法,缩短了后续IP报文的接收处理装置的开发周期,提高了开发质量。
本发明的关键在于,在本发明中,将MAC的数据处理模块也即本发明中的格式处理模块,单独放到一个模块中,可以对格式处理模块重复利用。
本模块在需要信息同步的时候自行组织缓冲单元。缓冲单元使用地址访问存储内容,丢失一个地址,该地址对应的内容就随之丢弃,下面的地址和内容还是一一对应的关系,这样就不会访问错误信息,这是非常独特的地方。除此之外,本发明还自行编写了CAM单元和DDR3单元用以存储路由表项。
本发明利用硬件描述语言实现,将所有模块都集中到一个芯片中,麻雀虽小五脏俱全,可以单片小范围实现路由功能。
Claims (2)
1.一种IP报文处理装置,其特征在于包括顺序连接的报文接收模块、格式处理模块、长度校验模块、差错校验模块、填充处理模块、解封装处理模块、提取查找关键字模块、路由表项查找与结果返回模块以及转发模块;
报文接收模块接收来自MAC层的数据报文包,将MAC层的数据报文包进行缓存,同时计算数据报文包的个数以及数据报文包的拍数,进行流量控制;
格式处理模块,接收报文接收模块缓存的数据报文包,在数据报文包中报文的最前面加上两拍空白头,去除数据报文包的头部,根据剥离出的数据报文包的头部信息,获得报文的长度,报文有无错误的信息;
长度校验模块,对格式处理模块处理后的报文进行长度校验,若报文的长度符合数据报文包的头部信息中第一拍低16位记录的数据长度,则将报文送至差错校验模块;若报文的长度不符合数据报文包的头部信息中第一拍低16位记录的数据长度,则不予处理;
差错校验模块,对长度校验模块校验后的报文进行差错校验,具体步骤如下:首先将数据报文包的头部信息中除报头校验和的16位外的所有数据报文包的头部信息的低16位与高16位相加,然后将计算溢出的高位部分再循环加进来,将最终的运算结果取反并与报文头部校验和进行校验,若两者相同则表示数据报文信息就是完全正确,将数据包文包传输至填充处理模块进行后续的处理;若两者不同则表示传输过程中出现错误,将出现错误的数据报文包丢弃;
填充处理模块,对差错校验模块校验后的数据报文包进行处理,若数据报文包的长度小于48字节则填充空白字节将数据报文包的长度补充到48字节;若数据报文包的长度超过1500字节则丢弃冗余信息;填充处理模块调整好数据包文报的大小后,将处理后的数据包文包发送至解封装处理模块;
解封装处理模块,接收填充处理模块处理后的数据报文包,并判断传输机制是否与数据报文包的标识相同,若相同则直接将数据报文包发送至提取查找关键字模块;若不同则在数据报文包的头部前加上需要传输的机制的头部,再将加上新头部信息的数据报文包发送至提取查找关键字模块;
提取查找关键字模块,查找数据报文包的头部信息,将得到的关键字存入存储单元,具体需要查找的关键字有:起始与结束地址Start_end_addr、查询类型Lookup_type、物理端口Sph_port、源IP地址Sip、目标IP地址Dip、协议类型Protocol、源地址端口Sport、目标地址端口Dport和IPV6数据包流标签Flow_lable;
存储单元由DDR单元和TCAM单元组成,TCAM单元的地址返回端连接DDR单元输入端,TCAM单元存储关键字的内容,DDR单元存储TCAM单元返回的地址;
路由表项查找与结果返回模块,查询存储单元中的路由表项信息,若与需要传输的路由信息匹配则返回匹配的结果;若不匹配,则表示查找失败,不进行处理;
转发模块,根据路由表项查找与结果返回模块查找到的路由表项对数据报文包进行格式调整,去除格式处理模块中加上的两拍空白头,添加数据包文报对应的头部,然后将调整好的报文转发出去。
2.一种IP报文处理方法,其特征在于,处理步骤如下:
第一步,在数据报文接收模块中接收MAC层传输过来的数据报文包,将数据报文包进行缓存,同时计算数据报文包的个数以及数据报文包的拍数,进行流量控制;
第二步,在格式处理模块中接收报文接收模块缓存过的数据报文包,在数据报文包中报文的最前面加上两拍空白头,去除数据报文包的头部,根据剥离出的数据报文包的头部信息,获得报文的长度,报文有无错误的信息。
第三步,在长度校验模块中对格式处理模块处理后的报文进行长度校验,若报文的长度符合数据报文包的头部信息中第一拍低16位记录的数据长度,则将报文送至差错校验模块;若报文的长度不符合数据报文包的头部信息中第一拍低16位记录的数据长度,则不予处理;
第四步,在差错校验模块中对长度校验模块校验后的报文进行差错校验,具体步骤如下:首先将数据报文包的头部信息中除报头校验和的16位外的所有数据报文包的头部信息的低16位与高16位相加,然后将计算溢出的高位部分再循环加进来,将最终的运算结果取反并与报文头部校验和进行校验,若两者相同则表示数据报文信息就是完全正确,将数据包文包传输至填充处理模块进行后续的处理;若两者不同则表示传输过程中出现错误,将出现错误的数据报文包丢弃;
第五步,在填充处理模块中对差错校验模块校验后的数据报文包进行处理,若数据报文包的长度小于48字节则填充空白字节将数据报文包的长度补充到48字节;若数据报文包的长度超过1500字节则丢弃冗余信息;填充处理模块调整好数据包文报的大小后,将处理后的数据包文包发送至解封装处理模块;
第六步,在解封装处理模块中接收填充处理模块处理后的数据报文包,并判断传输机制是否与数据报文包的标识相同,若相同则直接将数据报文包发送至提取查找关键字模块;若不同则在数据报文包的头部前加上需要传输的机制的头部,再将加上新头部信息的数据报文包发送至提取查找关键字模块;
第七步,由提取查找关键字模块查找数据报文包的头部信息,将得到的关键字存入存储单元,具体需要查找的关键字有:起始与结束地址Start_end_addr、查询类型Lookup_type、物理端口Sph_port、源IP地址Sip、目标IP地址Dip、协议类型Protocol、源地址端口Sport、目标地址端口Dport和IPV6数据包流标签Flow_lable;存储单元由DDR单元和TCAM单元组成,TCAM单元的地址返回端连接DDR单元输入端,TCAM单元存储关键字的内容,DDR单元存储TCAM单元返回的地址。
第八步,由路由表项查找与结果返回模块查询存储单元中的路由表项信息,若与需要传输的路由信息匹配则返回匹配的结果;若不匹配,则表示查找失败,不进行处理;
第九步,由转发模块根据路由表项查找与结果返回模块查找到的路由表项对数据报文包进行格式调整,去除格式处理模块中加上的两拍空白头,添加数据包文报对应的头部,然后将调整好的报文转发出去。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610061358.4A CN105791128B (zh) | 2016-01-28 | 2016-01-28 | 一种ip报文接收处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610061358.4A CN105791128B (zh) | 2016-01-28 | 2016-01-28 | 一种ip报文接收处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105791128A true CN105791128A (zh) | 2016-07-20 |
CN105791128B CN105791128B (zh) | 2018-12-14 |
Family
ID=56403148
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610061358.4A Active CN105791128B (zh) | 2016-01-28 | 2016-01-28 | 一种ip报文接收处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105791128B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107733556A (zh) * | 2016-08-12 | 2018-02-23 | 北京小米移动软件有限公司 | 报文校验方法及装置 |
CN108933756A (zh) * | 2017-05-22 | 2018-12-04 | 深圳市中兴微电子技术有限公司 | 一种数据包的处理方法、接入网设备及计算机可读存储介质 |
CN109639386A (zh) * | 2019-02-18 | 2019-04-16 | 新华三技术有限公司 | 一种报文下发方法及转发设备 |
CN110071782A (zh) * | 2019-04-12 | 2019-07-30 | 广州小鹏汽车科技有限公司 | 报文的处理方法和处理装置 |
CN112134800A (zh) * | 2019-06-25 | 2020-12-25 | 北京新能源汽车股份有限公司 | 一种数据的路由方法、网关、网络路由系统及车辆 |
CN112688885A (zh) * | 2020-12-23 | 2021-04-20 | 新华三大数据技术有限公司 | 一种报文处理方法及装置 |
WO2022073487A1 (zh) * | 2020-10-09 | 2022-04-14 | 中国移动通信有限公司研究院 | 数据传输方法、装置及存储介质 |
CN114866848A (zh) * | 2022-04-02 | 2022-08-05 | 北京广播电视台 | 一种ip化视频主备数据过滤系统和过滤方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR0183322B1 (ko) * | 1996-11-15 | 1999-05-15 | 양승택 | 아이피/아이씨엠피 패킷 체크섬 생성기 |
JP2003046565A (ja) * | 2001-07-31 | 2003-02-14 | Anritsu Corp | Ipヘッダ発生装置 |
JP2007027870A (ja) * | 2005-07-12 | 2007-02-01 | Ntt Electornics Corp | 送信装置、及び、この送信装置に用いて好適なチェックサム算出方法 |
CN101056215A (zh) * | 2006-04-14 | 2007-10-17 | 华为技术有限公司 | 一种网络性能测量方法及系统 |
CN101106495A (zh) * | 2007-08-06 | 2008-01-16 | 哈尔滨工业大学 | 工业以太网精简ip协议的工作过程展现装置及方法 |
-
2016
- 2016-01-28 CN CN201610061358.4A patent/CN105791128B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR0183322B1 (ko) * | 1996-11-15 | 1999-05-15 | 양승택 | 아이피/아이씨엠피 패킷 체크섬 생성기 |
JP2003046565A (ja) * | 2001-07-31 | 2003-02-14 | Anritsu Corp | Ipヘッダ発生装置 |
JP2007027870A (ja) * | 2005-07-12 | 2007-02-01 | Ntt Electornics Corp | 送信装置、及び、この送信装置に用いて好適なチェックサム算出方法 |
CN101056215A (zh) * | 2006-04-14 | 2007-10-17 | 华为技术有限公司 | 一种网络性能测量方法及系统 |
CN101106495A (zh) * | 2007-08-06 | 2008-01-16 | 哈尔滨工业大学 | 工业以太网精简ip协议的工作过程展现装置及方法 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107733556A (zh) * | 2016-08-12 | 2018-02-23 | 北京小米移动软件有限公司 | 报文校验方法及装置 |
CN107733556B (zh) * | 2016-08-12 | 2021-09-07 | 北京小米移动软件有限公司 | 报文校验方法及装置 |
CN108933756A (zh) * | 2017-05-22 | 2018-12-04 | 深圳市中兴微电子技术有限公司 | 一种数据包的处理方法、接入网设备及计算机可读存储介质 |
CN108933756B (zh) * | 2017-05-22 | 2020-06-30 | 深圳市中兴微电子技术有限公司 | 一种数据包的处理方法、接入网设备及计算机可读存储介质 |
CN109639386B (zh) * | 2019-02-18 | 2020-12-29 | 新华三技术有限公司 | 一种报文下发方法及转发设备 |
CN109639386A (zh) * | 2019-02-18 | 2019-04-16 | 新华三技术有限公司 | 一种报文下发方法及转发设备 |
CN110071782A (zh) * | 2019-04-12 | 2019-07-30 | 广州小鹏汽车科技有限公司 | 报文的处理方法和处理装置 |
CN110071782B (zh) * | 2019-04-12 | 2022-03-18 | 广州小鹏汽车科技有限公司 | 报文的处理方法和处理装置 |
CN112134800A (zh) * | 2019-06-25 | 2020-12-25 | 北京新能源汽车股份有限公司 | 一种数据的路由方法、网关、网络路由系统及车辆 |
WO2022073487A1 (zh) * | 2020-10-09 | 2022-04-14 | 中国移动通信有限公司研究院 | 数据传输方法、装置及存储介质 |
CN112688885A (zh) * | 2020-12-23 | 2021-04-20 | 新华三大数据技术有限公司 | 一种报文处理方法及装置 |
CN112688885B (zh) * | 2020-12-23 | 2022-05-24 | 新华三大数据技术有限公司 | 一种报文处理方法及装置 |
CN114866848A (zh) * | 2022-04-02 | 2022-08-05 | 北京广播电视台 | 一种ip化视频主备数据过滤系统和过滤方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105791128B (zh) | 2018-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105791128A (zh) | 一种ip报文接收处理方法及装置 | |
EP2019360B1 (en) | Data processing apparatus and data transfer method | |
CN105187227B (zh) | 一种应用rmap协议实现can总线设备即插即用的装置 | |
CN107689931A (zh) | 一种基于国产fpga的实现以太网交换功能系统及方法 | |
CN108462642B (zh) | 基于fpga的udp/ip硬件协议栈及实现方法 | |
EP3282649A1 (en) | Data packet forwarding | |
JP2001251351A (ja) | パケット交換機における入力パケット処理方式 | |
JP2000244571A (ja) | ネットワーク中継装置及びネットワーク中継方法 | |
CN104158627B (zh) | 一种异构链路多协议的自动识别系统和方法 | |
CN109981479B (zh) | 一种面向prp网络的单窗口动态滑动与冗余管理系统和方法 | |
US8477777B2 (en) | Bridge apparatus and communication method | |
CN111935081B (zh) | 一种数据包脱敏方法和装置 | |
US7606967B2 (en) | Frame transfer method and apparatus | |
CN104639440B (zh) | 一种在网络中实现三层转发并封装协议信息的方法和装置 | |
CN108737278A (zh) | 一种查表方法及装置 | |
JP2006025121A (ja) | フレーム転送方法及びその装置 | |
US10430364B2 (en) | Packet forwarding | |
WO2014086219A1 (zh) | 一种基于外设部件互联总线的内容查找芯片及系统 | |
CN101969404B (zh) | 报文处理的方法及设备 | |
CN113411380B (zh) | 基于fpga可编程会话表的处理方法、逻辑电路和设备 | |
US7653070B2 (en) | Method and system for supporting efficient and cache-friendly TCP session lookup operations based on canonicalization tags | |
CN102263700B (zh) | 一种报文收发方法、装置和系统 | |
US7505460B2 (en) | Address validating data structure used for validating addresses | |
US20040125750A1 (en) | Packet header alignment | |
CN107612848A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 99 No. 214135 Jiangsu New District of Wuxi City Linghu Avenue Applicant after: Dongnan Univ. Address before: 210000 Jiangsu city Nanjing Province four pailou No. 2 Applicant before: Dongnan Univ. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |