OSPF(open shortest path first)开放式最短路径优先协议,它是基于链路状态的路由协议,使用IP头中协议号89 OSPF的操作或者说原理: 1.发送HELLO报文,建立邻接关系 用show ip ospf neighbor命令看到state项是FULL则表示已建立邻接关系 2.通过泛洪LSA通告形成相同的链路状态数据库 3.使用SPF算法形成路由表 OSPF使用SPF算法来避免环路,每台路由器都形成以自己为根的树 OSPF路由器都需要提供一个路由器ID,CISCO路由器通过两个方法来得到它们的router ID 1.路由器首先选取它所有的lookup接口上数值{zg}的IP地址 2.如果路由器上没有配置lookup接口,那么路由器将选取它所有物理接口上数值{zg}的IP地址,用作路由器ID的接口不 一定要运行OSPF协议 OSPF的HELLO协议 1.它是发现邻居路由器的方法 2.在两台路由器成为邻居之前需要通过HELLO报文协议通告这两台路由器必须相互认可的几个参数 3.HELLO报文在邻居路由器之间担当keepalive角色 4.它确保了路由器之间的双向通信 5.它用来在广播网络或非广播多址网络上选取DR与BDR HELLO报文包含的信息 1.始发路由器的路由器ID 2.始发路由器接口的区域ID 3.始发路由器接口的子网掩码 4.始发路由器接口的认证类型与认证信息 5.始发路由器的HELLO时间间隔 6.始发路由器接口的路由器无效时间间隔 7.路由器的优先级 8.DR与BDR 9.始发路由器的所有有效邻居的路由器ID OSPF的网络类型 1.点对点网络(point-to-point) 在点到点网络上的有效邻居总是形成邻接关系,发送OSPF报文的目的地址也总是224.0.0.5(串口) 2.广播型网络(Broadcast) 是多址网络,要选举DR与BDR(以太口网络) 3.非广播多址(NBMA)网络 需要选举DR与BDR,并且所有的OSPF报文都是单播的 4.点到多点网络(Point-to-Multipoint) 在这种网络上不需要选举DR与BDR 5.虚链路(VirtualLinks) 在虚链路上OSPF报文是经单播方式发送的 所有的网络都可以归纳为传送网络与末梢网络两种 DR与BDR的选取过程 1.路由器和它的邻居路由器之间首先成功建立双向通信,即2-way状态,接着检查每台邻居路由器发送的HELLO报文的优先级、 DR、BDR字段,列出所有具有DR和BDR选取资格的路由器列表,路由器的优先级必须大于0才有资格竟选 2.从具有选取资格的路由器的列表中,创建一个还没有宣告为DR路由器的所有路由器的子集 3.如果在这个子集中的一个或者多个邻居路由器,它们在HELLO报文的BDR字段包含了它们自己的接口地址,那么具有{zg}优 先级的邻居路由器将宣告为BDR路由器,在优先级相同的情况下,具有{zg}路由器ID的邻居路由器将被选作BDR路由器 4.如果在这个子集中没有路由器宣称自己是BDR路由器,那么具有{zg}优先级的邻居路由器将被宣告为BDR路由器,在优先级 相同的情况下具有{zg}路由器ID的邻居路由器将被选作BDR路由器 5.如果一个或多个具有选取资格的路由器在HELLO报文中DR字段包含它们自己的接口地址,那么具有{zg}优先级的路由器将 被宣告为DR路由器,在优先级相同的情况下具有{zg}路由器ID的邻居路由器将被选作DR路由器 6.如果没有路由器宣称自己是DR路由器,那么新选取的BDR路由器将成为DR路由器 当一台OSPF路由器启动并去发现它的邻居路由器时,它将去检查有效的DR与BDR路由器,如果网络中存在DR与BDR,这台路由器将接受DR与BDR,如果不存在再执行选取过程 OSPF的五种数据包 1.hello数据包 2.database deseription(DBD)数据库描述包 3.Link state request(LSR)链路状态请求 4.Link state update(LSU)LSA包含在LSU中 5.Link-state acknowledgement(LSACK) HELLO发送的地址为224.0.0.5 DR/BDR的发送地址为224.0.0.6 DR-other的发送地址为224.0.0.5 OSPF计算COST的公式是cost=10的8次方/带宽,不过在端口下用ip ospf cost xxx 命令来修改的话就不用这个公式了 非骨干区域必须要连到骨干区域0上来,它可以提高路由的效率与网络的稳定性,否则则要采用虚链路来连接区域 虚链路的条件: 1.虚链路必须配置在两台ABR路由器之间 2.配置了虚链路所经过的区域必须拥有全部的路由选择信息,也叫传送区域 3.传送区域不能是一个末梢区域 OSPF虚链路的配置例子: 拓朴:R0-------R1-----------R2------------R3 R0与R1间是area0.R1与R2间是area1.R2与R3间是area2,R1的router ID 是1.1.1.1,R2的router ID是2.2.2.2 配置:R1上area 1 virtual-link 2.2.2.2 R2上area 1 virtual-link 1.1.1.1 这样就可以了,区域2就可以连到骨干区域0上来了,可用show ip ospf virtual-link OSPF的区域 1.普通区域: 域内、域间与类型5的路由 LSA1、LSA2、LSA3、LSA4、LSA5 2.stub区域: 域内、域间 LSA1、LSA2、LSA3、LSA4 3.total stub: 域内与一条默认的域间路由 4.NSSA : 域内、域间与类型7的路由 5.total NSSA:域内、类型7、一条默认路由 OSPF类型1与类型2的区别,NSSA区域重分发的是E1与E2,非N1与N2,重分发命令red con sub me 1 met-type 1/2 E2/N2在OSPF传播的时候cost永远不变 E1/N1会根据所通过的网段增加cost值 OSPF的区域汇总 OSPF的域间路由汇总,在ABR上做 area x range a.b.c.d e.f.g.h 如area 1 range 10.0.0.0 255.255.192.0 OSPF的域外路由汇总,一般在ASBR上做,也可在ABR上做 summary-address a.b.c.d e.f.g.h 如summary-address 11.0.0.0 255.255.252.0 OSPF的6种LSA 1.路由器LSA:由每台路由器产生,这个通告列出了路由器所有的链路与接口,并指出了它们的状态与沿每条链路方向出站的代 价,这些LSA通告只会在始发区域内部泛洪 show ip ospf database router可查看所有路由器LSA通告 2.网络LSA:是由DR路由器发出的LSA通告,它列出了所有与之相连的路由器,包括它本身,也只是在区域内泛洪 show ip ospf database network 3.网络汇总LSA:是由ABR路由器发出的,ABR路由器发送一个网络汇总LSA到一个区域,用来通告该区域外部的目的地址 show ip ospf database summary 虽然在一个区域内部OSPF协议是一个链路状态协议,但是它却使用了距离矢量的算法 来查找域间路由 4.ASBR汇总LSA:也是由ABR路由器始发的,ASBR汇总通告除了所通告的目的地是一个ASBR路由器而不是一个网络外,其它 的与网络汇总LSA都是一样的 show ip ospf database asbr-summary 5.自主系统外部LSA:也叫外部LSA,是由ASBR路由器的,用来通告到达OSPF自主系统外部的目的地或者是到OSPF自主系统 外部的缺省路由的LSA,外部LSA通告将在整个自主系统中进行泛洪 show ip ospf database external 6.NSSA外部LSA:是指在非纯末梢区域NSSA内始发于ASBR路由器的LSA通告,这个通告与自主系统外部LSA没什么区别, 只是它仅仅在NSSA区域内部泛洪 show ip ospf database nssa-external OSPF的路由表查找 区域内路径--------->区域间路径------------>E1外部路径------------->E2外部路径 |