与很多协议一样, EIGRP也使用了路由器ID (RTD)的概念,用一个4字节的编号来标识某个路由器实例。每个地址家族实例拥有自已独立的RID。工程师可以在一台路由器上,为多个EIGRP进程和地址家族实例使用相同的RID。最初, EIGRP的RID是用来在应用了重分布的EIGRP环境中预防路由环路的。在将外部路由注人到EIGRP域中时, RID用来标识路由的来源(路由器)。每条外部路由都关联着一个RTD,这正是将它重分布到EIGRP中的那台路由器的RTDo如果路由器接收到的外部路由携带着与本地相同的ⅢD,路由器就会丢弃这条路由。在多台路由器都执行了路由重分布的网络中,这个特性能够减少网络中出现路由环路的可能性。最初, EIGRP的内部路由中并不通告RID。不过在最近的IOS中,内部路由也同样通告EIGRP的RID了。因此,在EIGRP中通告的每一条路由(内部或外部)都携带着RID,标明是哪台路由器将它汪人到EIGRP中o RID的应用逻辑并没有发生改变一二路由器会丢弃所有携带着自已RID的路由。下例展示了通告路由中携带的EIGRP RID。
 
10.0.2.0/24被作为内部路由通告,这条路由已经携带了通告路由器的RID 10.255.255.2
 
下边的输出展示了一条重分发路由也携带了起源路由器的ID 10.255.255.2,和之前的起源路由器一样。
 
EIGRP RID的选取规则与OSPF一样。路由器会优先选择eigrp router-id命令配置的RID;如果工程师没有手动配置的话,路由器会从所有启用了的环回接口中选择最大的IP地址作为ⅢD;如果工程师没有配置环回接口,或者没有启用了的环回接口,路由器会从所有启用了的接口中选择最大的IP地址作为RID.一旦路由器选定了RID,它就不能再重新生成RID,除非工程师移除了EIGRP进程、手动配置了RID,或者删除了手动配置的RTD。在通过命令eigrp router-id手动配置RID时,不能使用0.0.0.0和255.255.255.255;除此之外的其他值都是有效且可用的。如果路由器的RID发生了改变,它就会断开并重新建立邻接关系,从而导致短暂的连通性问题。如果在一台正在运行的路由器上更改了它接口的IP地址,并且并没有重新启动路由器,在这种情况下, EIGRP的RID并不会发生变化。不过这种做法在特定环境中有可能带来问题,比如在网络中添加一台新路由器,让它使用其他路由器的地址,并且更改了地址的路由器并没有重启。这样一来,网络中就可能有两台路由器使用相同的EIGRP RID ,它们将无法学到对方注人到EIGRP中的路由。路由器并不会在日志消息中指出这一情况,不过在EIGRP事件目志中倒是可以看到一条比较隐蔽的目志消息,如下
 
在接收到的更新中忽略172.16.1.0/24路由
 
 
以前,要想查看当前的RID有点费劲。在以前的IOS版本中,能够显示路由器RTD的地方只有命令show ip eigrp topoIogy和命令show ipv6 eigrp topoIogy的第一行,详见例8-180从IOS 15.0(1)M版本开始,在新命令show eigrp protocoIs中也包含了EIGRP的RTD信息。在较新的IOS版本中,命令show ip protocoIs的输出内容中也包含了EIGRP的RID信息。下例展示了查看RID的几种方式。它的RID使用的是环回接口地址10.255.255.1/32。
 
以下两个命令都显示相同的输出,对于两个ipv4和IPv6,这个路由器使用相同的RID,代替这些命令,可以使用新的命令 show eigrp address-family ipv4 topology和 show eigrp address-family ipv6 topology
 
show eigrp protocols 命令在单个输出中涵盖所有配置的进程和地址家族实例信息,RID展示在Router-ID行。
 
 

