弥散更新算法(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. k8s搭建实操记录一(master)

    #1)关闭CentOS7自带的防火墙服务 systemctl disable firewalld systemctl stop firewalld swapoff  -a     ##虚拟机要关闭交换 ...

  2. java第十二周课后作业0523

    1.编写一个程序,实现字符串大小写的转换并倒序输出.要求如下(1)使用for循环将字符串“ Hello world”从最后一个字符开始遍历(2)遍历的当前字符如果是大写字符,就使用 toLower C ...

  3. PHP基础-自定义函数-变量范围-函数参数传递

    一.自定义函数    function 函数名([形式参数1,形式参数2,....形式参数n]){        //各种PHP代码....        //......        return ...

  4. DevOps生命周期,你想知道的全都在这里了!

    在大多数情况下,软件应用程序开发由于其规范性和复杂性而变得很耗时. 为了在短时间内交付高质量应用程序,软件开发人员正在遵循一套通用的实践,称为DevOps生命周期. 那么,DevOps在软件应用程序开 ...

  5. Istio 流量劫持过程

    开篇 Istio 流量劫持的文章其实目前可以在servicemesher社区找到一篇非常详细的文章,可查阅:Istio 中的 Sidecar 注入及透明流量劫持过程详解.特别是博主整理的那张" ...

  6. DataFrame的apply用法

    DataFrame的apply方法: def cal_value_percent(row,total_value): row['new_column']=row[estimated_value_col ...

  7. 自动化测试: Selenium 自动登录授权,再 Requests 请求内容

    Selenium 自动登录网站.截图及 Requests 抓取登录后的网页内容.一起了解下吧. Selenium: 支持 Web 浏览器自动化的一系列工具和库的综合项目. Requests: 唯一的一 ...

  8. Rocket - debug - TLDebugModuleInner - Abstract Command Decoding & Generation

    https://mp.weixin.qq.com/s/0zKSTktxgzo5uCUphqaWSQ 介绍抽象命令的解码和生成. 1. accessRegisterCommandReg accessRe ...

  9. Chisel3 - util - ReadyValid

    https://mp.weixin.qq.com/s/g7Q9ChxHbAQGkbMmOymh-g   ReadyValid通信接口.通信的双方为数据的生产者(Producer)和消费者(Consum ...

  10. Java面向对象 类与对象与方法的储存情况

    栈.堆.方法区 类(含方法)储存在方法区 main函数入栈 堆里面存储方法区中类与方法的地址 main函数调用方法,找堆里面方法的地址,再从方法区找到对应函数,函数入栈,用完出栈 总结: 1.类.方法 ...