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技术的三层接口设计
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-active表、RIB-standby表和RIB-pend表,每一个表的子项都是到达该目的网段的路由信息,即RIB路由条目、RIB里面记录路由类型(RIP/OSPF/静态等)、下一跳网关、距离、metric和生成时间等。
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所示。
本设计的特点在于将OSPF路由技术引入传统意义上的二层设备OLT,使得OLT在网络层不仅能提供对下游网络上行链路保护,还能在不改变上游设备配置的前提下提供对其下行链路的保护。另外由于VLAN的二层概念在EPON系统中得以广泛应用,三层接口的添加势必给系统带来较大改动;本设计巧妙利用SUPER-VLAN技术,将OLT上的VLAN虚实结合应用,既保留原有业务VLAN的二层特性,又增加了三层虚接口配置IP的功能,保证了OLT软件的前向兼容性。目前,本设计的软件实现已经通过实验室场景测试,正在进行最后的优化和工程测试。