Ospf 的汇总功能
Ospf有两种汇总形式、1是将其他路由选择协议重分布进ospf 时对路由进行的汇总。另一种是对一个区域的汇总。这两种汇总方式都创建汇总LSA并发送到AREA0,骨干区域又会将链路状态发送到其他区域。
注意:ospf区域中的地址空间应该连续。这样能够使ABR上的汇总容易进行。
不能在主干区域进行汇总。所有的汇总结果都发送到AREA 0 ,而后又从这一点发送出来。
对外部路由或者使重新分布进ospf的路由进行汇总,在ASBR上 summary_add network_add net_mask
要汇总从一个ospf区域进入到AREA 0的路由,area area_id rang network_add net_mask
注意:距离矢量协议RIP V1 V2 中讲过,如果要接收路由,RIP必须处在自然的位边界8,16,24 上。要在ASBR上面将 are 100 rang 172.16.2.0 255.255.255.0 使其在/24的边界上面。
OSPF 的默认路由
1 将网络标记位默认。
Ip default-network net_add
Ip route 0.0.0.0 0.0.0.0 ip_add
这条特殊的静态路由不需要重分布进入OSPF来进行传播。OSPF 会将0.0.0.0 0.0.0.0视为一个默认路由,并对他进行相应的处理。如果使用上面的default-net 命令,就还需要用到 always
2 发送传播该默认路由,用下面这条命令
Default-information orifinate [always] [metric][metric-type oe1]
[route-map] 一般来讲always是要打上的。
3 启动无类IP ip classless
例 将网络 206.191.200.0 标记为默认网络:
Ip default_net 206.191.200.0
或者直接将其指向一个地址:
Ip route 0.0.0.0 0.0.0.0 206.191.200.1
命令default-information originate always 可以发送该默认网络路由。如果路由器用default-net命令将网络标记为默认,加上 always 将默认路由转发出去。
OSPF 认证
设置密码时,不需要输入接口密码的加密类型,只要在所有的配置完成之后用全局命令service password-encryption 启动所有的密码保护功能即可
普通认证
Area are_id auth
Int s0
Ip ospf au password
加密认证
Are are_id au me
Int s0
Ip ospf me key_value md5 password
OSPF按需电路备份
这种困难主要是有趣ospf的区域连接性造成的。对备份接口进行控制的关键在于备份接口所处的ospf区域。
Ospf按需电路会伪装hello数据包(在多播地址224.0.0.5上)以启动按需电路。它通过只在电路第一次激活时交换LSA信息以及设置LSA的DONOTAGE位的方法来试图对LSA的发送加以控制。如果拨号链路在AREA0中,或者时OSPF网络具有外部LSA或类型5的LSA,或者是OSPF网络在其NSSA区域里含有类型7的LSA,那么按需电路就无法正常工作。类型5和7的LSA或者NSSA的LSA会强制使一个DDR链路(如ISDN)不停地进行呼叫。多数网络都会有某种形式地重分布操作,并且一定会在网络中有类型5地LSA不断振荡。只有和按需电路相连地STUB区域可以避免由类型5地LSA导致地DDR链路不停呼叫。配置按需电路,需要进行3个步骤地工作:
1 在网络链路地两端将接口配置成为OSPF点对点网络地接口。“广播”类型的网络中不能抑制hello数据包,而且虚链路也不能建立在存根区域中。
2 用AREA X STUB 命令将所有的接口配置到同一个STUB区域中。
3 用接口命令ip ospf demand-circuit 将网络链路的呼叫方配置成按需电路。
注:只有主接口位于AREA 0 中时其备份接口才会进入AREA 0中。用backup interface命令或dialer watch 命令可以启动动态的路由方式。切记所有的LSA都会进入AREA 0中。LSA的不停流入AREA0会导致接口的不停呼叫。在这种情况下,必须运行一些配置技术强制性的使接口不进行没有必要的呼叫。
OSPF的虚链路
AREA0中改变任何计时器的值或者使OSPF的认证方式时,一定要记住在虚链路的另一端作相应的修改。
利用show ip ospf virtual-links 命令和标准的show ip route 以及 ping 可以验证虚链路的功能。如果工作正常,虚链路的状态应为“UP”邻接关系的状态则为“FULL”
要将一条路由标记为默认路由而不使用静态路由,采用的时全局命令default-network …… .而路由的传播则时通过OSPF命令 default-information originate always 来实现的。这里要记住的一点是,一台路由器要把数据包转发到一跳默认路由去,所有的路由器都需要启用全局命令 ip classless 。而默认路由不会自动进入NSSA区域,因此NSSA区域必须将参数default-information-originate添加到路由器命令area 10 nssa 中去。
Area 10 nssa default-information-originate
Default-information originate always
Ip classless
Ip default-network 128.10.0.0
(完全的配置)
网路可用时,就把默认路由传播出去,不可用时就不传。可以通过route-map来实现
Default-information orifinate always route-map con
Ip prefix-list con per 128.10.0.0/24
Route-map con
Match ip add prefix-list con
由于NSSA的默认路由是以不同的方法加以控制的,因而NSSA区域的默认路由不能通过调用route-map来进行控制。
要改变路由器转发路由的路径选择,可以利用bandwidth命令改变链路的路由成本,或者是利用接口命令ip ospf cost直接改变路由成本。
在ASBR上记住要使用passive-interface以防止E接口以及其他串行接口上的一些不必要的广播。
在redi方面有的问题:
Igrp rip 等距离项量协议,只能接收那些与接收到路由的接口的子网掩码一致的路由。如果路由器要接收所有OSPF 路由,那么这些路由就必须汇总到一个24位长的网络掩码范围之内。在不是24位掩码的OSPF 的路由器上面使用 area x rang ……命令之后,ASBR上的路由表现在就具备了OSPF 的全部路由了。
把来自其他网络的路由进行汇总,可以采用OSPF命令summary-add
Ip ospf hello-interval 命令更改hello的发送时间,如果只在一个接口上改了hello的时间,路由器的邻居关系会失效,而路由的转发也会出现问题。记住一定要在同一IP网络中所有的路由器上进行。
区域:一个区域是指一个路由器的集合,它有一个一样的拓扑数据库,ospf用区域把一个AS分成多个链路状态域,因为一个区域的拓扑结构对另一个区域是不可见的,一个区域不会被扩散,这个特征大大降低了一个AS中的路由流量数量
代价:是一种标准,路由器用来比较各条路径到同一目的耗费。用低的路径是最好的,ospf根据带宽来计算使用一种连接的代价,带宽越宽,代价越低越好。
在一个ospf域中的所有路由器都靠邻接关系互联,所以信息可以在整个网络中传播。为了使这个过程可靠,每个链路状态通告都必须被应答。
每一个路由器将会对区域中的网络拓扑结构有一个完整的观察,以自己为根生成一个树,并且有着到达任一个目的网络或主机的完整道路。
Ospf协议直接在ip89协议上运行,它以一个24字节的头开始
版本号 OSPF包类型 包长度
路由器标识
区域标识
效验和 确认类型
确认
确认
有五种OSPF包类型
1 hello 发现并维持邻居
2 数据库描述 概括数据库容量
3 链路状态请求 请求数据库信息
4 链路状态更新 数据库更新
5 链路状态应答 应答
1)Hello包:hello协议的责任是发现邻居并维持邻居关系。Hello包以网路类型为根据被周期发向路由器接口。Hello协议还负担着在多路访问网络中挑选出DR.
2)数据库描述包:数据库描述包是ospf的第2类包,作用是描述路由器的链路状态数据库的容量,并且形成邻接的第一步。数据库描述器包通过一个投票应答方式发出,一个路由器被指定为主机,其他的被指定为从机,主机发出数据库选票,从机通过发出数据库描述器包来发出应答。
3)链路状态请求包:链路状态请求包是ospf的第三类包,一旦整个数据库使用数据库描述包来与路由器交换,路由器将比较它邻居的数据库和它自己的。此时,路由器也许会发现邻居的数据库在某些部分比自己的更先进。如果这样,路由器将会要求这部分使用链路状态请求包。
4)链路状态更新包:路由器使用扩散技术来传递LSA,LSA有很多类(路由器,网络,概括,外部)
5)链路状态确认包:它用来在收到LSA时进行应答,这种应答使ospf的扩散过程更可靠。
链路状态通告
1 路由器链路
在一个区域中的每个路由器产生一个路由器LSA(1类LSA),这个通告描述了路由器接口到这个区域的状态和代价,所有到那个区域的路由器连接都会被描述成一个单独的路由器LSA。这个路由器LSA只在这个单独的区域中泛洪。
2 网络链路
网络链路通告是第二类LSA,每个多路访问的网络的DR都有不少于一个的连接路由器,它产生一个网络通告,这个通告描述了网络中的所有连接路由器,包括DR本身。
3 汇总链路通告
汇总链路是第三类和第四类LSA,ABR产生汇总LSA,它描述了到一个单独目的路径,汇总LSA只在一个单独的区域中发布,并且所表述的目的在区域的外部,但它仍是同一个AS中的部分。主干里只发布区域内的路径。
4 外部链路
ASBR产生一个外部的第五类LSA,它发布路由器知道的目标,它是AS外部。AS外部第五类LSA被用来发布到AS内的缺省路径。
有两类外部路径:外部种类1和外部种类2。这两类的不同之处在于,路径计算成本与度量的方法不同,外部种类1路由器使用外部成本加上内部成本,来计算一个路径。种类2比种类1更受欢迎,并且它被认为是缺省类在一条路径被重新载入OSPF中时。
5如何工作
当路由器上OSPF工作时,路由器发一个hello包给一个组播地址224.0.0.5,于是这个包被周期性地发送所有配置了OSPF地接口上,这取决于接口类型。对于广播媒体如E网,令牌环或点到点接口,hello包是每10秒发送一次,在NBMA上如帧中继或ATM,hello包每30秒发送一次。
Hello包不仅用来建立邻居关系,并发现那个邻居在同一条线上,它还被用来描述路由器地那些可供选择的功能,如路由器是处在一个常规或残余的区域中。Hello包还被用来挑选出DR.
在邻居发现后,双向通信确立,指定路由器被挑出(在一个多路访问媒介上),路由器就设法与邻居路由器形成一个邻接。
为了形成一个邻接,路由器必须使它们的数据库同步。为了完成这个任务,每个路由器通过发送一个连续的数据库描述数据包而向其他路由器描述它的数据库,这个过程被称为数据库交换过程。
在数据库交换过程中,两个路由器形成一个主从关系,主路由器发送的每个数据库描述包包含一个序数。从路由器通过目送个序数来应答表示接收。
在数据库交换过程中,每个路由器检查它的数据库看它的邻居所受到的链路状态通告是否比它自己的数据库复本更新,路由器对此作记录,并且在数据库交换过程结束后,路由器要求更新LSA通过使用一个链路状态请求包。每个路由器用一个链路状态更新去应答那个链路状态请求,当请求的路由器收到了一个更新的LSA,它应答这个包,当数据库描述过程结束了并且所有链路状态请求被更新,数据库被同步了。
当路由器A和B第一才在线干作时,它们都初始化,并开始发送hello包,此时,两个路由器都不知道对发在网络中,也没DR,路由器B收到路由器A发的hello包,改变邻接状态从下到初始化,这个过程能够从在路由器B上运行show ip ospf nei中看出来。
State 项下面变成了 init/……
此时,路由器在他邻居发来的hello包中看到了自己,并且直接通信已经建立,邻接从初始化变到第二条路,这个过程可以通过 show ip ospf nei 中看出来。
State 项下面变成了 2way/……
路由器B在一个hello包中暗示路由器A是链路上的DR,邻接状态从初始变到交换(开始),这个过程可以在路由器B上运行 show ip ospf nei 看出。 从路由器采取了主路由器的数据库描述(DD)序数。
State 项下面变成了 exstart/……
在主从关系建立,以及两个路由器有了相同的DD序数后,路由器开始交换数据库描述包,这时,邻接状态从(开始)变到交换,这个变化 show ip ospf nei 看出
State 项下面变成了 exchange/……
在整个数据库通过使用DD包进行交换后,路由器将比较邻居的数据库和它自己的数据库,,这时,路由器也许会发现邻居的数据库的某部分比自己的新,如果这样,路由器将会要求这些部分使用链路状态请求包,此时,邻接状态将会载入,这个过程用 show ip ospf nei 看出
State 项下面变成了 loading/……
在链路状态请求都被满足后,路由器A和B被认为是同步了,即两路由器完全邻接,show ip ospf nei
State 项下面变成了 full/……
第一步,路由器A和B发出hello包,注意在最初的两个包中没有DR,在第三个hello包中,路由器B被选为了 DR
在 debug 的最后一行 会出现:designated router =2.2.2.2 路由器选举出的DR
第二步,路由器B被选为DR,现在路由器开始交换数据库描述包。第一个包仅仅是一个初始化包,它没有包含数据库信息。
在debug的第一行 会出现: type=database desp 最后一行 会出现:
Init(这是一个初始化数据包)=1 , more=1 ,master (路由器B是主)
DD sequence number = 8633 顺序号是8633
第三步,路由器A和B 继续发送数据库描述包,主机发出回送而从机发出应答,从主机来的回送和从机来的应答都包含链路状态数据库的汇总,这种交换在从主机来的回放和从机来的应答的more位断掉或置零时进行。
在debug 的中间会出现: init=0,more=1,slave
DD sequence number = 8633
Ls sequence number =2147483650
最后,当数据库交换结尾时,会出现:
Init=0,more=0,slave (m位设置为0)
第四步,现在路由器A和B交换完了数据库信息。每个路由器看着自己的数据库,并比较自己的信息和从它邻居那收到的信息。如果它自己的数据库信息不如从它邻居那收到的信息新,路由器就会请求发出那个信息。这个过程需要用到链路状态请求包。
在debug的第一行,会出现: type= LS req
第五步,在路由器从它邻居那里收到链路状态请求包以后,路由器将发送出被请求的部分。当路由器收到更新,它会发出一个应答包给发送者使它知道包已收到
在debug的第一行, 会出现: type= LS upd
另一个路由器 会出现: type=LS ack
第六步,所有的链路状态请求被执行完后,数据库同步了,路由器完成全邻接了。
这次的比较多,知识点也是和上面的有重复的,就是理解上有些深入,大家耐心看看