报文生成的方法及设备的制作方法

文档序号:7708523阅读:214来源:国知局
专利名称:报文生成的方法及设备的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种报文生成的方法及设备。
背景技术
LDP (Label Distribution Protocol,标签分发协i义)是MPLS (Multi-Protocol Label Switching,多协议标签交换)体系中的一种主要协议,LDP专门用于 MPLS系统中的标签分发,LDP定义了一组程序和消息,通过这些程序和消 息使MPLS系统中的 一个LSR( Label Switching Router,标签交换路由器)可 以与另一个LSR形成标签捆绑,进而在两个LSR之间建立起LSP (Label Switched Path,标签交换路径)。
现有技术中的LDP报文的具体形式如图1所示,LDP报文包括LDP报 文消息体和LDP报文头域。其中,LDP报文消息体包括LDP identifier (LDP 标识)和TLV(Type Length Value,类型长度数据),LDP报文头域包括 PDU头域、网络层封装头域和传输层封装头域。进一步的,PDU头域包括PDU 版本号头域和PDU长度头域。建立起TCP (Transmission Control Protocol, 传输控制协议)连接的LSR在生成如图1所示的LDP报文之前,要进行LDP 报文消息体长度值协商,即PDU (Protocol Data Units,协议数据单元)长度 值协商。在进行LDP报文消息体长度值协商的过程中,建立起TCP连接的 LSR首先获取本地的PDU长度值, 一般情况下LSR会将一个默认值作为本 地的PDU长度值。然后,将本地PDU长度值携带在初始化协商请求中发送 给目标LSR。目标LSR在收到初始化协商请求后,将初始化协商请求中的PDU 长度值与本地PDU长度值进行比较,糾目对较小的PDU长度值作为最终PDU 长度值。之后,参与初始化协商的LSR各自根据最终PDU长度值生成LDP 报文,并进行LDP报文交互,最终建立起标签交换路径。
在一条单向TCP路径上,能够承载的单片LDP报文长度是有限的,可以
6承载的最大LDP报文长度值为PMTU ( Path Maximum Transmission Unit,路 径最大传输单元)值,PMTU值为单向TCP路径上每台设备出接口的MTU (Maximum Transmission Unit,最大传输单元)值中的最小值。
现有技术中,LSR获取的本地的PDU长度值与单向TCP路径的PMTU 值无关,LSR生成的LDP报文长度可能大于单向TCP路径的PMTU值。若 LSR生成的LDP报文长度大于PMTU值,在LDP报文传输过程中,单向TCP 路径上出接口 MTU值小于LDP报文长度的设备需要对LDP报文进行分片处 理,该设备会根据自身出接口的MTU值将一个完整的LDP报文分片重组为 多个LDP报文并分别进行传输。对LDP报文进行分片处理的过程极大的占用 了系统资源,影响了 MPLS系统的整体性能。

发明内容
本发明提供了一种报文生成的方法及设备,节省了系统资源,提高了 MPLS系统的整体性能。
本发明提供了 一种报文生成方法,应用于包括至少两个LSR的系统中, 所述方法包括以下步骤
第一LSR和第二LSR分别获取本地PDU长度值,其中,所述第一LSR 和所述第二LSR中的至少一方根据本地PMTU长度值获取本地PDU长度值;
比较所述第一 LSR获取的本地PDU长度值和所述第二 LSR获取本地 PDU长度值,将其中数值'J 、的PDU长度值作为最终PDU长度值;
所述第一 LSR和所述第二 LSR分别根据所述最终PDU长度值生成LDP 报文。
其中,所述根据本地PMTU长度值获取本地PDU长度值包括
获取所述本地PMTU长度值和LDP报文头域长度值;
将所述本地PMTU长度值减去所述LDP报文头域长度值,将得到的差值 作为所述本地PDU长度值。
其中,所述LDP报文头域长度值=PDU头域长度值+网络层封装头域 长度值+传输层封装头域长度值=PDU版本号长度值+ PDU长度域长度值+网络层封装头域长度值+传输层封装头域长度值。
其中,所述根据所述最终PDU长度值生成LDP报文包括
根据所述最终PDU长度值生成LDP报文消息体;
将所述LDP报文消息体和LDP报文头域组合成LDP报文。
其中,所述比较所述第一 LSR获取的本地PDU长度值和所述第二 LSR
获取本地PDU长度值,将其中数值小的PDU长度值作为最终PDU长度值包

