报文封装和解封装方法、装置及系统的制作方法

文档序号:7744366阅读:289来源:国知局
专利名称:报文封装和解封装方法、装置及系统的制作方法
技术领域
本发明涉及网络通信技术,尤其涉及一种报文封装和解封装方法、装置及系统。
背景技术
以太网(Ethernet,Eth)技术作为当前常用的局域网组网方式,应用非常广泛。以 太网技术目前广泛应用在有线数据通信、无线数据通信、网络监控等各个领域。由于以太 网本身传输距离有限,当以太网报文需要长距离传输时,需要对以太网报文进行封装后再 传输。现有以太网报文封装方法为剥去以太网报文的前导码(Preamble)和帧起始标志 (Start FrameDelimiter,SFD),将以太网报文的从目前地址(Destination Address,DA)域 到帧校验序列(Frame Check Sequence,FCS)域的内容作为封装后报文的封装净荷。在封装 以太网报文时还需要在该封装净荷前后添加一定格式的控制信息。其中,在封装净荷前面 需要添加帧头(core Header, cHDR)域、帧类型头(type Header, tHDR)域,还可以添加扩展 头(extensionHeader,eHDR)域;封装净荷后面可以添加净荷的帧校验序列(payloadFrame Check Sequence, pFCS)域。 cHDR域包含净荷字节长度指示(Payload Length Indication, PLI)和帧头校验 (core Header Error Check, cHEC) , PLI和cHEC的长度分别为2字节(byte) 。 tHDR域包含 3比特(bit)的帧类型指示(Payload Typeldentif ier, PTI) 、 1比特的帧FCS域是否存在指 示(Payload FCS Identifier, PFI) 、4比特的帧扩展头域是否存在指示(Extension Header Identifier, EXI) 、8比特的帧承载的数据类型指示(User Payload Identifier, UPI)和2 字节的类型头校验(type Header Error Check, tHEC) 。 cHEC和tHEC的计算方法相同。
在实现本发明过程中,发明人发现现有技术至少存在如下问题以太网报文进行 封装时,基本上只需要数据类型为以太网的报文,用较多的比特指示多种数据类型是冗余 的,例如,EXI、 UPI和eHDR是冗余的,由于以太网报文最多9600字节,用占用较多比特的 PLI指示长度会存在冗余比特。

发明内容
本发明实施例是提供一种报文封装和解封装方法、装置及系统,用以解决现有技 术中存在的冗余比特较多的问题。 —方面,本发明实施例提供了一种报文封装方法,包括
接收第一报文; 根据所述第一报文封装后得到第二报文; 其中,所述第二报文包括净荷部分和第一控制信息; 当所述第一报文为以太网报文时,所述净荷部分包括剥离所述以太网报文的前导 码PRE域和帧起始标志SFD域后的内容; 所述第一控制信息仅包含帧头cHDR域,所述cHDR域至少包含净荷字节长度指示 PLI域,使得解封装端接收所述第二报文后根据所述第二报文中的所述PLI域获取相应长
5度的数据报文。 另一方面,本发明实施例提供了一种报文解封装方法,包括
接收第二报文,所述第二报文根据第一报文封装后得到; 所述第二报文包括净荷部分和第一控制信息;其中,当所述第一报文为以太网 报文时,所述净荷部分包括剥离所述以太网报文的前导码PRE域和帧起始标志SFD域后的 内容; 所述第一控制信息仅包含帧头cHDR域,所述cHDR域至少包含净荷字节长度指示 PLI域; 根据所述第二报文中的所述PLI域获取相应长度的数据报文。
—方面,本发明实施例提供了一种报文封装装置,包括
接收模块,用于接收第一报文; 封装模块,用于根据所述第一报文封装后得到第二报文;
其中,所述第二报文包括净荷部分和第一控制信息; 当所述第一报文为以太网报文时,所述净荷部分包括剥离所述以太网报文的前导 码PRE域和帧起始标志SFD域后的内容; 所述第一控制信息仅包含帧头cHDR域,所述cHDR域至少包含净荷字节长度指示 PLI域,使得解封装端接收所述第二报文后根据所述第二报文中的所述PLI域获取相应长 度的数据报文。 另一方面,本发明实施例提供了一种报文解封装装置,包括 接收模块,用于接收第二报文,所述第二报文根据第一报文封装后得到; 所述第二报文包括净荷部分和第一控制信息;其中,当所述第一报文为以太网
报文时,所述净荷部分包括剥离所述以太网报文的前导码PRE域和帧起始标志SFD域后的
内容; 所述第一控制信息仅包含帧头cHDR域,所述cHDR域至少包含净荷字节长度指示 PLI域; 报文获取模块,用于根据所述第二报文中的所述PLI域获取相应长度的数据报 文。 本发明实施例提供了一种报文封装及解封装系统,包括上述报文封装装置以及 报文解封装装置。 由上述技术方案可知,本发明实施例通过在控制信息中仅包含cHDR域,而不再包 含tHDR和eHDR,可以减少冗余比特。


