弥散更新算法(DUAL)是一个收敛算法.它代替了其他距离矢量协议使用的Bellman-Ford 算法。路由环路.甚至是在协议完全收敛前出现的瞬时环路.都会对网络性能造成不良影响。为了防止环路的形成.DUAL使用弥散计算的概念.执行分布的最短路径计算.并在执行这些计算的过程中.维护一个无环的环境。DUAL是EIGRP路由协议的核心。
 
拓扑表中集中存储了EIGRP进程的数据。拓扑表这个名称可能并不特別贴切.因为EIGRP毕竟还是一项距离矢量路由协议.它本身对网络的拓扑一无所知。尽管如此.拓扑表是EIGRP储存所有路由信息的地方.其中包含以下这些内容:
 
•每个己知目的地网络的前缀(地址/网络掩码);
•目的地网络的可行距离;
•每个通告了目的地网络的邻居路由器地址.以及去往这个邻居的出接口;
•每个邻居通告的目的地网络度量值.以及通过这个邻居去往目的地网络的路径度量值;
•目的地网络的状态;
•网络的其他信息(各种内部标记、网络类型和源等)。
 
EIGRP会通过以下途径生成并更新拓扑表:本地注入的网络(加入EIGRP的直连接口、本地重分布的路由).以及接收到的EIGRP更新包、査询包、响应包、SIA査询包和SIA响应包中通告的网络。所有通过EIGRP学习到的网络都会被放入拓扑表中.EIGRP会在所有邻居中.査找通告了最低总开销路径的邻居.并确认该邻居提供的是无环路径;找到后.它会把通过这条邻居去往该网络的路径放入路由表中。要记住.远端网络必须首先出现在拓扑表中.才能放入路由表中。
 
拓扑表中记录的每个网络都关联着一个状态信息。这个状态可以是被动或活动.被动状态表示EIGRP己经找到了去往这个网络的最短路径.并且对这条路径感到满意.活动状态表示EIGRP目前正在为这个网络寻找最短路径。在稳定拓扑中.所有路由器都应该处于被动状态。活动状态总是与发送査询包的路由器相关.这台路由器会让它的邻居也参与到寻找新路径的过程中。处于活动状态中.路由器无法修改路由表中特定网络的路由.也就是说路由器无法从路由表中移除这条路由.或者修改它的下一跳。只有当发出査询包的路由器从它的所有邻居那里接收到了响应包.活动状态才能圆满结束。直到那时.这条路由才能再次进入被动状态.路由器可以做出新的最短路径选择.并最终更新路由表中的条目。前文己经提到过.EIGRP在其设计中.可以避免在每个路由进程中出现路由环路。在路由进入活动状态后.在路由表中保留这条之前还能用(且无环)的路由.这种做法保证网络中不会出现环路.这条路由现在可能己经不是最优的了.甚至可能己经不可达了.但它仍是无环的。在弥散计算结束后.路由器会选出一条新的无环最有路径并开始使用它。EIGRP实际上是以这样一种方式工作的:它总是把一条无环路径换成另一条无环路径.并不会出现有可能形成环路的中间过渡状态。现在将其简要总结如下。
 
•如果在一台路由器需要选择一条新的最短路径时.提供了那条路径的邻居能够确保自己无环.那么这条路由就会保持在被动状态中.因为路由器己经拥有了做出正确选择的所有信息。
•如果提供了最短路径的邻居无法保证自己无环.或者根本没有提供最短 路径的邻居.路由器就需要进入活动状态。
 
下例中展示了路由器中EIGRP拓扑表中的内容.命令的输出内容以下图中的路由器R1为 例。这个网络中运行IPv6 EIGRP.R1和所有其他路由器之间的串行链路上只配置了IPv6链路本地地址.格式为FE80::〈路由器编号〉。图右侧的LAN是一个被动网络(R2、R3和R4连接在LAN中的接口都被配置为被动模式;因此不会通过它们建立EIGRP邻接关系).它所使用的全局IPv6前缀是2001 :DB8:CC1E:: /64。R4将去往2001:DB8:FFFF:: /48的静态路由重分布到EIGRP中。为了简化度量值的汁算.这个网络中的EIGRP只在计算中使用延迟度量参数 (K3=l.所有其他K值都设置为0)。工程师按照拓扑所示.配置了每个接口的延迟值。之所以在这个案例中使用IPv6.是因为这样做可以只使用链路本地地址实现最多的互连.而且这 样做可以使各种show和debug命令具有更强的可读性。为了简化案例.本例中只使用经典度量来选择路由。要记住.EIGRP会对计算出的经典度量值乘以256。注意仔细阅读案例中的注释内容。
这条命令显示EIGRP进程的AS号,Router ID,收集到的本地注入或从其它邻居学到的网络信息。输出中到2001:DB8:CC1E::/64的下一跳为FE80::3(R3)和FE80::3(R3),R4当前不满足成为预期下一跳的可行条件。这个命令是少数的几个之一真实展示EIGRP进程的Router ID的命令
 
使用all-links关键字,显示所有邻居通告的网络,也显示那些不满足可行条件检查的。
2001:DB8:FFFF::/48 还是只有一个邻居是因为EIGRP使用了毒性反转的水平分割。因为R2和R3使用R1作为他们到2001:DB8:FFFF::/48的下一跳,他们通告回R1一个无限度量。
 
 
通过关联一个指定的网络,显示出它的详细信息,注意存储的关于网络的信息:
状态,继承者数量,可行距离,覆盖线路类型的每个邻居的信息,到邻居的路径单独的度量成分,和混合计算度量的结果。
 
 
如果关于外部网络(重分布)的详细信息被拉入拓扑表,除了显示的信息之外,外部网络也携带关于执行重分布的路由器的信息,和原始的重分布路由,例如原始类型,AS号,或metric度量。
 
 
 
 
 
 
 

