(1) 路由协议简介
■ 网络中的路由器能获得不与它直接相连的网络的信息。如下图。
■ 两种主要路由协议:
IGP路由可以进一步划分距离向量算法、链路状态算法、混合算法。
■ 路由协议针对每条路径生成一个度量值,常用的度量值有:
- 跳数:包通过路由器出端口的次数
- 带宽:链路的数据容量
- 延迟:将包从源发到目的所需的时候
- 负载:网络上路由器或链路的活动数
- 可信度:每个网络链路的比特出错率
- 代价:路由器上默认基于接口带宽的可配置值
图3-3显示了两台主机之间存在多种路由,以太路由协议计算度量值的不同方法。
多种路由协议和静态路由可以同时使用,如果有多种路由信息源,就用管理距离值来决定哪条路由更可信。管理距离值范围是0-255,值越小越可信。图3-4中,路由器A收到了EIGRP和OSPF提供的到网络172.16。0.9的两条路由,于是使用管理距离认为EIGRP更可信。
路由器A然后将EIGRP路由加入路由表。管理距离可配置的,以下是默认的管理距离。
(2) 距离向量路由协议
■ 路由环路
当网络10.4.0.0失效,路由器C检测到这种情况并停止将包从E0口发出。然而路由器A和B还没收到失效的通知。路由器A仍然认为它能通过路由器B到达网络10.4.0.0。路由器A的路由表仍然显示有一条到网络10.4.0.0距离为2的路径。如下图。
因为路由器B的路由表显示有一条到网络10.4.0.0的路径,路由器C认为有一条路径通过路由器B去网络10.4.0.0。路由器C更新自己的路由表,将去网络10.4.0.0所经跳数改为2。如下图。
路由器B收到来自路由器C(3跳)的更新。路由器A收到路由器B的新路由表,将到网络10.4.0.0的跳数更新为4。如下图。
因为路由器A,B和C都认为去网络10.4.0.0的最佳路径都会通过他们自己。来自路由器A,去网络10.4.0.0的包就会在路由器B和路由器C之间不停地推来推去。如下图。
针对网络10.4.0.0失效后发生的无效路由更新形成了无限跳。无限跳引起路由协议不断度量值,将包在两个设备之间传来传去。如下图。
■ 解决路由环路问题
- 最大度量值(跳数)法
虽然IP包中有TTL字段,但仍不能阻止路由器试图将包发送到失效网络。为避免这个问题,定义最大跳数。有了这个方法,路由协议允许路由环路,直到度量值超过了最大跳数。度量值超过最大跳数后,认为网络10.4.0.0是不可达的。如下图,最大跳数为16。
- 水平分割法
水平分割的规则是,将路由信息发回其原始来源是无用的。如图3-15所示。
(a) 路由器B能通过路由器C访问网络10.4.0.0。路由器B再将这个消息告诉路由器C就是无意义的了。
(b) 路由器B可以访问网络10.4.0.0,它将这个消息传给了路由器A。路由器A再将这个消息传给路由器B是无意义的。
(c) 没有通向网络10.4.0.0的可代替路径时,路由器B认为网络10.4.0.0不可访问。
- 带毒性路由
图3-16中,当网络10.4.0.0宕掉后,路由器C将它到该网络的跳数改为无穷大(也就是不可达)。这样路由器C就不会被邻居路由器不正确的更新信息所感染。
为确保所有段中的所有路由器收到带毒路由,当路由器B发现到网络10.4.0.0的跳数变成无穷大时,它会将这个信息传给路由器C。这是有背于水平分割原则的一个特殊场景。
- 抑制定时器
当路由表中的某个条目所指网络消失时,路由器并不会立刻的删除该条目并学习新条目,而是将条目设置为无效接着是挂起,这么做其实是为了尽可能的等待发生改变的网络恢复。
- 触发更新
因网络拓扑发生变化导致路由表发生改变时,路由器立刻产生更新通告直连邻居,不在需要等待30秒的更新周期,这样做是为了尽可能的将网络拓扑的改变通告给其他人。
触发更新存在的问题:
(a) 包含更新信息的包可能被丢弃或损坏。
(b) 路由器没收到触发更新时可以进行常规更新,这会引起坏路由插入已经进行了触发更新的邻居。
- 抑制定时器与触发更新结合
(3) 链路状态算法的路由协议
链路状态协议基于拓扑数据库构建路由表。拓扑数据库是根据链路状态包生成的,路由器之间通过传递链路状态包来描述一个网络的状态。最短路径算法使用数据库来构建路由表。下图显示了链路状态协议的组件。
基本链路状态的路由算法也叫最短路径优先(SPF)算法,该算法维护一个复杂的拓扑信息数据库。基于距离向量的算法不知道远端网络和路由器的信息,而链路状态路由算法维护所有远端路由器及它们的连接情况的信息。
链路状态算法包括开放式最短路径优先(OSPF)算法和和中间系统到中间系统(IS-IS)路由算法。链路状态路由协议收集网络或定义的互连网络区域中的所有路由器的路由信息,收集完成后,各个路由器独立计算到网络中所有方向的最佳路径。
链路状态路由的出现是为了克服距离向量路由的限制。链路状态路由针对网络变化做出快速反应,网络变化时就发出触发更新,并周期性发送周期更新信息(叫链路状态刷新),比如每30分钟发送一次。hello机制决定了邻居的可达性。
当网络失效,如邻居不可达了,链路状态协议用特殊的多播地址洪泛LSAs。每个链路状态路由器获得一份LSA,更新拓扑数据库,并将LSA转发给所有的邻居设备。LSAs使区域中的每个路由器重新计算路由,因此你必须限制区域中的链路状态路由器的数量。
链路类似于路由器上的接口。链路状态是接口及与它相连的路由器的描述。接口的描述可能包括接口的IP、掩码、连接到接口上的网络类型、连接到接口上的路由器等待。链路的状态的集合就形成了链路状态或拓扑数据库。路由器用Dijkstra的SPF算法计算链路状态数据库来构建SPF树,并查找到目的地的最佳路径。最佳路径从SPF树中选出来加入路由表。
链路状态路由协议使用两层层次结构。如下图。
- 区域:网络的集合。是自治系统(AS)的逻辑划分。
- 自治系统:由一些网络组成,这些网络的路由策略相同
在每个AS中,必须定义一个连续主干区。所有其他的非主干区与主干区相连。主干区是传输区,因为所有其他的区域都需要通过它来通信。对于OSPF,非主干区又可配置成stub区,完全stub区,非完全stub区,非stub区,以减少链路状态数据库和路由表尺寸。
在这种层次网络中的路由器是不同的路由实体。对这些实体的称谓OSPF与IS-IS有点不同。比如上图。
- 路由器A在OSFP中叫主干路由器,ISIS中叫二层路由器。它们提供不同区域间的连接。
- 路由器B和C在OSPF中叫区域边界路由器(ABR),ISIS中叫一二层路由器。它们连到到多个区域,维护与它们相连的每个区域的链路状态数据库,及与其他区域的路由通信。
- 路由器D和E在OSPF中叫非主干区内部路由器,在ISIS中叫一层路由器。它们感知所在区域的拓扑信息,维护与区域相关的链路状态数据库。
- ABR,或一二层路由器将默认路由通知给非主干区内部路由器或一层路由器。一层路由器使用这个默认路由将所有区域间或域间的通信数据转发给ABR或一二层路由器。这种形为对于OSPF有点点不同,取决于OSPF的非主干区是如何配置的。
(4) 变长子网掩码
变长子网掩码(VLSM)在单个网络内可以使子网IP地址多层次化。路由协议支持VLSM才可以使用。VLSM在大型的、路由网络中是一项关键技术。
- 需要借多少位?
- 新的子网掩码是多少?
- 前四个子网是什么?
- 前四个子网的主机地址范围是多少?
— 172.16.6.1–172.16.7.254
■ VLSM简介
对一个主网络中的IP网络,如果有不只一个子网掩码,就可以认为它是一个VLSM的网络,克服了单个子网掩码造成的固定子网数。下图显示了172.16.0.0网络有四个子网掩码。
- 更有效地使用IP地址
- 有利于路由总结
假如你有一个子网地址172.16.32.0/20,你需要将地址分配给一个有10台主机的网络。然而用这个子网地址你可以拥有4000多个主机地址,大部分主机地址就浪费了。有了VLSM,你可以进一步将172.16.32.0/20划分成子网,生成更多的网络地址,每个网络更少的主机数。比如,可以将172.16.32.0/20用172.16.32.0/26再划分子网,你就获得了64(2的6次方)个子网,每个子网支持62(2的6次方-2)个主机。图3-31显示了这个划分过程。
下图3-32中,用于以太网上的子网地址是那些将172.16.32.0/20子网用/26做进一步划分生成的子网地址。图中表明了子网地址的使用场景,这取决于主机需求数。比如,WAN链路使用/30前缀的子网地址。/30只允许两个主机,对于一对路由器间的点对点连接就够了。
大型网络中,在在成百上千个网络地址,路由器不希望维护这么多路由,路由总结可以降低路由表中的条目数。路由总结是将一系列的网络地址用一个单一的总的地址来表示。图3-33显示,路由器A可以发送3个路由更新条目给路由器B或总结成一个路由条目给路由器B。
路由总结必须发生在2次方的边界,它是基于网络ID中有共同的数字部分。
假如路由器收到以下路由条目:
172.16.168.0/24
172.16.169.0/24
172.16.170.0/24
172.16.171.0/24
172.16.172.0/24
172.16.173.0/24
172.16.174.0/24
172.16.175.0/24
为做路由总结,路由器要知道匹配这些路由条目的从最高位开始的比特数。将IP地址转成二进制格式,如下图3-34所示,你就可以看到这些IP地址的共同的比特位。
图3-34中,前21个比特是所有IP地址的共同比特位,因此,最好的总结条目是192.16.168.0/21。当地址数是2的xx次方,你可以进行总结,否则必须将这些地址划分成组,分组进行总结。因此,为了便于路由器执行总结,规划IP地址时就要有层次性。当使用VLSM时,这种方法格外重要。
用VLSM可以最大程度使用IP地址,更有效地进行路由更新。图3-35显示两个层次上的路由总结。
路由器用以下两种方式管理路由总结:
- 发送路由总结:RIP和EIGRP可以执行跨网络边界的自动路由总结。OSPF和ISIS必须手工配置。EIGRP和RIP-2可以去掉自动总结配成人工总结。
- 从路由总结中选择路由条目:当路由表中有多个条目匹配目的地时,使用路由表中前缀最长的条目。比如,如果路由表存在去192.16.0.0/16和去192.16.5.0/24的路径,去地址192.16.5.99的包将通过192.16.5.0/24进行路由。因为192.16.5.0/24与目的地址192.16.5.99有最长的匹配。