说明

之前介绍过EIGRP建立邻居的过程,并且介绍了一些特性,这次主要看的是EIGRP的数据包格式,包括TLV,和EIGRP的三张表的内容。

EIGRP的包头字段

1、版本:从EIGRP发布以来,一直为版本2
2、操作码:指出EIGRP数据包的类型,1为更新 3为查询 4为答复 5为hello和ACK
3、标记:包括两个标记,一个为init位,表示新的邻居开始,第二位为接收位,使用一个私有可靠组播算法
4、序列号:RTP中使用的32位序列号
5、确认序列号(ACK):本地路由器从邻居路由器那收到最新的序列号,单播传送的
6、自主系统号(AS):指定EIGRP协议所处的标示号,所以,两端都必须一致
7、TLV:(1)一般TLV:携带K值和hold time时间,包括序列、软件版本和下一个组播序列(一般用Hello包进行发送)

TLV的类型

    在EIGRP中引用TLV的字段,TLV称为 Type/Length/Value ,这个TLV在路由选择协议中有非常好的扩展性,特别是ISIS中,它就是利用TLV字段来扩展支持更多的特性,当一个新的协议或者特性出现,路由协议需要去支持它,像OSPF的话,IPV6的支持就必须开发新的版本了,而ISIS对IPV6的支持,直接用TLV字段就能实现,EIGRP也是如此。

(1)一般TLV:携带K值和hold time时间,包括序列、软件版本和下一个组播序列(一般用Hello包进行发送)

(2)IP内部路由TLV:从同一个AS内学习到的路由参数

1、下一跳:包括这个路由的更新源,如果为0.0.0.0,那么表示自身
2、延迟(delay):以10us为单位,沿途更新入向接口延迟总和
3、带宽(bandwidth):2560 000 000/沿途更新入向接口的最小带宽
4、MTU:指路由器沿途抵达目的地路由器上所有链路中最小的MTU,一般不作为metric的参数计算
5、跳数:表示到达目的地路由的跳数,最大为255。
6、可靠性:用于反映到达目的的路由上接口的出站误码率的总和,取值0x01~0xFF
7、负载:用于反映到达目的的路由上接口的出站负载的总和,取值0x01~0xFF
8、保留字段:未使用的字段
9、前缀长度:携带子网掩码
10、目的地址:一个路由的目的地址


(3)IP外部路由TLV:从不同AS或不同路由协议重分布进本AS内的路由参数

1、下一跳:路由的下一跳地址。
2、原路由器:一个IP地址,或者重分布外部路由到EIGRP的RID
3、原自主系统号:始发路由的路由器所在的AS
4、Arbitrary Tag:路由映射 Tag
5、外部协议度量:标注外部路由的度量值
6、保留字段:不被使用
7、外部协议ID:用来标示外部路由从哪个协议学习到。
8、标记:定义了两个值,如果为0x01的话,那么表示外部路由,如果是0x02表示缺省路由


EIGRP的五种类型数据包

1、hello :目标地址为224.0.0.10,用于发现和维持邻居关系。邻居收到后不需要确认,Hello间隔由接口类型决定,低速链路–90s,高速链路–5s。(hello包中包含版本号、Opcode=5、seq、ACK、AS、EIGRP K值,seq和ACK永远为0,AS和EIGRP包括IP包的源地址是检查能否成为邻居的关键)

在Hello包中携带了K值、hold time时间,还包括软件的版本号,Opcode为5,如果两边邻居处于同一网段的话,邻居检查Hello包,还会看K值是否一致,如果不一致,则邻居建立不起来。

K值和软件版本是携带在TLV中传递的,也就是一般TLV字段

2、Update:发送给邻居路由表,通过单播或组播发送update数据包,邻居收到以后必须回复确认信息,如果没有收到来自邻居的确认信息,那么就会单播发送这个跟新包16次,在16次后还没有关于这个邻居的ACK信息,则认为邻居失效。会标明这路由信息属于外部还是内部的,内部的只携带了K值的参数,而外部标明了起源着是谁,还有tag信息。

在update包中,携带了路由信息,可以看到我ip interal route,它就是内部TLV字段,内部TLV的每个路由条目中包含的内容,在TLV字段中介绍了,可以查看数据包看看

可以看到Opcode为1,携带了子网掩码,和5个K值的参数,next hop为0.0.0.0,怎么是自己发送的。

3、Query:当路由信息丢失并没有备用路由时,使用Query数据包向邻居查询,邻居必须回复确认ACK和等待邻居的reply。

可以看到Opcode为3,当一条路由失效,并且没有FS的时候,就会对邻居进行插叙,可以看到192.168.4.0/24标记为目的不可达,这里序列号为46,看下回应的ACK内容

回应了ACK 46,并且是单播回应给10.0.0.2的

4、Reply:是对邻居Query数据包的回复,也需要邻居回复确认。

Opcode为4,reply,它回应的是关于192.168.4.0/24的不可达信息,另外,看下啊 Sequece:57,Acnowledge为48,这个48回应就是之前query,它的序列号为48,这是一种可靠性的表现
查看关于回应ACK的信息,因为在收到一个reply后,也需要回应ACK

5、Ack:是对收到的数据包的确认,告诉邻居我已经收到数据包了,收到ACK,不需要对ACK做回复,这样导致死循环 (因为在IP中没有可靠的传输机制,必须依靠EIGRP来完成)

其中hello包中还携带了hold time时间,这个时间是给邻居使用的 ,告诉邻居如果在这个时间内还没收到关于我的任何hello信息的话,
那么就认为邻居不存在了。

