路由协议简介

RIP:
一、路由信息协议(Routing Information Protocol,缩写:RIP)采用距离矢量算法,以跳数做为网络度量值,网络直径不超过15跳,适合于中小型网络。16跳时认为网络不可达。
二、使用UDP报文进行路由信息的交换,使用的端口号为520。目前RIP共有三个版本,RIPv1(无子网无认证、广播), RIPv2(可无类别域间路由、MD5认证、组播224.0.0.9), RIPng(适用于IPv6)。
三、运行原理:
  初始化——RIP初始化时,会从每一个参与工做的接口上发送请求数据包。该请求数据包会向全部的RIP路由器请求一份完整的路由表。请求信息(能够是请求一条路由的信息),应答信息(必定是所有的路由)
  接收请求——RIP有两种类型的消息,响应和接收消息。请求数据包中的每一个路由条目都会被处理,从而为路由创建度量以及路径。RIP采用跳数度量,值为1的意为着一个直连的网络,16为网络不可达。路由器会把整个路由表做为接收消息的应答返回。
  接收到响应——路由器接收并处理响应,它会经过对路由表项进行添加,删除或者修改做出更新。
  常规路由更新和定时——路由器以30秒一次地将整个路由表以应答消息地形式发送到邻居路由器。
  触发路由更新——当某个路由度量发生改变时,路由器只发送与改变有关的路由,并不发送完整的路由表(注意了)。
四、定时器:
  路由器收到新路由或者现有路由地更新信息时(Update定时器决定间隔),会设置一个180秒地超时时间(Timeout定时器)。若是180秒没有任何更新信息,路由的跳数设为16。路由器以度量值16宣告该路由直到刷新计时器从路由表中删除该路由。
  刷新计时器(Garbage-Collect定时器)的时间设为240秒,或者比Timeout定时器多60秒。过了这个时间即删除路由。
  Cisco还用了第三个计时器,称为抑制计时器(Suppress定时器)。接收到一个度量更高的路由以后的180秒时间就是抑制计时器的时间,在此期间,路由器不会用它接收到的新信息对路由表进行更新,这样可以为网路的收敛提供一段额外的时间。
五、防止路由环路:
  计数到无穷(定义16跳)、水平分割(从某接口来的数据包不发回此接口)、毒性逆转(从某接口收到数据包后定义该路由为16并发回)、触发更新(一旦某条路由的度量值改变,即立马发送更新报文)。
六、路由表字段:
  目的地址、下一跳地址、出接口、度量值、路由时间、路由标记。
七、扩展:
  TRIP(Triggered RIP,触发路由信息协议)是RIP协议在WAN(Wide Area Network,广域网)上的扩展:为了将路由管理开销减到最小,路由信息被看成触发更新发送而不是按期广播。
八、参考地址:http://www.h3c.com.cn/Products___Technology/Technology/Router/Other_technology/Technology_recommend/200805/605876_30003_0.htm
http://baike.baidu.com/link?url=eoIWw1jihoV2W9jUVeK9UamVeTLzpMYvC_bANoQ5ZB1whqdjRzt-v4nJMN-e2H1_p7vZTWxcans80ACJKV4y7q
php


OSPF:
一、OSPF(Open Shortest Path First,开放最短路径优先)是基于链路状态的内部网关协议,目前针对IPv4协议使用的是OSPFv2,OSPFv3支持IPv6。支持各类规模的网络,最多可支持几百台路由器,从SPF算法自己保证了不会生成自环路由。
二、数据包:
  Hello-用于创建和维护相邻的两个OSPF路由器的关系,该数据包是周期性地发送的。
  Database Description-用于描述整个数据库,该数据包仅在OSPF初始化时发送。
  Link state request-用于向相邻的OSPF路由器请求部分或所有的数据,这种数据包是在当路由器发现其数据已通过期时才发送的。
  Link state update-这是对link state请求数据包的响应,即一般所说的LSA数据包。
  Link state acknowledgment-是对LSA数据包的响应。
三、链路状态算法:
  当路由器初始化或当网络结构发生变化(例如增减路由器,链路状态发生变化等)时, 路由器会产生链路状态广播数据包LSA(Link-State Advertisement), 该数据包里包含路由器上全部相连链路,也即为全部端口的状态信息。
  全部路由器会经过一种被称为刷新(Flooding)的方法来交换链路状态数据。 Flooding是指路由器将其LSA数据包传送给全部与其相邻的OSPF路由器, 相邻路由器根据其接收到的链路状态信息更新本身的数据库,并将该链路状态信息转送给与其相邻的路由器, 直至稳定的一个过程。
  当网络从新稳定下来,也能够说OSPF路由协议收敛下来时, 全部的路由器会根据其各自的链路状态信息数据库计算出各自的路由表。 该路由表中包含路由器到每个可到达目的地的Cost以及到达该目的地所要转发的下一个路由器(next-hop)。
  OSPF路由协议针对每个区域分别运行一套独立的计算法则,对于ABR来讲, 因为一个区域边界路由器同时与几个区域相联,所以一个区域边界路由器上会同时运行几套OSPF计算方法, 每个方法针对一个OSPF区域。
