发明内容
有鉴于此,本发明提供一种MPLS TE分组转发与管理装置,应用于运营商边缘PE设备上,该装置包括:配置管理单元、表项处理单元、业务分类单元以及转发处理单元,其特征在于:
配置管理单元,用于根据用户配置指令创建一个或多个TE隧道组TEG以及TEG映射表(TEGB),其中每个TEG包括一个或多个TE隧道,TEGB中每个TEG具有不同的优先级,且分别对应于不同的用户报文优先级;
表项处理单元,用于在创建转发表时为每一转发表项中的下一跳创建对应的偏移子表,其中该偏移子表包括N个偏移表项;该表项处理单元进一步用于根据TE隧道所属的TEG的优先级将与下一跳对应的TE隧道存储到该偏移子表中相应的偏移表项中,其中N为TEG的数量;
业务分类单元,用于在PE设备从用户侧接收到用户报文时,根据该用户报文的优先级查询TEGB,确定与该报文优先级对应的TEG的优先级;
转发处理单元,用于在对用户报文进行转发时,根据用户报文的目的IP地址确定其下一跳对应的偏移子表,根据TEG的优先级从对应的偏移表项中获得对应一个或多个TE隧道,然后根据预设的分担算法在获得的一个或多个TE隧道中选择TE隧道作为出口链路转发该用户报文。
本发明还提供一种MPLS TE分组转发与管理方法,应用于运营商边缘PE设备上,其特征在于,该方法包括:
步骤A、根据用户配置指令创建一个或多个TE隧道组TEG以及TEG映射表(TEGB),其中每个TEG包括一个或多个TE隧道,TEGB中每个TEG具有不同的优先级,且分别对应于不同的用户报文优先级;
步骤B、在创建转发表时为每一转发表项中的下一跳创建对应的偏移子表,其中该偏移子表包括N个偏移表项;根据TE隧道所属的TEG的优先级将与下一跳对应的TE隧道存储到该偏移子表中相应的偏移表项中,其中N为TEG的数量;
步骤C、在PE设备从用户侧接收到用户报文时,根据该用户报文的优先级查询TEGB,确定与该报文优先级对应的TEG的优先级;
步骤D、在对用户报文进行转发时,根据用户报文的目的IP地址确定其下一跳对应的偏移子表,根据TEG的优先级从对应的偏移表项中获得对应一个或多个TE隧道,然后根据预设的分担算法在获得的一个或多个TE隧道中选择TE隧道作为出口链路转发该用户报文。
相较于现有技术,本发明不仅能够充分利用不同链路的带宽,还能够将业务优先级与TE隧道组关联,简化了组网与管理工作。在优选的方案中,还可以按照TEG隧道组对带宽进行调整,避免了现有技术中呆板的调整机制。
具体实施方式
目前单纯的MPLS TE面临的问题是,该技术无法区分入进入MPLS隧道业务负载的优先级。所谓业务负载也就是MPLS报文内部封装的内容,通常会是一个基于IP协议的用户报文。作为隧道入口的PE(Provider Edge,运营商边缘)设备无法根据业务负载的优先级或其他相应的特征分别将报文转发到不同的TE隧道。在TE隧道的承载链路多样化的情况下,该技术无法充分合理利用现有链路资源。为解决上述问题,企业通常在网络部署时先将网络上可能出现的业务归类,将不同种类的业务通过不同的CE(Custom Edge,用户边缘)设备接入PE并被划分到不同的VPN中。请参考图2,以西安站点为例,CE1、CE2、CE3通过PE1接入,分别绑定不同的VPN用于接入不同的业务,如CE1负责接入数据中心城市站点间数据互备业务,而CE2负责接入企业内部用户的数据业务,CE3则负责接入企业外网用户的数据业务。
由于不同的业务通过不同的VPN接入,通过路由策略等配置可以使不同VPN的数据流量分别进入为其预先划分好的特定TE隧道。而TE隧道本身所具备的资源预留及带宽抢占等特性可以保证其负载报文得到转发。在单路承载链路无法满足业务需求时,通过建立多条TE形成等价链路,进行负载分担。此外,在安全性和可靠性要求比较高的应用场景中,还可以通过备用链路建立备份LSP对主LSP进行保护或通过快速重路由技术在主备LSP之间进行切换。
这样的解决方案是一种不够智能的解决方案,首先其会导致网络管理员的配置工作量很大,导致部署执行难度较大。其次,管理员需要预先规划网络业务类型和TE隧道的对应关系,扩展性和灵活性都比较差,网络部署完成后,后期新增业务也需要新增VPN及相应的TE隧道配置。再次,这种方式的成本高,由于不同的业务需要通过不同的设备或接口接入,这意味着业务种类划分越多,企业用户需要购买的接入设备就越多;最后,由于TE隧道带宽受限于承载链路带宽,当需求带宽大于承载链路实际带宽时,就无法做到按需扩展带宽了。使用等价TE隧道进行负载分担可以缓解这个问题。
但这种带宽的抢占和扩展不能在等价组层面来实现。比如一个等价组中两个等价TE隧道,TEA带宽为80M,TEB带宽为20M,TEA和TEB为一个业务提供100M带宽,负载分担的比例是4:1。假设现在业务需求增加了,需要等价组提供150M的带宽。此时需要额外从TEA和TEB所在链路上抢占50M。在现在的技术只能由TEA和TEB两个TE隧道按照分担比例分别抢占40M和10M的带宽,这种按单个TE隧道的抢占可能造成流量拥塞。假设TEA所在链路带宽已经基本耗尽,但却需要按照负载分担比例抢占40M 带宽,而TEB所在另一条链路还有100M空闲带宽的情况下,TEB却只需要抢占10M。TEA抢占失败但无法移至带宽富足的链路继续抢占。由此可见两条链路加起来物理带宽是足够的,但却抢占不到足够的带宽而出现丢包。
本发明提供一种更加灵活的TE分组转发与管理解决方案来解决上述技术问题。以计算机程序实现为例,在一种优选的实施方式中,本发明提供一种MPLS TE分组转发与管理装置,该装置可运行在PE设备上。请参考图3,PE设备包括CPU、内存、非易失性存储器以及包括转发芯片在内的其他业务硬件。CPU可以将该对应的计算机程序加载到内存中运行形成该装置,在逻辑层面,该装置包括:配置管理单元、表项处理单元、业务分类单元、转发处理单元、带宽统计单元以及带宽调整单元。请参考图3以及图4,以IPv4实现为例(IPv6同样适用),该装置运行过程中执行如下方法流程。
步骤101,配置管理单元根据用户配置指令创建一个或多个TE隧道组TEG以及TEG映射表(TEGB),其中每个TEG包括一个或多个TE隧道,所述TEGB中每个TEG具有不同的优先级,且分别对应于不同的用户报文优先级;
步骤102,表项处理单元在创建转发表时为每一转发表项中的下一跳创建对应的偏移子表,其中该偏移子表包括N个偏移表项,其中N为TEG的数量;
步骤103,表项处理单元进一步根据TE隧道所属的TEG的优先级将与下一跳对应的TE隧道存储到该偏移子表中相应的偏移表项中;
步骤104,业务分类单元在PE设备从用户侧接收到用户报文时,根据该用报文的优先级查询TEGB,确定与该报文优先级对应的TEG的优先级;
步骤105,转发处理单元在对用户报文进行转发时,根据用户报文的目的IP地址确定其下一跳对应的偏移子表,根据TEG的优先级从对应的偏移表项中获得对应一个或多个TE隧道;
步骤106,转发处理单元进一步根据预设的分担算法在获得的一个或多个TE隧道中选择TE隧道作为出口链路转发该用户报文。
在一些大型的企业网络中,其分支机构可能遍布全国乃至全球,数量可能有数十个甚至数百个,所有分支机构之间运营商提供的广域专网(通常是VPN服务)来相互连接。本发明中为了更方便阅读者理解,仅以该企业用户有三个分支机构为例进行说明,请参考图5,每个分支机构称为一个Site,每个Site的CE设备通过一个PE设备连接到运营商网络中来,通过运营商网络提供的MPLS VPN服务实现网络连接。
PE设备的管理者是运营商网络的管理员,以PE1上的实现为例,运营商网络的管理员可以预先创建一个TEG或者多个优先级不同的TEG。每个TEG可以包括一个或者多个TE隧道。请参考图6以及表1,管理员可以在PE1>P1>PE2这一路径上创建TE1以及TE5;在PE1>P2>PE2这一路径上创建TE2以及TE6;在PE1>P1>PE3这一路径上创建TE3以及TE7;在PE1>P2>PE3这一路径上创建TE4以及TE8。其中TE1-4四个TE隧道被分配到TEG1中,而TE5-8四个TE隧道被划分到TEG2中,后文假设TEG1的优先级高于TEG2的优先级。
表1
在本发明中,每个TEG可以对应到一个用户报文优先级。用户报文优先级的区分可以使用报文中已有的字段或者报文的入端口等优先级参数来实现。这些不同的优先级参数可以单独使用或组合使用来表征用户报文优先级,其中典型的报文字段可以包括DSCP、源IP、协议类型、TCP/UDP端口号等等。请参考表2的TEGB示例,此处使用用户报文的源IP地址以及用户报文的DSCP来表征用户报文的优先级。
TEG编号 |
源IP地址 |
DSCP |
1 |
10.10.10.0/24 |
DSCP0 |
2 |
10.10.20.0/24 |
DSCP1 |
...... |
...... |
...... |
...... |
...... |
...... |
表2
在正常情况下,对于用户报文的转发处理来说,其通常的做法是查询转发表来得到下一跳和出接口,然后在出接口对用户报文进行重新封装后从出接口发送出去。转发表项的形成是基于路由学习实现的,也就是说控制层面会进行路由学习然后生成转发表项下发到数据层面(也称为业务层面)。对于MPLSVPN来说,转发表项的生成是基于VPN而言的,一个PE设备上对于每个VPN都有独立的转发表项(通常称为VRF)。同样的道理,各个VPN的路由学习也是限定在本VPN内的,并不会相互影响,这一点可以参考现有技术获取更为详尽的了解。本发明对于MPLS VPN的路由学习的过程并不干涉,但是对于转发表项的下发过程进行特别的处理。请参考表3所示,在现有技术中,网络拓扑稳定后通过路由学习之后会得到表3所示的路由表,对于目的IP地址为20.20.10.0/24的用户报文,其下一跳是CE1,出接口是TE隧道1接口,这是一条典型的路由表项。在下发到数据层面时,对于同一个目的IP地址,其会下发一条最优路由或者多条等价的最优路由到转发表项中。表项编号1、2、5、6中,假设表项编号1、2是等价的最优路由,其会被下发到转发表项中,但是表项编号5、6的路由表项则不会下发。
表项编号 |
目的IP地址 |
下一跳 |
出接口 |
1 |
20.20.10.0/24 |
CE2 |
TE1 |
2 |
20.20.10.0/24 |
CE2 |
TE2 |
3 |
20.20.20.0/24 |
CE3 |
TE3 |
4 |
20.20.20.0/24 |
CE3 |
TE4 |
5 |
20.20.10.0/24 |
CE2 |
TE5 |
6 |
20.20.10.0/24 |
CE2 |
TE6 |
7 |
20.20.20.0/24 |
CE3 |
TE7 |
8 |
20.20.20.0/24 |
CE3 |
TE8 |
...... |
...... |
...... |
...... |
表3
请继续参考表4,本发明将一条典型的路由表项进行修改后在下发到转发表中,修改后下发的每个转发表项中将引入一个偏移子表。每个偏移子表的大小规格N与TEG的数量是对应的。相对于现有技术而言,本发明针对同一个目的IP的路由,下发到数据层面的转发表项将会增多,当然这个增多主要是因为引入了偏移子表,请综合参考表3以及表4,事实上表3中的编号5、6的路由表项也被下发到表4中了。
表4
请继续参考表4,由于偏移子表的引入,本发明对于用户报文的转发处理过程将改变。假设用户报文的源IP地址是10.10.10.2,目的IP地址是20.20.10.2,而报文的DSCP为DSCP0。根据目的IP地址查询表4可以得到一个基地址Base1。然后根据报文的源IP地址以及DSCP查询表2可以确定对应的TEG优先级为1,根据TEG优先级确定偏移子表的偏移量是1,从Base1对应的偏移子表中获得偏移量为1的子表项中存储的TE隧道,分别是TE1以及TE2。
同样的道理,假设用户报文的源IP地址以及DSCP仍然为10.10.10.2以及DSCP0,但目的IP变为20.20.20.2,此时查询表4可以得到Base2,由于偏移量仍然是1,则获得的TE隧道分别是TE3和TE4。
同样的道理,假设目的IP地址保持20.20.10.2不变,源IP地址和DSCP分别变更为10.10.20.2以及DSCP1,此时查询表2,根据表2可以确定TEG优先级为2,根据TEG优先级得到的偏移量是2,而根据目的IP地址得到Base1,根据偏移量确定的TE隧道为TE5和TE6。
同样的道理,假设目的IP地址变为20.20.20.2,源IP地址和DSCP分别变更为10.10.20.2以及DSCP1,此时查询表2可以得到TEG优先级为2,对应的偏移量为2,而查询表4则可以获得Base2,根据偏移量2得到TE7以及TE8。
以上的示例中,TEG的数量为2个,其仅仅是示例性的,在实际实施过程中,TEG的数量可能多达几十个。也就是说,事实上一次转发查表的过程会命中很多个TE隧道。在获得TE隧道之后,对于多个TE隧道的情形,本发明可以采用各种算法在这些TE隧道上进行负载分担,负载分担的算法本发明并无限制,可以采用常见的Hash算法。从以上的描述中可以看出,首先,管理员只需要将多个TE隧道部署到不同的物理路径上,那么同一优先级的报文就可以通过不同的物理链路上的TE隧道来进行负载分担。从前述实施方式的描述中可以看出,源IP地址是10.10.10.2且DSCP为DSCP0的用户报文是数据中心备份这种业务下的用户报文,其被负载分到TE1和TE2上去了,参考图5和图6可以发现,TE1和TE2刚好是通过不同的物理路径来承载的,这个过程充分利用了P1不同出口的物理链路带宽。
假设数据中心备份这种业务所需要的链路带宽较大(比如1.5G),而P1出口的单一链路的带宽(比如只有1G)无法满足要求时,使用本发明则能够轻松地为该类业务创建出分布在不同物理路径上的TE隧道来承载其用户报文,充分利用不同路径上的物理带宽资源,也就是说把P1出口的两条物理链路的带宽均使用上。任意一条物理链路发生故障,用户报文会在转发过程中自动迁移到没有故障的物理链路所承载的TE隧道上,整个切换过程将会非常快,无需在协议层面做任何处理,其切换的速度基本上可以达到对物理链路故障感知的速度,也就是说一旦感知到物理链路故障,切换几乎是同时实现的。
由于出接口TE隧道的选择与用户报文的优先级实现了关联,管理者只要合理使用一个或者多个优先级参数来定义报文优先级与TEG之间的关系,就可以将报文承载到不同TEG内的TE隧道上去。在这一前提下,本发明可以进一步对TE隧道的带宽进行调整。其基本的实现步骤包括:在一种优选的实施方式中,调整过程包括以下步骤:
步骤201,带宽统计单元以TEG为单位每隔一个统计周期对TEG占用的平均统计带宽Bi进行统计并保存;
步骤202,带宽统计单元每隔一个调整周期获取TEG在当前调整周期内的最大平均统计带宽Bimax;
步骤203,带宽调整单元判断Bimax是否达到TEG的最大配置带宽Bpmax或者最小配置带宽Bpmin,如果是则将Bpmax或Bpmin作为Bmax调整的目标值Btg转步骤204,否则将Bimax作为Btg转步骤204;
步骤204,带宽调整单元进一步判断是否有足够的空闲带宽将TEG的占用带宽Bmax调整为Btg,如果是,则对Bmax执行调整;否则选择释放优先级更低的TEG的Bmax,然后再对当前TEG的Bmax执行调整。
假设管理员将网络中传送的用户报文分为两种,一种是源IP地址为10.10.10.0/24,DSCP为DSCP0的数据中心备份业务(以下简称业务A)的用户报文,另一种是其他业务(以下简称业务B)的用户报文,其源IP地址为10.10.20.0/24,DSCP为DSCP1。这两种业务下的用户报文将分别通过TEG1和TEG2中的TE隧道来承载。假设P1出口的两条分别连接P2和P3的物理链路大小均为1G,物理链路带宽最大为2G(假设其他物理链路上无带宽瓶颈)。TEG1的配置带宽Bpmax为1.5G,而TEG2配置带宽Bpmax为1G。TEG的配置带宽Bpmax实际上是该TEG中各个TE隧道配置带宽的总和。此时TEG1的Bpmax与TEG2的Bpmax之和为2.5G,这个数值已经超过了P1出口的总物理带宽2G。本发明引入TEG带宽动态调整来充分利用2G的总物理带宽。
虽然业务A和业务B对带宽的要求的上限分别是1.5G和1G,但事实上在业务运行的过程中,这些业务产生的用户报文对带宽的占用并不是时刻都保持在上述上限水平上的。这也就是说假设业务A对带宽的占用只有不到1G的水平,如果此时业务B刚好繁忙,其占用了1G带宽,那么总物理带宽被比较充分地利用了。但是假设业务A此时开始繁忙,其需要占用1.2G的带宽,那么其需要挤占掉业务B的带宽占用。因为业务A的用户报文的优先级高于业务B的用户报文优先级。
在具体实现上,可以对每个TEG进行流量计数,当用户报文经某个TEG发送时,可以获取报文字节数累加到该TEG对应的计数器中。然后每隔一个统计周期(比如10秒)进行一次流量采集,即读取该TEG计数器值C进行平均带宽计算,TEG的Bi=计数器值C×8÷10。计算完成之后清空计数器,进入下一个统计周期重新计算出另一个该TEG的Bi。请参考表5所示TEG的Bi列表。
TEG |
Bi |
统计周期 |
TEG1 |
1G |
1 |
TEG1 |
1.1G |
2 |
TEG1 |
0.8G |
3 |
TEG1 |
1.3G |
4 |
TEG1 |
0.8G |
5 |
TEG1 |
0.9G |
6 |
TEG2 |
1G |
1 |
TEG2 |
0.9G |
2 |
...... |
...... |
...... |
表5
在定期进行统计的基础上,以统计数据为基础按照一个固定的调整周期对各个TEG的带宽尝试进行调整,假设调整周期为60秒。那么每个调整周期达到的时候,表5中每个TEG都有6个Bi值,从优先级最高的TEG1开始,从表5中选出TEG1最大的Bi值Bimax作为调整依据。假设Bimax已经达到甚至超过了Bpmax,那么调整为Bpmax即可,同样的道理,如果Bimax已经达到甚至小于Bpmin,那么调整为Bpmin即可。但是如果当前调整周期的Bimax小于该Bpmax,则调整该TEG1的占用带宽Bmax调整为Bimax。这也就是说,接下来的调整周期内,其占用带宽不能够超过调整后的Bmax。值得注意的是,占用带宽Bmax是下一个调整周期内60秒内的平均带宽,但是其中某个统计周期的Bi值仍然有可能大于Bmax。
在调整Bmax的时候有三种可能性,一种是调整前的Bmax与本调整周期内的Bimax相同,那么无需修改Bmax,这种情况相对较少。另一种情况是,Bimax小于Bmax,直接修改Bmax即可,因为这显然不会涉及带宽是否够用的问题。第三种情况是,Bimax大于当前Bmax,此时需要考虑剩余的空闲带宽是否足够,如果不足够则需要从较低优先级的TEG中抢占带宽来进行调整,如果抢占带宽仍然无法满足Bmax的调整要求则按照尽力抢占的原则处理。在进行带宽抢占时还需要考虑被抢占的TEG的最小配置带宽Bpmin,确保被抢占的TEG的占用带宽不能小于预先配置的Bpmin。
在带宽抢占过程中,可以从按照优先级高到低依次抢占。在抢占过程中,无论是TEG占用带宽增大还是减小,实际上都可以等效为该TE隧道的带宽增大和减小,在实现上带宽调整单元可以选择TEG中一个TE隧道进行带宽调整,若调整之后没有达到Btg,则继续选取下一个TE隧道进行带宽调整,直到达到Btg或者没有下一个TE隧道可选。这个过程相当于遍历整个TEG进行带宽调整,针对每个TE隧道带宽调整可以是尽力而为,每个TE隧道的带宽调整没有严格的大小要求,这显著改善了现有技术中对TE隧道的带宽调整值有大小要求而导致调整可能失败的问题。。从以上的实施方式中可以看出,本发明可以根据用户报文的优先级(通常对应到不同种类的业务)将用户报文映射到不同的TEG中进行转发,管理员合理规划TEG即可实现用户报文从不同物理链路上转发出去的效果,极大程度提高了对物理带宽的利用效率。进一步来说,本发明不需要向现有技术那样为各种不同业务部署大量CE设备,这大大简化了组网与管理工作。在优选的方式中,本发明又可以以TEG为单位进行带宽调整,可以优先保障高优先级用户报文的转发处理,提升了用户服务的质量,避免现有技术呆板的带宽调整方式。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。