EIGRP的三张表探讨

地址信息如图,从R1上观看EIGRP的三张表情况,与在A与B之间还有个网段10.1.1.0/24

R1(config)#router eigrp 1
R1(config-router)#network 10.1.1.1 0.0.0.0
R1(config-router)#network 12.1.1.0 0.0.0.255

R2(config)#router eigrp 1
R2(config-router)#network 12.1.1.2 0.0.0.0
R2(config-router)#network 23.0.0.0
R2(config-router)#network 10.1.1.2 0.0.0.0

R3(config)#router eigrp 1
R3(config-router)#network 23.1.1.2 0.0.0.0

这里一定要注意IGP也就是内部协议network的含义匹配上network范围的网段都参路由协议,并且把这个网段宣告出去,也就是说12.1.1.2 0.0.0.0代表精确匹配,这里掩码为反掩码,0代表精确匹配,1代表忽略,就像12.1.1.0 0.0.0.255,它匹配的范围就是,12.1.1不变,因为0代表精确匹配,而255,则为忽略,也就是1~254, 另外不携带反掩码信息的话,那么就是以主类网络宣告

一、邻居表

通过 show ip eigrp neighbos查看邻居状态,包括可以加 detail参数,可以看到更加详细的内容

1、H:代表序列号,邻居的先后建立的顺序


2、address:显示邻居建立的地址信息,EIGRP对于同一个直连路由器建立的邻居,在有多条链路的情况下,会认为是多个邻居存在,就像B一样,同一台路由器,有多条链路,在A看来是不同的邻居存放的

3、interface:自己哪个接口参与建立的邻居关系

4、hold:在对方Hello包中携带的参数,在高速链路上,默认为15,也就是Hello包的3倍,当15s没有收到来自邻居的Hello包后,就认为对方失效 ,当然在正常情况下,每5s收到一个对方的Hello包,也就是hlod不低于10

5、uptime:与邻居建立的时间计时器。

6、SRTT(Smooth Round-Trip Timer):平均往返时间,用来计算当一个路由器发送EIGRP数据包到邻居,从邻居接收到该数据包并且确认的平均时间。

7、multicast flow tmer:在说RTO之前,介绍个组播流计时器,当一个更新发送出去以后,邻居没有回应,那么这个等待的时间就由组播计时器决定,当计时器超时以后,就切换成单播来再次发送更新给邻居,等待邻居回应的ACK

8、RTO:决定单播传送之间的间隔时间

9、Q:当组播发送了更新后,而对方没有回应ACK的时候,会缓存在本地 ,那么会以单播的形式重新发送这个数据包给邻居,如果16次还没收到ACK,重置邻居

10、 Seq : 收到了邻居更新的次数,每次增加1

这里说下,关于SRTT和RTP是思科私有的算法,所以,没有公开的计算方法,在正常情况下,RTO是ST的6倍,但是,当邻居出现了故障以后,这个参数就会改变,RTO最大值为5000, 另外 在Cisco IOS中,没有可以定义这两个值的命令,卷一也没有提及过。

二、拓扑表

对于EIGRP来说,拓扑表中存在的内容是整个网络收敛的关键,对于EIGRP在网络中部署的关键,就是让每条路由都有可用的FS,关于FS和其他概念在DUAL算法总总结,这里拓扑表只做一个小小的介绍。

show ip eigrp topology来查看参数

可以看到,拓扑表中存放着去往每个目的地的路由信息,这里有FD和AD的概念,这个是DUAL的核心算法,在后面会再次介绍,当有多条路径去往同一个目的地的,当满足了特定的条件后,它也会出现在拓扑表中,这个条件就是FC,这个在DUAL算法的时候进行详细说明。

三、路由表

路由表是存放最优的下一跳的信息,可以看到在拓扑表中去往23.0.0.0/8,经过不同的下一跳到达,在路由表中出现的则只会是最优的,在拓扑表中为FD is 3087200,也就是最优的,下一跳为12.1.1.2。

总结:这次详细讲解了EIGRP的数据包格式,包括TLV中的作用,另外关于拓扑表的详细内容必须到DUAL算法中才好讲解,拓扑表的内容都是通过DUAL算法得来的。

本文首发于公众号:网络之路博客

©著作权归作者所有:来自51CTO博客作者网络之路blo的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. TCPIP卷一(11):EIGRP的汇总、stub、leak-map参数
  2. TCPIP卷一(12):EIGRP的负载均衡方式 And RouterID、default Rout
  3. MPLS系列之一:Multi Protocol Label Switch-Basic 【介绍了原理、
  4. MPLS系列之二:MPLS *** 静态路由、RIP、EIGRP【包括配置 分析控制
  5. 华为路由交换技术:VRRP-虚拟网关冗余协议配置
  6. 一分钟了解交换机-路由器-集线器-防火墙的区别
  7. 锚点前端路由与Vue前端路由的实现
  8. LVS NAT原理、配置
  9. 15、华为 华三中小型企业网络架构搭建 【防火墙篇之路由部署(根据

随机推荐

  1. 定制化IDE选型笔记
  2. mall在Linux环境下的部署(基于Docker容器)
  3. Webpack Loader
  4. 两个月的Java实习结束,继续努力
  5. centos7搭建NFS客户端以及NFS详细步骤
  6. 使用Dockerfile为SpringBoot应用构建Dock
  7. 【Java】广州三本秋招之路
  8. 【编测编学】接口测试面试题必背(上)
  9. ES 规范为什么总在 6 月发版?
  10. navicate premium 如何导入excel表数据