在传统网络中分析网络功能,通常从控制平面和数据转发平面同时入手。在传统网络控制平面中,二层是生成树协议,转发依据是mac地址表;三层是路由协议,转发依据是路由表。数据包基于网络设备中的mac表和路由表来完成数据转发。
路由表的形成通常遵循4条原则,一是有效的下一跳IP地址,路由进程在收到更新后,首先会检查路由的下一跳IP地址是否有效;二是度量值(开销),如果下一跳有效,路由协议将按度量值最小的原则来选择给定目的地的最佳路径;三是管理距离(h3c和华为路由器叫优先级),如果从不同的路由来源获悉了多条前往同一个网络的路由,路由器会根据路由来源的管理距离来决定哪条路由加入路由表中;四是前缀(掩码),在路由表中可以有相同网络不同前缀的路由,如果有多条路由到同一个网络,哪么遵循最长掩码匹配原则,选择前缀最长的那条路由。
下面我们就用一个案例来分析一下路由的选路过程,下图是一张层次化的网络结构,网络分为核心层,汇聚层,接入层。
在以SDH为传输承载网的网络中,接入层采用E1链路上联汇聚层,接入带宽为2M,汇聚层采用STM-1链路上联核心层,接入带宽为155M,全网采用动态路由协议OSPF。OSPF路由器协议根据接口的配置带宽来计算开销,公式是:100Mbit(参考带宽)÷接口带宽,小于1的取1,由于接口带宽即是实际带宽,所以没有必要对路由开销进行设计。从下图可以看出,二级分支机构1到总部的流量有两条路可以走,第一条路是经过一级分支机构1到总部,网络开销为50,第二条路是经过二级分支机构2和3,再经过一级分支机构2到总部,网络开销是146,依据上述原则第一条路是最佳路径。
在以OTN为传输承载网络的网络中,骨干网采用BGP/MPLS VPN技术,利用BGP来传播私网路由,MPLS转发私网流量。在这里我们接入骨干网的网络就是一张私网或者VPN,有独立的VRF,在这种网络中我们可以采取两种方案,第一种是全网采用BGP路由协议,这种方式实施简单,但路由表数量庞大,对CE设备性能要求高,而且无法掌握数据包的转发径路,安全性低;第二种是利用BGP协议建立ip tuunel隧道,业务网络采用ospf及其他路由协议,把路由协议从功能上分离,这样组网灵活,流量转发可控,同时过滤掉无用的BGP路由,缩减BGP路由表,降低对设备性能的要求,好似在一个三层网络上又叠加了一个三层网络,底层的三层网络负责控制平面,上层的三层网络控制数据转发平面。其中Tunnel隧道是一种逻辑接口,不同设备厂商Tunnel接口的带宽默认值定义不一样,cisco是100kbit,h3c是64kbit,所以在这两种设备上的tunnel接口的ospf路由开销分别是1000和1562,如果不对路由开销进行设计将会导致路由回流,甚至路由环路。而路由开销设计有两种方法,一种是修改接口的bandwidth值,另一种是直接修改接口的cost值。下面就举两个典型的案例:
案例一、路由回流,汇聚点流量从低带宽的二级分支机构回流到总部,在本案例中,tunnel采用默认值,开销是1000,哪么一级分支机构的流量将不会直接从tunnel 回总部,而是把二级分支机构的路由选为最优路由,因为从二级分支机构转发流量开销最低。除了考虑去程的路由,还要考虑回程路由,否则流量同样会从二级分支机构返回汇聚点。
案例二、路由环路,路由表项在两台设备之间循环,最终导致数据包的ttl值耗尽而被丢弃。本案例对一级分支机构B机上行tunnel的cost值进行了设计, 而忽略了回程tunnel的cost值,导致了目的为二级分支机构3的路由在总部两台路由器上形成环路。形成环路除了路由开销外还有一个触发条件,就是二级分支机构3的路由区域没有和骨干区域直连,而是通过一级分支机构区域建立虚链路连接到骨干区域的,恰好一级分支机构路由器A和总部路由器A的虚链路邻接关系没有建立起来,只有一级分支机构路由器B和总部路由器B的虚链路的邻接关系正常,这就意味着到二级分支机构的路由只能从总部B机返回,而此时B机上的tunnel的路由开销是1000,从而使B路由器认为到达目的网络的最优路由在A机,A机则认为最优路由在B机,形成路由环路。
在BGP/MPLS VPN网络中,至少存在两种或两种以上的路由协议,在这个场景中包含了BGP和OSPF两种路由协议。网络设备厂商对不同来源的路由设定了不同的管理距离,管理距离越小说明路由协议可信度越高,cisco设备路由协议的默认管理距离是,直连路由0,静态路由1,ebgp路由20,eigrp路由90,ospf路由110,rip路由120,ibgp路由200。而在h3c或者华为设备中的管理距离被命名为优先级,优先级越低,协议的可信度越高,其默认值是,直连路由0,ospf路由10,静态路由60,rip路由100,ibgp和ebgp路由都是255。如果bgp和ospf路由协议中都有到网络192.168.1.0/24的路由(这里bgp的路由是ebgp),哪么在cisco设备中选用ebgp的路由为最佳路由,在h3c设备中则选择ospf的路由为最佳路由。所以在路由协议的规划中要防止相同的网络在不同路由协议中通告,如果无法避免可以采用路由过滤,但不建议修改路由协议管理距离的默认值。