弥散更新算法(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. mysql操作之二:fetchone与获取lastrowid

    import mySQLdb conn = mySQLdb.connect(host='127.0.0.1',user='root',passwd='123456')cur = conn.cursor ...

  2. NetAnalyzer笔记 之 十二 NetAnalyzer 6.0 的使用方法 -- 1.初识NetAnalyzer

    上次写NetAnalyzer使用方法是2016年的时候了,在后来NetAnalyzer经过了巨大的版本更变,但是因为个人原因,一直未对使用方法进行更新,现在NetAnalyzer最新的6.0已经发布了 ...

  3. Jenkins-Sonar集成配置及注意点

    首先说说关于Jenkins集成Sonar的相关配置:我jenkins与Sonar不在同一个服务器上! 先现在 SonarQube Scanner 插件. SonarQube Servers:系统配置 ...

  4. jquery live 区别

    http://www.360doc.com/content/13/1222/22/14022539_339358149.shtml 开始的时候在jQuery.1.7.1中使用了.live()觉得很好用 ...

  5. json字符串转List集合

    public List<Map<String,PendingInfo>> jsonToList(String json){//PendingInfo可以换成其它bean类 Li ...

  6. 03 . Python入门之运算符

    一.什么是运算符? 举个简单的例子** 4 +5 = 9 . 例子中,4** 和 5 被称为操作数,"+" 称为运算符. Python语言支持以下类型的运算符: [算术运算符] [ ...

  7. seo网站优化收录过少的病因分析-智狐seo顾问

    seo网站优化收录过少的病因分析 很多网站优化人员都了解,一个网站收录的重要性,企业网站要想可以在百度中占据一个良好的排名,获取的权重更高,那么网站收录自然就上去了,很多站长们在操作的过程中就会出现不 ...

  8. 带你学够浪:Go语言基础系列-环境配置和 Hello world

    文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 前面几周陆陆续续写了一些后端技术的文章,包括数据库.微 ...

  9. 【HBase】与关系型数据库区别、行式/列式存储

    [HBase]与关系型数据库区别 1.本质区别 mysql:关系型数据库,行式存储,ACID,SQL,只能存储结构化数据 事务的原子性(Atomicity):是指一个事务要么全部执行,要么不执行,也就 ...

  10. 判断IP地址的合法性

    每台计算机都有独一无二的编号,称为ip地址,每个合法的ip地址由‘.’分隔开的4个数字组成,每个数字的取值范围为0--255 输入一个字符串,判断其是否为合法的IP地址,若是输出‘YES’,否则输出‘ ...