发明内容
有鉴于此,本发明提供一种报文处理控制装置及对应的方法,应用于网络设备上,其中该网络设备包括面向用户主机的下行端口以及面向internet的上行端口,其中在该装置运行时,所述下行端口的VLAN过滤功能处于关闭状态,该装置包括:
ARP处理单元,用于通过下行端口接收来自用户主机的ARP报文,对该ARP报文进行ARP学习,在ARP表项中保存该报文携带的用户VLAN标识。
路由处理单元,用于在添加用户主机的下一跳表项时,将用户主机对应的ARP表项中保存的用户VLAN标识添加到对应的下一跳表项中。
本发明还同时提供一种报文处理控制方法,应用于网络设备上,其中该网络设备包括面向用户主机的下行端口以及上行端口,其中该控制方法运行时所述下行端口的VLAN过滤功能被设置为关闭状态,其中该方法包括以下步骤:
步骤A、通过下行端口接收来自用户主机的ARP报文,对该ARP报文进行ARP学习,在ARP表项中保存该报文携带的用户VLAN标识。
步骤B、在添加用户主机的下一跳表项时,将用户主机对应的ARP表项中保存的用户VLAN标识添加到对应的下一跳表项中。
与现有的技术相比,本发明提供了一种非常简洁的QinQ终结处理机制,实现成本低,可靠性高,而且无需用户部署具有QinQ功能的汇聚交换机,同时允许每个用户网络随意规划自身的C-VLAN,最大限度地复用了VLAN资源。
具体实施方式
请参考图1,从QinQ角度来看,在用户网络中,其规划的VLAN通常被称为C-VLAN(C-VLAN);而运营商为用户网络分配的公网VLAN称为为S-VLAN(S-VLAN)。当用户网络中的主机发送的报文到达用户的接入交换机时,该报文在转发处理过程中会被封装上对应C-VLAN Tag。携带C-VLAN Tag的报文进入运营商网络,到达使能QinQ的汇聚交换机B时,该报文就会被封装上S-VLAN对应的VLAN Tag。被重新封装的报文在运营商网络中将基于S-VLAN进行转发;但是如果该报文要发往外部Internet,则需要在出口网关(核心交换机C)上对该报文进行VLAN终结处理,此时核心交换机C需要去掉报文的两层VLAN Tag,然后按照正常的三层转发对报文进行处理,最终通过上行口将报文发送到Internet上。
在另一个方向上,从Internet外网返回的报文需要在核心交换机C上封装上S-VLAN和C-VLAN的VLAN Tag(标签或标识)。报文然后会到达汇聚交换机B,汇聚交换机B剥离S-VLAN Tag。当报文进入接入交换机A时,其内只剩下C-VLAN Tag了。最后在接入交换机在C-VLAN内转发报文使得报文到达用户主机,通常由于用户接入端口是一个Untag端口,因此报文转发给用户主机之前,C-VLAN Tag也会被剥离掉。
QinQ技术可以允许整个网络理论上最多提供4094×4094个VLAN,从而满足了城域网对VLAN数量的使用需求。总的来说,QinQ具备以下优点:1)可缓解公网VLAN资源日益紧缺的问题;2)用户可以随意规划自己的C-VLAN,且不会与S-VLAN发生冲突;3)为小型城域网和大型企业网提供了简单灵活的二层VPN解决方案;4)运营商升级网络时,用户网络不必更改原有配置,使用户网络具有了较强的独立性。
如前所述,从Internet外网返回的流量需要在核心交换机C上封装上S-VLAN和C-VLAN的VLAN Tag。报文在三层转发模块(比如ASIC芯片)上进行三层转发时,芯片先查找转发表,查找到下一跳表项(路由表项)后,进行报文头的封装。然而传统三层转发过程中,其下一跳表项中只能封装一层VLAN Tag。为了达到封装两层VLAN Tag的目的,通常使用隧道技术进行辅助。其实现方式是:在下一跳表项封装C-VLAN Tag,而在隧道表项中再封装S-VLAN Tag。这种实现方案要求在下一跳表项中必须指定二次封装需要使用的隧道表项。因此整个报文的处理过程必须要查询两个表项才能完成内层C-VLAN Tag和外层S-VLAN Tag的封装。对于核心交换机来说,这种三层转发处理比正常的三层转发处理多了隧道表项的查询过程,如果城域网中存在大量用户时,核心交换机的控制层面会下发大量的隧道表项,一方面对于处理速度会有一定的影响,关键大量表项的存在对核心交换机的硬件规格提出了更高的要求,支持更多表项的芯片的成本往往十分高昂。
本发明提出一种新的处理机制来避免硬件表项规格上升的问题。请参考图2,以计算机软件实现为例,在一种优选的实施方式中,本发明提供一种报文处理控制装置,应用在三层网络设备(后续以三层交换机为例进行说明)上,运行在三层交换机的控制层面,该装置包括ARP处理单元以及路由处理单元。请参考图3,本发明对三层交换机的硬件架构并无特别要求,其可以采用分布式硬件系统架构,也可以采用集中式硬件架构。在一种经过简化抽象的硬件架构模型中,该三层交换机包括CPU、内存、非易失性存储器以及各种其他业务硬件,而上述报文处理控制装置可通过CPU运行内存中相应的软件代码实现。
请参考图4,在本发明一种典型的组网环境中,所述三层交换机作为核心交换机加以使用,作为多个用户访问Internet的网关出口。与现有组网方案不同的是:在该组网方案中,具有QinQ功能的汇聚交换机将不是必须存在的网络设备。由于本发明允许组网方案接入交换机直连核心交换机,用户可以因不再部署具有QinQ功能的汇聚交换机而实现组网成本的降低。值得注意的是:接入交换机与核心交换机的直连并非狭义的网线或光纤直接相连。两个交换机之间完全可以存在其他二层交换机等设备,甚至二层的隧道网络。请同时参考图5、图6以及图7,在这样的组网架构下,所述报文处理控制装置执行如下步骤。
步骤101,当用户针对报文处理控制装置发出使能控制指示时,配置处理单元关闭核心交换机的下行端口的VLAN过滤功能;当用户针对报文处理控制装置发出去使能控制指示时,配置处理单元开启核心交换机的下行端口的VLAN过滤功能;
在报文处理控制装置投入运行之前,核心交换机内部需要做进行相关的设备配置处理,主要是关闭面向用户主机的下行端口的VLAN过滤功能,在优选的方式中,该过程是由控制层面处理实现。当然这一过程也可以由管理员手工实现,管理员可以通过网管通道或者其他管理通道来关闭核心交换机下行端口(也就是靠近用户侧的端口)上的VLAN过滤功能。请参考图4,通常情况下,核心交换机只会在下行端口上允许S-VLAN通过(即TrunkS-VLAN),也就是允许指定的一个或多个S-VLAN的报文流量进入端口,比如图4中端口G2/3仅仅Trunk了S-VLAN100。因此正常情况下,如果一个报文不属于S-VLAN100,其会在端口被过滤掉,而无法进一步处理。
一个交换机端口的VLAN过滤功能一旦被关闭,那么这个端口对进入的报文将不会受到VLAN过滤的限制,此时交换机无法在该端口上基于VLAN实现用户二层隔离,会引发较大的安全隐患,因此在正常情况下,该功能并不会被管理关闭。然而本发明则是考虑到特定应用场景的需要,允许该下行端口过滤功能被关闭,同时在该应用场景下实质上并不影响二层的相互隔离。在完成上述基本配置之后,所述报文处理控制装置就可以运行来实现简洁可靠的QinQ终结机制。
步骤102,ARP处理单元通过下行端口接收来自用户主机的ARP报文,对该ARP报文进行ARP学习,在ARP表项中保存该报文携带的C-VLAN Tag。
步骤103,路由处理单元在添加用户主机的下一跳表项时,将对应的ARP表项中保存的C-VLAN添加到对应的下一跳表项中。
用户主机在业务通信过程中会发送ARP报文来辅助业务通信,比如针对网关IP地址的ARP请求报文或者应答网关ARP请求的ARP应答报文。ARP报文经过接入交换机会被封装上与用户主机对应的C-VLAN。如前所述,由于核心交换机下行端口的VLAN过滤功能被关闭,因此该ARP报文到达核心交换机后并不会被丢弃。由于ARP报文是协议报文,因此会自然被上送到控制层面的ARP处理单元进行处理。在本发明中,ARP处理单元会对ARP报文进行学习,形成如表1所示的示例性ARP表。与现有技术不同的是,ARP处理单元在ARP表项中对应保存了与用户主机对应的C-VLAN Tag,这为后续的路由相关表项生成以及三层转发提供了基础依据。
表项归属 |
IP地址 |
MAC地址 |
C-VLAN Tag |
类型 |
S-VLAN100 |
a |
b |
10 |
动态 |
S-VLAN100 |
|
|
11 |
动态 |
...... |
...... |
...... |
...... |
...... |
S-VLAN200 |
|
|
10 |
动态 |
S-VLAN200 |
|
|
11 |
动态 |
...... |
...... |
...... |
...... |
...... |
表1
相应地,路由处理单元的主要作用是学习到一个IP地址或者IP地址前缀的路由,形成三层转发表以及下一跳表项,然后把这些表项下发到三层转发平面(比如ASCI芯片)为三层转发平面提供转发指导。下一跳表项通常是依据ARP表项来下发的。在三层交换机中,由于转发是由底层的芯片实现的,因此需要依据ARP表项来下发对应的下一跳表项,请参考图2中示例性的下一跳表中多个下一跳表项,与现有技术不同的是,本发明向三层转发平面下发的下一跳表项中的VLAN Tag不再是S-VLAN Tag,事实上其是C-VLAN Tag。
IP地址 |
MAC地址 |
C-VLAN Tag |
出接口 |
a |
A |
10 |
M |
b |
B |
11 |
M |
...... |
...... |
...... |
|
c |
C |
10 |
N |
d |
D |
11 |
N |
...... |
...... |
...... |
|
表2
在完成上述处理之后,在上行方向,核心交换机从下行端口收到用户主机的数据报文,由于端口的VLAN过滤功能关闭,因此报文会走正常的三层转发处理,如图6所示。经过图5的处理之后,在下行方向上,转发层面就可以自然完成数据报文的类似QinQ的处理。如图7所示的那样,请参考表3的转发表项示例,当Internet返回的数据报文到达核心交换机时,核心交换机会查询表3获得对应的下一跳。由于此时路由实际上已经是主机路由了,因此查找到的下一跳就是直连主机的IP地址a。转发平面依据主机的IP地址a继续查找表2,获得对应的MAC地址以及C-VLAN Tag等二层封装信息,完成二层报文封装后将该报文从出接口M发送出去。在这个过程中,核心交换机将不再需要封装S-VLAN,而是封装下发到下一跳表项中的C-VLAN Tag。
目的IP地址 |
下一跳 |
a |
直连 |
b |
直连 |
...... |
...... |
c |
直连 |
d |
直连 |
...... |
...... |
表3
在核心交换机处理完成后,其发送的携带C-VLAN Tag的下行数据报文会到达接入交换机,对于接入交换机而言与正常报文一样,其可以进行二层转发处理,整个过程对于接入交换机而言是完全透明的。请进一步参考图8,由于核心交换机可能会有很多下行端口,每个端口都可以归属于不同的运营商分配给用户的公网VLAN。ARP学习时,可以按照S-VLAN进行表项组织。由于本发明在ARP和下一跳表项的特殊处理,可以允许不同用户网络中规划相同的C-VLAN。比如图8中,用户网络1的Host1与用户网络2的Host4均使用C-VLAN100,但两者在二层上依然相互隔离。从上行方向上来看,Host1必须通过核心交换机进行三层转发才能实现Host4进行通信,因为Host1在C-VLAN100中是找不到Host4的MAC地址的,因为其发送针对Host4的ARP请求,到达核心交换机之后,核心交换机只会在S-VLAN100中转发,不会向归属于S-VLAN200等其他VLAN的端口转发,因此Host4是没有办法收到Host1的ARP请求的。也就是说Host1会认为Host4与自己不在同一个局域网络,通信走三层转发,Host1会自然通过网关来访问Host4,无法在二层直接访问。
本发明充分考虑了网络设备的三层转发、ARP学习以及VLAN处理等多重客观因素,提出了一种非常简洁的QinQ终结处理机制,实现成本低,可靠性高,而且无需用户部署具有QinQ功能的汇聚交换机,同时允许每个用户网络随意规划自身的C-VLAN,最大限度地复用了VLAN资源。本发明本质上并没有按照QinQ的传统方式实现,但是使用了更为简单的方式达到了与QinQ相同功用。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。