1. EIGRP路由协议原理

  EIGRP ( Enhanced Interior Gateway Routing Protocol )增强型内部网关路由协议,是思科公司开发的一个平衡混合型路由选择协议,属于思科公司私有的。它融合了距离向量和链路状态两种路由协议的优点,支持 IP、IPX、ApplleTalk 等多种网络层协议,收敛速度非常快。

2. EIGRP路由协议特点

EIGRP 是一个高效的路由协议,它有以下特征:
OSI层次:属于传输层协议,运行在ip层以上,基于IP协议号为88号,支持 IP、IPX、AppleTalk 等多种网络层协议
算法特征:EIGRP 使用 距离矢量算法DUAL来实现快速收敛,并确保没有路由环路,实现了很高的路由性能
运行范围:支持大型网络拓扑,运行在内部网络协议
有类无类:IGRP是有类,EIGRP是无类
最佳路径:管理距离为90/170,度量值采用度量混合(带宽,延迟,负载,可信度,MTU)

3. EIGRP部署方式一

方式一:network + 子网掩码(正掩码)

//开启EIGRP进程,并定义自治系统号
R1(config)#router eigrp 100  //关闭自动汇总,因为EIGRP默认是开启自动汇总的
R1(config-router)#no auto-summary
//通告R1所在网段
R1(config-router)#network 1.1.1.1 255.255.255.255
R1(config-router)#network 12.1.1.0 255.255.255.0
R1(config-router)#network 13.1.1.0 255.255.255.0

router eigrp 100命令说明:
  这条命令是开启EIGRP的自治系统号,我们可以把自治系统号理解为区域或者管理域的概念;同一个企业或者运营商的EIGRP路由器必须处在同一个AS内,否则邻居无法建立并且无法学到路由,运行 EIGRP 的整个网络 AS 号码必须一致,其范围为 1-65535 之间。

  关闭自动汇总可以携带掩码信息,EIGRP 协议在通告网段时,如果是主类网络(即标准 A、B、C 类的网络,或者说没有划分子网的网络),只需输入此网络地址;如果是子网的话,则最好在网络号后面写子网掩码或者反掩码,这样可以避免将所有的子网都加入 EIGRP 进程中。

4. EIGRP部署方式二

方式二:network + 反掩码(也叫通配符掩码,这种方式比较方便,重点掌握)

 router eigrp 100network 1.1.1.1 0.0.0.0network 12.1.1.0 0.0.0.255network 13.1.1.0 0.0.0.255no auto-summary

  在方式二种通告网络是使用的反掩码方式,而反掩码是用广播地址 (255.255.255.255)减去子网掩码所得到。如掩码地址是255.255.248.0,则反掩码地址是 0.0.7.255。在高级的 IOS 中也支持网络掩码的写法(注意:反掩码只是一种计算方式,跟ip地址中的掩码不是一个概念)。

关于反掩码和子网掩码的换算:
反掩码=255.255.255.255 - 子网掩码

反掩码是什么?(路由条目/网段的抓取工具,将XXX字段开头的路由都通告出去)
子网掩码:1表示网络位、0表示主机位

反掩码:1表示随意匹配,0表示严格匹配(反掩码没有网络位和主机位的概念)
比如:12.1.1.0 0.0.0.255,表示严格匹配12.1.1.0网段的ip地址,即该ip地址的前面24位严格匹配,必须为12.1.1,后面8位的可以随意,可以是1 - 254。

5. EIGRP部署实验要求


图1-EIGRP部署实验要求

  关于配置以太网口和环回接口配置ip地址就不再介绍了,这里直接配置R1,R2,R3三台设备运行EIGRP协议,通过方式二network + 反掩码的方式进行EIGRP配置。

R1配置如下:

R1(config)#router eigrp 100
R1(config-router)#no auto-summary
R1(config-router)#network 12.1.1.0 0.0.0.255
R1(config-router)#network 13.1.1.0 0.0.0.255
R1(config-router)#network 1.1.1.1 0.0.0.0
R1(config-router)#exit

router eigrp 100命令说明:
  进入EIGRP进程,并且定义此路由器所在自治系统号为100;自治系统指的是由一个管理机构统一控制之下的路由器和网络群组,例如不同的ISP处于不同的AS号,如中国电信的AS为4134,AS范围从1到65535.不同AS的路由器无法建立邻居关系!