为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本 领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他 的附图。
图1为本发明第一实施例的报文封装方法的流程示意图;
图2为本发明第二实施例的报文解封装方法的流程示意 图3为本发明第三实施例的报文封装方法的流程示意图; 图4为本发明第三实施例的报文封装方法对应的设备结构示意图; 图5为本发明第三实施例的报文封装方法对应的帧结构示意图; 图6为本发明第四实施例的报文解封装方法的流程示意图; 图7为本发明第四实施例的报文解封装方法对应的设备结构示意图; 图8为本发明第五实施例的报文封装方法的流程示意图; 图9为本发明第五实施例的报文封装方法对应的设备结构示意图; 图10为本发明第五实施例的报文封装方法对应的帧结构示意图; 图11为本发明第六实施例的报文解封装方法的流程示意图; 图12为本发明第七实施例的报文封装方法的流程示意图; 图13为本发明第七实施例的报文封装方法对应的设备结构示意图; 图14为本发明第七实施例的报文封装方法对应的帧结构示意图; 图15为本发明第八实施例的报文解封装方法的流程示意图; 图16为本发明第八实施例的报文解封装方法对应的设备结构示意图; 图17为本发明第九实施例的报文封装方法的流程示意图; 图18为本发明第九实施例的报文封装方法对应的结构示意图; 图19为本发明第九实施例的报文封装方法对应的帧结构示意图; 图20为本发明第十实施例的报文解封装方法的流程示意图; 图21为本发明第十一实施例的报文封装装置的结构示意图; 图22为本发明第十二实施例的报文解封装装置结构示意图; 图23为本发明第十三实施例的系统结构示意图。
具体实施例方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例
中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是
本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员
在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。 图1为本发明第一实施例的报文封装方法的流程示意图,包括 步骤ll :接收第一报文; 其中,第一报文为需要封装的报文,可以为以太网报文,也可以为非以太网报文。
步骤12 :根据所述第一报文封装后得到第二报文,其中,所述第二报文包括净荷 部分和第一控制信息,当所述第一报文为以太网报文时,所述净荷部分包括剥离所述以太 网报文的PRE域和SFD域后的内容,所述第一控制信息仅包含帧头cHDR域,所述cHDR域至 少包含PLI域,使得解封装端接收所述第二报文后根据所述第二报文中的所述PLI域获取 相应长度的数据报文。 其中,在报文封装时除了净荷部分还会在净荷部分的前后有控制信息,例如,现有 技术中在净荷部分的前面添加cHDR域、tHDR域和eHDR域,在净荷部分的后面添加pFCS域。 因此,可以将控制信息分为第一控制信息和第二控制信息,将净荷部分前面添加的控制信 息称为第一控制信息,而净荷部分后面添加的控制信息称为第二控制信息。
其中,当系统对以太网报文以及非以太网报文进行封装时,为了区分报文类型,可 以通过在封装后报文中加入相应的域来表示报文类型;例如,通过加入PTI域来表示报文 类型,当PIl 二O时,表明需要封装以太网报文,当PTI = l时,表明需要封装非以太网报文, 该非以太网报文可以为控制报文。如果系统默认只接收以太网报文,则可以不设置PTI域。
本发明例中的控制信息可以位于整个封装后报文的头部,这样在接收端收到封装 后报文后,可以首先取得控制信息(接收报文时先接收报文头部,因此会首先取得控制信 息),根据控制信息对后续的报文内容进行相应操作。 其中,cHDR可以依旧占用4字节,具体可以是包含1比特的PTI、1比特的PFI和 14比特的PLI及2字节的cHEC ;或者,当系统默认不封装pFCS时,包含1比特的PTI和15 比特的PLI及2字节的cHEC ;或者,当系统默认只封装以太网报文时,包含1比特的PFI和 15比特的PLI及2字节的cHEC ;或者,当系统默认不封装pFCS及只封装以太网报文时,包 含16比特的PLI及2字节的cHEC。 进一步地,在封装时,如果需要封装pFCS,则在封装净荷的后面封装pFCS,之后由 cHDR、封装净荷及pFCS组成封装后的报文;如果不需要封装pFCS,则由cHDR及封装净荷组 成封装后的报文。之后,将封装后的报文发送给解封装端。 此外,当本发明实施例需要对以太网报文和非以太网报文两种报文进行封装时, 还包括判断报文属于哪种类型; 判断方法可根据报文发送的端口或指示信息来判断由于以太网报文和非以太网
报文发送的端口一般不相同,因此,可以通过发送端口来判断;此外,也可以通过系统给出
的控制信号来判断需要封装的报文是属于以太网报文还是非以太网报文。 当判断为非以太网报文时,所述第二报文的净荷部分为第一报文。 本实施例通过在控制信息中仅包含cHDR域,而不再包含tHDR和eHDR,可以减少冗
余比特。 对应于第一实施例的封装方法,本发明提供一种解封装方法,参见图2,图2为本 发明第二实施例的报文解封装方法的流程示意图,包括 步骤21 :接收第二报文,所述第二报文根据第一报文封装后得到,所述第二报文 包括净荷部分和第一控制信息;其中,当所述第一报文为以太网报文时,所述净荷部分包 括剥离所述以太网报文的PRE域和SFD域后的内容;所述第一控制信息仅包含cHDR域,所 述cHDR域至少包含PLI域; 步骤22 :根据所述第二报文中的所述PLI域获取相应长度的数据报文。
进一步地,本实施例还可以包括在所述相应长度的数据报文中获取所述第二报 文的净荷部分。例如,当所述第二报文未封装有PFCS域时,所述PLI域指示的相应长度的 数据报文为所述第二报文的净荷部分;当所述第二报文封装有PFCS域时,所述PLI域指示 的相应长度的数据报文去掉最后的所述PFCS域后的内容为所述第二报文的净荷部分。
在获取净荷部分之后还可以包括当所述第一报文为以太网报文时,在所述净荷 部分之外添加PRE域和SFD域后输出以太网帧;或者,当所述第一报文为非以太网报文时, 直接输出所述净荷部分。 其中,所述cHDR域还可以包括PTI域和/或PFI域;PTI域用于指示所述第一报 文是否为以太网报文;所述PFI域用于指示所述第二报文是否封装有pFCS域。本实施例通过在控制信息中仅包含cHDR域,而不再包含tHDR和eHDR,可以减少冗余比特。 图3为本发明第三实施例的报文封装方法的流程示意图,本实施例以cHDR域中包
含PLI、 PTI和PFI及cHEC为例。 图4为本发明第三实施例的报文封装方法对应的设备结构示意图,包括报文封装 装置,其中,输入的数据包括作为输入数据流的以太网报文和非以太网报文、PTI控制信 号(PTI_Ctrl)和PFI控制信号(PFI—Ctrl),输出的数据为封装后报文。
本实施例及下述实施例做如下假设 当PTIj:trl = 0时,表明需要封装的报文为以太网报文,此时,在封装时,将PTI 域置位为0 ; 当PTLCtrl = l时,表明需要封装的报文为非以太网报文,此时,在封装时,将PTI 域置位为1。 当PFI—Ctrl 二O时,表明不需要封装pFCS域,此时,在封装时,将PFI域置位为O ;
当PFI—Ctrl = 1时,表明需要封装pFCS域,此时,在封装时,将PFI域置位为1。
本发明实施例中需要封装的报文的类型是根据上述的PTI_Ctrl来确定的,需要 说明的是,在实际应用中,也可以根据输入的报文的端口来确定,例如,从以太网端口输入 的报文表明需要封装的是以太网报文,从非以太网端口输入的报文表明需要封装的为非以 太网报文。 图5为本发明第三实施例的报文封装方法对应的帧结构示意图,假设需要封装 的报文为以太网报文,则封装前的报文为以太网报文,封装前的以太网报文包括7字节的 PRE、1字节的SFD、6字节的DA、6字节的以太网源地址(Source Address, SA) 、2字节的帧 长或帧类型指示(Length or Type, Ltype) 、64 1535字节的净荷(payload)和4字节的 FCS。之后,将以太网报文的DA域到FCS域的内容封装到封装后报文的0 16K字节的封装 净荷部分,并在封装净荷的前面添加4字节的cHDR域,根据配置的PFI的值,可以在封装净 荷的后面添加4字节的pFCS域,也可以不添加pFCS域。其中,cHDR域中包含l比特的PTI、 1比特的PFI、14比特的PLI及2字节的cHEC。其中,PTI、PFI和PLI的排列顺序并不限于 图4所示的顺序,三者的顺序不存在先后关系,只要保证封装设备和解封装设备中PTI、PFI 和PLI的顺序是一致的即可。
参见图3,本实施例的方法流程包括 步骤301 :开始封装流程后,判断PTI控制信号(PTI_Ctrl)是否为O,若是,执行步 骤303,否则,执行步骤302。 PTI—Ctrl用于表明接收的是以太网报文还是非以太网报文,如果是以太网报文 (PTI_Ctrl = 0),执行步骤303,如果不是,执行步骤302。 步骤302:将PTI置位为1,并获取作为输入的非以太网报文的数据内容,并计算该 数据内容的长度L1。之后,执行步骤305。 步骤303:将PTI置位为0,并判断以太网报文中是否有数据,若是,执行步骤304, 否则,执行步骤310。 步骤304 :剥去以太网报文的PRE域和SFD域,并计算该以太网报文剩余数据的长 度L2。 该剩余数据为以太网报文的DA域到FCS域的内容。
步骤305 :判断PFI_Ctrl是否为O,若是,执行步骤306,否则,执行步骤307。
PFI_Ctrl用于表示是否增加pFCS域,如果是(PFI_Ctrl = 0),则执行步骤306,否 则执行步骤307。 步骤306 :将PFI置位为0,并得到PLI的值,该值为封装净荷部分的长度L,之后, 根据PTI、 PFI和PLI的值得到cHEC。之后,执行步骤309。 例如,当封装的报文为以太网报文时,L = L2,该PLI = L2 (字节);当需要封装的 报文为非以太网报文时,L = Ll,该PLI = Ll(字节)。 根据PTI , PFI , PLI进行CRC校验,生成cHEC ;CRC校验可以采用CRC16等算法;或 者其他类似的检验算法。 步骤307 :将PFI置位为1,并得到PLI的值,该值为封装净荷部分的长度L+pFCS 域的长度(4字节),之后,根据PTI 、 PFI和PLI的值得到cHEC。 例如,假设pFCS域的长度为4字节,则当封装的为以太网报文时,该PLI = L2+4 (字节);当封装的为非以太网报文时,该PLI = Ll+4 (字节)。 根据PTI, PFI, PLI进行CRC校验,生成cHEC ;CRC校验可以采用CRC16、 CRC32等 算法;或者其他类似的检验算法。 步骤308 :计算pFCS的值,将计算得到的值填充在封装净荷后面的pFCS域中。
其中,根据封装净荷进行CRC校验,生成pFCS ;CRC校验可以采用CRC32等算法;或 者其他类似的检验算法。 步骤309 :将所有域的内容按照顺序连接在一起后得到封装后报文,完成报文封 装流程。 具体为,将上述域按照cHDR-封装净荷-pFCS的顺序进行组合。
步骤310 :输出4字节的全0数据,之后,结束封装流程。
上述封装流程还可以以如下顺序进行,例如 第一步,计算非以太网报文的长度LI及以太网报文除去PRE域和SFD域后的长度 L2 ;L1、L2的计算无时序限制关系。 第二步,根据PTI_Ctrl的值置位PTI及得到PLI'的值,例如,假设PTI_Ctrl = 0 表明封装的为以太网报文,则当PTI—Ctrl = 0时,PLI' = L2,当PTI—Ctrl = 1时,PLI'= Ll。 第三步,根据PFI—Ctrl的值置位PFI及得到pFCS的值及PLI的值,例如,假设PFI— Ctrl = 0表明不需要封装pFCS域,pFCS域的长度为4字节,则当PFI—Ctrl = 0时,PLI = PLI',当PFI—Ctrl = 1时,PLI =PLI'+4。其中,计算pFCS的值的方式可以参见上述流程, 计算pFCS的值与计算PLI的值无时序限制关系。 第四步,根据PTI、PFI和PLI组成的16比特数据计算得到cHEC的值。 第五步,按照cHDR、封装净荷、pFCS的顺序将对应的域内的内容连接在一起得到
封装后的数据,并输出封装后的数据。 或者,改变PFI、PTI的计算顺序,即上述的第二步及第三步的关系还可以如下
第二步根据PFI—Ctrl的值置位PFI及计算pFCS的值及更新后的报文长度的值, 其中,计算PFCS的值的方式可以参见上述流程。更新后的报文长度的值分别为当PFI— Ctrl = 1时,Ll' = Ll+4, L2' = L2 ;当PFI_Ctrl = 0时,Ll' = Ll, L2' = L2。
第三步根据PTI—Ctrl的值置位PTI,并根据PTI—Ctrl的值及更新后的报文长度 的值计算PLI,其中,当PTI_Ctrl = 0时,PLI = L2';当PTI_Ctrl = 1时,PLI = LI'。
本实施例根据以太网报文封装的具体要求,通过节省tHDR域和eHDR域,包含解码 端解码时所必须的PLI域,可以降低比特开销,减少冗余比特数目;同时本实施例还可以在 cHDR域中包括PTI域和PFI域,可以选择封装以太网报文及非以太网报文,选择是否封装 pFCS域,提高灵活性。 第三实施例描述了一种报文封装方法,与之对应的解封装方法可以如图6所示。
图6为本发明第四实施例的报文解封装方法的流程示意图,图7为本发明第四实 施例的报文解封装方法对应的设备结构示意图。参见图7,包括报文解封装装置,输入的数 据为解封装前报文,输出的数据为以太网报文及非以太网报文。
参见图6,本实施例的方法流程包括
步骤601 :获取正确的cHDR域的内容。 例如,从输入数据中获取32比特的数据,计算该32比特的数据的前16比特数据 的HEC值,如果计算得到的HEC值与该32比特的数据的后16比特数据的值相同,则该32比 特的数据为正确的cHDR域的内容。当计算得到的HEC值域该32比特的数据的后16比特数 据的值不相同,则对输入数据进行移位操作,重新计算移位后的数据的前16比特的HEC值 是否与移位后的数据的后16比特的值相同。不断移位直至前16比特的HEC值与后16比 特的值相同。 步骤602 :从cHDR域中获取PTI、PFI禾PPLI。
步骤603 :获取cHDR域后PLI指示的长度的数据。
步骤604 :在该PLI指示的长度的数据中获取封装净荷。 例如,当PFI 二O时,表明不需添加pFCS域,则该PLI指示的长度的数据即为封装 净荷;当PFI = 1时,表明需要添加pFCS域,则该PLI指示的长度的数据中除了最后4字节 的数据之外即为封装净荷。 其中,当存在pFCS域时,可以对封装净荷进行FCS,当对封装净荷进行FCS后得到 的数值与PFCS域中包含的数值相同时,表明数据传递正确,否则,当两者的数值不一致时, 表明数据传递错误。 由于封装前的以太网报文本身存在FCS域,通过该FCS域可以实现净荷数据的 FCS,因此,封装后的报文可以不包含pFCS域,此时,无需再对解封装后的封装净荷进行 FCS。 步骤605 :根据PTI判断该封装净荷是否为以太网报文,若是,执行步骤606,否则, 执行步骤607。 例如,当PTI = 0时,表明封装净荷为以太网报文,当PTI = 1时,表明封装净荷为 非以太外网报文。 步骤606 :在封装净荷的前面添加PRE和SFD后,得到解封装后的以太网报文。
步骤607 :输出该封装净荷,该封装净荷即为解封装后的非以太网报文。
本实施例根据以太网报文封装的具体要求,通过节省tHDR域和eHDR域,包含解码 端解码时所必须的PLI域,可以降低比特开销,减少冗余比特数目;同时本实施例 还可以在 cHDR域中包括PTI域和PFI域,可以选择封装以太网报文及非以太网报文,选择是否封装pFCS域,提高灵活性。 图8为本发明第五实施例的报文封装方法的流程示意图,本实施例以系统默认不 封装pFCS域为例,此时cHDR域中只包含PLI、PTI及cHEC。 图9为本发明第五实施例的报文封装方法对应的设备结构示意图,包括报文封装 装置,其中,输入的数据分别为作为输入数据流的以太网报文和非以太网报文、预先配置 的配置参数PTI—Ctrl,输出的数据为封装后报文。假设当PTI—Ctrl =0时,表明需要封装 的报文为以太网报文;当PTI—Ctrl = 1时,表明需要封装的报文为非以太网报文。
图10为本发明第五实施例的报文封装方法对应的帧结构示意图,假设需要封装 的报文为以太网报文,则封装前的报文为以太网报文,封装前的以太网报文包括7字节 的PRE、1字节的SFD、6字节的DA、6字节的SA、2字节的Ltype、64 1535字节的净荷 (payload)和4字节的FCS。之后,将以太网报文的DA域到FCS域的内容封装到封装后报 文的封装净荷部分,并在封装净荷的前面添加cHDR域,由于默认不封装pFCS域,则在封装 净荷的后面不添加pFCS域。其中,cHDR域中包含1比特的PTI、15比特的PLI及2字节的 cHEC。其中,PTI、PLI的排列顺序并不限于图IO所示的顺序,三者的顺序不存在先后关系, 只要保证封装设备和解封装设备中PTI和PLI的顺序是一致的即可。 参见图8,本实施例与图3所示实施例的区别在于本实施例不需判断PFI_Ctrl,不
需封装pFCS域,而是直接按照PFI_Ctrl = 0执行,本实施例的方法流程包括 步骤801 :开始封装流程后,判断PTI控制信号(PTI_Ctrl)是否为O,若是,执行步
骤803,否则,执行步骤802。 PTI—Ctrl用于表明接收的是以太网报文还是非以太网报文,如果是以太网报文 (PTI_Ctrl = 0),执行步骤303,如果不是,执行步骤302。 步骤802:将PTI置位为1,并获取作为输入的非以太网报文的数据内容,并计算该 数据内容的长度L1。之后,执行步骤805。 步骤803 :将PTI置位为0,并判断以太网报文中是否有数据,若是,执行步骤804, 否则,执行步骤807。 步骤804 :剥去以太网报文的PRE域和SFD域,并计算该以太网报文剩余数据的长 度L2。 步骤805 :得到PLI的值,该值为封装净荷部分的长度L,之后,根据PTI和PLI的 值得到cHEC。 例如,当封装的报文为以太网报文时,L = L2,该PLI = L2(字节);当需要封装的 报文为非以太网报文时,L = L1,该PLI = Ll(字节)。 根据PTI和PLI进行CRC校验,生成cHEC ;CRC校验可以采用CRC16、 CRC32等算 法;或者其他类似的检验算法。 步骤806 :将所有域的内容按照顺序连接在一起后得到封装后报文,完成报文封 装流程。 具体为,将上述域按照cHDR-封装净荷-pFCS的顺序进行组合。
步骤807 :输出4字节的全0数据,之后,结束封装流程。 本实施例根据以太网报文封装的具体要求,通过节省tHDR域和eHDR域,包含解码 端解码时所必须的PLI域,可以降低比特开销,减少冗余比特数目;同时本实施例默认不封装pFCS域,可以不包含PFI域,可以进一步减少比特开销。 第五实施例描述了一种报文封装方法,与之对应的解封装方法可以如图11所示。 图11为本发明第六实施例的报文解封装方法的流程示意图,该报文解封装方法
对应的设备结构示意图可以参见图7,包括报文解封装装置,输入的数据为解封装前的报
文,输出的数据为以太网报文及非以太网报文。 参见图11 ,本实施例的方法流程包括 步骤1101 :获取正确的cHDR域的内容。 步骤1102 :从cHDR域中获取PTI禾PPLI。 步骤1103 :获取封装净荷,其中该cHDR域后PLI指示的长度的数据即为封装净 荷。 由于封装前的以太网报文本身存在FCS域,通过该FCS域可以实现净荷数据的 FCS,因此,封装后的报文可以不包含pFCS域,此时,无需再对解封装后的封装净荷进行 FCS。 步骤1104 :根据PTI判断该封装净荷是否为以太网报文,若是,执行步骤1105,否 则,执行步骤1106。 例如,当PTI = 0时,表明封装净荷为以太网报文,当PTI = 1时,表明封装净荷为 非以太外网报文。 步骤1105 :在封装净荷的前面添加PRE和SFD后,得到解封装后的以太网报文。
步骤1106 :输出该封装净荷,该封装净荷即为解封装后的非以太网报文。
本实施例根据以太网报文封装的具体要求,通过节省tHDR域和eHDR域,包含解码 端解码时所必须的PLI域,可以降低比特开销,减少冗余比特数目;同时本实施例默认不封 装pFCS域,可以不包含PFI域,可以进一步减少比特开销。 图12为本发明第七实施例的报文封装方法的流程示意图,本实施例以系统默认 只封装以太网报文为例,此时cHDR域中只包含PLI和PFI及cHEC为例。
图13为本发明第七实施例的报文封装方法对应的设备结构示意图,包括报文封 装装置,其中,输入的数据分别为作为输入数据流的以太网报文、控制信号PFI—Ctrl,输 出的数据为封装后报文。假设当PFI_Ctrl = 0时,表明不需要封装pFCS域;当PFI_Ctrl =1时,表明需要封装pFCS域。 图14为本发明第七实施例的报文封装方法对应的帧结构示意图,假设需要封装 的报文为以太网报文,则封装前的报文为以太网报文,封装前的以太网报文包括7字节 的PRE、1字节的SFD、6字节的DA、6字节的SA、2字节的Ltype、64 1535字节的净荷 (payload)和4字节的FCS。之后,将以太网报文的DA域到FCS域的内容封装到封装后报 文的封装净荷部分,并在封装净荷的前面添加cHDR域,根据配置的PFI的值,可以在封装净 荷的后面添加pFCS域,也可以不添加pFCS域。其中,cHDR域中包含1比特的PFI、15比特 的PLI及2字节的cHEC。其中,PFI和PLI的排列顺序并不限于图4所示的顺序,三者的顺 序不存在先后关系,只要保证封装设备和解封装设备中PFI和PLI的顺序是一致的即可。
参见图12,本实施例与图3所示实施例的区别在于本实施例不需判断PTI_Ctrl, 而是直接按照PTI_Ctrl = 0执行,本实施例的方法流程包括 步骤12Q1 :将PTI置位为O,并判断以太网报文中是否有数据,若是,执行步骤
131202,否则,执行步骤1208。 步骤1202 :剥去以太网报文的PRE域和SFD域,并计算该以太网报文剩余数据的 长度L2。 该剩余数据为以太网报文的DA域到FCS域的内容。 步骤1203 :判断PFI—Ctrl是否为O,若是,执行步骤1204,否则,执行步骤1205。
PFI_Ctrl用于表示是否增加pFCS域,如果是(PFI_Ctrl = 0),则执行步骤1204, 否则执行步骤1205。 步骤1204 :将PFI置位为0,并得到PLI的值,该值为封装净荷部分的长度L,之后, 根据PTI、PFI和PLI的值得到cHEC。之后,执行步骤1207。 例如,当封装的报文为以太网报文时,L = L2,该PLI = L2(字节);当需要封装的 报文为非以太网报文时,L = Ll,该PLI = Ll(字节)。 根据PTI,PFI,PLI进行CRC校验,生成cHEC ;CRC校验可以采用CRC16等算法;或 者其他类似的检验算法。 步骤1205 :将PFI置位为1,并得到PLI的值,该值为封装净荷部分的长度L+pFCS 域的长度(4字节),之后,根据PTI、PFI和PLI的值得到cHEC。 例如,假设pFCS域的长度为4字节,则当封装的为以太网报文时,该PLI = L2+4 (字节);当封装的为非以太网报文时,该PLI = Ll+4 (字节)。 根据PTI, PFI, PLI进行CRC校验,生成cHEC ;CRC校验可以采用CRC16、 CRC32等 算法;或者其他类似的检验算法。 步骤1206 :计算pFCS的值,将计算得到的值填充在封装净荷后面的pFCS域中。
其中,根据封装净荷进行CRC校验,生成pFCS ;CRC校验可以采用CRC32等算法;或 者其他类似的检验算法。 步骤1207 :将所有域的内容按照顺序连接在一起后得到封装后报文,完成报文封 装流程。 具体为,将上述域按照cHDR-封装净荷-pFCS的顺序进行组合。
步骤1208 :输出4字节的全0数据,之后,结束封装流程 本实施例根据以太网报文封装的具体要求,通过节省tHDR域和eHDR域,包含解码 端解码时所必须的PLI域,可以降低比特开销,减少冗余比特数目;同时本实施例默认仅封 装以太网报文,可以不包含PTI域,可以进一步减少比特开销。 第七实施例描述了一种报文封装方法,与之对应的解封装方法可以如图15所示。
图15为本发明第八实施例的报文解封装方法的流程示意图,图16为本发明第八 实施例的报文解封装方法对应的设备结构示意图。参见图16,包括报文解封装装置,输入的
数据为解封装前的报文,输出的数据为以太网报文。
参见图15,本实施例的方法流程包括
步骤1501 :获取正确的cHDR域的内容。 例如,从输入数据中获取32比特的数据,计算该32比特的数据的前16比特数据 的HEC值,如果计算得到的HEC值与该32比特的数据的后16比特数据的值相同,则该32比 特的数据为正确的cHDR域的内容。当计算得到的HEC值域该32比特的数据的后16比特数 据的值不相同,则对输入数据进行移位操作,重新计算移位后的数据的前16比特的HEC值是否与移位后的数据的后16比特的值相同。不断移位直至前16比特的HEC值与后16比 特的值相同。 步骤1502 :从cHDR域中获取PFI和PLI。 步骤1503 :获取cHDR域后PLI指示的长度的数据。 步骤1504 :在该PLI指示的长度的数据中获取封装净荷。 步骤1505 :在封装净荷的前面添加PRE和SFD后,输出解封装后的以太网报文。
本实施例根据以太网报文封装的具体要求,通过节省tHDR域和eHDR域,包含解码 端解码时所必须的PLI域,可以降低比特开销,减少冗余比特数目;同时本实施例默认仅封 装以太网报文,可以不包含PTI域,可以进一步减少比特开销。 图17为本发明第九实施例的报文封装方法的流程示意图,本实施例以系统默认 不封装pFCS域及只封装以太网报文为例,此时cHDR域中只包含PLI及cHEC。
图18为本发明第九实施例的报文封装方法对应的结构示意图,包括报文封装装 置,其中,输入的数据分别为作为输入数据流的以太网报文,输出的数据为封装后报文。
图19为本发明第九实施例的报文封装方法对应的帧结构示意图,假设需要封装 的报文为以太网报文,则封装前的报文为以太网报文,封装前的以太网报文包括7字节 的PRE、1字节的SFD、6字节的DA、6字节的SA、2字节的Ltype、64 1535字节的净荷 (payload)和4字节的FCS。之后,将以太网报文的DA域到FCS域的内容封装到封装后报 文的封装净荷部分,并在封装净荷的前面添加cHDR域,由于默认不封装pFCS域,则在封装 净荷的后面不添加pFCS域。其中,cHDR域中包含16比特的PLI及2字节的cHEC。
参见图17,本实施例与图3所示实施例的区别在于本实施例不需判断PFI—Ctrl及 PTI_Ctrl,不需封装pFCS域,而是直接按照PFI_Ctrl = 0及PTI_Ctrl = 0执行,本实施例 的方法流程包括 步骤1701 :将PTI置位为O,并判断以太网报文中是否有数据,若是,执行步骤 1702,否则,执行步骤1705。 步骤1702 :剥去以太网报文的PRE域和SFD域,并计算该以太网报文剩余数据的 长度L2。 该剩余数据为以太网报文的DA域到FCS域的内容。 步骤1703 :将PFI置位为0,并得到PLI的值,该值为封装净荷部分的长度L,之后, 根据PTI、 PFI和PLI的值得到cHEC。 步骤1704 :将所有域的内容按照顺序连接在一起后得到封装后报文,完成报文封 装流程。 具体为,将上述域按照cHDR-封装净荷-pFCS的顺序进行组合。
步骤1705 :输出4字节的全0数据,之后,结束封装流程。本实施例根据以太网 报文封装的具体要求,通过节省tHDR域和eHDR域,包含解码端解码时所必须的PLI域,可 以降低比特开销,减少冗余比特数目;同时本实施例默认不封装pFCS域及仅封装以太网报 文,可以不包含PFI域及PTI域,可以进一步减少比特开销。 第九实施例描述了一种报文封装方法,与之对应的解封装方法可以如图20所示。
图20为本发明第十实施例的报文解封装方法的流程示意图,该报文解封装方法 对应的设备结构示意图可以参见图16,包括报文解封装装置,输入的数据为解封装前的报文,输出的数据为以太网报文。
参见图20,本实施例的方法流程包括
步骤2001 :获取正确的cHDR域的内容。
步骤2002 :从cHDR域中获取PLI。 步骤2003 :获取封装净荷,其中该cHDR域后PLI指示的长度的数据即为封装净 荷。 步骤2004 :在封装净荷的前面添加PRE和SFD后,得到解封装后的以太网报文。
本实施例根据以太网报文封装的具体要求,通过节省tHDR域和eHDR域,包含解码 端解码时所必须的PLI域,可以降低比特开销,减少冗余比特数目;同时本实施例默认不封 装pFCS域及仅封装以太网报文,可以不包含PFI域及PTI域,可以进一步减少比特开销。
图21为本发明第十一实施例的报文封装装置的结构示意图,包括接收模块211和 封装模块212 ;接收模块211用于接收第一报文;封装模块212用于根据所述第一报文封装 后得到第二报文;其中,所述第二报文包括净荷部分和第一控制信息;当所述第一报文为 以太网报文时,所述净荷部分包括剥离所述以太网报文的PRE域和SFD域后的内容;所述第 一控制信息仅包含cHDR域,所述cHDR域至少包含PLI域,使得解封装端接收所述第二报文 后根据所述第二报文中的所述PLI域获取相应长度的数据报文。进一步地,所述cHDR域还 包括PTI域和/或PFI域;其中,所述PTI域用于指示所述第一报文是否为以太网报文;所 述PFI域用于指示所述第二报文是否封装有pFCS域,当存在所述pFCS域时,将所述pFCS 域封装到所述第二报文。 其中,当所述cHDR域仅包含所述PLI域和所述PTI域时,所述PLI域占用15比 特,所述PTI域占用1比特;或者,当所述cHDR域仅包含所述PLI域和所述PFI域时,所述 PLI域占用15比特,所述PFI域占用1比特;或者,当所述cHDR域仅包含所述PLI域时,所 述PLI域占用16比特;或者,当所述cHDR域包含所述PLI域、所述PTI域和所述PFI域时, 所述PLI域占用14比特,所述PTI域占用1比特,所述PFI域占用1比特。
进一步地,本实施例还可以包括PTI获取模块213和/或PFI获取模块214 ;PTI 获取模块213用于当所述cHDR域包含所述PTI域时,接收PTI控制信号,所述PTI控制信 号用于表明所述第一报文是否为以太网报文,并根据所述PTI控制信号对所述PTI域进行 置位操作,以便所述PTI域用于指示所述第一报文是否为以太网报文;PFI获取模块214用 于当所述cHDR域包含所述PFI域时,接收PFI控制信号,所述PFI控制信号用于表明是否 需要封装PFCS域,并根据所述PFI控制信号对所述PFI域进行置位操作,以便所述PFI域 用于指示所述第二报文是否封装有PFCS域。
上述模块的具体功能可以参见方法实施例,不再赘述。 本实施例通过在控制信息中仅包含cHDR域,而不再包含tHDR和eHDR,可以减少冗 余比特。 图22为本发明第十二实施例的报文解封装装置结构示意图,包括接收模块221和 报文获取模块222 ;接收模块221用于接收第二报文,所述第二报文根据第一报文封装后 得到;所述第二报文包括净荷部分和第一控制信息;其中,当所述第一报文为以太网报文 时,所述净荷部分包括剥离所述以太网报文的PRE域和SFD域后的内容;所述第一控制信息 仅包含cHDR域,所述cHDR域至少包含PLI域;报文获取模块222用于根据所述第二报文中的所述PLI域获取相应长度的数据报文。 进一步地,本实施例还可以包括净荷获取模块223,净荷获取模块223用于在所 述相应长度的数据报文中获取所述第二报文的净荷部分;其中,当所述第二报文未封装有 pFCS域时,所述PLI域指示的相应长度的数据报文为所述第二报文的净荷部分;当所述第 二报文封装有pFCS域时,所述PLI域指示的相应长度的数据报文去掉最后的所述pFCS域 后的内容为所述第二报文的净荷部分。 本实施例还可以包括输出模块224,输出模块224用于当所述第一报文为以太网 报文时,在所述净荷部分之外添加PRE域和SFD域后输出以太网帧;或者,用于当所述第一 报文为非以太网报文时,直接输出所述净荷部分。 进一步地,所述cHDR域还可以包括PTI域和/或PFI域;其中,所述PTI域用于 指示所述第一报文是否为以太网报文;所述PFI域用于指示所述第二报文是否封装有pFCS 域。 报文获取模块净荷获取模块报文获取模块净荷获取模块净荷获取模块上述模块 的具体功能可以参见方法实施例,不再赘述。 本实施例通过在控制信息中仅包含cHDR域,而不再包含tHDR和eHDR,可以减少冗 余比特。 图23为本发明第十三实施例的系统结构示意图,包括报文封装装置231和报文解 封装装置232。其中,报文封装装置231可以如图21所示,报文解封装装置232可以如22 所示。 本实施例通过在控制信息中仅包含cHDR域,而不再包含tHDR和eHDR,可以减少冗 余比特。 综上所述,本发明实施例的净荷部分的前面仅包含cHDR域,而不包含tHDR域及 eHDR域,可以减少字节开销;由于现有PLI存在冗余,本发明实施例通过降低PLI占用的比 特数,可以将PFI和/或PTI在cHDR域中表示,实现在满足需求的基础上,可以表征数据类 型及是否携带pFCS域;由于以太网报文中自带FCS域,因此本发明实施例可以在默认情况 下不携带PFCS域,降低比特开销;本发明实施例可以用PTI指示数据类型,可以不仅封装以 太网报文,还可以封装非以太网报文,提高灵活性。 本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过 程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序 在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括R0M、 RAM、磁碟或者 光盘等各种可以存储程序代码的介质。 最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽 管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然 可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替 换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精 神和范围。
权利要求
一种报文封装方法,其特征在于,包括接收第一报文;根据所述第一报文封装后得到第二报文;其中,所述第二报文包括净荷部分和第一控制信息;当所述第一报文为以太网报文时,所述净荷部分包括剥离所述以太网报文的前导码PRE域和帧起始标志SFD域后的内容;所述第一控制信息仅包含帧头cHDR域,所述cHDR域至少包含净荷字节长度指示PLI域,使得解封装端接收所述第二报文后根据所述第二报文中的所述PLI域获取相应长度的数据报文。
2. 根据权利要求1所述的方法,其特征在于所述cHDR域还包括帧类型指示PTI域和/或帧校验序列域是否存在指示PFI域;其中,所述PTI域用于指示所述第一报文是否为以太网报文;所述PFI域用于指示所述第二报文是否封装有pFCS域,当存在所述pFCS域时,将所述 pFCS域封装到所述第二报文。
3. 根据权利要求2所述的方法,其特征在于,当所述cHDR域仅包含所述PLI域和所述PTI域时,所述PLI域占用15比特,所述PTI 域占用1比特; 或者,当所述cHDR域仅包含所述PLI域和所述PFI域时,所述PLI域占用15比特,所述PFI 域占用1比特; 或者,当所述cHDR域仅包含所述PLI域时,所述PLI域占用16比特; 或者,当所述cHDR域包含所述PLI域、所述PTI域和所述PFI域时,所述PLI域占用14比特, 所述PTI域占用1比特,所述PFI域占用1比特。
4. 根据权利要求2所述的方法,其特征在于,还包括当所述cHDR域包含所述PTI域时,接收PTI控制信号,所述PTI控制信号用于表明所 述第一报文是否为以太网报文,并根据所述PTI控制信号对所述PTI域进行置位操作,以便 所述PTI域用于指示所述第一报文是否为以太网报文;或者,当所述cHDR域包含所述PFI域时,接收PFI控制信号,所述PFI控制信号用于表明是 否需要封装pFCS域,并根据所述PFI控制信号对所述PFI域进行置位操作,以便所述PFI 域用于指示所述第二报文是否封装有PFCS域。
5. —种报文解封装方法,其特征在于,包括 接收第二报文,所述第二报文根据第一报文封装后得到;所述第二报文包括净荷部分和第一控制信息;其中,当所述第一报文为以太网报文 时,所述净荷部分包括剥离所述以太网报文的前导码PRE域和帧起始标志SFD域后的内 容;所述第一控制信息仅包含帧头cHDR域,所述cHDR域至少包含净荷字节长度指示PLI域;根据所述第二报文中的所述PLI域获取相应长度的数据报文。
6. 根据权利要求5所述的方法,其特征在于,还包括 在所述相应长度的数据报文中获取所述第二报文的净荷部分;其中,当所述第二报文未封装有PFCS域时,所述PLI域指示的相应长度的数据报文为 所述第二报文的净荷部分;当所述第二报文封装有PFCS域时,所述PLI域指示的相应长度 的数据报文去掉最后的所述PFCS域后的内容为所述第二报文的净荷部分。
7. 根据权利要求5所述的方法,其特征在于,还包括当所述第一报文为以太网报文时,在所述净荷部分之外添加PRE域和SFD域后输出以 太网帧; 或者,当所述第一报文为非以太网报文时,直接输出所述净荷部分。
8. 根据权利要求5所述的方法,其特征在于所述cHDR域还包括帧类型指示PTI域和/或帧校验序列域是否存在指示PFI域; 其中,所述PTI域用于指示所述第一报文是否为以太网报文; 所述PFI域用于指示所述第二报文是否封装有pFCS域。
9. 一种报文封装装置,其特征在于,包括 接收模块,用于接收第一报文;封装模块,用于根据所述第一报文封装后得到第二报文; 其中,所述第二报文包括净荷部分和第一控制信息;当所述第一报文为以太网报文时,所述净荷部分包括剥离所述以太网报文的前导码 PRE域和帧起始标志SFD域后的内容;所述第一控制信息仅包含帧头cHDR域,所述cHDR域至少包含净荷字节长度指示PLI 域,使得解封装端接收所述第二报文后根据所述第二报文中的所述PLI域获取相应长度的 数据报文。
10. 根据权利要求9所述的装置,其特征在于所述cHDR域还包括帧类型指示PTI域和/或帧校验序列域是否存在指示PFI域; 其中,所述PTI域用于指示所述第一报文是否为以太网报文;所述PFI域用于指示所述第二报文是否封装有pFCS域,当存在所述pFCS域时,将所述 pFCS域封装到所述第二报文。
11. 根据权利要求io所述的装置,其特征在于,当所述cHDR域仅包含所述PLI域和所述PTI域时,所述PLI域占用15比特,所述PTI 域占用1比特; 或者,当所述cHDR域仅包含所述PLI域和所述PFI域时,所述PLI域占用15比特,所述PFI 域占用1比特; 或者,当所述cHDR域仅包含所述PLI域时,所述PLI域占用16比特;或者,当所述cHDR域包含所述PLI域、所述PTI域和所述PFI域时,所述PLI域占用14比特, 所述PTI域占用1比特,所述PFI域占用1比特。
12. 根据权利要求10所述的装置,其特征在于,还包括PTI获取模块,用于当所述cHDR域包含所述PTI域时,接收PTI控制信号,所述PTI控 制信号用于表明所述第一报文是否为以太网报文,并根据所述PTI控制信号对所述PTI域 进行置位操作,以便所述PTI域用于指示所述第一报文是否为以太网报文;或者,PFI获取模块,用于当所述cHDR域包含所述PFI域时,接收PFI控制信号,所述PFI控 制信号用于表明是否需要封装PFCS域,并根据所述PFI控制信号对所述PFI域进行置位操 作,以便所述PFI域用于指示所述第二报文是否封装有pFCS域。
13. —种报文解封装装置,其特征在于,包括接收模块,用于接收第二报文,所述第二报文根据第一报文封装后得到; 所述第二报文包括净荷部分和第一控制信息;其中,当所述第一报文为以太网报文时,所述净荷部分包括剥离所述以太网报文的前导码PRE域和帧起始标志SFD域后的内容;所述第一控制信息仅包含帧头cHDR域,所述cHDR域至少包含净荷字节长度指示PLI域;报文获取模块,用于根据所述第二报文中的所述PLI域获取相应长度的数据报文。
14. 根据权利要求13所述的装置,其特征在于,还包括净荷获取模块,用于在所述相应长度的数据报文中获取所述第二报文的净荷部分; 其中,当所述第二报文未封装有PFCS域时,所述PLI域指示的相应长度的数据报文为 所述第二报文的净荷部分;当所述第二报文封装有pFCS域时,所述PLI域指示的相应长度 的数据报文去掉最后的所述PFCS域后的内容为所述第二报文的净荷部分。
15. 根据权利要求13所述的装置,其特征在于,还包括输出模块,用于当所述第一报文为以太网报文时,在所述净荷部分之外添加PRE域和 SFD域后输出以太网帧;或者,用于当所述第一报文为非以太网报文时,直接输出所述净荷 部分。
16. 根据权利要求13所述的装置,其特征在于所述cHDR域还包括帧类型指示PTI域和/或帧校验序列域是否存在指示PFI域; 其中,所述PTI域用于指示所述第一报文是否为以太网报文; 所述PFI域用于指示所述第二报文是否封装有pFCS域。
17. —种报文封装和解封装系统,其特征在于,包括 如权利要求9-12任一项所述的报文封装装置;及 如权利要求13-16任一项所述的报文解封装装置。
全文摘要
本发明提供一种报文封装和解封装方法、装置及系统。该报文封装方法包括接收第一报文;根据所述第一报文封装后得到第二报文;其中,所述第二报文包括净荷部分和第一控制信息;当所述第一报文为以太网报文时,所述净荷部分包括剥离所述以太网报文的前导码PRE域和帧起始标志SFD域后的内容;所述第一控制信息仅包含帧头cHDR域,所述cHDR域至少包含净荷字节长度指示PLI域,使得解封装端接收所述第二报文后根据所述第二报文中的所述PLI域获取相应长度的数据报文。本发明实施例可以降低以太网报文封装时的冗余比特。
文档编号H04L1/00GK101783772SQ20101013153
公开日2010年7月21日 申请日期2010年3月23日 优先权日2010年3月23日
发明者宋飞 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1