所述第一 LSR和所述第二 LSR分别将本地PDU长度值携带在初始化协 商请求中发送给对方,并分别对本地的PDU长度值和来自对方的PDU长度 值PDU长度值进行比较,将其中数值小的PDU长度值作为最终PDU长度值。
其中,所述比较所述第一 LSR获取的本地PDU长度值和所述第二 LSR 获取本地PDU长度值,将其中数值'J 、的PDU长度值作为最终PDU长度值包 括
所述第一 LSR或所述第二 LSR将本地PDU长度值携带在初始化协商请 求中发送给对方,由对方对PDU长度值进行比较,将其中数值小的PDU长 度值作为最终PDU长度值,并由对方将所述最终PDU长度值告知发送所述 初始化协商请求的源LSR。
其中,所述比较所述第一 LSR获取的本地PDU长度值和所述第二 LSR 获取本地PDU长度值,将其中数值'J 、的PDU长度值作为最终PDU长度值包 括
所述第一 LSR和所述第二 LSR分别将本地PDU长度值发送给第三设备, 由所述第三设备对PDU长度值进行比较,将其中数值小的PDU长度值作为 最终PDU长度值,并由所述第三设备将所述最终PDU长度值告知所述第一 LSR和所述第二LSR。
本发明提供了一种LSR,应用于包括至少两个LSR的系统中,包括获取 单元、发送单元、接收单元、确定单元、生成单元,其中,
所述获取单元,用于根据设定的策略将默认值作为本地PDU长度值,或者根据本地PMTU长度值获取本地PDU长度值;
所述发送单元,与所述获取单元连接,用于将所述获取单元获取的本地 PDU长度值携带在初始化协商请求中发送给对端LSR;
所述接收单元,用于接收来自对端LSR的初始化协商请求,所述初始化 协商请求中包含所述对端LSR获取的PDU长度值;
所述确定单元,与所述获取单元和所述接收单元分别连接,用于比较所 述获取单元获取的本地PDU长度值和所述接收单元接收的对端LSR获取的 PDU长度值,将其中数值小的PDU长度值作为最终PDU长度值;
所述生成单元,与所述确定单元连接,用于根据所述确定单元确定的最 终PDU长度值生成LDP纟艮文。
其中,所述获取单元,具体用于获取所述本地PMTU长度值和LDP报文 头域长度值;将所述本地PMTU长度值减去所述LDP报文头域长度值,将得 到的差值作为所述本地PDU长度值,其中,所述LDP报文头域长度值-PDU 头域长度值+网络层封装头域长度值+传输层封装头域长度值=PDU版 本号长度值+ PDU长度域长度值+网络层封装头域长度值+传输层封装 头域长度值。
本发明提供了一种LSR,应用于包括至少两个LSR的系统中,包括获取 单元、接收单元、确定单元、发送单元、生成单元,其中,
所述获取单元,用于根据设定的策略将默认值作为本地PDU长度值,或 者根据本地PMTU长度值获取本地PDU长度值;
所述接收单元,用于接收来自对端LSR的初始化协商请求,所述初始化 协商请求中包含所述对端LSR获取的PDU长度值;
所述确定单元,与所述获取单元和所述接收单元分别连接,用于比较所 述获取单元获取的本地PDU长度值和所述接收单元接收的对端LSR获取的 PDU长度值,将其中数值小的PDU长度值作为最终PDU长度值;
所述发送单元,与所述确定单元连接,用于将所述确定单元确定的最终 PDU长度值发送给对端LSR;所述生成单元,与所述确定单元连接,用于才艮据所述确定单元确定的最
终PDU长度值生成LDP报文。
其中,所述获取单元,具体用于获取所述本地PMTU长度值和LDP报文 头域长度值;将所述本地PMTU长度值减去所述LDP报文头域长度值,将得 到的差值作为所述本地PDU长度值,其中,所述LDP报文头域长度值PDU 头域长度值+网络层封装头域长度值+传输层封装头域长度值=PDU版 本号长度值+ PDU长度域长度值+网络层封装头域长度值+传输层封装 头域长度值。
本发明提供了一种LSR,应用于包括至少两个LSR的系统中,包括获取 单元、发送单元、接收单元、生成单元,其中,
所述获取单元,用于4艮据设定的策略将默认值作为本地PDU长度值,或 者才艮据本地PMTU长度值获取本地PDU长度值;
所述发送单元,与所述获取单元连接,用于将所述获取单元获取的本地 PDU长度值携带在初始化协商请求中发送给第三设备或对端LSR;
所述接收单元,用于接收第三设备或对端LSR确定的最终PDU长度值;
所述生成单元,与所述接收单元连接,用于#4居所述接收单元接收的最 终PDU长度值生成LDP报文。
其中,所述获取单元,具体用于获取所述本地PMTU长度值和LDP报文 头域长度值;将所述本地PMTU长度值减去所述LDP报文头域长度值,将得 到的差值作为所述本地PDU长度值,其中,所述LDP报文头域长度值-PDU 头域长度值+网络层封装头域长度值+传输层封装头域长度值=PDU版 本号长度值+ PDU长度域长度值+网络层封装头域长度值+传输层封装 头;或长度值。
本发明中,参与初始化协商的LSR中的至少一方根据本地PMTU长度值 确定本地PDU长度值,并将参与初始化协商的LSR的PDU长度值中数值小 的作为最终PDU长度值,参与初始化协商的LSR根据该最终PDU长度值生
10成LDP报文,使生成的LDP报文长度值不大于本地PMTU长度值,在LDP 报文传输过程中无需进行分片处理,节省了系统资源,提高了 MPLS系统的 整体性能。


