背景
1、 EIGRP是思科私有的(增强型IGRP,enhance IGRP);
2、 收敛之王,速度非常快;
3、 增强型内部网络路由协议,是一种混合路由协议(集成了距离矢量和链路状态的特征,高级距离矢量)
4、 可靠更新、触发更新、增量更新、组播更新
5、 支持大型网络拓扑
基本特征
OSI层次(传输层)、运行特征、运行范围、有类无类、最佳路径,协议号88
1、 OSI层次:传输层协议,基于IP协议号88
2、 算法特征:距离矢量(DUAL算法)
3、 运行范围:内部网络协议
4、 有类无类:IGRP是有类、EIGRP是无类
5、 最佳路径:管理距离90/170,度量值采用混合度量
(带宽k1、延迟k2、负载k3、可信度k4、MTUk5)
部署
对了,在部署协议之前,需要在这个地方进行抓包分析,方便后续分析
需要认识到AS号就是用来区分不同的区间的,之后学习BGP会详细介绍,这先明白AS可以用来区分不同的局域网
有没有发现,这里的掩码都是反掩码!!这里就要理解反掩码的概念。反掩码完全就是个数学工具来着
① 反掩码和子网掩码的换算
反掩码=255.255.255.255-子网掩码
② 反掩码是什么?(路由条目/网段的抓取工具,将XXX字段开头的路由都通告出去)
子网掩码:1表示网络位、0表示主机位
反掩码:1表示随意匹配,0表示严格匹配(这个真的很像正则表达式呀)
邻居建立
很类似TCP的三次握手的过程
所谓的三个代表:邻居表、拓扑表、路由表
邻居表 |
用于存储邻居信息 |
用于建立和维持邻居关系,每5s周期发送,15s 保持时间(hold time) |
show ip eigrp neighbor |
拓扑表 |
用于存储所有路由条目(无论优劣) |
用于承载和传递路由条目;触发/增量/组播/可靠 |
show ip eigrp topology (all-links) |
路由表 |
用于存储最佳路由条目(通过DUAL算法计算) |
用于实现可靠确认(UPDATE/REPLY/QUERY) |
show ip route eigrp |
这里P才是个好的现象,A表示网络动荡,不稳定
解析数据包
首先发现hello包大约5s发送一次,不是严格的5s是为了避免使链路拥塞。不过由于这个包本来就不大,所以系统设置的随机数种子是尽量的接近5s。
接着观察update包,注意观察序列号和确认号之间的关系
这个地方就是这个协议实现可靠传输的原理。计算原理就是这样
另外要关注的就是更新包中路由条目信息
最后是确认包
确认包的内容比较简单,确认号等于上一个update包的确认号
路由汇总
和之前一样创建几个地址用来做实验
接着通告出去
之后查看路由信息
目的是将172.16.x.x/24网段汇总到172.16.0.0/22网段间
多扯一些,null0路由
这个空路由,说白了就是用来防环的
如果我此时把172.16.2.1这条路由条目去掉
此时在R2的路由表中
这个被清除的子网对R2来说,其实是空的,就是说,R2压根就不知道此时R1发送了什么事,这个时候我们ping 172.16.2.1则会
显示端口不可达信息,注意是端口不可达!!(说个题外话,很多情况下端口不可达比路径不同更可怕,因为此时路径是通的,但是信息不对,所以就有可能是路由策略上的失误啦,这个就需要细心排查)
对于R2向R1发送的ICMP,它不知道R1是否有172.16.2.1这条路径,但知道有172.16.2.1在172.16.0.0/22的子网下,所以一定可以发送成功的。然而此时的R1查找自己的路由表根本就没有这条信息呀,根据最长匹配原则,它就会去寻找默认路由0.0.0.0。而null0的优先级比默认路由高,会优先执行,可以有效防止数据发送出去,将数据一直在本地。这条路径可以理解为指向一个位置的地方,根本达到不了,所以ICMP返回端口不可达。