no auto-summary命令说明:
  默认情况下,EIGRP开启自动汇总,通过此命令关闭自动汇总,关闭自动汇总就可以携带掩码信息

network命令说明:
  表示是通过network + 网段 + 反掩码的方式来通告R1设备所在网段

R2配置如下:

R2(config)#router eigrp 100
R2(config-router)#no auto-summary
R2(config-router)#network 12.1.1.0 0.0.0.255
R2(config-router)#network 23.1.1.0 0.0.0.255
R2(config-router)#network 2.2.2.2 0.0.0.0
R2(config-router)#exit

R3配置如下:

R3(config)#router eigrp 100
R3(config-router)#no auto-summary
R3(config-router)#network 13.1.1.0 0.0.0.255
R3(config-router)#network 23.1.1.0 0.0.0.255
R3(config-router)#network 3.3.3.3 0.0.0.0
R3(config-router)#exit

  配置完成后,等待R1,R2,R3三台设备建立起邻居关系,然后查看任意设备的路由表,这里以R1设备为例,信息如下:

6. EIGRP邻居关系

  EIGRP使用Hello包来建立与维护和邻居路由器之间的邻居关系,其实是维护了一张邻居表,这张表存储邻居的路由器信息,包括邻居路由器的IP地址等信息,可以帮助确定何时发生了需要传递到邻居路由器的拓扑改变。

  只有两个邻居启动通信时, EIGRP才通知所有的路由拓扑表,这时两个邻居通过update包相互通知整个路由表。学习到邻居的直接连接和已知路由之后,只传递路由表的改变部分。

  然后通过Ack包来实现可靠确认(UPDATE / REPLY / QUERY),也就是说,实现R1和R2邻居之间可靠通信。


图3-EIGRP邻居关系

7. EIGRP的表项

下面我们来看一下EIGRP的这三个表项:
邻居表用于存储邻居信息
show ip eigrp neighbors //该命令用于查看邻居表

拓扑表用于存储所有路由条目(无论优劣)
show ip eigrp topology (all-links) //该命令用于查看拓扑表,all-links表示把所有的路由信息全部显示出来,注意:是所有路由信息

路由表用于存储最佳路由条目(通过DUAL算法计算)
show ip route eigrp //该命令用于查看路由表,注意:是最佳的路由信息

8. EIGRP路由分组

  在 EIGRP 中,有五种类型的数据包,这里我们重点只关注hello,update,Ack这三种类型包:

Hello:以组播的方式定期发送,用于建立和维持邻居关系

update:当路由器收到某个邻居路由器的第一个 Hello 包时,以单播传送方式回送一个包含它所知道的路由信息的更新包。当路由信息发生变化时,以组播的方式发送只包含变化信息的更新包

Ack:以单播的方式传送,用来确认更新、查询、答复数据包。

9. hello分组

  R1#clear ip eigrp neighbors命令,一般用于如果设备之间没有建立邻居关系的话,可以通过该命令重置邻居关系,即把之前的邻居关系清除,再次建立邻居关系。

  hello分组是用于建立和维持邻居关系,每5 s周期发送,15 s 保持时间(hold time),如果带宽小于1.544M,则周期为60 s,保持时间为180 s;如果带宽大于或等于1.544M,则周期为5 s,保持时间为15 s。

通过show ip eigrp neighbors命令查看R1的邻居信息,具体信息如下:


图4-邻居表

以上各个字段的含义如下:

H: 表示与邻居建立会话的顺序,0表示第一个学到的邻居,1表示第二个学到的邻居
Address: 邻居路由器之间的接口地址
Interface: 本地路由到邻居路由器的接口
Hold: 认为邻居不存在或死亡所能等待的最大时间,(也就是本地路由和邻居路由的邻居关系每15秒检查一次),如果其中任何一个出现故障死亡,则 解除邻居关系。
Uptime: 从邻居关系建立到目前的时间
SRTT: 是向邻居路由器发送一个数据包以及本路由器收到确认包的时间
RTO: 路由器在重新传输包之前等待 ACK 的时间
Q Cnt: 需要重新发送的数据报
Seq Num: 从邻居收到的发送数据包的序列号

  注意:运行 EIGRP 路由协议的路由器不能建立邻居关系的可能原因有以下几点:EIGRP 进程的 AS 号码不同或者计算度量值的 K 值不同。