EIGRP-9-弥散更新算法-拓扑表的更多相关文章

  1. EIGRP-12-弥散更新算法-DUAL的FSM(*没写完)

    FD (可行距离).后继和可行后继.本地计算和弥散计算(随着查询包的发出而扩散,随着响应包的接收而收敛)一到目前为止介绍的这些机制能够使路由器有效地计算出去往某目地的新路径,只要在整个弥散计算中不再出 ...

  2. EIGRP-11-弥散更新算法-EIGRP中的本地计算和弥散计算

    至此,我们已经了解了诸多概念: RD (报告距离). CD (计算距离). FD (可行距 离)和FC (可行性条件) ,在此基础上继续了解EIGRP对于拓扑变化的应对方法想必是轻松愉快的.能够导致拓 ...

  3. EIGRP-13-弥散更新算法-停滞在活动状态

    如果一台路由器参与到了针对某个目的地的弥散计算中(即将相应路由置为活动状态,并发送查询包),它必须首先等待所有邻居都返回响应包,之后它才能执行自已的弥散计算,接着选出新的最优路径,最后开始发送自已的响 ...

  4. EIGRP-10-弥散更新算法-计算距离,报告距离,可行距离和可行性条件

    对于某个目的网络,EIGRP持续关注它的各种距离参数.EIGRP使用复合度量参数,不过为了简化,这里使用一个没有单位的数值.同样出于简化,这里的EIGRP路由器都不使用水平分割.

  5. mysql批量更新、多表更新、多表删除

    本文介绍下,mysql中进行批量更新.多表更新.多表删除的一些实例,有需要的朋友可以参考下. 本节主要内容: mysql的批量更新.多表更新.多表删除 一,批量更新: 复制代码代码示例: update ...

  6. Oracle两张表关联批量更新其中一张表的数据

    Oracle两张表关联批量更新其中一张表的数据 方法一(推荐): UPDATE 表2 SET 表2.C = (SELECT B FROM 表1 WHERE 表1.A = 表2.A) WHERE EXI ...

  7. mySQL:两表更新(用一个表更新另一个表)的SQL语句

    用一个表中的字段去更新另外一个表中的字段, MySQL 中有相应的 update 语句来支持,不过这个 update 语法有些特殊.看一个例子就明白了. create table student ( ...

  8. AOV网络和Kahn算法拓扑排序

    1.AOV与DAG 活动网络可以用来描述生产计划.施工过程.生产流程.程序流程等工程中各子工程的安排问题.   一般一个工程可以分成若干个子工程,这些子工程称为活动(Activity).完成了这些活动 ...

  9. ALV编辑数据后未更新到内表

    在调用 ‘I_CALLBACK_USER_COMMAND’的时候定义 DATA: GR_ALV TYPE REF TO CL_GUI_ALV_GRID. "alv数据更改后更新到内表 CAL ...

随机推荐

  1. CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\ad888a2

    http://wenwen.sogou.com/z/q445150234.htm IIS_USRS

  2. Java并发(4)

    java中的线程安全是什么: 就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问 什么叫 ...

  3. SXSSFWorkbook的简单使用

    在工作中使用到SXSSFWorkbook来导出Excel,写一篇博客记录一下SXSSFWorkbook的使用方法 1.介绍 SXSSFWorkbook是属于apache基金会的Excel导出工具类,从 ...

  4. html5拖动监听

    在拖动目标上触发事件 (源元素): ondragstart - 用户开始拖动元素时触发 ondrag - 元素正在拖动时触发 ondragend - 用户完成元素拖动后触发 释放目标时触发的事件: o ...

  5. Spring Boot集成Shrio实现权限管理

    Spring Boot集成Shrio实现权限管理   项目地址:https://gitee.com/dsxiecn/spring-boot-shiro.git   Apache Shiro是一个强大且 ...

  6. Jmeter执行多个sql查询语句

    1.添加jdbc connection(注意标红部分) 2.添加jdbc request 3.查看结果树 本文主要向大家介绍了Oracle数据库之jmeter jdbc request 如何运行多个s ...

  7. Java IO(七)ByteArrayInputStream 和 ByteArrayOutputStream

    Java IO(七)ByteArrayInputStream 和 ByteArrayOutputStream 一.介绍 ByteArrayInputStream 和 ByteArrayOutputSt ...

  8. Java IO(六) ObjectInputStream 和 ObjectOutputStream

    Java IO(六) ObjectInputStream 和 ObjectOutputStream 一.介绍 对于对象数据的处理,Java IO 提供了 ObjectInputStream 和 Obj ...

  9. 坑爹的PostgreSQL的美元符号(有时需要替换成单引号)

    今天想在PostgeSQL数据库里建一个存储过程(或函数也行),由于对存储过程比较生疏,上网搜了很多教程和源代码例子,照着写,发现怎么都不行,甚至把网上教程包括官方教程的源代码原封不动的复制下来一执行 ...

  10. Java实现 LeetCode 212 单词搜索 II(二)

    212. 单词搜索 II 给定一个二维网格 board 和一个字典中的单词列表 words,找出所有同时在二维网格和字典中出现的单词. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中&quo ...