EIGRP-15-其他和高级的EIGRP特性-1-路由器ID的更多相关文章

  1. atitit.高级编程语言的特性 and 未来趋势与进化.doc

    atitit.高级编程语言的特性 and 未来趋势与进化.doc 1 编程语言的发展历程 1 1.1 编程语言的进化,起始发现背后的思想 :不论什么两个系统之间的复杂性,都能够通过加入一个抽象层要屏蔽 ...

  2. Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性

    简介 Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很 ...

  3. Java 15 正式发布, 14 个新特性,刷新你的认知!!

    JDK 15 2020/09/15 如期而至! 这个时间牛逼啊,和苹果发布会同天? OracleJDK 15 发布地址: https://www.oracle.com/java/technologie ...

  4. EIGRP-16-其他和高级的EIGRP特性-2-非等价负载分担

    与大多数内部路由协议不同的是, EIGRP能够将流量负载分到多条非等价路径上,而不仅仅使用去往目的地最近距离的那一条路径.提供这项功能的特性称为非等价负载分担.   非等价负载分担的核心概念是可行后继 ...

  5. iOS开发——高级篇——Objective-C特性:Runtime

    Objective-C是基于C语言加入了面向对象特性和消息转发机制的动态语言,这意味着它不仅需要一个编译器,还需要Runtime系统来动态创建类和对象,进行消息发送和转发.下面通过分析Apple开源的 ...

  6. 简易数据分析 15 | Web Scraper 高级用法——CSS 选择器的使用

    这是简易数据分析系列的第 15 篇文章. 年末事情比较忙,很久不更新了,后台一直有读者催更,我看了一些读者给我的私信,发现一些通用的问题,所以单独写篇文章,介绍一些 Web Scraper 的进阶用法 ...

  7. 我还在生产玩 JDK7,JDK 15 却要来了!|新特性尝鲜

    自从 JDK9 之后,每年 3 月与 9 月 JDK 都会发布一个新的版本,而2020 年 9 月即将引来 JDK15. 恰巧 IDEA 每四五个月会升级一个较大的版本,每次升级之后都会支持最新版本 ...

  8. Redis高级命令及特性(安全性)

    高级命令 ​ keys * : 返回满足的所有键 ,可以模糊匹配 ​ exists :是否存在指定的key,存在返回1,不存在返回0 ​ exprie:设置某个key的过期时间 ​ ttl:查看剩余时 ...

  9. C#高级编程之特性

    特性定义 MSDN的描述:使用特性,可以有效地将元数据或声明性信息与代码(程序集.类型.方法.属性等)相关联. 将特性与程序实体相关联后,可以在运行时使用反射这项技术查询特性. 参考此处作者的解释 h ...

随机推荐

  1. 如何在本地调试你的 Spark Job

    生产环境的 Spark Job 都是跑在集群上的,毕竟 Spark 为大数据而生,海量的数据处理必须依靠集群.但是在开发Spark的的时候,不可避免我们要在本地进行一些开发和测试工作,所以如何在本地用 ...

  2. SQL拦截器

    一.拦截SQL 1.slow log 2.general log 3.mycat sql拦截器 二.mycat sql拦截器 1.配置server.xml # 1.5可用 <system> ...

  3. zz 通过INFORMATION_SCHEMA.INNODB_TRX、INNODB_LOCKS、INNODB_LOCK_WAITS 三个表获取事务与锁的信息

    zz from http://imysql.com/2015/03/25/mysql-faq-how-to-fetch-latest-trxid.shtml #先查询 INNODB_TRX 表,看看都 ...

  4. MVC4.0 上传文件

    Views/Import/ImportExcel.cshtml @{ Layout = null;} <!DOCTYPE html> <html><head> &l ...

  5. Spring Beans 自动装配 简介

    Beans 自动装配 Spring 容器可以在不使用<constructor-arg>和<property> 元素的情况下自动装配相互协作的 bean 之间的关系,这有助于减少 ...

  6. Gym101635K Blowing Candles

    题目链接:http://codeforces.com/gym/101635 题目大意: 推荐一篇文章:https://blog.csdn.net/wang_heng199/article/detail ...

  7. mysql单记录也能造成的死锁

    最近在开发的时候,在mysql Innodb 引擎下,一条记录记录也能引起锁的事件. 场景描述 在项目压测的是,突然发现有类似以下的异常发生: com.mysql.jdbc.exceptions.jd ...

  8. centos8.0安装docker & docker-compose

    centos8.0安装docker&docker-compose 背景简介: 现在centos已经到了8 ,一直在接触容器方面,为了尝鲜,下载了CentOS8,并尝试安装docker& ...

  9. Docker容器启动时初始化Mysql数据库

    1. 前言 Docker在开发中使用的越来越多了,最近搞了一个Spring Boot应用,为了方便部署将Mysql也放在Docker中运行.那么怎么初始化 SQL脚本以及数据呢? 我这里有两个传统方案 ...

  10. Java Serializable(序列化)的总结

    1.序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保存object states,但 ...