hello数据报格式:


图5-hello分组格式

10. UPDATE分组

UPDATE分组用于承载和传递路由条目,触发/增量/组播/可靠。


图6-R1设备拓扑表

拓扑表中存放着所有路由信息,以上输出可以清楚地看到每条路由条目的 FD 和 RD 的值。而拓扑结构数据库中状态代码最常见的是“P”,“A”和“s”,含义如下:

P: 代表 passive,表示网络处于收敛的稳定状态
A: 代表 active,当前网络不可用,正处于发送查询状态
s:在 3 分钟内,如果被查询的路由没有收到回应,查询的路由就被置为“stuck in active”状态

可行距离(FD):到达一个目的网络的最小度量值
通告距离(RD):邻居路由器所通告的它自己到达目的网络的最小的度量值
可行性条件(FC):是 EIGRP 路由器更新路由表和拓扑表的依据。可行性条件可以有效
地阻止路由环路,实现路由的快速收敛。可行性条件的公式为: AD < FD。

update数据报格式:


图7-update分组格式

11. Ack分组

Ack分组用于实现可靠确认,对于UPDATE , REPLY, QUERY包都要确认。


图8-Ack分组格式

12. 路由汇总

  默认的时候 EIGRP 的自动汇总是开启的,自动汇总只对本地产生的 EIGRP 路由汇总,可以通过“ no auto-summary”命令关闭自动汇总,然后进行手工汇总。

EIGRP路由汇总配置和排错命令:

EIGRP路由汇总配置和排错命令:
interface FastEthernet0/0
//表示在f0/0和f0/1口进行路由汇总
int range f0/0 , f0/1
ip summary-address eigrp 100 192.168.0.0 255.255.252.0
Show run int f0/0  //查看接口配置

选择R3设备上创建一个loopback 2环回接口,配置4个ip地址:

R3(config)#int loopback 2
R3(config-if)#ip address 172.16.0.1 255.255.255.0
R3(config-if)#ip address 172.16.1.1 255.255.255.0 secondary
R3(config-if)#ip address 172.16.2.1 255.255.255.0 secondary
R3(config-if)#ip address 172.16.3.1 255.255.255.0 secondary
R3(config-if)#exit
//然后通告172.16.0.0主类网络
R3(config-router)#network 172.16.0.0 0.0.255.255

查看R1设备上的路由信息:

在R3设备上的f0/0接口和f0/1接口上进行路由汇总,具体配置如下:

R3(config)#int f0/0
R3(config-if)#ip summary-address eigrp 100 172.16.0.0 255.255.252.0
R3(config-if)#exit
R3(config)#int f0/1
R3(config-if)#ip summary-address eigrp 100 172.16.0.0 255.255.252.0
R3(config-if)#exit

查看R1设备上汇总后的路由信息:

再查看R3设备上的路由信息:

上面的 NULL 路由是 EIGRP 汇总时自动生成的, 是用于解决不精确汇总可能引发的路由环路。

13. NULL 0路由

  1.NULL0路由是用于解决路由环路

  2 NULL 0路由优先级高于默认路由,所以数据会转发给NULL 0路由,这样可以有效防止数据转发出去,并将数据抑制在本地,解决了路由环路的问题。

  3.网络子网有时候是不完整的,但是还是会将汇总路由告知邻居,若网络拓扑情况有数据包经过“缺失子网”时,则有可能造成路由环路。也就是说如果某个路由发送数据报的ip地址正好属于缺失的子网范围,那么该数据报查找不到对应的路由信息就会查找默认路由,而如果走默认路由的话,那么将会引起路由环路的问题。

