0 引言
以太网无源光网络(EPON)系统要达到电信级技术标准,提高局端设备光线路终端(OLT)运行的可靠性是其面临的长期挑战。随着网络扁平化概念的提出,具有“大容量、少局所、高交换”性能的汇聚型OLT经过一个MSTP网络就可以接入骨干网[1]。根据运营局方的需求,当MSTP传输网内部故障时,不需要维护人员的直接干预,OLT能参与链路倒换并帮助实现网络自愈。理论上接入网OLT、MSTP传输网以及骨干网可以采用分段保护方案,例如OLT上联双归属保护OLT-MSTP的链路,MSTP内部链路的保护由MSTP本身负责,MSTP到上游骨干路由器的链路保护可以通过路由协议实现(收敛时间较长)。但是这种方法增加了网络维护的复杂度,而且现网业务已经部分开通,修改设备的配置存在一定风险。如果采用VRRP方案,由于只是MSTP网内部的链路状态发生改变,当VRRP发生主备切换时,原有主用接口状态并没有发生变化,接口还是处于UP状态,该路由还会继续宣告,从而导致下行流不通。基于OSPF协议的路由方案由于具有配置简单,风险可控,维护管理方便的特点,因而被本设计采用。
1 OLT上的三层接口设计
1.1 VLAN技术在OLT上的应用
作为交换式以太网设备的一种,EPON系统OLT对数据链路层技术有着强大的支持能力,例如二层VLAN技术的广泛应用。VLAN的划分方法有3种:802.1Q VLAN、基于端口的VLAN和基于MAC地址的VLAN[2]。OLT上的二层业务VLAN运用802.1Q实现VLAN标记(tag)从而将VLAN延伸到整个网络,而802.1Q VLAN的去标记(untagged)则使得OLT可以和所有合法的、无法识别VLAN标记的交换机一起工作;OLT还有一些内部保留VLAN是基于端口划分,加入同一个VLAN的端口形成一个广播域,可以实现二层互通,不在同一个VLAN内的端口之间在二层则不能直接
通信。传统OLT上比较特殊的一个(或多个)VLAN是管理VLAN,这种VLAN可以配置IP地址来和网管服务器进行通信,方便网络管理员对OLT进行配置管理。
在传统意义的三层设备中,VLAN是指三层虚接口,它们可以配置IP地址形成路由接口。因此,在OLT上实现三层路由首先必须创建三层接口。本设计采用SUPER-VLAN技术来解决二层VLAN和三层接口的矛盾。SUPER-VLAN也叫VLAN聚合,由SUB-VLAN和SUPER-VLAN组成,它的SUB-VLAN是二层实VLAN,不同VLAN之间在二层不能互通;SUPER-VLAN是三层虚VLAN,多个SUB-VLAN可以添加到同一个SUPER-VLAN,然后在SUPER-VLAN上配置IP地址形成三层接口。路由接口是OSPF方案设计进行的基础。
1.2 基于SUPER-VLAN技术的三层接口设计
OLT上的三层接口由SUPER-VLAN来提供,SU-PER-VLAN三层转发的基本原理如下[3]:如图1所示,PC1和PC3属于不同的SUPER-VLAN,即不同的网段。垮网段设备的通信需要通过三层接***互。PC1与PC3通信的过程如下:
① 通过比较IP地址和掩码PC1知道PC3与自己不在同一个网段,PC1向网关发送一个ARP报文请求网关的MAC;
② 网关SUPER-VLAN 100回应自己的MAC 00-00-00-00-00-01给PC1;
③ PC1收到应答后发送目的MAC为00-00-00-00-00-01、目的IP为3.3.3.1的报文;
④ SUPER-VLAN 100收到报文后发现目的MAC是自己的MAC,就知道是三层转发,从而去查三层转发表;
⑤ 查找到下一跳的出口是SUPER-VLAN 200,就把报文发给SUPER-VLAN 200;
⑥ SUPER-VLAN 200收到报文,将报文转发给PC3。
现在考虑PC1和PC2的通信流程。比较PC1和PC2的IP地址可以知道二者同属于一个子网,PC1就会广播ARP报文请求PC2的MAC。而由于PC1和PC2不在同一个SUB-VLAN中,ARP广播报文不能到达PC2。此时,SUPER-VLAN就需要发挥它的另一个重要作用--ARP PROXY。SUPER-VLAN的ARPPROXY功能工作流程如下:
① PC1广播一个ARP报文请求PC2的MAC;
② SUPER-VLAN 100发现PC2不在SUB-VLAN1内,就代理接受该ARP报文;
③ SUPER-VLAN100在SUB-VLAN 2内广播ARP报文请求PC2的MAC地址;
④ PC2应答ARP请求,将自己的MAC 00-00-00-00-00-03发送给SUPER-VLAN 100;
⑤ SUPER-VLAN 100作为网关应答PC1的ARP请求,将自己的MAC 00-00-00-00-00-01当作PC2的MAC发送给PC1。后续PC1发送给PC2的报文就会将带上目的MAC 00-00-00-00-00-01、目的IP 1.1.1.2的报文发送给SUPER-VLAN网关,网关收到该报文后将自己的MAC替换成PC2的MAC 00-00-00-00-00-03,并把报文按照学习到的路由发送给PC2。
2 路由软件设计
2.1 路由管理模块设计
路由可以分为静态路由和动态路由两大类。静态路由由网络管理者直接配置产生,动态路由由路由协议学习生成。为了实现软件路由表和交换芯片路由表的同步和路由择优等功能,需要进行路由信息收集、过滤、优选等操作,因此系统中需要路由管理模块维护不同的路由表项。路由管理模块(RTM)位于各软硬件平台驱动层之上,三层功能协议层及管理层之下,是三层功能实现的核心模块。根据设计,它在系统中需要完成的工作如下:
① 管理员配置添加三层接口,包括添加SUPER-VLAN、SUB-VLAN以及IP;
② 接口管理模块向路由管理模块通告接口事件,如接口的UP/DOWN事件;
③ 协议模块学习到动态路由,进行动态路由的添加/删除;
④ 路由管理模块处理接口变化事件,并通知各三层功能协议模块;同时管理来自协议模块的动态路由的写入与删除;
⑤ OS IP协议栈ARP功能提供主机路由表的维护,并向路由管理模块提供路由条目中下一跳Gate-way相关的ARP功能;
⑥ 交换芯片驱动为路由管理模块提供硬件FIB表的删除与写入功能。
⑦ OS IP协议栈向路由管理模块提供硬件FIB表的删除与写入功能。
对应上述功能,设计将路由管理模块划分成更小的模块来分别实现。如图2所示,路由管理模块(RTM)由路由表控制模块(RTM_CTRL)、主机路由控制模块、管理与配置模块、动态路由消息处理模块、接口消息处理模块、操作系统适配层以及驱动适配层组成。
路由表(RIB table)由节点链表组成,每个节点表示到达一个目的网段的所有路由。如图3所示,每一个node中都记录3张RIB表,分别是RIB-ac
tive表、RIB-standby表和RIB-pend表,每一个表的子项都是到达该目的网段的路由信息,即RIB路由条目、RIB里面记录路由类型(RIP/OSPF/静态等)、下一跳网关、距离、metric和生成时间等。
RIB-active中的RIB路由表示当前激活的路由,该路由会被写入到硬件FIB和OS FIB中去,实现业务流的三层转发功能。通常一个目的网段只有一个active路由。
RIB-standby中的路由条目是可到达但不是最优路径的路由,当active路由不可用时,路由管理模块会在standby RIB找一个最优路由升级为active路由。
RIB-pend路由表中的路由是由于该路由的下一跳网关不可达(查ARP表)而暂时挂起的路由路径,当下一跳网关可达后,该路由会升级为standby路由或者是active路由。
2.2 OSPF路由原理
OSPF是一种链路状态路由协议,被设计用于单一的自制系统(AS)中。每个OSPF路由器都维持着同样的数据库以描述AS的拓扑结构,并以此数据库来创建最短路径树和计算路由表。OSPF提供等值多路径。在发现拓扑改变后,OSPF仅利用很少的路由流量就可以快速地重新计算出路径。通过提供区域路径,来提供额外的路径保护并可以减少协议所需要的流量。有关路由表的计算是OSPF的核心内容,它是动态生成路由器内核路由表的基础。这里将复杂的OSPF计算过程总结为以下四点:
① 当路由器初始化或当网络结构发生变化(例如增减路由器,链路状态发生变化等)时,路由器会产生链路状态广播数据包LSA(Link-State Advertisement),该数据包里包含路由器上所有相连链路,也即为所有端口的状态信息。
② 所有路由器会通过一种被称为刷新(Flooding)的方法来交换链路状态数据。Flooding是指路由器将其LSA数据包传送给所有与其相邻的OSPF路由器,相邻路由器根据其接收到的链路状态信息更新自己的数据库,并将该链路状态信息转送给与其相邻的路由器,直至稳定的一个过程。
③ 当网络重新稳定下来,即OSPF路由协议收敛下来时,所有的路由器会根据其各自的链路状态信息数据库计算出各自的路由表。该路由表中包含路由器到每一个可到达目的地的Cost以及到达该目的地所要转发的下一个路由器(next-hop)。
④ 当网络状态比较稳定时,网络中传递的链路状态信息是比较少的。这也正是链路状态路由协议区别于距离矢量路由协议的一大特点。
通过以上步骤,OSPF动态监视网络状态,一旦发生变化则迅速扩散,达到对网络拓扑的快速聚合,从而确定出新的网络路由表。这里的路由表不同于实现路由转发功能时用到的内核路由表,它只是OSPF本身的内部路由表。因此,完成上述工作后,往往还要通过路由管理模块与内核路由表交互,实现三层转发。
3 OSPF在OLT上的应用
基于上述设计开发出OSPF路由软件后,针对OLT的OSPF双上联功能设计如图4所示组网,三层接口分别作用在图示SV1、SV2以及SV3,配置过程如图5所示。
在SV2、SV3上使能OSPF协议,配置SV3的OSPF Cost="10",SV2的OSPF Cost="1000",则路由管理模块优选出Cost=10的路由条目,PC1与PC2和PC3之间的通信优先通过下一跳为SV3(IP为192.168.10.54)的路由来建立。结合图1所示工程应用组网,OSPF倒换的触发条件至少有两种情况。第一种是协议超时。当MSTP网络内部端口DOWN掉或者链路遭到破坏,OSPF协议通过LSA的超时机制探测到邻居和路由变化,所有运行OSPF的设备重新刷新自己的数据库直到网络再次收敛。第二种情况是与OLT直接相连的端口down掉,此时OLT的三层接口通过SUB-VLAN感知到端口状态变化并通知路由管理模块。路由管理模块为OSPF协议模块提供服务,通知OSPF重新计算和刷新路由表,触发倒换,倒换前后OSPF路由表变化如图6所示。根据这两种情况人为破坏端口状态触发倒换进行各种测试,测试结果均表明OLT设备能将路由倒换到下一跳为SV2(IP为192.168.2.54)的条目上。两种条件下的倒换都无需人工干预,实现对MSTP内部通信链路的保护。
4 结束语
本设计的特点在于将OSPF路由技术引入传统意义上的二层设备OLT,使得OLT在网络层不仅能提供对下游网络上行链路保护,还能在不改变上游设备配置的前提下提供对其下行链路的保护。另外由于VLAN的二层概念在EPON系统中得以广泛应用,三层接口的添加势必给系统带来较大改动;本设计巧妙利用SUPER-VLAN技术,将OLT上的VLAN虚实结合应用,既保留原有业务VLAN的二层特性,又增加了三层虚接口配置IP的功能,保证了OLT软件的前向兼容性。目前,本设计的软件实现已经通过实验室场景测试,正在进行最后的优化和工程测试。