rip技术概览
rip工作在udp的端口520上-也就是说,所有的rip数据包的源端口和目的端口都是520。
1 初始化——w.net130.com/cms/pub/network/network_protocal/04937.htm" target="_blank">rip 初始化时,会从每个参与工作的接口上发送请求数据包。该请求数据包会向所有的rip路由器请求一份完整的路由表。该请求通过lan上的广播形式发送lan或者在点到点链路发送到下一跳地址来完成。这是一个特殊的请求,向相邻设备请求完整的路由更新。
2 接收请求——rip有两种类型的消息,响应和接收消息。请求数据包中的每个路由条目都会被处理,从而为路由建立度量以及路径。rip采用跳数度量,值为1的意为着一个直连的网络,16,为网络不可达。路由器会把整个路由表作为接收消息的应答返回。
3 接收到响应——路由器接收并处理响应,它会通过对路由表项进行添加,删除或者修改作出更新。
4 常规路由更新和定时——路由器以30秒一次地将整个路由表以应答消息地形式发送到邻居路由器。路由器收到新路由或者现有路由地更新信息时,会设置一个180秒地超时时间。如果180秒没有任何更新信息,路由的跳数设为16。路由器以度量值16宣告该路由,直到刷新计时器从路由表中删除该路由。刷新计时器的时间设为240秒,或者比过期计时器时间多60秒。CISCO还用了第三个计时器,称为抑制计时器。接收到一个度量更高的路由之后的180秒时间就是抑制计时器的时间,在此期间,路由器不会用它接收到的新信息对路由表进行更新,这样能够为网路的收敛提供一段额外的时间。
5 触发路由更新——当某个路由度量发生改变时,路由器只发送与改变有关的路由,并不发送完整的路由表。
注意:
rip-1是一个有类的路由选择协议,因此路由宣告中不携带子网掩码。rip-1采用接收路由的接口的子网掩码来确定目的网络的子网掩码。这种做法仅对接收到的路由和直连网络处于同一主网的情况有效。如果接收到的路由不是同一个主网,路由器就会试着去匹配该路由的主网掩码,可能是a,b,c类。因此整个rip路由域中保持每个主网掩码长度的一致很重要。当重发布时,如果redi的子网和本地接口的不符,则不会发送该网络,要用ip sum-add来调整。
路由器a在主网128。200。0。0中有两个接口,每个接口上的24位掩码一致。因此,路由器只会接收属于主网128.200.0.0的24位掩码的路由更新信息。当路由器接收到属于另一个主网(如192.16.1.4/30)的路由更新时,会将主网掩码位或者是地址的类边界掩码的一个汇总路由加入到其路由表中,该地址汇总位192.16.1.0/24
路由器b也有两个接口。一个在主网128.200.0.0/16中,另一个在网络192.16.1.0/24中。当b接收到128.200.2.0的子网时,他会试着把他们发送出去。由于该接口掩码(30位)不同,只有汇总路由128.200.0.0/16能被发送
rip-2
支持vlsm。路由器在路由更新中包含了子网掩码,使得路由器能够处理vlsm寻址。
每个路由条目中都携带下一跳地址
支持外部路由标签
多播路由更新
支持md5认证
rip-2成为无类路由选择协议,从而无需在整个路由域中保持掩码的一致性
rip-2用来发送路由更新的多播地址是224.0.0.9,而rip-1使用包含全部主机在内需要接受的广播地址
rip-2对rip-1是完全向后兼容,这通过兼容交换机制和接收控制交换机制来实现。可以用 ip rip [send|receive]version[1|2|1 2] 来手动配置交换机制。
路由器中可能存在关于某个路由的多个条目,但列出的只能死管理距离最小的路由。路由后边的数字是该路由的管理距离,接着是跳数。via 字段解释了路由源自何处,路由更新信息的接收时间和接收接口。如:
r 128.200.10.0/24 [120/1] via 128.200.1.1, 00:00:17, ethernet0/0
passive-interface——该命令能够禁止在某个接口上发送路由更新信息,但路由器仍然会在该接口上监听并接收更新信息。
neighbor——该命令能够定义一个rip邻居路由器来与之进行单播更新信息的交换,它要和passive-interface命令配合使用
offset-list[access-list 0-99{in|out} offset[metric_offset_1-16]
这条命令可以用来增加路由度量的值。不能超过16
distance[1-255]adjacent_neighbors_ip_address wildcard_mask[access-list 0-99]
这命令可以改变从某个邻居路由器接收到路由条目的管理距离
default-metric[1-16]设置所有分布到rip的默认度量
将路由选择协议重分布进另一个路由选择协议时要小心,如果有一个重分布点,路由选择协议固有的环路预防机制就足以避免环路的出现。
使用子网掩码与路由更新信息不同时传输的路由选择协议(如rip igrp)时,一定要注意保持整个网络中掩码位的一致性。
无论何时都需要默认路由。没有默认路由,路由器就需要在其路由表中有到每个网络的路径。默认路由配置成指向缺省网关的路由。cisco路由器通常会进行有类路由查找,即除非使用全局命令ip classless设置,(会对路由表进行无类查找)否则路由器不会将数据包转发到网关。(不认识0.0.0.0 的网络地址)
默认路由的概念随路由选择协议的不同而不同,每个路由选择协议使用特定的方法来定义和宣告默认路由。
rip的两步:
1 ip route 0.0.0.0 0.0.0.0 a.b.c.d
2 ip classless 没有它,路由器不会将数据转发到网关(不认识0.0.0.0)
在帧中继网络中,点到多点的网络下面运行rip要手工关闭水平分割功能。
设置某条路由的管理距离
distance 5 直连的那个接口地址 0.0.0.0 access-list 0-99 (目的地地址)
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的虚链路
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包类型
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/……
ospf 基本邻接关系
1 停止(down)——邻居路由其的初始状态,表明上一个消亡时间段里没有收到来自该邻居路由器的hello数据包
2 尝试(attempt)——这种状态只适用于nbma网络中的邻居路由器,表明邻居路由器已经用nei命令静态设置。接口进入工作状态后,或者当路由器为dr或bdr时,路由都会进入attempt状态。
3初始(init)——表明已经从邻居路由器接受到hello数据包,但还没有开始双向通信。
4双向(2-way)——该状态表明路由器在从邻居路由器接收到的hello数据包的nei字段中发现了自己的路由器id号,也说明双向通信已经建立,可以进行dr和bdr选举。
当ospf的接口进入工作状态之后,会发送处hello数据包。路由器收到相互的hello数据包后,会将邻居路由器置于init状态。邻居路由器处于在init状态时,会将自己的路由器id放到hello数据包中。路由器收到含有他的邻居路由器的id号的hello数据包时,会将此邻居路由器置为2way状态。2way状态保证在路由器之间建立双向通信途径。路由器要进行dr/bdr选举以及交换lsa就必须处在这一状态。
5开始交换(exstart)——路由器之间形成了一种主从关系,准备传输数据库描述数据包。接口地址最大的邻居路由器会成为主路由器。
6交换(exchange)——路由器会在exchange状态下向邻居路由器发送数据库描述数据包。他包扩整个链路数据库。链路状态数据库可以在这个阶段完成相互同步的工作。同步之后,路由器为下面两个最终状态之一:
1装载(loading)——路由器会向所有处在loading状态中的路由器发送链路状态请求数据包。该状态要求发送最新的lsa。
2完全邻接(full)——该状态中的路由器具有完整的邻接关系。
ospf 邻接关系的建立可以总结为以下4个阶段:
1发现邻居路由器
2在邻居路由器之间建立双向通信
3对spf数据库进行同步
4建立完整的邻接关系
用sh ip ospf nei 查看ospf 邻接关系的状态,debug ip ospf adj命令则能提供邻接关系实际建立过程的信息。
最短路径树spf和ospf的度量代价
会以到目的地址路由代价的和为基础来确定每个目的地址的最短路径。路由代价越低,路由越优先。如果网络中含有多个供应商提供的设备,一定要多花一点时注意路由代价的计算方法,以保证整个ospf网络的一致性。
默认代价值可以用ip ospf cost 1-65535命令加以修改。show ip route 来查看路由代价
路径类型
(o) 区域内路径/路由--处在同一ospf区域中的路由 lsa 1 2
(oia)区域间路径/路由--处在不同的ospf区域,但在同一自治系统中的路由 lsa 3 4
(o e1 ,e2)外部类型1 ,2 的路由--外部路由重新分布进ospf时,必须为他分配个度量或代价。e1 为,外部路由度量的代价在加上asbr报告路由的内部路径代价之和。e2不加上,内部路径。
(n1 n2)--外部路由redi进nssa区域中时会发生这类路由。1 ,2 的解释同上
配置ospf时应注意
1 在fr 里面配置nbma时,要手工指定邻居在中心点上,并在两个非中心点的位置的接口下 写ip ospf pri 0 保证中心成为dr
2 看题目的要求,若要是有能自己ping通自己的时候,怎要在路由器上做自己map 自己的配置。
3 认证分为两种,链路的认证和区域的认证。配置命令是差不多的,只不过在做链路认证的时候在ospf 进程里不用打are au 的认证了。
4 在做nbma的时候,要保证在2层上是fullmap 的,所以要做fr的全map
5 注意虚链路的使用,一般工作中是尽量避免使用的。把网络分层式结构破坏了。不必要的路由器放在了are 0里面。会怎大收敛时间。注意做的时候使用的是对方的router-id,而不是ip add .
6 在做ospf 时第一步是要定义自己的router-id,习惯是这样的
7 习惯上我们还在运行lookback 口上加上 ip ospf point-to-p,不让lo口发送32位主机路由。
8 在把ospf redi 到rip 时,一定要定义metric值,因为默认发布后是16跳,(不可达)所以一般上,所有的redi我们都是写上metric 的
9 在把lookback 口通告时考虑一下,链路的稳定行,多考虑一下如果连接断开了,我怎么能实现不映象选路
10主要的检查命令 sh ip ospf datebasa sh ip ospf nei debug ip ospf adj
11注意弄清楚几种不同fr 下的ospf 的情况和配置。
12为了对ospf中特定的路由更新信息进过滤,必须使用向内的分布列表。ospf路由不采用传统的方式发送路由更新信息,因此,只有在接受更新信息的路由器上面使用向内的分布列表,才能的路由进行控制。
13在和isis做redi是候,注意直连接口是不能发送出来的,要手工redi ,最好再在后面左上router0-map con 在全局下做 router-map con match ip add int ?? 具体写上希望在ospf 中希望看到的条目。
注意dr的选举ip ospf pri 0 默认优先级为1
更为理想的解决方法是把帧中继多点网络改成为点对多点网络,会使ospff将多点网络当成多个点对点网络。将网络类型改为广播类型也能强制建立邻接关系和dr/bdr的选举。
完全存根,阻止类型3,4的lsa 进入本区域。
注意: 因为hello的跳数只有一跳,所以在无pvc下就不能形成nei关系。
所以即使手工指出了nei,而且在2层上有数据包到达,也不能形成邻居,必须是有pvc直连的才行。
full/drother(e网等多路访问结构中,非dr和bdr的路由器)
drother:两个正常的状态是2-way 和full。一下的状态是错的:
——down ospf的初始状态,表明从邻居路由器没有接受到的任何信息,但是可以向这一状态下的邻居发送hello数据包。没有从某邻居路由器接收到hello数据包,则该邻居路由器的状态会从full变为down
——attempt 该状态只对由邻居路由器命令定义的nbma环境下的路由器有效。attempt的意思是路由器在向邻居路由器发送hello数据包,但是没有接收到任何返回信息。
——init 该状态说明路由器接受到邻居路由器发送的hello数据包,但是在接受的hello数据包中并没有包含自己的rid
——2way 该状态说明两台路由器之间已经建立了双向通信。双向的意思就是双发路由器都接收到对方的hello数据包。
——exstart 建立邻接关系的第一个状态,用来选择链路上的主,从路由器。
——exchang和loading 在这些状态下,ospf发送链路状态请求数据包以及链路状态更新数据包。
dear time——路由器没有收到hello数据包时,将此路由器宣布为消亡之前应该等待的时间。
sh ip ospf interface
ospf的一个常见的问题就是使用了不正确的网络语句和反掩码。最好的验证ospf的生效接口的命令就是 sh ip ospf interface
ospf重新分布和路由控制
为了对ospf中特定的路由更新信息进行过滤,必须使用向内的分布列表。ospf路由不用采用传统的方式发送路由更新信息,因此,只有在接受更新的路由器上使用向内的分布列表时才有助于路由控制。在将一个协议重分布到另一个去时,可以使用redi,加上me值。如果对特定的路由进行控制,route-map做
in,阻止路由更新信息进入某个接口,只过滤路由,而不能过滤lsa
redi 加metric-type 可以改变e1 或e2
ospf 以一个包含带宽在内的公式为基础来计算到某个目的地址的路由代价。要改变路由选择,一种方法是改变接口的带宽,另一种是改变接口代价。
cost (1_4294967295) 这条命令只用于ospf,不会对线路的实际数据流造成映象
bandwidth 命令只被路由选择用来计算接口代价值,也不会映象链路实际数据的流通。
passive-interface 由于抑制了hello数据包,因此不会建立邻居路由器,导致不进行路由信息更新信息的接受和发送。