ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TCPIP卷一(8):EIGRP的组建和邻居状态机

2021-03-09 21:53:52  阅读:278  来源: 互联网

标签:收到 状态机 EIGRP 邻居 链路 数据包 hello TCPIP


说明

    EIGRP的出现,原本Cisco只是打算为了让EIGRP代替IGRP支持无类别路由选择而出现的,随着在开发的时期,许多学术上的建议使得EIGRP以一个更加强大的协议出现,有时候,我们称为具有链路状态特性的距离矢量协议。关于距离矢量和链路状态的特点,可以参考之前的介绍。

EIGRP的特性介绍

tcpip

这是卷一里面提到的,非周期、部分、有边界,带宽
1、非周期:意思是说不像RIP一样,每30s就把路由表所知道的路由通告给邻居,而EIGRP则是在一个路由条目更新、消失、或者新的条目出现才会把这个更新、消失或者新的条目,所变化的告诉给邻居,而不是全部路由,这样节省了许多带宽和资源

2、部分:也就是变化的条目条目

3、边界:发送给受到影响的路由器。

4、带宽:这里会提到一个hello包的概念,它在不同的链路介质上,周期性是不同的,自动调整,所以,在低链路上带宽的需求不是很大,并且不会占用链路带宽的50%。

5、无类别:在更新路由条目的时候,会携带子网掩码

6、MD5验证:EIGRP只支持MD5的认证,所以,安全性也很有保障。

7、DUAL算法:这是EIGRP的核心概念,它使得EIGRP在网络中能够快速的收敛,和其他的功能。

8、汇总:对于EIGRP或者是说距离矢量协议来说,有个非常好的特点,就是可以随时随地的在任意路由器上进行路由汇总,相反,链路状态反而没有这个优势。

9、邻居/邻接:对于EIGRP来说,是有邻居的概念的,当收到来自其他路由器的hello包后,只要条件符合的话,那么就会加入邻居表中,邻接概念是一个虚拟连接,指的意思是两台邻居之间已经交互了EIGRP的路由信息。

EIGRP的4个组建

tcpip

1、依赖协议的模块:对于EIGRP这个协议来说,它支持的不仅仅是IP协议,它还能支持更多的协议族,比如IPX,APPLETALK,这都是由这个模块来进行实现的,不过对于现在的网络来说,IP网络已经成为主宰了。


2、可靠传输协议: EIGRP使用协议号88,封装在IP中进行传递,IP我们知道跟UDP一样,是一个不可靠的传输,所以,EIGRP不使用一个可靠的机制,它利用了可靠传输协议RTP来管理EIGRP数据包的接收和发送,这个有保障的机制是Cisco私有算法实现的,卷一里面称它为“可靠组播”,使用组播地址224.0.0.10,实现的方法为,在接收到一个可靠的组播数据包后,必须回应一个单播的确认包。

3、邻居发现/恢复:在EIGRP的特性中知道它不是周期性更新,并且是有邻居的概念,那么,它就需要一种机制去发现和维持这个邻居关系,那么这个机制就是hello数据包,Hello数据包在不同的链路介质上有着不同的hello间隔,比如在高速链路为5s,在低速链路则为60s,并且,在每个Hello数据包中包含一个holdtime时间,这个时间的作用是告诉邻居,在多少时间间隔后,没有收到来自自己的Hello包,那么就认为出现了故障,邻居关系清除,在默认情况下,holdtime是hello时间的3倍。

4、扩散更新算法(DUAL):对EIGRP来说,核心的组建就是DUAL了,将在后续详细介绍DUAL的处理过程。

EIGRP邻居的建立过程

tcpip

地址信息如图,在A和B上运行EIGRP,在A上抓包观看邻居的建立关系

tcpip

1、这是过滤后,EIGRP数据包的抓取,所以看1和5序列号的,都是来自12.1.1.2发送的,因为这时候A的接口还没有开启,所以,收到了只能看到12.1.1.2的发送,也就是B。

2、查看8序列号的数据包,A路由器已经收到了来自B的Hello包,并且A发送的Hello数据包中,已包含B,12.1.1.2的地址,也就是说A把B路由器作为自己的邻居了,sequenc中已经包含12.1.1.2的地址了。

tcpip

3、 紧接着,R1发送了一个组播更新,这个更新是不需要ACK回复的,所以,没有标志希望收到来自邻居的ACK回复,也就是acknowledge为0

tcpip

4、在序列号13中,收到来自12.1.1.2的Hello包,里面已经包含了A的信息

tcpip

5、在序列号19后,它收到来自A的更新了,这次更新已经包含序列号,acknowledge 7所以,当B收到这个更新后,必须回复ACK进行确认,回复的ACK也是7

tcpip

6、看序列号21,B回复了一个ACK,对于来自A的更新包进行确认

tcpip

可以看到,B收到来租A的更新包后,立即回复了一个ACK,acknowledge为7

7、后续的数据包,就是说A数到来自B的更细后,再次回应ACK,然后,稳定后,A与B之间相继的发送hello包维持邻居关系。

总结邻居建立的过程

1、路由器A启动EIGRP后,在相对应的接口上向外发送hello包。


2、B收到A的hello包后,将A列入自己的邻居表,然后向A单播发送update也就是向A发送自己的路由表,EIGRP路由器在收到一个hello包,就直接向对方发送路由表了,B后面hello就会标明路由器A是自己的邻居。

3、在A收到B的update之后,向B发送Ack通知对方已经收到update,在A收到B的hello包后,会发现里面标明了自己的地址,然后再向B单播发送update的同时hello包中也会标志邻居的地址,等双方看到对方的hello包都有自己后,双向邻居关系便建立成功。

4、B在收到update之后,向A发送ACK确认update已收到

5、A和B都将收到的Update放入拓扑数据库中,然后DUAL算法计算最优路由,放入路由表。

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

标签:收到,状态机,EIGRP,邻居,链路,数据包,hello,TCPIP
来源: https://blog.51cto.com/ccieh3c/2653143

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有