260 likes | 502 Views
OSPF协议. 总结. 高智震. OSPF协议概述. OSPF是一种典型的链路状态路由协议。采用OSPF的路由器彼此交换并保存整个网络的链路信息,从而掌握全网的拓扑结构,独立计算路由。因为RIP路由协议不能服务于大型网络,所以,IETF的IGP工作组特别开发出链路状态协议——OSPF。目前广为使用的是OSPF第二版,最新标准为RFC2328。(第三版只支持IPv6,要想兼容IPv4,必须同时运行第二版与第三版进程)
E N D
OSPF协议 总结 高智震
OSPF协议概述 OSPF是一种典型的链路状态路由协议。采用OSPF的路由器彼此交换并保存整个网络的链路信息,从而掌握全网的拓扑结构,独立计算路由。因为RIP路由协议不能服务于大型网络,所以,IETF的IGP工作组特别开发出链路状态协议——OSPF。目前广为使用的是OSPF第二版,最新标准为RFC2328。(第三版只支持IPv6,要想兼容IPv4,必须同时运行第二版与第三版进程) OSPF直接运行于IP之上并且使用协议号89,就如同TCP直接运行于IP之上并且使用协议号6一样。OSPF没有使用任何传输协议(例如TCP)来提供可靠性保障。OSPF协议自身有一个传输的可靠机制。 OSPF是一个无类路由协议,它支持可变长子网掩码(VLSM)和非连续网络。OSPF使用多播地址224.0.0.5(所有的SPF路由器)和224.0.0.6(指定路由器[DR]和备份指定路由器[BDR])来发送Hello和路由更新分组。OSPF也提供了两种类型的认证(authentication)--普通的文本和消息摘要算法5(MD5)。 OSPF使用Dijkstra算法(迪克斯加算法)作为路由表计算过程的一部分。Dijkstra算法产生最短路径树(SPT)。每一个路由器用一种易于理解的方式--链路状态通告(LSA)来向邻居表述自己和自己的链路。基于来自最短路径树的信息,OSPF可以构画出网络拓扑结构。
邻居和邻接关系的建立[1] • 失效状态(down):新路由器处于失效状态。路由器尝试发送Hello分组,向网段中的其他路由器介绍自己,并试图发现其他的OSPF路由器。该Hello分组使用多播地址224.0.0.5(所有SPF路由器),其DR,BDR字段都设置为0.0.0.0。 • 初始化状态(init):新路由器发送出hello分组等待应答状态。通常等待时间为hello时间的4倍。在这段时间内,新路由器从其他路由器那里收到Hello分组,并获悉谁是DR、BDR。如果收到的hello分组没有指出谁是DR、BDR,则开始选举。 • 双向状态(two–way):在其他路由器A收到来自路由器B的hello分组后,将hello分组中的路由器ID加入到拓扑数据库中,并用多播地址224.0.0.5发送一个HELLO分组,其中包含自己的ID和一个由所有邻居组成的列表。当B收到该HELLO分组后,如果发现自己的ID在这个来自A的HELLO分组里的邻居列表中,那么B将认为和A已经形成了双向的通信状态。 • 预启动状态(exstart):互为邻居的两台路由器A,B。它们根据直连的接口IP选出较大IP那台路由器做为主(master)路由器,这就是预启动状态。两个邻居是根据接口的IP大小来确定主/从关系:谁主谁次并不重要,它们主要是决定由谁来发起通信。
邻居和邻接关系的建立[2] • 交换状态(exchange):两台路由器都发送数据库描述分组(DDP),并切换到交换状态。路由器从邻居路由器那里收到DDP后,将其同自己的拓扑表进行比较。DDP里面只包含拓扑数据库的摘要信息。 • 加载状态(loading):当一台路由器收到了来自邻居的DDP分组,经过比较后发现自己的拓扑数据库信息和DDP中包含的摘要信息存在差异,这时该接收路由器需要更详细的信息,它将使用LSR分组请求有关特定链路的详细信息。 • 完全邻接(full):当A路由器收到来自B的LSR时,它将返回一种LSU分组(就是指收到LSR分组后发送的一种LSA分组)。然后B收到该LSU后,将返回一种LSACK(链路状态确认)分组。同时B和A的拓扑数据库达到了同步,此时,邻居关系就变成了邻接状态。(loading to full) (在NBMA网络里需要手工进行Neighbor的指定。) #sh ip os nei \\查看邻居列表
邻居与邻接关系:Hello协议 • 发现邻居路由。 • 成为邻居之前通过Hello通告两台路由器必须相互认可的几个参数。 • 担当keepalive(保活)角色。 • 确保邻居之间相互通信。 • 用来在一个广播或NBMA环境中选取DR/BDR。 Rr(config-router)#ip os hello-interval \\修改hello间隔 Rr(config-router)#ip os dead-interval \\修改dead间隔
邻居与邻接关系:网络类型[1] • point-to-point 点到点 • broadcast 广播 • NBMA 非广播多路访问 • point-to-multipoint 点到多点 • virtual-links 虚链路
邻居与邻接关系:网络类型[2] • 点到点网络:总是可以形成邻接关系,使用组播地址224.0.0.5。不选取DR/BDR。 • 广播网络:比如以太网、令牌网、FDDI。需要选举DR/BDR。224.0.0.5代表AllSPFRouters。 • NBMA网络:比如X.25、帧中继、ATM。需要选举DR/BDR。并且需要手动指定邻居。 • 虚链路:在跨越非骨干标准区域的两台ABR上设置。单播发送数据包。
邻居与邻接关系:DR/BDR DR:描述多路访问网络与OSPF区域内其它相连的路由器。管理多路访问网络上泛洪扩散过程。注意:DR是基于接口的概念。 BDR:当DR失效时,它成为DR。 优先级最高成为DR;优先级相同(其中优先级设置为0的接口将不参加DR/BDR选举;优先级最高可设置为255),则RouterID最大者成为DR;路由器会自动将Loopback接口IP作为RouterID;因此在OSPF中我们通常为Loopback设置IP地址来充当RouterID;RouterID最好设置为32位子网掩码。OSPF把Loopback看作末梢网络。 Rr(config-if)#ip os pri \\在接口上修改优先级
OSPF的管理距离与COST值 管理距离是描述一个路由协议的可信度的。例如RIP为120、OSPF为110,两协议如果学到目的地相同而路径不同的路由条目,则OSPF比RIP更可信,选择OSPF不选RIP。 OSPF的Cost值范围在1~65535之间,其缺省值计算方法为10^8/BW,BW为接口带宽。 Rr(config-router)#auto-cost reference-bandwidth ? \\可以修改缺省的参考带宽,“?”代表参考带宽值,OSPF默认以“100Mbps=1”为基准参考点;如果要适应更高速的网络,如“1000Mbps”,则“?”的取值为“1000”。
OSPF区域 • OSPF协议引入“分层路由”的概念,将网络分割成一个“主干”连接的一组相互独立的部分,这些相互独立的部分被称为“区域” (Area)。 • “区域”大大降低了链路状态数据库规模,也降低了路由器内存消耗,降低了SPF运算规模。 • 大量的LSA泛洪被限制在某一区域内。 • OSPF区域分为骨干区域[area 0]与非骨干区域。 • 非骨干区域又分为标准区域、末梢区域、完全末梢区域、非纯末梢区域、完全非纯末梢区域。
OSPF区域:链路状态数据库 LSA包格式中有一个年龄字段,当LSA被创建时,路由器将该字段设置为0,随着数据包的扩散,每台路由器都会增加通告中的年龄。[当然,另一个选项是从某个最大年龄开始,然后递减,OSPF是递增,IS-IS是递减]。如果到达MaxAge(OSPF协议规定为60分钟),将从OSPF区域中清除。所以必须采取一种手段来阻止其被清除,这便是链路状态刷新(LSR),刷新间隔30分钟。
OSPF区域:7种链路状态通告[1] • 路由器LSA(Router LSA)由区域内所有路由器产生,只能在本区域内泛洪广播。 • 网络LSA(Network LSA)由区域内的DR或BDR产生,报文包括DR和BDR连接的路由器链路信息。网络LSA也仅仅在产生这条网络LSA的区域内部进行泛洪。 • 网络汇总LSA(Network summary LSA)由ABR产生,可以通知本区域内的路由器通往区域外的路由信息。在一个区域外部但是仍然在一个自治系统内的缺省路由也可以通过这种LSA来通告。如果一台ABR路由器经过骨干区域从其他的ABR路由器收到多条网络汇总LSA,那么这台始发的ABR路由器将会选择这些LSA通告中代价最低的LSA,并且将这个LSA的最低代价通告给与它相连的非骨干区域。 • ASBR汇总LSA(ASBR summary LSA)也是由ABR产生,它是一条主机路由,指向ASBR路由器地址的路由。
OSPF区域:7种链路状态通告[2] • 自治系统外部LSA(Autonomous system external LSA)由ASBR产生,告诉相同自治区的路由器通往外部自治区的路径。自治系统外部LSA是惟一不和具体的区域相关联的LSA通告,将在整个自治系统中进行泛洪。 • 组成员LSA(Group membership LSA)*目前不支持组播OSPF(MOSPF协议)。 • NSSA外部LSA(NSSA External LSA)由ASBR产生,几乎和LSA 5通告是相同的,但NSSA外部LSA通告仅仅在始发这个NSSA外部LSA通告的非纯末梢区域内部进行泛洪。在NSSA区域中,当有一个路由器是ASBR时,不得不产生LSA 5报文,但是NSSA中不能有LSA 5报文,所有ASBR产生LSA 7报文,发给本区域的路由器。在通过ABR向其它区域宣告时,LSA 7报文将转变成LSA 5报文。
OSPF区域:末梢区域 (Stub Area)不允许AS外部通告(LSA 5)在其内部进行泛洪。在末梢区域边界的ABR路由器使用网络汇总LSA(LSA 3)向这个区域通告缺省路由,而且这条缺省路由不会被通告到这个区域的外部去。 #Rr(config-route)area 1 stub //将Area 1设置成末梢区域
OSPF区域:完全末梢区域 (Totally stub)使用缺省路由到达OSPF自治系统外部的目的地址,而且使用缺省路由到达这个区域外部的所有目的地址,完全末梢区域的ABR路由器不仅阻塞LSA 5,也阻塞所有的汇总LSA,除了通告缺省路由的那一条类型3。 Rr(config-route)#area 1 stub no-summary //将Area 1设置成完全末梢区域,此时会将类型3用默认路由代替,NO-summary的作用是将类型3、4用默认路由简化。
OSPF区域:非纯末梢区域 (Not-so-stubby-area)允许外部路由通告到OSPF自治系统内部,而同时保留自治系统的其余部分的末梢区域特征,ASBR将始发类型7的LSA来通告那些外部网络,这些NSSA外部LSA将在整个NSSA区域中泛洪,在ABR上被阻塞。ABR会将类型7的转化为类型5通告到其他区域中。 Rr(config-route)#area 1 nssa //将Area 1设置成非纯末梢区域
OSPF区域:完全非纯末梢区域 (Totally not so-stub area)在NSSA中阻断第3、4、5类LSA,只有缺省路由存在(注意:no-summary命令总是产生一条缺省的标记为“*IA”的路由) Rr(config-route)#area 1 nssa no-summary //将Area 1设置成完全非纯末梢区域
OSPF路径类型 [O]区域内路由:在路由表中通过“O”来表示,其质量优先级最高。 [IA]区域间路由:在路由表中通过“IA”来表示,其质量优先级次于域内路由条目。 [E1]外部路由类型1:度量=本路由器到达ASBR的路由度量+ASBR到外部环境路由的度量;其质量优先级高于E2。 [E2]外部路由类型2:度量=ABSR到外部环境路由的度量,默认外部路由为“O E2”;其质量优先级最低。
地址汇总 OSPF有两种汇总形式: • 一种是将其他路由协议重发布到OSPF AS时对路由进行汇总。 Rr(config-router)#summary_add network_add net_mask [ASBR上] Rr(config-router)#ip route network_add net_mask Null0 • 另一种是对一个区域进行汇总。 Rr(config-router)#area area_id rang network_add net_mask [ABR上] Rr(config-router)#ip route network_add net_mask Null0 这两种汇总方式都创建汇总LSA并发送到Area 0,骨干区域又会将链路状态发送到其他区域。 注意:OSPF区域中的地址空间应该连续。这样能够使ABR上的汇总容易进行。不能在主干区域进行汇总。所有的汇总结果都发送到Area 0 ,而后又从这一点发送出来。
辅助地址 使用辅助地址的两个原则 • 只有在主网络或子网(primary network or subnet)也运行OSPF协议的时候,OSPF才会通告一个辅助网络或辅助子网。 • OSPF视辅助地址为末梢网络,不会发送Hello报文,在辅助网络上无法建立邻接关系,需要其它路由协议的帮助。 因此,辅助网络如果不是末梢网络,则需要其它路由协议来配合完成路由路径选择。 Rr(config-if)#ip add ip_address net_mask secondary Rr(config-if)#ip add ip_address net_mask
路由重发[1] 重分发路由器配置命令使得路由器能够将从一个路由协议获得的路由翻译成另一种路由协议。 Metrics(度量值): • a)跳数:报文要通过的路由器输出端口的个数; • b)Ticks:数据链路的延时; • c)代价(cost):可以是一个任意的值,是根据带宽、费用或其它网络管理者定义的计算方法得到的; • d)带宽:数据链路的容量; • e)时延:报文从源端传到目的地的时间长短; • f)负载:网络资源或链路已被使用的部分的大小; • g)可靠性:网络链路的错误比特的比率; • h)最大传输单元(MTU):在一条路径上所有链接可接受的最大消息长度(单位为字节)。
路由重发[2] Administrative Distances(管理距离):指一种路由协议的路由可信度。按可靠性分配信任等级。 在进行路由重分发之前,必须首先: • a) 决定在哪儿添加新的协议; • b) 确定自治系统边界路由器(ASBR); • c) 决定哪个协议在核心,哪个在边界; • d) 决定进行路由重分发的方向。
路由重发[例] e.g 1, 把 RIP 协议注入到 OSPF 区域中: Router(config)# router ospf 100 Router(config-router)# redistribute rip subnets e.g 2, 把 OSPF 协议重分发到 RIP v2 协议中: Router(config)# router rip Router(config-router)# rip version 2 Router(config-router)# no auto-summary Router(config-router)# redistribute ospf 100 metric 10 Passive-interface s0 ---> 在进程下配置,(被动接口:只接收,不发送,通常用于与PC机相连的接口) Rr(config-router)#default-information originate /* 向 OSPF AS 宣告公网出口 */
虚链路 a)OSPF多域配置时的限制:骨干区域area 0必须存在;非骨干区域之间通信时都必须先连接到骨干区域。 b)当OSPF网络已经设计好后,有新的区域添加进来,可能会产生这样的情况:不可能通过直连链路连接到骨干区域,为了符合要求,虚链路被提了出来。 配置虚链路的几条相关的原则: a) 虚链路必须配置在两台ABR路由器之间 b) 配置了虚链路所经过的区域必须拥有全部的路由选择信息,这样的区域又被称为传送区域 (Transit Area)。 c) 传送区域不能是一个末梢区域。 配置: Rr(config-router)# area area-id virtual-link 对方router-id //(在两边的 ABR 上都要配置) 使用命令 show ip ospf virtual-link 可以查看一条虚链路的状态
END 高智震