四、路由器分类:
  内部路由器:
  区域边界路由器:具备相连的每个区域的网络结构数据, 而且了解如何将该区域的链路状态信息广播至骨干区域,再由骨干区域转发至其他区域。
  AS边界路由器:与AS外部的路由器互相交换路由信息的OSPF路由器。
  指定路由器-DR:处于一个网段的中心地位,同一网段上的OSPF路由器创建相邻关系。产生所处的网段的所有路由链路数据包network link,并flooding。
  Hello数据包在一个广播性网段上选出一个ID最大的路由器做为指定路由器DR, 而且选出ID次大的路由器做为备份指定路由器BDR。网段上的其他全部路由器都只与DR及BDR创建相邻关系。ID是指向该路由器的标识,通常是指该路由器的环回端口或是该路由器上的最小的IP地址。
五、故事:
  能够把整个网络(一个自治系统AS)当作一个王国,这个王国能够分红几个区(area),如今咱们来看看区域内的某一我的(你所在的机器root)是怎样获得一张世界地图(routing table)的。
  首先,你得跟你周围的人(同一网段如129.102)创建基本联系。你大叫一声“我在这!”(发HELLO报文),因而,周围的人知道你的存在,他们也会大叫,这样你知道周围大概有哪些人,你与他们之间创建了邻居(neighbor)关系,固然,他们之间也有邻居关系。
  在大家这一群人中,最有威望(Priority优先级)的人会被推荐为首领(Designated Router)首领与你之间是上下级关系(adjacency邻接),它会与你创建单线联系,而不准你与其它邻居有过多交往,他会说:“那样作的话,街上太挤了”。
  你只好经过首领来知道更多的消息了,首先,大家互通消息,他告诉你他知道的全部地图的地名,你也会告诉他你现知道的地名,固然上也许只有你一个点。(Database Description数据库描述报文)
  你发现地名表中有你缺乏的或比你新的东西,你会问他要一份更详细的资料,他发现你的地名表中有他须要的东西,他也会向你索求新资料。(Link State Request链接状态请求报文)
  固然,大家坚决果断地将一份详细资料发送给对方。(Link State Update链接状态升级报文)收到地图后,互相致谢表示收到了。(Link State Ack链接状态响应报文)
  如今,你已经尽你所能获得一份地图(Link State DataBase链接状态数据库),你去查找地图把到全部地方的路挑一条最近(shortest path最短路)的,记为一张表格(routing table路由表),固然之后查这份表格就知道到目的地的一条最近的路了。地图也要收好,万一表格上的某条路不通了能够经过图去找一条新的路。
   其实跟你有联系的,只是周围一群人,外面的消息要经过首领来知道。由于你的地图是跟首领的一致,咱们假设你是首领,你要去画一份世界地图。你命令全部手下向你通报消息,你能够知道你这一群人的任何一点点小动静(event事件)。你手下还会有同时属于两群人的家伙(同一区内两网段),他会告诉你另外一群人的地图,固然也会把大家这一群人的地图泄露,(不过,无所谓啦)。这样,整个区的地图你知道了(对于不知道的那也没办法,咱们尽力了)。
  经过不停地交换地图,如今,整个区的人都有一样的地图了,住在区边境上的人责无旁贷地把这个区的地图(精确到每一群人)发送到别的区,把别的区信息发送进来。国王会把这些边境的人命名为骨干(backbone area)。经过骨干人士的不懈努力,如今,整个国家的地图你都了解得一清二楚了。
   有些人“里通外国”(AS Boundary Router自治系统边界路由器) ,他们知道一些“出国”(AS External route自治系统外部路由)的路,固然他们会把这些秘密公之与众(import 引入),经过信息的传递,如今,你已经有一张完整的“世界地图”了。
   OSPF是这样标记最短的路的:对于某个目的地,首先,考虑是否有同一区内部到目的地的路(intra area区域内),若是有,则在其中取一条离你最近的(花费最小),写进你的表格中,这个目的地多是到本群体某我的也多是到其余群体的,对于通过其余区域的路由,你会不予考虑,跟本身人(同区域)打交道总比与外人(其余区域)打交道好;若是没有本区的路,你只好经过别的区域了(区域间),你只要在地图上找最近的就是了;若是你发现目的地在国外,你也只能先把它标记到你的表格上,期待何时王国扩张到那,你就能够把它标记到国内地图上了。
   OSPF就是这样,给你一份“世界地图”,而且在上面标记了最短的路,如此而已罢了。