图1是现有技术中一种LDP报文结构示意图; 图2是本发明中一种报文生成的方法流程图; 图3是本发明中一种^R文生成的方法流程图; 图4是本发明中一种报文生成的方法流程图; 图5是本发明中一种报文生成的方法流程图; 图6是本发明中一种MPLS场景示意图; 图7是本发明中一种报文生成的方法流程图; 图8是本发明中一种MPLS场景示意图; 图9是本发明中一种报文生成的方法流程图; 图IO是本发明中一种MPLS场景示意图; 图ll是本发明中一种报文生成的方法流程图; 图12是本发明中一种LSR的结构图; 图13是本发明中一种LSR的结构图; 图14是本发明中一种LSR的结构图。
具体实施例方式
本发明主要提供了一种报文生成的方法,主要思路是参与初始化协商 的LSR中的至少一方根据本地PMTU长度值确定本地PDU长度值,并将参 与初始化协商的LSR的PDU长度值中数值小的作为最终PDU长度值,参与 初始化协商的LSR根据该最终PDU长度值生成LDP报文,使生成的LDP报 文长度值不大于本地PMTU长度值,在LDP报文传输过程中无需进行分片处 理,节省了系统资源,提高了 MPLS系统的整体性能。
本发明提出了 一种报文生成的方法,应用于包括至少两个LSR的系统中,所述方法如图2所示,包括以下步骤
步骤201,第一LSR和第二LSR分别获取本地PDU长度值,其中,第 一 LSR和第二 LSR中的至少一方根据本地PMTU长度值获取本地PDU长度 值。
具体的,第一 LSR或第二 LSR可以使用如下方式根据本地PMTU长度 值获取本地PDU长度值首先,获取本地PMTU长度值和LDP报文头域长 度值;然后,将本地PMTU长度值减去LDP报文头域长度值,将得到的差值 作为本地PDU长度值。其中,LDP报文头域长度值-PDU头域长度值+网 络层封装头域长度值+传输层封装头域长度值-PDU版本号长度值+PDU 长度域长度值+网络层封装头域长度值+传输层封装头域长度值。
步骤202,比较第一 LSR获取的本地PDU长度值和第二 LSR获取本地 PDU长度值,将其中数值小的PDU长度值作为最终PDU长度值。
具体的,可以采用如下方式实现步骤202:
1. 第一 LSR和第二 LSR分别将本地PDU长度值携带在初始化协商请求 中发送给对方,并分别对本地的PDU长度值和来自对方的PDU长度值PDU 长度值进行比较,将其中数值小的PDU长度值作为最终PDU长度值。
2. 第一 LSR或第二 LSR将本地PDU长度值携带在初始化协商请求中发 送给对方,由对方对PDU长度值进行比较,将其中数值小的PDU长度值作 为最终PDU长度值,并由对方将最终PDU长度值告知发送初始化协商请求 的源LSR。
3. 第一LSR和第二LSR分别将本地PDU长度值发送给第三设备,由第 三设备对PDU长度值进行比较,将其中数值小的PDU长度值作为最终PDU 长度值,并由第三设备将最终PDU长度值告知第一 LSR和第二 LSR。
步骤203,第一 LSR和第二 LSR分别根据最终PDU长度值生成LDP报文。
具体的,第一 LSR和第二 LSR可以使用如下方式才艮据最终PDU长度值 生成LDP报文首先,根据最终PDU长度值生成LDP报文消息体;然后, 将LDP报文消息体和LDP报文头域组合成LDP报文。具体的,本发明提出了一种报文生成的方法,应用于包括第一LSR和第 二 LSR的系统中,第一 LSR和第二 LSR分别将本地PDU长度值发送给对方,
将其中数值小的PDU长度值作为最终PDU长度值,所述方法如图3所示, 包括以下步骤
步骤300,第一LSR和第二LSR建立TCP连接。
具体的,可以由第一LSR和第二LSR中IP地址專交大的一方向IP地址较 小的一方发起TCP连接请求,IP地址较小的一方在收到TCP连接请求后返回 TCP连接响应,双方建立TCP连接。
步骤301,第一LSR和第二LSR分别确定本地PDU长度值。具体的, 第一 LSR和第二 LSR中的至少一方根据本地PMTU长度值获取本地PDU长 度值,另外一方可以根据设定的策略将默认值作为本地PDU长度值。
具体的,第一 LSR或第二 LSR可以采用如下方式根据本地PMTU长度 值获取本地PDU长度值第一 LSR和第二 LSR间的TCP路径由两条单向TCP 路径构成,分别为第一 LSR —第二 LSR的单向路径和第二 LSR —第一 LSR的 单向路径。第一 LSR需要获取第一 LSR—第二 LSR单向路径的PMTU长度 值作为本地PMTU长度值,第二 LSR需要获取第二 LSR—第一 LSR单向路 径的PMTU长度值作为本地PMTU长度值。第一 LSR或第二 LSR还需要确 定本地LDP报文头域长度值,LDP报文头域包括PDU头域、网络层封装头 域和传输层封装头域。之后,第一 LSR或第二 LSR可以将本地PMTU长度 值减去LDP报文头域长度值,将得到的差值作为各自的本地PDU长度值。本 地PDU长度值的计算公式如下
本地PDU长度值=本地PMTU长度值-LDP报文头域长度值=本地 PMTU长度值-PDU头域长度值-网络层封装头域长度值-传输层封装头 域长度值;其中PDU头域长度值-PDU版本号长度值+ 011长度域长度值。
步骤302,第一 LSR和第二 LSR分别将各自确定的本地PDU长度值携 带在初始化协商请求中发送给对方。步骤303 ,第一 LSR和第二 LSR分别比较对方的PDU长度值和各自的 本地PDU长度值,将数值较小的PDU长度值作为最终PDU长度值。
步骤304,第一 LSR和第二 LSR分别根据最终PDU长度值生成LDP报文。
具体的,第一 LSR和第二 LSR首先分别根据最终PDU长度值生成LDP 报文消息体,从而保证成LDP报文消息体长度不大于最终PDU长度值,然后 分别根据设定的报文生成规则将LDP报文消息体和LDP报文头域组合成LDP 报文。
在第一 LSR和第二 LSR分别生成了 LDP报文后,需要将各自生成的LDP 报文发送给对方,从而完成相互间的标签信息交换,最终建立起标签交换路 径。
具体的,本发明提出了一种报文生成的方法,应用于包括第一LSR和第 二 LSR的系统中,第一 LSR将本地PDU长度值携带在初始化协商请求中发 送给第二 LSR,第二 LSR对来自第一 LSR的PDU长度值和本地的PDU长度 值进行比较,将其中数值小的PDU长度值作为最终PDU长度值,并将最终 PDU长度值告知第一LSR,所述方法如图4所示,包括以下步骤
步骤400,第一LSR和第二LSR建立TCP连接。
具体的,可以由第一 LSR和第二 LSR中IP地址较大的一方向IP地址较 小的一方发起TCP连接请求,IP地址较小的一方在收到TCP连接请求后返回 TCP连接响应,双方建立TCP连接。
步骤401,第一LSR和第二LSR分别确定本地PDU长度值。具体的, 第一 LSR和第二 LSR中的至少一方根据本地PMTU长度值获取本地PDU长 度值,另外一方可以根据设定的策略将默认值作为本地PDU长度值。
具体的,第一 LSR或第二 LSR可以采用如下方式#4居本地PMTU长度 值获取本地PDU长度值第一LSR和第二LSR间的TCP路径由两条单向TCP 路径构成,分别为第一 LSR—第二 LSR的单向路径和第二 LSR—第一 LSR的 单向路径。第一 LSR需要获取第一 LSR—第二 LSR单向路径的PMTU长度值作为本地PMTU长度值,第二 LSR需要获取第二 LSR—第一 LSR单向路 径的PMTU长度值作为本地PMTU长度值。第一 LSR或第二 LSR还需要确 定本地LDP报文头域长度值,LDP报文头域包括PDU头域、网络层封装头 域和传输层封装头域。之后,第一 LSR或第二 LSR可以将本地PMTU长度 值减去LDP报文头域长度值,将得到的差值作为各自的本地PDU长度值。本 地PDU长度值的计算公式如下
本地PDU长度值=本地PMTU长度值-LDP报文头域长度值=本地 PMTU长度值-PDU头域长度值-网络层封装头域长度值-传输层封装头 域长度值;其中PDU头域长度值-PDU版本号长度值+ 01;长度域长度值。
步骤402,第一 LSR将自身确定的本地PDU长度值携带在初始化协商请 求中发送给第二LSR。
步骤403 ,第二 LSR比较来自第一 LSR的PDU长度值和本地的PDU长 度值,将数值较小的PDU长度值作为最终PDU长度值。
步骤404,第二LSR将最终PDU长度值发送给第一LSR。
步骤405,第一 LSR和第二 LSR分别根据最终PDU长度值生成LDP报文。
具体的,第一 LSR和第二 LSR首先分别根据最终PDU长度值生成LDP 报文消息体,然后分别根据设定的报文生成规则将LDP报文消息体和LDP报 文头域组合成LDP纟艮文。
在第一 LSR和第二 LSR分别生成了 LDP报文后,需要将各自生成的LDP 报文发送给对方,从而完成相互间的标签信息交换,最终建立起标签交换路 径。
具体的,本发明提出了一种报文生成的方法,应用于包括第一LSR、第 二 LSR和第三设备的系统中,第一 LSR和第二 LSR分别将本地PDU长度值 发送给第三设备,第三设备对PDU长度值进行比较,将其中数值小的PDU 长度值作为最终PDU长度值,并将最终PDU长度值告知第一 LSR和第二 LSR,所述方法如图5所示,包括以下步骤步骤500,第一LSR和第二LSR建立TCP连接。
具体的,可以由第一LSR和第二LSR中IP地址较大的一方向IP地址较 小的一方发起TCP连接请求,IP地址较小的一方在收到TCP连接请求后返回 TCP连接响应,双方建立TCP连接。
步骤501,第一LSR和第二LSR分别确定本地PDU长度值。具体的, 第一 LSR和第二 LSR中的至少一方根据本地PMTU长度值获取本地PDU长 度值,另外一方可以根据设定的策略将默认值作为本地PDU长度值。
具体的,第一 LSR或第二 LSR可以采用如下方式#4居本地PMTU长度 值获取本地PDU长度值第一LSR和第二LSR间的TCP路径由两条单向TCP 路径构成,分别为第一 LSR —第二 LSR的单向路径和第二LSR —第一 LSR的 单向路径。第一 LSR需要获取第一 LSR—第二 LSR单向路径的PMTU长度 值作为本地PMTU长度值,第二 LSR需要获取第二 LSR —第一 LSR单向路 径的PMTU长度值作为本地PMTU长度值。第一 LSR或第二 LSR还需要确 定本地LDP报文头域长度值,LDP报文头域包括PDU头域、网络层封装头 域和传输层封装头域。之后,第一 LSR或第二 LSR可以将本地PMTU长度 值减去LDP报文头域长度值,将得到的差值作为各自的本地PDU长度值。本 地PDU长度值的计算公式如下
本地PDU长度值=本地PMTU长度值-LDP报文头域长度值=本地 PMTU长度值-PDU头域长度值-网络层封装头域长度值-传输层封装头 域长度值;其中PDU头域长度值-PDU版本号长度值+ 011长度域长度值。
步骤502,第一 LSR和第二 LSR分别将各自确定的本地PDU长度值携 带在初始化协商请求中发送给第三设备。
步骤503,第三设备比较来自第一 LSR和第二 LSR的PDU长度值,将 数值较小的PDU长度值作为最终PDU长度值。
步骤504,第三设备将最终PDU长度值分别发送给第一 LSR和第二 LSR。
步骤505,第一 LSR和第二 LSR分别根据最终PDU长度值生成LDP报文。
具体的,第一 LSR和第二 LSR首先分别根据最终PDU长度值生成LDP报文消息体,然后分别根据设定的报文生成规则将LDP报文消息体和LDP报 文头域组合成LDP寺艮文。
在第一 LSR和第二 LSR分别生成了 LDP报文后,需要将各自生成的LDP 报文发送给对方,从而完成相互间的标签信息交换,最终建立起标签交换路 径。
具体的,本发明提出了一种报文生成的方法,应用于如图6所示的MPLS 场景中,该场景包含2个LSR,分别为A和B, A和B之间已经建立了 TCP 连接,A的出接口 MTU长度值为1500字节,B的出接口 MTU长度值为1450 字节,该系统的网络层采用IP封装,传输层采用TCP封装,所述方法如图7 所示,包括以下步骤
步骤701, A将A的出接口的MTU长度值作为本地PMTU长度值A, B将B的出接口的MTU长度值作为本地PMTU长度值B。
具体的,PMTU长度值A- 1500字节,PMTU长度值B- 1450字节。值B。
具体的,LDP报文头域长度值A = PDU头域长度值A +网络层封装头域 长度值A +传输层封装头域长度值A = PDU版本号长度值A + PDU长度域长 度值A十网络层封装头域长度值八+传输层封装头域长度值A; LDP报文头 域长度值8 = 011头域长度值8+网络层封装头域长度值8+传输层封装头 域长度值B = PDU版本号长度值B + PDU长度域长度值B +网络层封装头域 长度值B十传输层封装头域长度值B。
在本实施例中,A和B采用相同的LDP报文生成规则,PDU版本号长度 值A = PDU版本号长度值B = 2字节,PDU长度域长度值A = PDU长度域长 度值B-2字节。由于网络层釆用IP封装,网络层封装头域长度值A-网络 层封装头域长度值B = IP头域长度值=20字节。由于传输层采用TCP封装, 传输层封装头域长度值A =传输层封装头域长度值B = TCP头域长度值=8 字节。所以,LDP报文头域长度值A-LDP报文头域长度值B-20字节+8字节+2字节+2字节=32字节。
步骤703, A和B分别将各自的本地PMTU长度值减去LDP报文头域长 度值,得到PDU长度值A和PDU长度值B。
具体的,PDU长度值A = PMTU长度值A - LDP报文头域长度值A = 1500 字节-32字节=1468字节。PDU长度值B-PMTU长度值B-LDP报文头 域长度值B- 1450字节-32字节=1418字节。
步骤704, A和B分别将各自确定的本地PDU长度值携带在初始化协商
请求中发送给对方。
步骤705, A和B分别比较对方的PDU长度值和各自的本地PDU长度值, 将数值较小的PDU长度值作为最终PDU长度值。
具体的,A比较本地的PDU长度值A和来自B的PDU长度值B,由于 PDU长度值A- 1468字节,PDU长度值B- 1418字节,所以将数值较小的 PDU长度值B( 1418字节)作为最终PDU长度值。类似的,B在比较本地的 PDU长度值B和来自A的PDU长度值A后,也将PDU长度值B ( 1418字 节)作为最终PDU长度值。
步骤706, A和B分别根据最终PDU长度值生成LDP报文。
具体的,A和B分别根据PDU长度值B生成长度LDP报文消息体,从 而保证成LDP报文消息体长度不大于1418字节,然后将LDP报文消息体和 LDP报文头域组合成LDP报文。
在A和B分别生成了 LDP报文后,需要将各自生成的LDP报文发送给 对方,从而完成相互间的标签信息交换,最终建立起标签交换路径。
由于A和B生成的LDP报文消息体长度不大于1418字节,所以LDP报 文长度值不会大于1450字节,不会大于任意一条单向路径的PMTU长度值, 在LDP报文传输过程中无需对其进行分片处理。
具体的,本发明提出了一种报文生成的方法,应用于如图8所示的MPLS 场景中,该场景包含2个LSR,分别为A和B,该系统中还包括一个路由器 C, C可以是LSR,也可以是普通路由器,A和B通过C建立了 TCP连接,该系统的网络层采用GRE通用封装,传输层采用TCP封装,所述方法如图9 所示,包括以下步骤
步骤901 , A根据A — C — B的单向TCP路径上A的出接口的MTU长 度值和C的出接口的MTU长度值获取PMTU长度值A, B根据B — C — A 的单向TCP路径上B的出接口的MTU长度值和C的出接口的MTU长度值 获取PMTU长度值B。
具体的,在本实施例中,PMTU长度值A= 1100字节,PMTU长度值B-1200字节。值B。
具体的,LDP报文头域长度值A = PDU头域长度值A +网络层封装头域 长度值A +传输层封装头域长度值A = PDU版本号长度值A + PDU长度域长 度值A十网络层封装头域长度值八+传输层封装头域长度值A; LDP报文头 域长度值8 = 011头域长度值8+网络层封装头域长度值8+传输层封装头 域长度值B = PDU版本号长度值B + PDU长度域长度值B +网络层封装头域 长度值B十传输层封装头域长度值B。
在本实施例中,A和B采用相同的LDP才艮文生成关见则,PDU版本号长度 值A = PDU版本号长度值B = 2字节,PDU长度域长度值A = PDU长度域长 度值B-2字节。由于网络层采用GRE通用封装,网络层封装头域长度值A-网络层封装头域长度值B =外层IP头域长度+GRE头域长度+内层IP头域长 度=20字节+8字节+20字节。由于传输层采用TCP封装,传输层封装头 域长度值八=传输层封装头域长度值B-TCP头域长度=8字节。所以,0^ 报文头域长度值A = LDP报文头域长度值B = 20字节+8字节+20字节+8 字节+2字节+2字节=60字节。
步骤903, A和B分别将各自的本地PMTU长度值减去LDP报文头域长 度值,得到PDU长度值A和PDU长度值B。
具体的,PDU长度值A = PMTU长度值A - LDP报文头域长度值A = 1100 字节-60字节=1040字节。PDU长度值B = PMTU长度值B - LDP报文头域长度值B- 1200字节-60字节=1140字节。
步骤904, A和B分别将各自确定的本地PDU长度值携带在初始化协商 请求中发送给对方。
步骤905 , A和B分别比较对方的PDU长度值和各自的本地PDU长度值, 将数值较小的PDU长度值作为最终PDU长度值。
具体的,A比较本地的PDU长度值A和来自B的PDU长度值B,由于 PDU长度值A- 1040字节,PDU长度值B- 1140字节,所以将数值较小的 PDU长度值A( 1040字节)作为最终PDU长度值。类似的,B在比较本地的 PDU长度值B和来自A的PDU长度值A后,也将PDU长度值A ( 1040字 节)作为最终PDU长度值。
步骤906, A和B分别根据最终PDU长度值生成LDP报文。
具体的,A和B分别根据PDU长度值A生成LDP报文消息体,从而保 证成LDP报文消息体长度不大于1040字节,然后将LDP报文消息体和LDP 报文头域组合成LDP报文。
在A和B分别生成了 LDP报文后,需要将各自生成的LDP报文发送给 对方,从而完成相互间的标签信息交换,最终建立起标签交换路径。
由于A和B生成的LDP报文消息体长度不大于1040字节,所以LDP报 文长度值不会大于1100字节,不会大于任意一条单向路径的PMTU长度值, 在LDP报文传输过程中无需对其进行分片处理。
具体的,本发明提出了 一种报文生成的方法,应用于如图10所示的MPLS 场景中,该场景包含3个LSR,分别为A、 B和C, A和C之间需要建立两 条标签交换路径,其中一条由A直接到C,另一条由A到B再到C,两条路 径互为备份路径,以便当其中一条发生故障时,可以使用另一条进行数据传 输,所述方法如图11所示,包括以下步骤
步骤IIOI, A获取A —C的单向TCP路径的PMTU长度值A1和A —B —C的单向TCP路径的PMTU长度值A2, C获取C —A的单向TCP路径的 PMTU长度值CI和C —B —A的单向TCP路径的PMTU长度值C2。步骤1102, A和C分别根据设定的LDP生成规则获取LDP报文头域长 度值A和报文头域长度值C。
文头域长度值A获得PDU长度值Al和PDU长度值A2, C将PMTU长度值
和PDU长度值C2。
步骤1104, A将PDU长度值Al和PDU长度值A2携带在初始化协商请 求中发送给C, C将PDU长度值CI和PDU长度值C2携带在初始化协商请 求中发送给A。
步骤1105, A和C分别比较对方的PDU长度值和各自的本地PDU长度 值,将数值较小的PDU长度值作为最终PDU长度值。
具体的,A比较PDU长度值Al和PDU长度值Cl,将其中较小的作为 A —C的单向TCP路径上的最终PDU长度值Al; A比较PDU长度值A2和 PDU长度值C2,将其中较小的作为A — B —C的单向TCP路径上的最终PDU 长度值A2。类似的,C比较并获取C —A的单向TCP路径上的最终PDU长 度值C1和C —B —A的单向TCP路径上的最终PDU长度值C2。
步骤1106, A和C分别根据不同TCP路径对应的最终PDU长度值生成 LDP报文。
具体的,A根据最终PDU长度值Al生成A —C的TCP路径对应的LDP 报文,根据最终PDU长度值A2生成A — B — C的TCP路径对应的LDP报文。 C根据最终PDU长度值C1生成C —A的TCP路径对应的LDP报文,根据最 终PDU长度值C2生成C — B — A的TCP路径对应的LDP报文。
在A和C分别生成了 LDP报文后,需要将各自生成的LDP报文发送给 对方,从而完成相互间的标签信息交换,最终建立起由A直接到C的标签交 换路径和由A到B再到C的标签交换路径。
图12为本发明方法对应的LSR,包括获取单元1201、发送单元1202、 接收单元1203、确定单元1204、生成单元1205,其中,获取单元1201,用于根据设定的策略将默认值作为本地PDU长度值,或 者根据本地PMTU长度值获取本地PDU长度值。具体的,获取单元1201, 用于获取本地PMTU长度值和LDP报文头域长度值,将本地PMTU长度值 减去LDP报文头域长度值,将得到的差值作为本地PDU长度值,其中,LDP 报文头域长度值=PDU头域长度值+网络层封装头域长度值+传输层封装 头域长度值=PDU版本号长度值+ PDU长度域长度值+网络层封装头域 长度值+传输层封装头域长度值。
发送单元1202,与获取单元1201连接,用于将获取单元1201获取的本 地PDU长度值携带在初始化协商请求中发送给对端LSR。
接收单元1203,用于接收来自对端LSR的初始化协商请求,初始化协商 请求中包含对端LSR获取的PDU长度值。
确定单元1204,与荻取单元1201和接收单元1203分别连接,用于比较 获取单元1201获取的本地PDU长度值和接收单元1203接收的对端LSR获取 的PDU长度值,将其中数值小的PDU长度值作为最终PDU长度值。
生成单元1205,与确定单元1204连接,用于根据确定单元1204确定的 最终PDU长度值生成LDP报文。
图13为本发明方法对应的LSR,包括获取单元1301、 4妄收单元1302、 确定单元1303、发送单元1304、生成单元1305,其中,
获取单元1301,用于4艮据设定的策略将默认值作为本地PDU长度值,或 者根据本地PMTU长度值获取本地PDU长度值。具体的,获取单元1301, 用于获取本地PMTU长度值和LDP报文头域长度值,将本地PMTU长度值 减去LDP报文头域长度值,将得到的差值作为本地PDU长度值,其中,LDP 报文头域长度值- PDU头域长度值+网络层封装头域长度值+传输层封装 头域长度值=PDU版本号长度值+ PDU长度域长度值+网络层封装头域 长度值+传输层封装头域长度值。
接收单元1302,用于接收来自对端LSR的初始化协商请求,初始化协商 请求中包含对端LSR获取的PDU长度值。确定单元1303,与获取单元1301和接收单元1302分别连接,用于比较 获取单元1301获取的本地PDU长度值和接收单元1302接收的对端LSR获取 的PDU长度值,将其中数值小的PDU长度值作为最终PDU长度值。
发送单元1304,与确定单元1303连接,用于将确定单元1303确定的最 终PDU长度值发送给对端LSR。
生成单元1305,与确定单元1303连接,用于根据确定单元1303确定的 最终PDU长度值生成LDP报文。
图14为本发明方法对应的LSR,包括获取单元1401、发送单元1402、 接收单元1403、生成单元1404,其中,
获取单元1401,用于根据设定的策略将默认值作为本地PDU长度值,或 者根据本地PMTU长度值获取本地PDU长度值。具体的,获取单元1401, 用于获取本地PMTU长度值和LDP报文头域长度值,将本地PMTU长度值 减去LDP报文头域长度值,将得到的差值作为本地PDU长度值,其中,LDP 报文头域长度值=PDU头域长度值+网络层封装头域长度值+传输层封装 头域长度值=PDU版本号长度值+ PDU长度域长度值+网络层封装头域 长度值+传输层封装头域长度值。
发送单元1402,与获取单元1401连接,用于将获取单元1401获取的本 地PDU长度值携带在初始化协商请求中发送给第三设备或对端LSR;
接收单元1403,用于接收第三设备或对端LSR确定的最终PDU长度值;
生成单元1404,与接收单元1403连接,用于根据接收单元1403接收的 最终PDU长度值生成LDP报文。
本发明中,参与初始化协商的LSR中的至少一方根据本地PMTU长度值 确定本地PDU长度值,并将参与初始化协商的LSR的PDU长度值中数值小 的作为最终PDU长度值,参与初始化协商的LSR根据该最终PDU长度值生 成LDP报文,使生成的LDP报文长度值不大于本地PMTU长度值,在LDP 报文传输过程中无需进行分片处理,节省了系统资源,提高了 MPLS系统的整体性能。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本 发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬 件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技 术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体
现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使 得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行 本发明所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中 的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解本发明中的装置中的模块可以按照实施例描 述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例 的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进 一步拆分成多个子模块。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于 此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
1、一种报文生成的方法,应用于包括至少两个LSR的系统中,其特征在于,所述方法包括以下步骤第一LSR和第二LSR分别获取本地PDU长度值,其中,所述第一LSR和所述第二LSR中的至少一方根据本地PMTU长度值获取本地PDU长度值;比较所述第一LSR获取的本地PDU长度值和所述第二LSR获取本地PDU长度值,将其中数值小的PDU长度值作为最终PDU长度值;所述第一LSR和所述第二LSR分别根据所述最终PDU长度值生成LDP报文。
2、 如权利要求1所述的报文生成方法,其特征在于,所述根据本地PMTU 长度值获取本地PDU长度值包括获取所述本地PMTU长度值和LDP报文头域长度值; 将所述本地PMTU长度值减去所述LDP报文头域长度值,将得到的差值 作为所述本地PDU长度值。
3、 如权利要求2所述的报文生成方法,其特征在于,所述LDP报文头域长度值=PDU头域长度值+网络层封装头域长度值 +传输层封装头域长度值=PDU版本号长度值+ PDU长度域长度值+网 络层封装头域长度值+传输层封装头域长度值。
4、 如权利要求1所述的报文生成方法,其特征在于,所述根据所述最终 PDU长度值生成LDP报文包括根据所述最终PDU长度值生成LDP报文消息体;将所述LDP报文消息体和LDP报文头域组合成LDP报文。
5、 如权利要求1至4中任一项所述的报文生成方法,其特征在于,所述 比较所述第一 LSR获取的本地PDU长度值和所述第二 LSR获取本地PDU长 度值,将其中数值小的PDU长度值作为最终PDU长度值包括所述第一 LSR和所述第二 LSR分别将本地PDU长度值携带在初始化协 商请求中发送给对方,并分别对本地的PDU长度值和来自对方的PDU长度 值PDU长度值进行比较,将其中数值小的PDU长度值作为最终PDU长度值。
6、 如权利要求1至4中任一项所述的报文生成方法,其特征在于,所述 比较所述第一 LSR获取的本地PDU长度值和所述第二 LSR获取本地PDU长 度值,将其中数值小的PDU长度值作为最终PDU长度值包括所述第一 LSR或所述第二 LSR将本地PDU长度值携带在初始化协商请 求中发送给对方,由对方对PDU长度值进行比较,将其中数值小的PDU长 度值作为最终PDU长度值,并由对方将所述最终PDU长度值告知发送所述 初始化协商请求的源LSR。
7、 如权利要求1至4中任一项所述的报文生成方法,其特征在于,所述 比较所述第一 LSR获取的本地PDU长度值和所述第二 LSR获取本地PDU长 度值,将其中数值小的PDU长度值作为最终PDU长度值包括所述第一 LSR和所述第二 LSR分别将本地PDU长度值发送给第三设备, 由所述第三设备对PDU长度值进行比较,将其中数值小的PDU长度值作为 最终PDU长度值,并由所述第三设备将所述最终PDU长度值告知所述第一 LSR和所述第二LSR。
8、 一种LSR,应用于包括至少两个LSR的系统中,其特征在于,包括 获取单元、发送单元、接收单元、确定单元、生成单元,其中,所述获取单元,用于根据设定的策略将默认值作为本地PDU长度值,或 者根据本地PMTU长度值获取本地PDU长度值;所述发送单元,与所述获取单元连接,用于将所述获取单元获取的本地 PDU长度值携带在初始化协商请求中发送给对端LSR;所述接收单元,用于接收来自对端LSR的初始化协商请求,所述初始化 协商请求中包含所述对端LSR获取的PDU长度值;所述确定单元,与所述获取单元和所述接收单元分别连接,用于比较所 述获取单元获取的本地PDU长度值和所述接收单元接收的对端LSR获取的 PDU长度值,将其中数值小的PDU长度值作为最终PDU长度值;所述生成单元,与所述确定单元连接,用于#>据所述确定单元确定的最 终PDU长度值生成LDP报文。
9、 如权利要求8所述的LSR,其特征在于,所述获取单元,具体用于获取所述本地PMTU长度值和LDP报文头域长 度值;将所述本地PMTU长度值减去所述LDP报文头域长度值,将得到的差 值作为所述本地PDU长度值,其中,所述LDP报文头域长度值=PDU头域 长度值+网络层封装头域长度值+传输层封装头域长度值=PDU版本号 长度值+ PDU长度域长度值+网络层封装头域长度值+传输层封装头域 长度值。
10、 一种LSR,应用于包括至少两个LSR的系统中,其特征在于,包括 获取单元、接收单元、确定单元、发送单元、生成单元,其中,所述获取单元,用于才艮据设定的策略将默认值作为本地PDU长度值,或 者根据本地PMTU长度值获取本地PDU长度值;所述接收单元,用于接收来自对端LSR的初始化协商请求,所述初始化 协商请求中包含所述对端LSR获取的PDU长度值;所述确定单元,与所述获取单元和所述接收单元分别连接,用于比较所 述获取单元获取的本地PDU长度值和所述接收单元接收的对端LSR获取的 PDU长度值,将其中数值小的PDU长度值作为最终PDU长度值;所述发送单元,与所述确定单元连接,用于将所述确定单元确定的最终 PDU长度值发送给对端LSR;所述生成单元,与所述确定单元连接,用于根据所述确定单元确定的最 终PDU长度值生成LDP纟艮文。
11、 如权利要求10所述的LSR,其特征在于,所述获取单元,具体用于获取所述本地PMTU长度值和LDP报文头域长 度值;将所述本地PMTU长度值减去所述LDP报文头域长度值,将得到的差 值作为所述本地PDU长度值,其中,所述LDP报文头域长度值=PDU头域 长度值+网络层封装头域长度值+传输层封装头域长度值=PDU版本号 长度值+ PDU长度域长度值+网络层封装头域长度值+传输层封装头域 长度值。
12、 一种LSR,应用于包括至少两个LSR的系统中,其特征在于,包括 获取单元、发送单元、接收单元、生成单元,其中,所述获取单元,用于根据设定的策略将默认值作为本地PDU长度值,或 者根据本地PMTU长度值获取本地PDU长度值;所述发送单元,与所述获取单元连接,用于将所述获取单元获取的本地 PDU长度值携带在初始化协商请求中发送给第三设备或对端LSR;所述接收单元,用于接收第三设备或对端LSR确定的最终PDU长度值;所述生成单元,与所述接收单元连接,用于#4居所述接收单元接收的最 终PDU长度值生成LDP报文。
13、 如权利要求12所述的LSR,其特征在于,所述获取单元,具体用于获取所述本地PMTU长度值和LDP报文头域长 度值;将所述本地PMTU长度值减去所述LDP报文头域长度值,将得到的差 值作为所述本地PDU长度值,其中,所述LDP报文头域长度值=PDU头域 长度值+网络层封装头域长度值+传输层封装头域长度值=PDU版本号 长度值+ PDU长度域长度值+网络层封装头域长度值+传输层封装头域 长度值。
全文摘要
本发明公开了一种报文生成的方法及设备,应用于包括至少两个LSR的系统中,所述方法包括以下步骤第一LSR和第二LSR分别获取本地PDU长度值,其中,所述第一LSR和所述第二LSR中的至少一方根据本地PMTU长度值获取本地PDU长度值;比较所述第一LSR获取的本地PDU长度值和所述第二LSR获取本地PDU长度值,将其中数值小的PDU长度值作为最终PDU长度值;所述第一LSR和所述第二LSR分别根据所述最终PDU长度值生成LDP报文。本发明中,在LDP报文传输过程中无需进行分片处理,节省了系统资源,提高了MPLS系统的整体性能。
文档编号H04L29/06GK101582853SQ20091014365
公开日2009年11月18日 申请日期2009年5月31日 优先权日2009年5月31日
发明者磊 王 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1