资源描述
EIGRP协议学习笔记
EIGRP
介绍:EIGRP是思科私有协议,它属于增强型内部网关路由协议(高级矢量协议),它有时也被描述成一个具有链路状态协议行为特性的距离矢量协议。无类/IGP/混合/路由协议,支持VLMS(子网) / CIDR (支持超网) 支持认证(MD5加密),EIGRP协议使用了一个称为扩散计算(diffusing computations)的方法----在多台路由器之间通过一个并行的方式执行路由的计算从而在保持无环路的拓扑时可以随时获取较快的收敛,部分更新/增量更新。支持多个网络层协议组件(PDM)-------------(IP,IPv6,IPX等 )不同网络层协议生成的EIGRP表是不一样的依赖PDM子模块实现的。以组播地址发送更新(组播地址224.0.0.10)也支持单播。支持接口的手工汇总,支持等价负载均衡和非等价负载均衡。EIGRP的管距:内部90 外部170 手工汇总5
三张表:
邻居表:所有的邻居
拓扑表:所有的路由条目
路由表:运行算法,选出最优路由条目
EIGRP协议包含以下4个部件
1, 依赖于协议的模块
2, 可靠传输协议(RTP)
3, 邻居发现和恢复模块
4, 扩散更新算法(DUAL)
依赖于协议的模块:EIGRP协议实现了IP协议,IPX协议和AppleTalk协议的模块,它可以担负起某一特定协议的路由选择任务,例如,IPX EIGRP 模块可以负责在IPX网络上与其他IPX EIGRP进程进行路由信息交换的任务,并且把这些信息传给DUAL。另外,IPX模块也接收和发送SAP信息
可靠传输协议(RTP):用来管理EIGRP报文的发送和接收,可靠的发送是指发送是有保障的而且报文是有序的发送。有保障的发送是依赖cisco公司私有的算法来实现的,这个私有的算法称为“可靠组播(reliable multicast)它使用保留的D类地址224.0.0.10。每个接收可靠组播报文的邻居都会发送一个单播的确认报文。有序的发送是通过在每个报文中包含两个序列号来实现的。每个报文都包含一个由发送该报文的路由器分配的序列号,这个序列号在每台路由器发送一个新的报文时递增1,另外,发送路由器会把最近从目的路由器收到的报文的序列号放在该报文中。在一些实例中,RTP也可以使用不可靠的发送,不需要确认,而且在使用不可靠发送的报文中不包含序列号。
EIGRP协议使用多种类型的报文,所有这些报文都通过IP报文头部的协议号88来标识。
1, hello报文(hello):用于邻居的发现和恢复的过程,hello报文使用组播方式发送,而且使用不可靠的发送方式。
2, 确认报文(acknowledgments, ACKs)是不包含数据的hello报文,ACKs报文总是使用单播方式和不可靠的发送方式。
3, 更新报文(update):用于传递路由更新信息,只在必要的时候传递必要的信息。这些报文是使用可靠的发送方式。
4, 查询(query)和答复(reply)报文:用来管理它的扩散计算的,查询报文可以使用组播方式或者单播方式发送,而回复报文总是单播方式发送的。查询和回复报文都使用可靠的发送方式。
5, 请求报文(request):最初是打算提花给路由服务器使用的报文类型。但是这个应用从来没有实现过。
邻居发现和恢复模块:在大多数的网络中,hello报文是以组播方式每5s发送一次的,其中减掉一个很小的随机时间差用来防止更新的同步,在多点的x.25,帧中继,等接口上,他们的hello报文是以单播方式每60s发送一次的。Hello报文的时间间隔可以在每个接口上使用命令:ip hello-interval eigrp 进行更改。
当一台路由器从它的邻居路由器收到一个hello报文时,这个报文将包含一个抑制时间(holdtime)。这个抑制时间会告诉本路由器,在它收到后续的hello报文之间等待的最长时间。如果抑制计时器超时了,路由器还没有收到hello报文,以将宣告这个邻居不可到达,并且通知DUAL这个邻居丢失了,在缺省的情况下,抑制时间是hello报文时间间隔的3倍长,也就是说,对于低速的非广播多路访问网络来说是180s对于其他所有的网络来说是15s这个缺省值可以通告在每个接口上配置命令ip hold-time eigrp来更改。
扩散更新算法(diffusing update algorithm):指的是为了随时能够打破路由环路,而使用扩散计算去执行一个分布式的最短路径的路由选择。
1,邻接(adjacency):路由器使用hello报文发现它的邻居和标识自己比例邻居识别,形成邻接后就会形成的一条虚链路,路由器就可以从它们的邻居接收路由更新信息(路由和度量值)。
2,可行距离(feasible distance FD):到达每个目的地的最小度量将作为那个目的网络的可行距离.
3,可行性条件(feasibility condition FC):本地路由器的一个邻居路由器所通告的到达一个目的网络的距离是否小于本地路由器到达相同目的网络的可行距离FD
4,可行后继路由器:(feasible successor):如果本地路由器的邻居路由器所通告的到达目的网络的距离满足了可行性条件FC,那么这个邻居就会成为那个目的网络的一个可行后继路由器。
5,后继路由器(successor):对于在拓扑结构表中列出的每一个目的的网络,将选用拥有最小度量值的路由并放置到路由选择表中。通告这条路由的邻居就成为后继路由器, 或者是到达目的网络的数据包的下一点跳路由器。
运行原理:
1, 发现邻居(hello)并建立邻接关系,在大于带宽T1(1.544兆)的链路上,每5s发送一次hello包,在小于1.544兆的链路上每60s发送一次(hello时间是可以修改的)
Hold time(抑制时间):等于3倍的hello间隔时间,如果3倍的hello间隔时间还么有收到hello包,就把邻居关系down掉,从邻居表把这条记录删掉
建立邻居关系前提:检查hello包,AS号是否一致,K值必须和本地的K值一样,两个邻居必须在一个子网,认证的密钥必须一致
2, 和邻居交换路由更新
限制EIGRP的扩散计算
1, EIGRP stub
不会向EIGRP stub的路由器发送查询 做为EIGRP stub路由器只会向上层邻居通告直连和汇总路由
R2(config-router)#eigrp stub 配置成末梢区域
R2#show ip eigrp neighbors detail 查看EIGRP的邻居详细信息
2, 路由手工汇总
DUAL有限状态机
当一个EIGRP的路由器不执行扩散计算时,每一条路由都处于被动状态(passive state)。1,任何时间,一个输入事件发生(收到一个更新报文)了,就会执行一个本地的计算;2,如果在路由器的拓扑结构表中发现了一台或多台可行后继路由器,那么将使用具有最低度量代价的可行后继路由器作为它的后继路由器;3,如果没有发现可行后继路由器,那么将使它的路由变成活动状态,向它的邻居路由器发送查询报文,以便确定一个可行后继路由器;4,在所有的查询报文被答复报文响应之前,或者活动计时器时超时之前,将保持路由的状态是活动状态;5,如果扩散计算的结果无法发现一个可行后继路由器那么宣告这个目的地不可达
EIGRP的报文格式
EIGRP协议报文的IP报文头部指定它的协议号是88,报文的最大长度可以是IP的最大传输单元(MTU)的大小----通常是1500个字节。紧接着IP头部后面的是EIGRP协议头部,EIGRP协议头部后面是类型/长度/数值(type/length/value TLV)这3个参数的不同组合 。这些TLV不公携带路由条目的信息,而且提供多个字段来管理DUAL算法的处理,组播的先后次序和IOS软件版本。
EIGRP报文的头部
版本号(version):指出始发EIGRP进程处理的具体版本。
操作码(opcode):指出EIGRP报文的类型1是更新,3是查询,4是答复5是问候,6是IPX SAP
校验和(checksum):标准的IP校验和,它是基于除了IP头部的整个EIGRP报文来计算的。
标记(flags):目前包括两个标记。大部分的位设置为是init位,也就是设置为0x00000001,指出附加的路由条目是新的邻居关系的开始。第二位设置为0x00000002,表示条件接收位,并使用在一个私有的可靠组播算法中。
序列号(sequence):是一个用在RTP中的32位序列号。
确认序列号(ACK)是本地路由器从邻居路由器里收到的最新的一个32位序列号。
自主系统号(autonomous system number):指定一个EIGRP协议域的标识号。
一般的TLV字段:这些TLV字段可以携带EIGRP的管理信息而不需要指定任何一个可路由的协议。
IP特有的TLV字段:每一个内部路由和外部路由的TLV都包含一个路由条目。每个更新,查询和答复报文都至少包含一个跟帖TLV。
IP内部路由的TLV:指在EIGRP自主系统内部可以到达目的地的路径。
IP外部路由的TLV:指到达EIGRP自主系统外部的目的地址的一条路径,或者是一条通过路由重新分配注入到EIGRP域内的路由路径。
“卡”在活动状态的邻居(stuck-in-active neighors)
当本地路由器的一条路由变为活动状态并且向它的邻居路由发送查询报文时,如果因为某种原因,查询报文一直得不到回复,那么这条路由将一直保持活动状态,当发送发送一个查询报文时,活动计时器就被设置了,如果收到查询报文的答复报文之前,活动计时器超时了,这条路由就被宣告“卡”在活动状态的邻居,这条路由从邻居表中刷新掉,SIA路由和任何其他经过这个邻居的路由也就被推断为失效了,DUAL算法将会认为这个邻居已经答复了一个含有无穷大度量的报文。
Metric(复合度量值)
Bandwidth 带宽 K1 最低的带宽(kbps)
Delay 延迟 K3 整条路径的延迟(10微秒)
Reliability 可靠性 K4 可靠程度255/255(分数)
Loading 负载 K2 最大负载255/255(分数)
MTU 最大传输单元 K5 1500
报文:(5种)
1,Hello
2,Update
3,Query 发现路由丢失/故障,会向自己的邻居查询
4,Reply 邻居给的回复
5,Ack 确认的是update,query,reply三种报文hello是不确认的 有一个RTO的计时器,如果时间一到,还有有收到确认,就重传报文,重传16次,还没有收到确认,就down掉邻居关系
RIP:要求对方确认,没有确认,就重传
Rto重传超时根据SRTT计算出来的
Q表示传送报文的时候是否拥塞下面数字表示在排列
SEQ序列号,传送报文的序列号
配置命令:
R1(config)#router eigrp 1 开启EIGRP
R1(config-router)#network 10.0.0.0 0.255.255.255 宣告地址
R1(config-router)#no auto-summary 关闭自动汇总
R1#Show ip eigrp int 查看哪个接口宣告进了EIGRP
R1(config-router)#timers active-time 4 改变或关闭缺省的3min的活动状态计时
R1#Show ip eigrp nei 查看邻居表
R1#Show ip eigrp topology 查看拓扑表
R1#Show ip eigrp topology all-links 查看不是可行后继
EIGRP的汇总
自动汇总:默认开启
手动汇总:基于接口/在路由的通告方向
在主类网边界进行汇总,汇总之后是一个标准的主类网
EIGRP认证:
R2(config)#key chain ccie 配置密钥的名字
R2(config-keychain)#key 1 密钥序列号
R2(config-keychain-key)#key-string abc 密码
R2(config)#int s0/0
R2(config-if)#ip authentication mode eigrp 1 md5 接口使用md5加密
R2(config-if)#ip authentication key-chain eigrp 1 ccie 接口调用密钥
R1(config-keychain-key)#send-lifetime 00:00:00 1 mar 2012 00:00:00 3 mar 2012 配置密钥的生存时间
EIGRP的优雅关闭
Goodbye K值全为255
EIGRP的路由过滤
R1(config-router)Disyribute-list 分发列表进行过滤
EIGRP的passivve-interface
把外部网络宣告进EIGRP时,为了确保内网的安全,把这个外部网络配置成被动接口,就不会互相发hello包了
R1(config-router)Paaive-interface s0/1 被动接口的配置
EIGRP的带宽占用问题
默认占用接口总带宽的50%
R1(config-if)#ip bandwidth-percent eigrp 1 20 修改默认占用的带宽为20%
R1(config-if)#bandwidth 200 参考值不是限速命令表示的是eigrp占用的带宽是200K的50% 但实际带宽还是1.544MB
展开阅读全文