六、参考地址:
http://bbs.net130.com/showthread.php?t=32963
http://hi.baidu.com/oplee123/item/6caf7962efd7d09dc5d24918
http://www.h3c.com.cn/Products___Technology/Technology/Router/Other_technology/Technology_recommend/200805/605874_30003_0.htm
算法


EIGRP:
一、内置三张表:路由表、拓扑表、邻居表。可行路由在路由表(最优),而后是拓扑表(可行后继),最后是邻居表(相邻路由器)。
二、使用组播地址为224.0.0.10的hello包(持续发送,对方的hold Time为等待对方发送hello的时间,超过即表明死亡)发现和维护邻居关系;
  Update包更新变化,需ACK确认;
  Query包查询相邻路由表,Reply包回复查询;
  ACK包是没有数据的hello包,对Update\Query\Reply进行确认。
三、路由过程:
  首先,EIGRP路由器之间创建邻接关系,相互发送Full Update消息,在Update消息中包含有全部网段的路由信息。
  接收到Update以后则根据这些路由信息中的metric(邻居通告的metric + 自身到邻居的metric)计算出metric最小的那条路由装载进路由表,咱们称这个最小的metric为FD(可行距离),而后将剩下的RD(通告距离)< 该FD的路由做为可行后继路由装入拓扑表,也就是说要想进入拓扑表,必须知足可行性条件:RD< FD。
  一旦该EIGRP路由器检测到某条路由失效了,则从拓扑表里查找可行后继路由FS,若是有FS,则在最短的时间内用这条FS来替换当前失效的路由信息,并向邻居发出Partial Update通知邻居这条新路由;
  若是拓扑表里没有FS呢,则向邻居路由器发出Query消息,问问邻居有没有办法到达那个目的网段,若是邻居路由表或拓扑表中有去往那个目的地的路由,邻居就会单播发送Reply来回应,Reply中包含了有效路由的详细信息,本地路由器收到后,从新计算metric,放入路由表;
  若是邻居也明确知道本身没办法到达那个目的地,那么在回应的Reply中就是“我也不知道”,本地路由器会将这条失效路由从路由表删除;若是邻居路由器也须要向邻居查询才能知道去往那个目的地的信息,那么它会保留收到的Query,向它的全部邻居发送新的Query,等待Reply,如此,1查10,10查百。。。。。。
  接下来就涉及到Active状态了,如上所述的状况,当本地路由器发现某条路由失效时,则将该路由置入Active状态,向邻居查询可用信息,邻居向它的邻居再发Query。。。咱们应该知道,EIGRP发出的Query消息是必须获得Reply回复的,若是得不到Reply,该路由将一直处于Active状态,若是Active Timer超时,则发生了Stuck-in-Active,路由器会武断的认为邻居路由器发生了问题,而直接把邻居down掉,产生了误判!
  为了防止该问题的发生,可使用timers active disable命令关掉活动计时器。
四、路由表负载均衡:
  EIGRP的metric的计算公式很是复杂,通常状况下两条路由metric是不可能相同的。可是EIGRP能够将metric相近的路由一块儿放入路由表(最优的两条),进行负载均衡。
  traffic-share balanced是按照metric百分比进行负载均衡,metric小的传输的数据多;
  traffic-share min是仅仅使用metric小的那条路由传输数据,另外一条尽管被放入了路由表,可是并不使用它;
  默认时,忽略metric,仅仅根据数据包来轮流使用两条路由
五、其余说明:
  使用3层IP协议号88来标识EIGRP数据包  
  EIGRP passive-interface 被置为EIGRP被动接口,则该接口再也不发送和接收hello、Update消息。
  经过配置EIGRP stub区域能够限制EIGRP Query消息的传播范围,通常设置网络的末梢节点为EIGRP stub区域,可是Update消息仍是会发的。  若是在必定时间内没有从某个邻居那收到ACK,则向该邻居单播重传16次,若仍是没有ACK确认,则认为邻居失效了;EIGRP在发出去的数据包中都包含有一个序列号,只有收到含有相同序列号的ACK确认消息时才会肯定数据包已经到达邻居路由器;
六、参考原地址:http://hi.baidu.com/oplee123/item/86bb1ae32e203ba0cf2d4f18数据库

相关文章
相关标签/搜索