14-EIGRP路由协议详解相关推荐

  1. 帧中继和路由协议详解-在帧中继多点子接口上运行EIGRP

    上一篇我们介绍了<帧中继和路由协议详解-在帧中继点到点子接口上运行EIGRP>,本篇我们开始介绍<在帧中继多点子接口上运行EIGRP>的配 置.相关概念,如子接口.IARP.D ...

  2. 帧中继和路由协议详解-在帧中继点到点子接口上运行EIGRP

    上一篇我们介绍了在帧中继物理里接口点对点上运行EIGRP的配置,本篇我们开始介绍在帧中继点到点子接口上运行EIGRP的配置. 背景 当有多个分部的局域网通过帧中继和总部进行连接时,为了减少对总部路由器 ...

  3. OSPF路由协议详解

    OSPF路由协议详解 一.OSPF路由协议详概述 AS自治系统分类 二.OSPF工作过程及原理 1.OSPF工作过程 2.OSPF工作原理 五种报文 三个阶段 三张表 三.OSPF区域 OSPF区域类 ...

  4. 14.VisualVM使用详解、15.VisualVM堆查看器使用的内存不足、19.class文件--文件结构--魔数、20.文件结构--常量池、21.文件结构访问标志(2个字节)、22.类加载机制概

    14.VisualVM使用详解 15.VisualVM堆查看器使用的内存不足 16.性能调优概述 17.性能调优–案例1 18.性能调优-案例三 19.class文件–文件结构–魔数 20.文件结构– ...

  5. mysql5.7.14安装版_MySql5.7.14安装教程详解(解压版)_MySQL

    下面进入正式的教程: 第一步:下载最近的MySQL文件并且解压: 下载最新版的MySQL–mysql-5.7.12下载地址 将下载到的文件解压缩到自己喜欢的位置,例如我自己的位置是D:\MySQL\m ...

  6. EIGRP理论详解及基础实验

    EIGRP:( Enhanced Interior Gateway Routing Protocol )增强型内部网关路由协议 EIGRP 是一种Cisco专用协议,同时具备链路状态和距离矢量路由协议 ...

  7. ISIS路由协议详解(特征、与OSPF对比、拓扑结构、专业术语、路由器分类、网络类型、DIS、报文类型及抓包、邻居关系、路由渗透、路由过载OL位、ISIS认证分类、ISIS管理标签以及各种实验等)

    IS-IS特征: Isis:中间系统到中间系统 链路状态路由协议 IGP协议 SPF算法 ISIS采用TLV结构,因此扩展性很好(为支持新的协议和特性,只需要扩展新的TLV或子TLV:可以轻松扩展支持 ...

  8. JDK 12 ,JDK 13 , JDK 14 新特性 详解

    近年来,甲骨文做出了一些突破性的决定. 他们包括新的半年发布模式与预览功能和更短的发布和反馈周期的新功能. 许可模式也发生了变化,Oracle JDK 不再免费提供. 这加剧了竞争,因此您现在可以从包 ...

  9. CentOS下Redis 2.2.14安装配置详解

    一. 下载redis最新版本2.2.14 cd /usr/local/src wget –c http://redis.googlecode.com/files/redis-2.2.14.tar.gz ...

最新文章

  1. WebStrom Sass 编译配置 windows
  2. react-native中的动画
  3. java 检测目录下的文件_如何在Java中检查文件是目录还是文件
  4. 理解URL以及如何区分相对URL和绝对URL
  5. magento mysql_解决Magento环境Mysql经常挂掉的问题
  6. Java虚拟机(JVM)初探
  7. ds18b20数字温度传感器特点及使用介绍
  8. mysql 字段去除空格
  9. 如何快速从入门到精通linux
  10. 2019 Namesilo 购买域名 解析域名 图文教程
  11. 三角函数 公式【和差化积、积化和差】最简记忆口诀
  12. [已迁移]pwn-buu-VMpwn-[OGeek2019 Final]OVM
  13. html中实现简单计算器功能,js实现简易计算器功能
  14. MUI初体验 模仿微信页面
  15. JAVA继承面积计算体积_java初学基础 使用继承 计算圆形周长、面积和圆柱体积...
  16. 【LittleXi】sql学习笔记
  17. 互联网+大赛评审规则浅析
  18. java 获取周六周日_JS实现获取当前所在周的周六、周日示例分析
  19. Android视频边播放边缓存的代理策略之——AndroidVideoCache
  20. 加快大数据战略布局 合力推动发展共享数字中国

热门文章

  1. 【无标题】java多线程分批同步数据设计与实现(转载)
  2. Android:关闭软键盘自动弹出的解决方案
  3. PS 安装方正静蕾简体
  4. 微课 | 中台战略专题教案 附下载
  5. 无忧考吧计算机二级c语言压轴题,高考数学满分突破秒杀压轴题
  6. STL系列之六 set与hash_set
  7. Android Studio开发环境的搭建
  8. python将简体字转化为繁体字
  9. 《嵌入式系统设计师教程 (第2版)》学习笔记
  10. 如何实施 Scrum(敏捷开发)