Chapter6 Enhanced IGRP(EIGRP) and Open Shortest Path First(OSPF) EIGRP Features and Operation EIGRP 是 种无分类(classless),增强的距离向量路由协议,和 IGRP 类似,EIGRP 也使用 AS, 但是和 IGRP 不同的是,EIGRP 在它的路由更新信息中要包含子网掩码的信息.这样,在我们设 计的网络的时候,就允许我们使用 VLSM 和 summarization.EIGRP 有时候也算是混合型路由 协议,因为它同时具有了距离向量路和链路状态的一些特征:比如它不像 OSPF 那样发送链路 状态包而发送传统的距离向量更新;EIGRP 也有链路状态协议的特征比如它在相邻 router 启 动的时候同步路由表,然后只在拓扑结构发生变化的时候发送 些更新.这样就使得 EIGRP 能 够很好的在 个大型网络中工作.EIGRP 的主要特点如下: 1.通过 PDMs(Protocol-Dependent Module)来支持 IP,IPX 和 AppleTalk 2.有效的邻 router 的发现 3.通过可靠传输协议(Reliable Transport Protocol,RTP)进行通讯 4.通过扩散更新算法(Diffusing Update Algorithm,DUAL)来选择最佳路径 Protocol-Dependent Module EIGRP 的 大特点是它可以支持几种网络层协议:IP,IPX 和 AppleTalk 等.能像 EIGRP 那样支 持数种网络层协议的还有 Intermediate System-to-Intermediate System(IS-IS)协议,但是这个协 议只支持 IP 和 Connectionless Network Service(CLNS).EIGRP 通过 PDMs 来支持不同的网络 层协议.每个 EIGRP 的 PDM 保持 个单独的路由信息表来装载某种协议(比如 IP)的路由信 息.也就是有 IP/EIGRP 表,IPX/EIGRP 的表和 AppleTalk/EIGRP 表 Neighbor Discovery 在运行了 EIGRP 的 router 彼此进行交换信息之前,它们首先必须成为邻居(neighbor).建立邻居 关系必须满足以下 个条件: 1.Hello 信息或接受收 ACK 2.AS 号匹配 3.K 值 链路状态协议趋向于使用 Hello 信息来建立邻居关系,它不会像距离向量那样周期性的发送 路由更新.为了保持邻居关系,运行了 EIGRP 的 router 必须持续从邻居那里收到 Hellos 如果不在 个 AS 内,router 之间是不会共享路由信息的,也不会建立邻居关系.这样做的优点 是在大型网络中可以减少特定某个 AS 内路由信息的传播 当 EIGRP 发现新邻居的时候,就开始通告整个路由表给别的 router,当所有的 router 都知道新 成员的加入,学习到新的路径以后,从那开始,路由表中有变动的部分才会传播给别的 router.当 router 接收到邻居的更新以后,把它们保存在本地数据库表里 看下几个术语: 1.可行距离(feasible distance):到达一个目的地的最短路由的度 2.后继(successor):后继是一个直接连接的邻居 router,通过它具有到达目的地的最短路由.通过 后继 router 将包转发到目的地 3.通告距离(reported distance):相邻 router 所通告的相邻 router 自己到达某个目的地的最短路 由的度 4.可行后继(feasible successor):可行后继是一个邻居 router,通过它可以到达目的地,不使用这 个 router 是因为通过它到达目的地的路由的度比其他 router 高,但它的通告距离小于可行距离, 因而被保存在拓扑表中,用做备择路由 Reliable Transport Protocol(RTP) EIGRP 使用一种叫做 RTP 的私有协议,来管理使用了 EIGRP 的 router 之间的通信,如 RTP 的 名字,可靠(reliable)即为这个协议的关键.RTP 负责 EIGRP 数据包到所有邻居的有保证和按顺 序的传输.它支持多目组播或单点传送数据包的混合传输/出于对效率的考虑.只有某些 E IGRP 数据包被保证可靠传输.RTP 确保在相邻 router 间正在进行的通信能够被维持.因此,它 为邻居维护了一张重传表.该表指示还没有被邻居确认的数据包.未确认的可靠数据包最多可 以被重传 次或直到保持时间超时,以它们当中时间更长的那个为限.EIGRP 所使用的多目 组播地址是 224.0.0.10 Diffusing Update Algorithm(DUAL) EIGRP 使用 DUAL 来选择和保持到远端的最佳路径.它能使 router 判决某邻居通告的一个路 径是否处于循环状态,并允许 router 找到替代路径而无须等待来自其他 router 的更新.这样做 有助于加快网络的汇聚.这个算法顾及以下几点: 1.备份的路由线路 2.支持 VLSM 3.动态路由恢复 4.没有发现线路的话发送查询寻找新路线 Using EIGRP to Support Large Networks EIGRP 在大型网络中能够工作的很好,包含了很多优点比如: 1.在 个单独的 router 上可以支持多个 AS 2.支持 VLSM 和 summarization 3.路由发现和保持 Multiple AS 只有 AS 号相同的 router 才能共享路由信息.把大型网络分成不同的 AS,可以有效的加快汇 聚.EIGRP 的 AD 为 90,而外部 EIGRP(external EIGRP)的 AD 为 170 VLSM Support and Summarization 之前说过 EIGRP 支持 VLSM,也支持不连续子网.什么是不连续子网?,如下图: 如图可以看到,2 个子网 172.16.10.0/24 和 172.16.20.0/24 由 10.3.1.0/24 来连接,但是 routerA 和 B 认为它们只有网络 172.16.0.0 EIGRP 支持在任何运行 EIGRP 的 router 上 summary 的手动创建,这样可以减少路由表的体 积.EIGRP 自动把网络 summarize 到等级边界,如下图: Route Discovery and Maintenance 类似一些链路状态的协议,EIGRP 通过 Hello 信息来发现邻居;而它又和距离向量类似,使用传 闻路由的机制,即不主动去发现,而是听从别人的信息.EIGRP 使用一系列的表来存储信息: 1.邻居表,记录了邻居的一些信息 2.拓扑表,记录了网络中的拓扑状态 3.路由表,根据这个来做路由决定 EIGRP Metrics EIGRP 使用混合度,包含到 个方面: 1.带宽 2.延迟(delay) 3.负载(load) 4.可靠性(reliability) 5.最大传输单元(maximum transmission unix,MTU) 默认情况下 EIGRP 使用带宽和延迟来决定最佳路径 Configuration EIGRP 配置 EIGRP,首先在全局配置模式下使用 router eigrp [AS 号]命令.接下来再使用 network 命令 定义直接相连的网络.仍然可以像配置 IGRP 那样使用 passive-interface 命令来禁止某个接口 接收或发送 Hello 信息.并且记住 EIGRP 的 AD 是 90 来看 个配置实例,如图: Router RouterA RouterB Network Address 192.168.10.0 192.168.20.0 192.168.20.0 Interface fa0/0 s0/0 s0/0 Address 192.168.10.1 192.168.20.1 192.168.20.2 192.168.40.0 s0/1 192.168.40.1 192.168.30.0 fa0/0 192.168.30.1 RouterC 192.168.40.0 s0/0 192.168.40.2 192.168.50.0 fa0/0 192.168.50.1 配置 RouterA: RouterA(config)#router eigrp 10 RouterA(config-router)#network 192.168.10.0 RouterA(config-router)#network 192.168.20.0 RouterA(config-router)#^Z RouterA# 记住配置 EIGRP 和配置 IGRP 十分类似,唯一不同的是 EIGRP 是无分类路由(classless routing) 配置 RouterB: RouterB(config)#router eigrp 10 RouterB(config-router)#network 192.168.20.0 RouterB(config-router)#network 192.168.30.0 RouterB(config-router)#network 192.168.40.0 RouterB(config-router)#^Z RouterB# 配置 RouterC: RouterC(config)#router eigrp 10 RouterC(config-router)#network 192.168.40.0 RouterC(config-router)#network 192.168.50.0 RouterC(config-router)#^Z RouterC# 这样配置看上去好象没什么问题,EIGRP 的 AD 比之前配置的 RIPv1 和 IGRP 的低,但是有个 问题就是:增加了 CPU 的负担,而且占用了额外的带宽 还有 点要注意的是自动 summarization,router 默认会向分级边界进行 summarize.如下图: A 的配置如下: A(config)#router eigrp 100 A(config-router)#netw 172.16.0.0 A(config-router)#netw 10.0.0.0 A(config-router)#no auto-summary B 的配置如下: B(config)#router eigrp 100 B(config-router)#netw 172.16.0.0 B(config-router)#netw 10.0.0.0 B(config-router)#no auto-summary 使用 no auto-summary 命令后,运行了 EIGRP 的 router 就不会相互进行通告 Verifying EIGRP 在刚才配置好的情况下使用 show ip route 命令查看路由信息,如下: RouterA#sh ip route (略) D 192.168.30.0/24 [90/2172416] via 192.168.20.2, 00:04:36, Serial0/0 (略) 注意字母 D 代表 DUAL,即代表 EIGRP,AD 为 90 show ip route eigrp 命令只显示路由表中的 EIGRP 选项 show ip eigrp neighbors:显示所有的 EIGRP 邻居 show ip eigrp topology:显示 EIGRP 拓扑表条目,如下: RouterC#sh ip eigrp topology (略) P 192.168.40.0/24, successors, FD is 21469856 Via Connected, Serial0 (略) 注意前面的 P 代表 passive 状态,这样的状态是正常的如果看见的是 A 即 active 状态而不是 P,说明 router 失去了到这个网络的路径并且在寻找替代路径 Open Shortest Path First(OSPF) Basics 在 个大型网络中,假如不是所有的设备都是 Cisco 的,EIGRP 明显就不行,因为它是私有的 所以就可以使用 OSPF 协议或者路由 redistribution(路由协议之间的翻译服务).OSPF 使用 Dijkstra 算法,是 种链路状态协议.OSPF 汇聚快速,支持多个耗费相同的路径.和 EIGRP 不同 的是,OSPF 只支持 IP 路由.OSPF 也能够设计网络为层次化的,这样就把 个大的网络分割成 几个小的网络,叫做区域(area).这是 OSPF 最好的设计方法.把 OSPF 设计成层次化的好处是: 1.减少路由成本(overhead) 2.加速汇聚 3.把大网络分割成小的区域 下面是 个典型的 OSPF 设计图,如下: 注意这个图,BR 为骨干 router(backbone router,BR),连接到这个骨干的为区域 或者骨干区域 (backbone area),OSPF 必须要有个区域 所有的 router 应该尽可能的连接到这个区域.连接其 他区域到骨干区域的为区域边界 router(area border router,ABR),ABR 必须至少有 个接口位 于区域 中.OSPF 运行在 个 AS 中,而且能够连接多个 AS,连接多个 AS 的 router 为自治系 统边界 router(autonomous system boundary router,ASBR) OSPF Terminology 来看一些 OSPF 的术语: 1.link:网络或分配给网络的 router 的接口.当接口被加到 OSPF 的进程中以后,OSPF 把它认为 成是 条连接(link) 2.Router ID(RID):用来鉴别 router 的 IP 地址,Cisco 通过使用回环(loopback)接口的最高的 IP 地址来鉴别 router.如果回环接口没有配置 IP 地址,OSPF 将选择所有物理接口中最高的 IP 地 址 3.neighbors:2 个或多个拥有连接到某个网络的接口的 router 4.adjacency:允许直接进行路由更新的运行了 OSPF 的 个 router 的关系.不像 EIGRP,OSPF 直接和建立了 adjacency 关系的邻居共享路由信息.并不是所有的邻居都是 adjacency 关系,这 个取决于网络类型和 router 的配置 5.neighborship database:所有运行 OSPF 的能够接收 Hello 信息的 router 的名单列表.各种信息, 包括 RID 和状态等,都保持在每个 router 的 neighborship database 中 6.topology database:包含了从链路状态通告(link state advertisement,LSA)包得来的信息.router 把它输入到 Dijkstra 算法中算出最短路径 7.link state advertisement:共享在运行了 OSPF 的 router 之间的链路状态和路由信息.router 和 与它建立了 adjacency 关系的交换 LSA 包 8.designated router(DR):多路访问网络中为避免 router 间建立完全相邻关系而引起大量开 销,OSPF 在区域中选举一个 DR,每个 router 都与之建立完全相邻关系.router 用 Hello 信息选 举一个 DR.在广播型网络里 Hello 信息使用多播地址 224.0.0.5 周期性广播,并发现邻居.在非 广播型多路访问网络中,DR 负责向其他 router 逐一发送 Hello 信息 9.backup designated router(BDR):多路访问网络中 DR 的备用 router,BDR 从拥有 adjacency 关 系的 router 接收路由更新,但是不会刷新 LSA 更新 10.OSPF areas:连续的网络和 router 的分组.在相同区域的 router 共享相同的 area ID.因为 个 router1 次可以成为 个以上的区域的成员, area ID 和接口产生关联,这就允许了某些接口可 以属于区域 1,而其他的属于区域 0.在相同的区域的 router 拥有相同的拓扑表.当你配置 OSPF 的时候,记住必须要有个区域 0,而且这个一般配置在连接到骨干的那个 router 上.区域扮演着 层次话网络的角色 11.boradcast(multi-access):广播型(多路访问)网络.比如以太网,允许多个设备连接,访问相同的 网络;而且提供广播的能力.在这样的网络中必须要有 个 DR 和 BDR 12.nonbroadcast multi-access(NBMA):这类网络类型有帧中继(Frame Relay),X.25 和异步传输 模式(Asynchronous Transfer Mode,ATM),这类网络允许多路访问,但是不提供广播能力 13.point-to-point:点对点网络.一个物理上的串行电路连接或者是逻辑上的,不需要 DR 和 BDR, 邻居是自动发现的 14.point-to-multipoint:点对多点网络.不需要 DR 和 BDR SPF Tree Calculation 在 个区域内,每个 router 计算最佳最短的路径,这个计算是基于拓扑数据库里的信息和最短 路径优先(shortest path first,SPF)算法的 SPF算法是OSPF的基础.当router启动后,它就初始化路由协议数据结构,然后等待下层协议关 于接口已可用的通知信息.当router确认接口已准备好,就用OSPF Hello信息来获取邻居信息, 即具有在共同的网络上接口的router.router向邻居发送Hello包并接收它们的Hello包.除了帮 助学习邻居外,Hello包也有keep-alive的功能 在多路访问网络中,Hello 选出一个 DR 和一个 BDR.DR 负责为整个网络生成 LSA,它可以减 少网络通信量和拓扑数据库的大小 当两个相邻 router 的链接状态数据库同步后,就称为邻接.在多路访问网络中,DR 决定哪些 router 应该相邻接,拓扑数据库在邻接 router 间进行同步.邻接控制路由协议包的分发,只在邻 接点间交换 每个 router 周期性地发送 LSA,提供其邻接点的信息或当其状态改变时通知其它 router.通过 对已建立的邻接关系和链接状态进行比较,失效的 router 可以很快被检测出来,网络拓扑相应 地更动.从 LSA 生成的拓扑数据库中,每个 router 计算最短路径树,以自己为根.这个最短路径 树就生成了路由表 Cisco 使用基于带宽的度,而其他厂商是用不同的标准来痕量度的.Cisco 痕量度的公式为 100,000,000/带宽(bps).比如 100Mbps 的快速以太网接口的耗费就为 1,10Mbps 的就为 10,64Kbps 的耗费为 1563.可以使用 ip ospf cost 命令来修改耗费,值的范围是 到 65535 Configuring OSPF 在 CCNA 的认证课程里,我们只讨论单域(single area)的 OSPF 配置.配置 OSPF 的 个要素: 1.启用 OSPF 2.配置 OSPF 的区域 Enabling OSPF 启用 OSPF 在全局配置模式下使用 router ospf [进程 ID]命令,进程 ID 范围是 到 65535.可以 在同 个 router 上使用不止 个的 OSPF 进程,但是这并不等于多域(multi-area)的 OSPF.第二 个进程保持完整的拓扑数据库的拷贝,而且独立于第一个进程进行管理通信 Configuring OSPF Areas OSPF 使用 wildmask 来进行配置,如下: RouterA(config)#router ospf RouterA(config-router)#network 10.0.0.0 0.255.255.255 area 如上,0.255.255.255 为 wildmask,0 的部分表示必须精确匹配,255 表示为任意匹配.network 10.0.0.0 0.255.255.255 area 这个命令的作用是:鉴定 OSPF 操作的接口,而且也会加进 OSPF LSA 通告的范围呢.OSPF 使用这个命令查找所有处在 10.0.0.0 的网络里的接口,然后把它们放 进区域 来看 个配置实例,如图: Router RouterA RouterB Network Address 192.168.10.0 192.168.20.0 192.168.20.0 192.168.40.0 192.168.30.0 Interface fa0/0 s0/0 s0/0 s0/1 fa0/0 Address 192.168.10.1 192.168.20.1 192.168.20.2 192.168.40.1 192.168.30.1 RouterC 192.168.40.0 192.168.50.0 s0/0 fa0/0 192.168.40.2 192.168.50.1 由于 OSPF 的 AD 为 110,IGRP 的为 100,EIGRP 的为 90.所以要先去掉之前所配置的协 议,RouterA 配置如下: RouterA(config)#no router eigrp 10 RouterA(config)#no router igrp 10 RouterA(config)#no router rip RouterA(config)#router ospf 132 RouterA(config-router)#network 192.168.10.1 0.0.0.0 area RouterA(config-router)#network 192.168.20.1 0.0.0.0 area RouterA(config-router)#^Z RouterA# RouterB 的配置如下: RouterB(config)#no router eigrp 10 RouterB(config)#no router igrp 10 RouterB(config)#no router rip RouterB(config)#router ospf RouterB(config-router)#network 192.168.0.0 0.0.255.255 area RouterB(config-router)#^Z RouterB# 注意这里的参数 192.168.0.0 0.0.255.255;代表查找 192.168.0.0 里的任何接口,并把它们放到区 域0里 RouterC 的配置如下: RouterC(config)#no router eigrp 10 RouterC(config)#no router igrp 10 RouterC(config)#no router rip RouterC(config)#router ospf 64999 RouterC(config-router)#network 192.168.40.0 0.0.0.255 area RouterC(config-router)#network 192.168.50.0 0.0.0.255 area RouterC(config-router)#^Z RouterC# Verifying OSPF Configuration 使用 show ip route 命令来验证下,如下: RouterA#sh ip route (略) O 192.168.30.0/24 [110/65] via 192.168.20.2, 00:01:07, Serial0/0 (略) 注意上面的 O 代表 OSPF,AD 为 110,度为 65 其他的一些验证命令: show ip ospf:显示每条或所有 ODPF 进程的相关信息,包括 RID,区域信息,SPF 信息和 LAS 计 时器信息等,如下: RouterA#sh ip ospf Routing Process “ospf 132” with ID 192.168.20.1 (略) 如上可知道 RID 为 192.168.20.1.即 router 的最高的那个 IP 地址 show ip ospf database:显示拓扑数据库信息,如下: RouterA#sh ip ospf database OSPF Router with ID (192.168.20.1) (Process ID 132) Router Link States (Area 0) Link ID ADV Router Age Seq# Checksum 192.168.20.1 192.168.20.1 648 0x80000003 0x005E2B (略) Link count show ip ospf interface:显示接口相关的 OSPF 信息,包含: 1.接口 IP 地址信息 2.区域的分配信息 3.进程 ID 4.RID 5.网络类型 6.耗费(cost) 7.优先级(priority) 8.DR/BDR 9.计时器间隔(timer intervals) 10.邻接的邻居信息 show ip ospf neighbor:显示邻居的信息,如果 DR 和 BDR 存在的话,它们的信息也会被显示出 来 show ip protocols:显示配置了的所有路由协议的相关信息 OSPF and Loopback Interfaces 在配置 OSPF 路由协议的时候配置回环(loopback)接口是很重要的 件事.Cisco 建议你配置 OSPF 的时候顺便配置回环接口.所谓回环接口,是逻辑接口而非物理接口,即不是你触摸的到 的 router 上的真正的接口.作用是作为诊断 OSPF 而用.如果 router 的某一个接口由于故障 down 掉而不可用了,此时你怎么通过 telnet 来连接并进行管理用呢?所以就引入了回环接口 是概念,回环接口永远不会 down 掉,你就可以通过连上回环接口来进行管理 Configuring Loopback Interfaces 配置回环接口前先使用 show ip ospf 命令查看 RID,接下来对接口进行配置,如下: RouterA 的配置: RouterA(config)#int loopback0 RouterA(config-if)#ip address 172.16.10.1 255.255.255.0 RouterA(config-if)#no shut RouterA(config-if)#^Z RouterA# RouterB 的配置: RouterB(config)#int lo0 RouterB(config-if)#ip address 172.16.20.1 255.255.255.0 RouterB(config-if)#no shut RouterB(config-if)#^Z RouterB# RouterC 的配置: RouterC(config)#int lo0 RouterC(config-if)#ip address 172.16.30.1 255.255.255.0 RouterC(config-if)#no shut RouterC(config-if)#^Z RouterC# 注意 个回环接口的 IP 地址配置机制为任意配置,但是 IP 地址必须处于不同的子网内 Verifying Loopbacks and RIDs 验证回环接口的地址,可以使用 show running-config 的命令查看,如下: RouterC#sh run (略) ! interface Loopback0 ip address 172.16.30.1 255.255.255.0 ! (略) 可以使用 show ip ospf database 命令,show ip ospf interface 命令和 show ip ospf 命令查看 RID 信息.记住在你重新启动 router 前,新的 RID 是不会显示出来的,如下,启动后的 RID 信息: RouterC#sh ip ospf Routing Process “ospf 64999” with ID 172.16.30.1 and Domain ID 0.0.253.231 (略) 如上可以看出假如回环接口 IP 地址高于物理接口 IP 地址,将以回环接口的 IP 地址作为新的 RID ... 注意前面的 P 代表 passive 状态,这样的状态是正常的如果看见的是 A 即 active 状态而不是 P,说明 router 失去了到这个网络的路径并且在寻找替代路径 Open Shortest Path First(OSPF) Basics 在 个大型网络中,假如不是所有的设备都是 Cisco 的,EIGRP 明显就不行,因为它是私有的 所以就可以使用 OSPF 协议或者路由... 14.point-to-multipoint:点对多点网络.不需要 DR 和 BDR SPF Tree Calculation 在 个区域内,每个 router 计算最佳最短的路径,这个计算是基于拓扑数据库里的信息和最短 路径优先 (shortest path first,SPF)算法的 SPF算法是OSPF的基础.当router启动后,它就初始化路由协议数据结构,然后等待下层协议关 于接口已可用的通知信息.当router确认接口已准备好,就用OSPF... 才能共享路由信息.把大型网络分成不同的 AS,可以有效的加快汇 聚.EIGRP 的 AD 为 90,而外部 EIGRP(external EIGRP)的 AD 为 170 VLSM Support and Summarization 之前说过 EIGRP 支持 VLSM,也支持不连续子网.什么是不连续子网?,如下图: 如图可以看到,2 个子网 172.16.10.0/24 和 172.16.20.0/24