CCNP ROUTE 300-101学习指南

978-7-115-42507-2
作者: 【美】戴安娜 蒂尔(Diane Teare)鲍勃 瓦尚(Bob Vachon)瑞克 格拉齐亚尼(Rick Graziani)
译者:
编辑: 傅道坤王旭丹
分类: CCNP

图书目录:

详情

本书是Cisco公司授权出版的针对最新ROUTE考试的唯一官方学习指南。本书是针对最新CCNP ROUTE考试(300-101)的参考书籍。书中深入而全面地探讨了与ROUTE考试相关的主题以帮助读者备考,进而打开通往CCNP认证的大门。

图书摘要

版权信息

书名:CCNP ROUTE 300-101学习指南

ISBN:978-7-115-42507-2

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

• 著    [美] Diane Teare Bob Vachon Rick Graziani

  译    YESLAB工作室

  责任编辑 傅道坤

• 人民邮电出版社出版发行  北京市丰台区成寿寺路11号

  邮编 100164  电子邮件 315@ptpress.com.cn

  网址 http://www.ptpress.com.cn

• 读者服务热线:(010)81055410

  反盗版热线:(010)81055315


Implementing Cisco IP Routing (ROUTE) Foundation Learning Guide (ISBN:9781587204562)

Copyright © 2015 Pearson Education, Inc.

Authorized translation from the English language edition published by Cisco Press.

All rights reserved.

本书中文简体字版由美国Pearson Education授权人民邮电出版社出版。未经出版者书面许可,对本书任何部分不得以任何方式复制或抄袭。

版权所有,侵权必究。


本书是Cisco CCNP ROUTE 300-101认证考试的官方学习指南。全书包括8章和3个附录,涵盖如下内容:基础网络及路由概念、EIGRP部署、OSPF部署、控制路由更新、路径部署控制、企业Internet连接、实施BGP、路由器与路由协议的加固。配置示例和验证输出阐述了实施这些路由协议以及排除其故障的技巧,章尾的复习题可帮助读者巩固阐述的概念。

本书深入而全面地探讨了与ROUTE考试相关的主题,可帮助读者备考ROUTE。


Diane Teare,拥有P.Eng、CCNP、CCDP、CCSI、PMP认证,是网络、培训、项目管理和在线教育领域的专家。她有25年网络硬件和软件设计、实施和排错的经验,一直致力于教学、课程设计和项目管理工作。她在网络设计和路由技术领域造诣颇深。Diane是CCSI,并持有CCNP、CCDP和PMP证书。她是最大的一家Cisco培训合作伙伴的CCNA和CCNP路由交换课程的讲师和课程负责人。她曾是这家公司的线上教学的负责人,她负责规划并支持这家公司在加拿大所有的线上培训课程,其中包括Cisco课程。Diane拥有电气工程应用科学的学士学位,以及管理科学应用科学的硕士学位。她出版或与他人合作出版了以下Cisco Press图书:本书的第一版;Designing Cisco Network Service Architectures (ARCH)第二版;Campus Network Design FundamentalsAuthorized Self-Study Guide Building Scalable Cisco Internetworks (BSCI)Building Scalable Cisco Networks。Diane参与编辑了以下两本图书的前两个版本:Authorized Self-Study Guide Designing for Cisco Internetwork Solutions (DESGN)和Designing Cisco Networks

Bob Vachon,是加拿大安大略省萨德伯里市凯布莱恩学院(Cambrian College)的教授,教授Cisco网络架构课程。他有超过30年的计算机网络和信息技术领域的工作和教学经验。自2001年以来,Bob作为团队领导、主要作者和主题专家,参与到Cisco和Cisco网络技术学院的各种CCNA、CCNA-S和CCNP项目中。他也是Routing Protocols Companion GuideConnecting Networks Companion Guide的合著者之一,并撰写了CCNA Security (640-554) Portable Command Guide。在闲暇时间,Bob喜欢弹吉他、打台球、打理自己的花园或者享受白水独木舟漂流。

Rick Graziani,在加利福尼亚州阿普托斯的卡布利洛学院(Cabrillo College)教授计算机科学与计算机网络课程。Rick拥有近30年的计算机网络和信息技术领域的工作和教学经验。在从事教学工作以前,Rick曾在多家公司的IT部门就职,其中包括SCO公司(Santa Cruz Operation)、天腾电脑公司、洛克希德导弹和空间公司。他拥有美国加州州立大学蒙特瑞湾分校计算机科学和系统理论的文学硕士学位。Rick还为Cisco网络技术学院课程工程团队工作,为Cisco Press撰写了其他书籍,其中包括IPv6 Fundamentals。Rick非常喜欢利用空闲时间冲浪,他很享受在他最爱的圣克鲁斯海滩冲浪。


Denise Donohue,CCIE #9566(路由交换),是Chesapeake NetCraftsmen的高级解决方案架构师。Denise自20世纪90年代中期就开始从事计算机系统相关的工作,自2004年开始专注网络设计工作。在那段时间,她为几乎所有行业(私有和公有以及各种规模)都设计了大量网络。Denise还是诸多Cisco Press图书的作者和合著者,其中涉及数据和语音网络技术,并在Cisco Live和其他业界活动中发表演讲。


将本书献给我的先生Allan Mertin——谢谢你的爱、鼓励和耐心;献给我出色的儿子Nicholas——谢谢你的爱,谢谢你与我分享对这个世界的探索;先给我的父亲母亲Syd和Beryl,谢谢你们的鼓舞。

——Diane

将本书献给卡布利洛学院CIS/CS系、职员和管理层,尤其要感谢我的学生,我很荣幸在如此优秀的学院中教授计算机网络课程。我还要感谢所有家人和朋友,谢谢你们的爱与鼓励。

——Rick

将本书献给我美丽的妻子Judy和我的女儿们——Lee-Anne、Joëlle、Brigitte和Lilly。感谢你们在这次写作项目中的鼓励和忍耐。我还要将本书献给我在卡布利洛学院的学生和院长Joan Campbell,感谢你们长久以来的支持。

——Bob


我们想要感谢很多人,有你们的帮助才有本书的问世。

Cisco Press团队:执行编辑Mary Beth Ray协调了整个项目,为本书提供了必要的指导,对不可避免的障碍给予了理解。总编辑Sandra Schroeder使本书投入生产。Vanessa Evans多次有效地组织物流管理。开发编辑Chris Cleveland一直协调并确保我们都能够输出最好的稿件。

我们还想要感谢项目编辑Mandie Frank和文字编辑Keith Cline,感谢你们在本书的编辑流程中做出的杰出工作。

Cisco路由课程开发团队:非常感谢开发了路由课程的团队成员。

技术审稿人:我们想要感谢本书的技术审稿人Denise Donahue,感谢你通篇的审校和宝贵的修改建议。

我们的家人:当然了,如果没有家人无条件的理解和耐心,也不会有本书问世的这一天。你们总是在这里鼓舞并激励着我们,万分感谢。

Diane:我还想表达一些特殊感谢。首先,感谢Bett Bartow(多年前是他最初邀请我为Cisco Press写作)和Mary Beth Ray,感谢当我们最终见面时的热情款待,以及坚持邀请我参与这个项目。其次,感谢与我在本书中合作的Rick和Bob;与你们一起工作我感到很荣幸!

Rick:我要额外感谢Mary Beth Ray,感谢你多年前给我机会参与到Cisco Press的写作中,感谢你成为我的好友。我还要感谢两个好朋友Diane和Bob,感谢你们让我参与到本书的创作工作中。

Bob:我要特别感谢Mary Beth Ray和她在Cisco Press的团队,感谢你们的全面支持、专业精神和专业技能。还要感谢我的合作者Diane和我的好朋友Rick,我很荣幸与你们共同参与的诸多项目。


网络持续扩张,由于支持着越来越多的协议和用户,它们变得越来越复杂。本书教你如何设计、实施和监控一个可扩展的路由网络。本书着重使用中到大型网络站点中常用来连接LAN和WAN的Cisco路由器。

在本书中,你会学到大量有关路由技术的技术细节。首先,本书详细介绍了基本网络和路由协议原理,接着介绍IPv4(IP版本4)和IPv6(IP版本6)路由协议:EIGRP(增强型内部网关路由协议)、OSPF(开放最短路径优先)和BGP(边界网关协议)。本书中还包含企业Internet连接的相关内容,介绍了管理路由更新和控制路径选择等内容,还涉及保障Cisco路由器安全的最佳做法。

本书通过配置案例和相应的输出内容展示了排错技术,展示了与网络运行相关的重点内容。每章末尾的复习题强调并帮助读者强化每一章的重点概念。

本书引领读者迈向获得CCNP或CCDP认证的目标,提供了有足够深度的信息,能够帮助读者准备ROUTE 300-101考试。

本书基于Cisco IOS 15.1和15.2版本提供了命令和配置案例。

本书适用于网络架构师、网络设计师、系统工程师、网络工程师,以及所有负责增长型路由网络的实施与排错的网络管理员。

如果你是为了获得CCNP或CCDP认证而参加ROUTE考试,本书将为你提供有深度的学习材料。为了能够从本书中充分受益,你应该通过CCNA路由与交换认证,或掌握了相同级别的知识,其中包括以下内容。

如果你欠缺上述知识和技术,你可以通过ICND1(互联Cisco网络设备第1部分)和ICND2(互联Cisco网络设备第2部分)课程进行知识积累,或者也可以阅读Cisco Press出版的其他相关书籍。

本书中包含以下章节和附录。



本书在介绍命令语法时使用与IOS命令参考一致的约定,本书涉及的命令参考约定如下:


本书中的大多数配置和验证案例都是使用Cisco IOL(IOS over Linux)虚拟环境(与ROUTE课程中使用的环境相同)实现的。这个环境是在Linux上运行IOS软件,而不是运行在真实路由器和交换机硬件上。因此对于这些配置案例要了解以下事项:


本章会讨论下列内容:

本章会从概述路由协议说起,着重介绍区分各个路由协议的特性。本章会介绍不同底层技术的限制是如何影响路由协议的,继而考察2层和3层VPN会如何影响路由协议。本章还会介绍一种可扩展的VPN解决方案,即动态多点虚拟专用网络(DMVPN),同时还会介绍一款简单路由协议——RIPng的配置方法,这款路由协议支持Internet协议第6版(IPv6)。

动态路由协议在当今的企业网络中扮演着重要的角色。动态路由协议林林总总,每种协议都有其优势及限制。这些协议的工作方式各不相同,需要分别进行描述和比较。影响管理员选用动态路由的重要特性有三种:收敛、是否支持汇总以及是否可以扩展到更大的环境中。

在完成本节内容的学习后,读者应该能够:

注释


术语IP为广义,同时适用于IPv4和IPv6。如有特指,本书会以IPv4和IPv6这两个术语分别代指专门的协议。

介绍当今企业的网络基础设施乍看之下似乎有点复杂。大量的互联设备以及物理拓扑和逻辑拓扑之间的区别是这种复杂性的两个原因。为分析方便起见,我们将大多数这类设备根据其在网络基础设施中的功能,对应到了不同的区域。图1-1所示为一个企业网络基础设施的示例。

图1-1 企业网络基础设施

为了更好地理解一个高度抽象的典型企业网络拓扑,我们需要将它划分为下面两个主要的区域。

路由协议在当今的网络中扮演着重要的角色。从企业园区,到分支结构,再到企业边界的所有网络段中,路由协议都得到了广泛的使用。图1-2所示为一个部署动态路由协议角色的示例。

图1-2 动态路由协议角色

路由协议的基本目标是在路由器之间交换网络可达性信息,并动态地适应网络变化。这些协议使用路由算法来确定网络中不同网络段之间的最优路径,并使用最优路径更新路由表。

如果可行,在整个企业中使用同一种IP路由协议才是最佳做法。但在大多数情况下,读者管理的网络环境中都会有多种路由协议共存。使用多路由协议的一个常见例子是组织机构是多宿主的,也即通过两个或多个Internet服务提供商来提供Internet连通性。在这样的情况下,与服务提供商交换路由信息的协议常用边界网关协议(Border Gateway Protocol,BGP),而在组织内部,则往往会使用开放最短路径优先(Open Shortest Path First,OSPF)协议或增强型内部网关路由协议(Enhanced Interior GatewayRouting Protocol,EIGRP)。在较小规模的网络中,也可以使用RIPv2。在企业连接到一个ISP的单宿主环境中,客户和ISP之间则通常会使用静态路由。

选择哪一款路由协议会影响路由器所选择的路径;例如,不同的管理距离、度量和收敛时间都会让路由器选择不同的路径。

非对称路由或非对称流量是指返回路径和原始路径不同的流量。非对称路由会在许多有冗余路径的网络中出现。非对称绝不是一种负面的特性,不仅如此,它还常常是人们的一种需求,因为它可以更加有效地利用可用带宽,比如在一个Internet连接中,下行流量可能比上行流量要求使用更高的带宽。BGP包含了一组可以在Internet连接双方向上控制流量的工具。但多数路由协议都没有专门的工具来控制流量的方向。

如果要在特定需求下尽量提升网络利用率,设计目标中往往就会包含实现最优路由。这些需求应该放到应用、用户体验和性能参数的大环境中综合进行考虑。

在为一个组织机构选择最优的路由协议时,存在几种不同的可能性。对于何者才是最优的选择,并没有一个放之四海而皆准的回答,所以理解每种协议的优势和缺陷是非常重要的。以下是用于选择动态路由协议的需求和协议特性列表。

以上列出了各个机构常见的输入需求。读者可能需要根据自己的需求来考虑网路规模,如是否使用了多供应商的服务,对该协议的了解程度等。此外,管理员可能也需要考虑各个路由协议特定的普遍协议特征。

除了不同组织在路由协议方面需求迥异之外,网络的不同部分也存在着不同的需求。在企业园区网中,路由协议必须满足高可用性需求,同时能够提供非常快速的收敛。在中心和分支机构地区之间的企业边界,路由协议不仅需要判断最优路径,有时支持同时使用多个不等价WAN链路是非常重要的。若小型办公室是通过3G或4G移动网络进行连接的,此时交换的数据量就是收费的,因此路由协议增加的负载也就应该尽可能低。

在分析单个路由协议的行为之前,可将类似的协议分组在一起。路由协议可按照几种不同的方式进行分类。一种方式是各协议在自治系统内还是在自治系统间进行操作来进行分类。一个自治系统(Autonomous System,AS)表示在一个共同管理员管控下的网络设备集合。一家企业的内部网络或一个ISP的网络基础设施都属于典型的AS。

路由协议可基于其在 AS 内交换路由还是在不同的自治系统之间交换路由分为下面两类。

图1-3说明了IGP和EGP的区别。

图1-3 IGP与EGP

根据路由器之间所交换的网络可达性信息,路由协议可以分为距离矢量、链路状态或路径矢量。表1-1显示了RIP、EIGRP、OSPF、IS-IS和BGP路由协议是如何根据路由协议类型进行划分的。

表1-1 路由协议分类

内部网关协议 外部网关协议
距离矢量 链路状态 路径矢量
IPv4 RIPv2  EIGRP OSPFv2  IS-IS BGP-4
IPv6 RIPng  IPv6的EIGRP OSPFv3  IPv6的IS-IS MBGP

路由协议可被分为以下几组。

收敛描述的是路由器在注意到网络中发生变化时,交换有关变化的信息,执行必要的计算以重新评估最优路由的过程。

一个收敛的网络,指的是一种所有路由器都拥有相同网络拓扑视图的状态。收敛是网络的正常状态,也是我们所预期的状态,当参与路由协议的路由器之间交换完成所有路由信息之时,收敛即告实现。网络中的任何拓扑变化都会暂时打破收敛的状态,直到变化被传播到所有路由器上,同时最优路径也被重新计算出来为止。

如图1-4所示,连接分支B的主通道断开引发了拓扑变化,并因此打破了网络的收敛状态。当有关这条WAN链路不可用的信息被传播到路由器上时,路由协议就会开始判断到达受影响目的网络的新最优路径。

图1-4 收敛

收敛时间描述了在拓扑变化之后,网络设备需要多久才能到达收敛状态。业务连续性要求网络服务具有高可用性。为了最小化停机时间并快速响应网络变化,人们期望收敛时间越短越好。然而,收敛的速度会受到几种因素的影响。一个决定性因素是管理员选择的路由协议。每种协议都使用不同的机制来交换信息、触发更新并计算最优路径。IGP使用默认设置就能让收敛时间保持在一个可接受的水平上,而作为EGP的BGP响应网络变化的默认方式却很缓慢。

有几种可以影响路由协议收敛时间的方式。第一种常用的方式是微调该路由协议使用的计时器。管理员可以通过调整计时器来命令路由协议更加频繁地交换信息。使用更快的计时器,网络变化时也会更快被检测出来,有关变化的信息也会更快地得到发送。不过,把计时器调整得更快同时也会增加协议的开销,或者在性能较弱的平台上产生更高的使用率,这一点读者也要铭记在心。

第二种常用的影响收敛时间的方式是配置路由汇总。路由汇总减少了需要在路由器之间交换的信息量,并降低了需要接收拓扑变化信息的路由器数量。无论使用何种路由协议,以上两种方法都有助于减少收敛所需的时间。

通过对路由进行汇总,管理员得以减少路由器维护并交换的路由信息量,并由此减少路由开销,提升了路由的稳定性和扩展性。这可以缩小路由器的路由表规模,并提升网络的收敛速度。

路由汇总的目的是将几个子网汇聚成一个能描述这些子网的聚合条目。如图 1-5 所示,路由汇总减少了路由表的大小,因为路由器B只收到一条汇总路由,而不是8条明细路由。

图1-5 路由器A上的路由汇总

此外,路由汇总也减少了需要在两路由器之间交换的更新信息数量。例如,如果网络10.12.6.0/24变为不可达,网络就会发生一些变化。路由器A不需要向邻居通告有关不可达网络的前缀,因为汇总路由并不会因网络变化而受到影响。

路由汇总可以让更新的频率更低,需要更新的信息数量也更小,还可以降低收敛时间。为此,路由汇总技术广泛地应用在规模较大的网络中,因为在这样的网络中,收敛时间可能会成为今后网络增长的限制性因素。

不同的路由协议支持不同的路由汇总方式。一些距离矢量协议支持在每个出向接口上配置路由汇总,而链路状态协议仅支持在区域边界执行路由汇总。

切记,在规划路由汇总时,为了有效地实施路由汇总,网络中的IP地址必须以连续地址块的方式,分层进行分配。

随着网络规模的拓展,路由协议不稳定的风险也会增加,同时收敛时间也可能延长。而扩展性描述的就是路由协议用以支持网络进一步扩展的功能。

扩展性因素包括:

扩展网络的能力依赖于整体网络结构和编址机制。邻接邻居的数量、路由条目的数量、路由器的数量及其利用率,以及网络变化频率是最能影响协议扩展性的几大因素。

无论路由协议类型如何,层级型的编址、结构化的地址分配以及路由汇总都能提升整体的扩展性。

每种路由协议也都拥有一些其他的协议相关的特性,以便提升这个协议整体的扩展性。例如,OSPF支持使用分层的区域,将一个大网络划分为几个子域。而EIGRP支持配置末节路由器来优化信息交换过程并提升扩展性。

路由协议的扩展性以及这个协议用于支持更大网络的配置方式,在评估使用何种路由协议时,可能扮演着重要的角色。

管理员可以在多种不同的网络技术上设置路由协议。管理员应该考虑各个方案所存在的限制,及其如何影响路由协议的部署和操作,这是非常重要的。

完成本节内容后,读者应该能够:

以不同类型的IP地址作为目的IP地址,设备可以将流量发送给一个接收方,或者选定的多个接收方,再或者同时发给一个子网内的所有设备。路由协议可以使用不同的流量类型来控制路由信息的交换方式。

从不同的地址类型选择一个目的IP,即可让设备发送不同类型的流量。

图1-6说明了4种不同的流量类型。

图1-6 流量类型

早期的路由协议仅使用广播来交换路由信息。那些包含有路由更新的广播消息无谓地影响到了直连到相同网络上的其他设备,因为每台设备都需要在收到广播包时进行处理。所有的现代IGP都使用组播地址来完成邻居发现、交换路由信息和发送更新的工作。

表1-2列出了路由协议所使用的一些知名IPv4和IPv6组播地址。请注意,组播地址中的低位值在IPv4和IPv6中相同。

表1-2 路由协议使用的知名IPv4和已分配的IPv6组播地址

IPv4组播地址 描述
224.0.0.5 用于OSPFv2:所有OSPF路由器
224.0.0.6 用于OSPFv2:所有指定OSPF路由器
224.0.0.9 用于RIPv2
224.0.0.10 用于EIGRP
IPv6组播地址 描述
FF02::5 用于OSPFv3:所有OSPF路由器
FF02::6 用于OSPFv3:所有指定OSPF路由器
FF02::9 用于RIPng
FF02::A 用于IPv6的EIGRP

如图1-7所示,IPv6地址有几种不同基本类型。熟悉这些类型是很重要的,因为路由协议也会使用到其中的某些类型。

图1-7 IPv6地址类型

RFC 3587 指定 2000::/3 是 IANA 可以分配给区域互联网注册管理机构(Regional Internet Registry,RIR)的全局单播地址空间。全局单播地址是全局单播前缀中的一个IPv6地址,它等同于一个公有IPv4地址。这些地址是唯一且全局可路由的。全局单播地址的分配和结构使路由协议可以执行路由前缀汇总,而路由汇总可以限制全球路由表中路由表条目的数量。链路上使用的全局单播地址通过组织机构不断向上汇总,直至ISP为止。

IPv6链路本地地址使用前缀FE80::/10(1111 1110 10)。任意一台IPv6设备必须至少拥有一个链路本地地址,设备既可以通过默认使用EUI-64或使用私有扩展自动进行配置,也可以静态进行配置。路由器的链路本地地址通常是静态配置的,这样做可以在查找IPv6路由表及检查IPv6路由协议信息时更容易认出这个地址。本地链路上的节点可以使用链路本地地址来通信;这类节点不需要使用全局唯一地址来通信。链路本地地址是不可路由的,只能存在于链路或网络中。

因为没有广播地址,所以组播地址在IPv6中得到了大量的使用。读者可以通过前缀部分的FF00::/8识别出这类地址。组播地址分为分配的组播地址和请求节点组播地址两种。路由协议广泛使用分配的组播地址。分配的组播地址与IPv4中那些由路由协议(如EIGRP和OSPF)使用的知名组播地址类似。请求节点组播地址则由ICMPv6 邻居发现(Neighbor Discovery,ND)协议用来执行地址解析。NDP与IPv4中的ARP类似,其作用是将一个2层MAC地址映射为一个3层IPv6地址。

唯一本地地址是全局唯一且用于本地通信的IPv6单播地址。这类地址并非全球Internet可路由,而是只能在限定的区域(如一个站点)内进行路由。它也可在有限的站点集合之间进行路由。唯一本地IPv6单播地址由FC00::/7前缀进行标识。

正如在IPv4中那样,IPv6中同样规划了特殊的环回地址以作测试之用;发送给该地址的数据会被“环回”到发送方的设备。但在IPv6中,仅一个地址(而不是一整个地址块)具有这一功能——这个环回地址是0:0:0:0:0:0:0:1,通常表示为“::1”。

在IPv4中,全零的地址有特殊的含义,它指代主机本身,这个地址用于设备不知道自己的情形。在IPv6中,这一概念得到了正式化,全零地址被称为“未指定”地址“::”。这个地址会用来充当源IPv6地址,一般表示缺失全局单播地址,或数据包的源地址无关紧要。

注释


有关IPv6编址的更多信息,可以参见Rick Graziani著作的IPv6 Fundamentals(Cisco Press,2013)。

IPv6的Internet控制消息协议(Internet Control Message Protocol for IPv6,ICMPv6)与IPv4的ICMP(ICMPv4)类似。ICMPv6也像ICMPv4一样使用信息类消息(informational message)和错误消息(error message)来测试3层连通性,并告知源如网络不可达等这类问题。

ICMPv6也比其IPv4版本要强健得多,它包含了RFC 4861中定义的ICMPv6邻居发现协议。ICMPv6邻居发现的作用是执行IPv6中的自动地址分配、地址解析和重复地址检测。ICMPv6邻居发现包含5种消息。

并不是所有的2层网络拓扑都支持所有类型的流量。鉴于网络若不支持某些类型的流量有可能会影响路由协议的工作,所以读者了解某些网络技术的限制非常重要。如图 1-8所示,有三种常见的网络类型,我们会通过下面的分项进行详细的描述。

图1-8 网络类型

虽然点到点网络和广播网络并不会给路由器增加任何麻烦,但NBMA网络却引入了一些挑战,因此管理员需要通过配置对路由协议执行邻居发现的方式进行一些调整。距离矢量协议需要进行额外的配置,这也改变了路由协议在邻居之间交换消息的默认方式。这是因为这类协议存在水平分割这种避免环路的机制,这种机制会防止将从一个接口收到的信息还从这个相同的接口传输出去。

NBMA网络可以采用多种拓扑,其中最常见的是星型拓扑和部分网状拓扑。这是因为全网状拓扑不能很好地扩展,且对于有大量互连区域的网络来说非常昂贵。帧中继技术是NBMA网络的最常见的用例。有几种方式可以调整路由协议,使其能够在星型帧中继NBMA网络中正常工作。

如果使用一个帧中继多点接口来互连多个站点,可达性有可能会出现问题,这与帧中继NBMA自身的特性有关。帧中继NBMA拓扑有可能造成以下问题。

图1-9 水平分割

当一台路由器通过一个WAN NBMA链路连接到多个物理位置时,可以在一个物理接口上使用逻辑子接口来建立多条虚电路。子接口也克服了一些NBMA网络的限制。子接口有两种不同的类型可供选择。

图1-10 点到点子接口

在决定如何连接远程站点和(像总部站点这样的)中心站点时,有几种不同的选项和技术可供选择。一种方式是租用Internet连接,这种方式是比较便宜的方案。

关于为什么不能使用IGP路由协议来通过Internet建立连接,有如下几个原因。

为了克服上述障碍,管理员可以使用不同的隧道技术通过Internet来扩展私有网络。虽然这些隧道涉及多种不同的技术,但这些技术一般被统称虚拟专用网络(Virtual Private Network,VPN),人们可以通过这些隧道来交换信息,其效果类似于远程主机直连到相同的私有网络中。大部分VPN技术也支持路由协议。路由器之间的邻居邻接关系通过隧道接口建立,隧道接口在VPN建立时即会创建出来。

VPN技术对辅助的安全机制进行了有效的整合,提供了适宜的认证、加密和抗重放保护机制。

在连接远程站点与总部时,未必只能使用诸如专线或帧中继连接这样的传统解决方案。像多协议标签交换(Multiprotocol Label Switching,MPLS)和DMVPN这样的新型技术目前同样得到了广泛的使用,因为这些技术与传统解决方案相比,能够在更低开销的情况下提供更大程度的灵活性。了解这些新型VPN技术对于读者来说非常重要,因为这些技术也会影响路由协议的部署和配置。

在完成本节内容的学习后,读者应该能够:

本节会对最适合使用静态路由的情况进行介绍。静态路由可在以下情景中使用。

图1-11 配置静态路由

静态路由的一个完美的使用场景是星型拓扑,在这种拓扑中,所有远程站点默认都要返回到中心站点(中心),中心站点的一台或两台路由器有每个远程站点所有子网的静态路由。需要注意的是,如果没有合理的设计,随着网络增长到数百台路由器的规模,每台路由器都有大量的子网时,每台路由器上的静态路由数量也会增加。每次增加了新的子网或路由器时,管理员都必须在好几台路由器上增加到达新网络的静态路由。维护网络的管理负担可能变得过于沉重,这使得使用动态路由成为了更好的选择。

静态路由的另一个缺陷是当互连网络的拓扑发生变化时,管理员可能需要在问题区域周围配置新的静态路由来重路由流量。相反,如果使用的是动态路由,路由器就必须学习新的拓扑。路由器之间相互共享信息,且它们的路由进程可以自动发现是否存在替代路由,并在不需管理员干预的情况下重路由。因为路由器可以相互独立地建立起对于新拓扑状况的认识,因此这个称为收敛于新路由。动态路由与静态配置的路由相比,收敛速度要更快。

1.配置IPv4静态路由

管理员可以使用全局配置模式下的命令ip route prefix mask {address | interface [address]} [dhcp] [distance] [name next-hop-name] [permanent| track number] [tag tag]来创建IPv4静态路由。表1-3对这条命令的参数进行了介绍。

表1-3 ip route命令

ip route命令

描述

prefix mask

希望添加进IPv4路由表的那个远程网络的IPv4网络地址和子网掩码

address

访问目的网络的下一跳IPv4地址

interface

访问目的网络的本地路由器出站接口

dhcp

(可选)启用动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)服务器,以便为默认网关分配静态路由(选项3)

distance

(可选)分配给该路由的管理距离,必须大于等于1

name next-hop-name

(可选)给该路由定义一个名称

permanent

(可选)指明即使与该路由相关联的接口关闭,这条路由也不会从路由表中移除

track number

(可选)该这条路由关联一个跟踪对象。这个数的合法取值范围是1~500

tag tag

(可选)这个值可以在路由映射中进行匹配使用

如图1-11所示,如果连接两路由器间的链路没有使用动态路由协议,那么这条链路两端的路由器上就都必须配置静态路由;否则,远程路由器就不知道如何将数据包发回给位于其他网络的发送方设备——即只能实现所谓的“单通”。

配置静态路由时,必须指明下一跳IP地址或出接口,以告知路由器应当将流量发送到哪个方向。图1-11显示了两边的配置。路由器A了解直连网络172.16.1.0和10.1.1.0。它需要获得访问远程网络10.2.0.0的路由。路由器B则了解直连网络10.2.0.0和10.1.1.0;它需要获得访问远程网络172.16.1.0的路由。注意在路由器B上,路由器A的串行接口IP被作为下一跳IP地址。而在路由器A上,ip route命令则指明该路由以其S0/0/0接口作为出接口。若使用下一跳IP地址,则这个地址应该是链路另一端路由器接口的IP地址。若使用出接口,那么本地路由器就会将数据从指定接口发送给其直连链路另一端的路由器。指定出接口时,虽然路由表中的条目表示“直连”,但这条路由仍是管理距离为1的静态路由,而不是管理距离为0的直连网络。

注释


本节描述了IPv4静态路由的使用和配置。相同的方式和类似的配置也适用于IPv6静态路由。

Cisco快速转发(Cisco Express Forwarding,CEF)默认即在多数运行Cisco IOS 12.0或之后版本的Cisco平台上启用。在IOS 12.0之前的版本中,在点到点链路上使用出接口而不是下一跳IP地址来配置静态路由效率更高。使用出接口表示路由器不需在路由表中执行递归查找来寻找出接口。然而,鉴于目前IOS默认启用CEF,因此建议使用下一跳IP地址。

注释


CEF使用存储在数据层的两种主要数据结构,为实现高效的数据包转发提供了优化的查找功能,这两种数据结构一种是转发信息库(Forwarding Information Base,FIB),它是路由表的副本,另一个则是包含2层编址信息的邻接表。两个表中的信息会组合起来使用,所以无须对下一跳IP地址进行递归查找。换句话说,当路由器上启用了CEF时,使用下一跳IP的静态路由只需要执行一次查找。

2.配置静态默认路由

在有些情况下,路由器并不需要了解远程网络的详细信息。通过配置,路由器会将所有流量(或所有在路由表中没有更详细条目的流量)发往指定的方向;这种方式称为默认路由。默认路由既可以通过路由协议动态通告,也可以静态进行配置。

要创建静态默认路由,也需要通过ip route命令来实现,不过目的网络(命令中的prefix)和子网掩码(命令中的mask)都要设置为0.0.0.0。这个全零地址是一种通配符标记,任何目的地址都可以匹配这个地址。由于路由器会尝试匹配最长公共比特位,所以路由表中所列出的网络都会先于默认路由被匹配出来。但如果目的网络没有列在路由表中,路由器则会使用默认路由转发该流量。

在图1-12中,路由器A上去往10.2.0.0网络的静态路由被替换为了指向路由器B的静态默认路由。在路由器B上,我们增加了一条静态默认路由,指向其ISP。从路由器A 172.16.1.0网络发往Internet的流量都会发送给路由器B。路由器B可以判断出流量的目的网络不匹配其路由表中的任何明细条目,因此会将流量发送给ISP。而ISP则会继而将流量路由至最终目的。

图1-12 配置静态默认路由

在图1-12中,为了访问网络172.16.1.0/24,路由器B还需要拥有一条指向其S0/0/0接口的静态路由。

在图1-12中,若在路由器A上输入show ip route命令,就会看到如例1-1所示的输出信息。

例1-1 show ip route命令

RouterA# show ip route
<Output omitted>
Gateway of last resort is not set
C     172.16.1.0 is directly connected, FastEthernet0/0
C     10.1.1.0 is directly connected, Serial0/0/0
S*    0.0.0.0/0 [1/0] via 10.1.1.1

3.基本PPP概述

点到点协议(Point-to-Point Protocol,PPP)与之前的高级数据链路(High-Level Data Link Control,HDLC)协议相比有几点优势。本节会对PPP进行介绍,并考察该协议的几大优势。HDLC是连接两台Cisco路由器时的默认串行封装方式。Cisco版本的HDLC是私有的,该协议增加了协议类型(protocol type)字段。因此,Cisco HDLC只能与其他Cisco设备共用;所以,如果需要连接到非Cisco路由器时,可以使用PPP封装。

基本的PPP配置非常简单。在接口上配置PPP后,网络管理员可以应用更多的PPP选项。

要将串行接口的封装方式设置为PPP协议,需要使用接口配置命令encapsulation ppp来实现。

下面是在接口serial 0/0/0上启用PPP封装的示例。

R1# configure terminal
R1(config)# interface serial 0/0/0
R1(config-if)# encapsulation ppp

接口模式命令encapsulation ppp没有其他参数。切记,如果管理员没有在Cisco路由器上配置PPP,串行接口的默认封装是HDLC。其他PPP配置选项包括PPP压缩、PPP链路质量监测、PPP多链路以及PPP认证。

以下的简略的配置列表表示,路由器R1在串行接口上配置了IPv4和IPv6地址。PPP是一种支持包括IPv4和IPv6在内的多种3层协议的2层封装协议。

hostname R1
!
interface Serial 0/0/0
ip address 10.0.1.1 255.255.255.252
ipv6 address 2001:db8:cafe:1::1/64
encapsulation ppp

4.PPP认证概述

RFC 1334定义了两种用于认证的协议:PAP和CHAP。PAP是一种非常基础的两步认证过程。它没有加密,用户名和密码以明文的形式发送。如果认证获得接受,连接就可以建立起来。CHAP比PAP更安全。它包括共享密钥的三步交换过程。

PPP会话的认证过程是可选的。若使用认证,那么对端认证就会在LCP(链路控制协议)建立链路并选择认证协议后进行。若使用认证,那么认证就会发生在网络层协议配置阶段开始之前。

认证要求链路的发起方输入认证信息。这有助于确保该用户必须获得网络管理员的许可才能发起会话。两端的路由器会相互交换认证消息。

要想指明CHAP或PAP协议在接口上请求的顺序,需要使用接口配置命令ppp authentication

Router(config-if)# ppp authentication { chap | chap pap | pap chap | pap } [ if-needed ] [ list-name | default ] [ callin ]

在上述命令前面添加关键字no即可禁用认证。

表1-4解释了接口配置命令ppp authentication的语法。

表1-4 PPP命令语法

ip route命令

描述

chap

在串行接口上启用CHAP

pap

在串行接口上启用PAP

chap pap

在串行接口上同时启用CHAP和PAP,在执行PAP之前先执行CHAP认证

pap chap

在串行接口上同时启用CHAP和PAP,在执行CHAP之前先执行PAP认证

if-needed(可选)

在部署TACACS和XTACACS协议的情况下时使用。如果用户已经提供了认证则不执行CHAP或PAP认证。此选项只能在异步接口上使用

list-name(可选)

在部署AAA/TACACS+的情况下使用。指定TACACS+认证方式列表的名称。若没有指定列表名称,系统则会使用默认值。列表需要使用aaa authenticationppp命令进行创建

default(可选)

在部署AAA/TACACS+的情况下使用。使用aaa authenticationppp命令指定默认值

callin

指明只对入站(收到的)呼叫进行认证

在启用CHAP或PAP认证后,本地路由器在允许数据流通过之前,会首先要求远程设备证明自己的身份。认证的执行过程如下。

两边的路由器都会认证对方,也都会接受对方的认证,所以两端配置PAP认证的命令都是成双成对的。每台路由器发送的PAP用户名和密码必须与另一台路由器username name password password命令中指明的用户名密码相同。

PAP提供的认证方式比较简单,它让远程节点可以通过两次握手的方式建立其身份。认证只会在链路初始建立的过程中执行。一台路由器上的主机名必须与另一台路由器为PPP配置的用户名相同,密码也必须相同。配置用户名和密码参数的命令为ppp pap sent-username name password password

R1的(部分)运行配置如下。

hostname R1
username R2 password sameone
!
interface Serial0/0/0
 ip address 10.0.1.1 255.255.255.252
 ipv6 address 2001:DB8:CAFE:1::1/64
 encapsulation ppp
 ppp authentication pap
 ppp pap sent-username R1 password sameone

R2的(部分)运行配置如下。

hostname R2
username R1 password 0 sameone
!
interface Serial 0/0/0
 ip address 10.0.1.2 255.255.255.252
 ipv6 address 2001:db8:cafe:1::2/64
 encapsulation ppp
 ppp authentication pap
 ppp pap sent-username R2 password sameone

CHAP使用三次握手的方式周期性地验证远程节点的身份。一台路由器上的主机名必须与另一台路由器配置的用户名相同,密码也必须相同。认证不仅会在初始链路建立的过程中执行,在链路建立后还会不断重复。下面是CHAP的配置示例。

R1的(部分)运行配置。

hostname R1
username R2 password sameone
!
interface Serial0/0/0
 ip address 10.0.1.1 255.255.255.252
 ipv6 address 2001:DB8:CAFE:1::1/64
 encapsulation ppp
 ppp authentication chap

R2的(部分)运行配置。

hostname R2
username R1 password 0 sameone
!
interface Serial 0/0/0
 ip address 10.0.1.2 255.255.255.252
 ipv6 address 2001:db8:cafe:1::2/64
 encapsulation ppp
 ppp authentication chap

5.PPPoE

PPP可以用于所有的串行链路,包括那些由老式拨号模拟和ISDN调制解调器所建立的链路。此外,ISP通常也会以PPP协议作为宽带连接上使用的数据链路协议。这样使用有几方面的原因:首先,PPP支持分配IP地址给PPP链路的远端。启用PPP后,ISP可以使用PPP给每个客户分配一个公有IPv4地址。更重要的是,PPP还支持CHAP认证。ISP通常希望使用CHAP来认证客户,因为在认证过程中ISP可以检查记账记录并确定客户的账单是否已经支付,这些都可以在ISP允许客户连接到Internet之前完成。

ISP因为认证、审计和链路管理功能而对PPP倍加推崇。客户也能体会到以太网连接的便捷和稳定。但问题在于,以太网链路本身并不支持PPP。这个问题的一种解决方案是创建“以太网上的PPP(PPP over Ethernet,PPPoE)”。如图1-13所示,PPPoE允许将PPP帧封装在以太网帧中进行发送。

图1-13 以太网连接上的PPP帧(PPPoE)

PPPoE会在以太网连接上创建PPP隧道。这样做可以将PPP帧通过从客户路由器到ISP的以太网线缆发送给ISP。调制解调器会剥离以太网头部,将以太网帧转换为PPP帧,然后在ISP的数字用户线路(Digital Subscriber Line,DSL)网络上传输这些PPP帧。

由于能够在路由器之间发送和接收PPP帧,因此ISP可以继续采用与拨号模拟网络和ISDN相同的认证方式。为了让它正常工作,客户和ISP的路由器都需要进行一些额外的配置,包括PPP配置。例1-2显示了PPPoE客户端的配置。要想理解这些配置,需要考虑下面几点。

1.为了创建一条PPP隧道,我们需要配置一个拨号接口。拨号接口是一个虚接口。PPP的配置需要在拨号接口(而不是物理接口)下完成。拨号接口需要通过interface dialer number命令来创建。客户端可以配置静态IP地址,但由ISP自动分配一个公有IP地址的做法更为常见。

2.PPP CHAP配置定义的往往是单向认证,即由ISP认证客户的身份。客户路由器上配置的主机名和密码必须与ISP路由器上配置的主机名和密码相同。

3.接下来,需要通过pppoe enable命令启用连接到DSL调制解调器的物理以太网接口,这条命令会启用PPPoE并将物理接口和拨号接口链接起来。拨号接口通过使用相同编号的dialer poolpppoe-client命令与以太网接口链接。拨号接口编号不需与拨号池编号相同。

4.为适应PPPoE头部,最大传输单元(Maximum Transmission Unit,MTU)应该从1500减少到1492。以太网帧的默认最大数据字段是1500字节。然而,在PPPoE中,以太网帧负载中包含了一个带头部的PPP帧,而这个头部会将可用的数据MTU减少为1492字节。

例1-2 PPPoE客户端的配置

interface Dialer 2
 encapsulation ppp            ! 1. PPP and IP on the Dialer
 ip address negotiated

_ppp chap hostname Bob        ! 2. Authenticate inbound only
 ppp chap password D1@ne

 ip mtu 1492
 dialer pool 1                   ! 3. Dialer pool must match

interface Ethernet0/1
 no ip address
 pppoe enable
 pppoe-client dial-pool-number 1      ! 3. Dialer pool must match

注释


有关PPP的更多信息,请参见Connecting Networks Companion Guide(Cisco Press,2014)。

6.基本帧中继概述

根据组织机构的需求,帧中继与传统的点到点租用线缆相比有几点优势。

租用线缆可以提供永久独占的性能,被大量用于构建WAN。租用线缆一直是传统的连接方式,但这种方式存在一些缺点,其中一点是客户需要为固定性能的租用线缆付费。说这是缺点是因为WAN流量通常是变化的,因此总会有一些带宽遭到浪费。此外,每个端点都需要在路由器上占用一个独立的物理接口,而这会增加设备的开销。针对租用线缆进行任何更改往往都需要运营商工作人员亲临现场。帧中继是一种高性能的WAN协议,工作在OSI参考模型的物理层和数据链路层。帧中继与租用线缆不同,它只需要一个到帧中继提供商的接入电路就能够与连接到同一个提供商的其他站点通信,如图1-14所示。任意两站点间的性能可以不同。

图1-14 帧中继服务

帧中继是一种交换型的WAN技术,虚电路(Virtual Circuit,VC)由服务提供商(Service Provider,SP)通过网络创建。帧中继可以在一个物理接口上复用多条逻辑VC。VC通常是数据链路连接标识符(Data-Link Connection Identifier,DLCI)标识的PVC。DLCI在本地路由器和路由器连接的帧中继交换机之间本地有效。因此,PVC每端的DLCI可能不同。SP的网络负责通过PVC发送数据。为了建立IP层的连通性,必须动态或静态地定义IP地址与DLCI间的映射关系。

在默认情况下,帧中继网络是NBMA型网络。NBMA环境中所有路由器都在相同的子网中,广播(和组播)包不能按照其在如以太网的广播环境中的方式发送。

为了模拟IP路由协议所要求的LAN广播性能(例如,给一个IP子网中所有可达的邻居设备发送EIGRP Hello或更新数据包),Cisco IOS实现了伪广播特性,路由器会为每一个通过WAN介质可达的邻居创建一个广播或组播包的副本,并通过该邻居对应的PVC进行发送。

当路由器通过同一个WAN接口可达大量邻居设备时,伪广播就需要进行严格的控制,因为这会增加CPU资源和WAN带宽的占用。伪广播可以在配置帧中继时,通过静态映射中的关键字broadcast进行控制。然而,在由IPv4的帧中继反向地址解析协议(Inverse Address Resolution Protocol,INARP)或IPv6的帧中继反向邻居发现(Inverse Neighbor Discovery,IND)所创建的动态映射中,由于邻居都是可达的,因此伪广播也就无法控制。所以动态映射总是会允许伪广播。

只有在路由协议的抑制计时器过期或者接口出现故障后,帧中继邻居丢失的情况才能检测出来。只要还有一条PVC是活跃的,接口就会被视为是启用的。

帧中继允许使用全网状、部分网状和中枢辐射型(也称为星型)拓扑来连接远程站点,如图1-15所示。

图1-15 帧中继拓扑

例如,使用反向ARP动态映射在物理接口上部署IPv4的EIGRP非常简单,因为这本身就是默认设置。图1-16所示为一个示例网络。例1-3是图中路由器R1上的配置。物理接口Serial 0/0上封装了帧中继协议且指定了接口IP地址。反向ARP默认启用,而且会自动把PVC另一端设备的IP地址与本地DLCI进行映射。EIGRP使用的自治系统编号为110,管理员需要在EIGRP路由进程下使用network命令,将相关的接口和网络包含在内。

图1-16 物理帧中继接口上的EIGRP

注释


EIGRP会在第2章中进行更加深入的讨论。

例1-3 图1-16中路由器R1的配置(使用动态映射的配置方法)

interface Serial0/0
 encapsulation frame-relay
 ip address 192.168.1.101 255.255.255.0
!
router eigrp 110
 network 172.16.1.0 0.0.0.255
 network 192.168.1.0

水平分割在帧中继物理接口上默认是禁用的。因此,来自路由器R2的路由会被发送给路由器R3,反之亦然。注意反向ARP并不会为路由器R2和R3之间的通信提供动态映射,因为它们之间没有通过PVC相连,所以必须手工配置此映射。

注释


有关帧中继的更多信息,请参见Connecting Networks Companion Guide(Cisco Press,2014)。

7.VPN连通性概述

当代的业务需求主宰了连接远程和分支机构的新趋势。传统的解决方案,如租用线缆或帧中继,无论是在性能上、在部署的服务数量上、在WAN带宽还是在开销上都有不足。下一代VPN需要能够在中心和分支站点之间实现快捷而又简便的全网状互联方案,同时兼顾扩展性和安全性方面的优势。

8.基于MPLS的VPN

服务提供商使用MPLS技术构建穿越服务提供商核心网络的隧道。穿越MPLS骨干的流量是基于标签进行转发的,而这些标签在转发流量之前已经在核心路由器间相互分发。对于3层MPLS VPN,服务提供商会参与客户路由。服务提供商在PE和CE路由器之间建立路由对等体关系。在PE路由器上接收到的客户路由随后会被重分布进MP-BGP中,并通过MPLS骨干传输给远程PE路由器。在远程PE上,这些客户路由会从MP-BGP被重分布回远程PE-CE路由协议当中。本地站点和远程站点PE-CE路由器之间所使用的路由协议很可能截然不同。

2层MPLS VPN CE路由器可以使用任意2层协议与PE路由器在2层相连,其中以太网是最常用的协议。2层流量在PE路由器之间发送,并通过预先建立好的伪线路进行传输。伪线路模拟PE路由器之间的线缆,负责承载2层数据帧穿越IP-MPLS骨干网络。有两种基本的2层MPLS VPN服务基础设施。虚拟专用线服务(Virtual Private Wire Service,VPWS)是一种点到点技术,可以在PE上使用任何2层传输协议。第二类2层MPLS VPN是虚拟专用局域网服务(Virtual Private LAN Service,VPLS),其在MPLS上模拟以太网多路访问LAN网段,并提供多点到多点的服务。

9.VPN隧道

VPN隧道技术林林总总,通用路由封装(Generic Routing Encapsulation,GRE)、IPSec和DMVPN则是其中最为常用的技术。

10.混合VPN

基于MPLS的VPN和隧道VPN不是互斥的;它们可能在相同的IP基础设施中共存。在有些情况下,客户希望将流量封装到隧道当中,穿越服务提供商的网络,但由于法律法规,这些流量必须进行加密。客户可以将这两种VPN的最佳特性组合起来,创建出一种新的、混合的VPN。这类服务包括GRE上的3层MPLS VPN或DMVPN上的3层MPLS VPN。上述两类VPN的共同点是在公有IP基础设施上创建客户自己的私有IP-MPLS网络。第一种方案不包括流量加密。第二种更安全,因为DMVPN可以使用IPSec。所以它也提供了端到端通路测试的可能性,对流经网络的流量进行优化。混合型VPN的主要缺点在于,多层封装会降低MTU的效率,同时增加网络的延迟和复杂程度。

起初,分支机构都是通过租用线缆进行连接的。之后,服务提供商开始使用ATM或帧中继VC来提供基于点到点数据链路层连通性的2层VPN。客户构建自己的3层网络来承载IP流量。因此,2层和3层流量存在独立的网络。为了优化操作开销并提供额外服务,服务提供商希望有一个基于IP的网络能够提供如图1-17所示的2层和3层VPN方案。

图1-17 MPLS VPN方案

MPLS是一种用来在包交换的网络上承载数据的传输机制。它的设计目的是提供极大的灵活性,并与3层或2层技术实现无缝的操作。MPLS VPN是MPLS的服务扩展,旨在为服务提供商和大型企业提供构建灵活、可扩展且安全的VPN的服务。MPLS VPN有两种类型:2层MPLS VPN和3层MPLS VPN。

图1-17展示了2层MPLS VPN和3层MPLS VPN骨干的基本区别。客户路由器(例中为R1和R2)通过MPLS VPN骨干连接,这一点对于界定两者的区别很重要。

2层MPLS VPN骨干方案通过骨干网提供2层服务,R1和R2会使用相同的IP子网直接连接在一起。如果在2层MPLS VPN上部署路由协议,R1和R2路由器之间将建立邻接关系。图中展示了通过骨干网的连通性,骨干网在此可以表示为一个大交换机。

3层MPLS VPN骨干方案通过骨干网提供3层服务,R1和R2连接到ISP的边界路由器。每一端都使用独立的IP子网。若在此类VPN上部署路由协议,服务提供商需要参与其中。邻居邻接关系需要在客户的R1和最近的PE路由器以及R2和其最近的PE路由器之间建立。图中展示了通过骨干网的连通性,骨干网可被表示为一个大路由器。

从客户的角度看,选择3层还是2层MPLS VPN将很大程度上取决于客户的需求。

3层MPLS VPN适用于希望将其路由操作外包给服务提供商的客户。服务提供商为客户站点维护并管理路由。

2层MPLS VPN对于运行自己的3层基础设施并要求服务提供商提供2层连通性的客户来说比较适合。在使用2层MPLS VPN的情况下,客户可以管理自己的路由信息。

GRE是一种可以将众多协议的数据包封装到IP隧道中的隧道协议,这种协议可以通过IP网络在Cisco路由器之间创建虚拟的点到点链路,如图1-18所示。

图1-18 GRE隧道

一般来说,隧道是一个逻辑接口,它可以提供一种将乘客包封装在传输协议中的方式。GRE隧道是Cisco开发的点到点隧道,可以将多种乘客协议通过IP网络进行传输。它由三种主要的元素构成。

GRE有以下特性。

GRE隧道提供了通过Internet或WAN连接分支结构的可能性。GRE隧道的主要优势在于其支持IP组播,因此适合用来充当路由协议的隧道封装协议。然而,在以GRE隧道作为连接方式时,有几点问题应该考虑。通过隧道发送的流量不会被加密,因此容易受到中间人攻击。要想解决这个问题,应该将GRE和IPSec组合起来使用。GRE负责封装明文数据包,IPSec则负责加密封装包,形成GRE-over-IPSec隧道。

对于一般的星型拓扑,在中心和远程分支之间通常可以部署静态隧道(通常使用GRE和IPSec),如图1-19所示。当有新的分支需要增加到网路中时,就需要在中心路由器上进行配置。此外,分支之间传输的流量需要经过中心站点,需要从一个隧道发出然后进入另一个隧道。静态隧道对于小型网络来说是合适的方案,但在分支数量不断增加时,这种方案就变得不可接受了。

图1-19 中心辐射型拓扑

Cisco DMVPN特性可以让大型和小型IPSec VPN更好地实现扩展。Cisco DMVPN特性组合了mGRE隧道、IPSec加密以及下一跳解析协议(Next HopResolution Protocol,NHRP),为众多VPN用户提供了简单的规划方案。如果使用了合理的对端认证方式(如启用PKI的对端认证),DMVPN设计方案本身也可以完美支持动态编址的分支路由器。

DMVPN的主要优势如下。

DMVPN方案的一个重要特征是扩展性,这种扩展性是由多点GRE(mGRE)提供的。mGRE技术使得一个GRE接口可以支持多个GRE隧道,简化了配置复杂性。GRE隧道也支持IP组播和非IP协议。IP组播又进一步让设计者可以使用路由协议来分发路由信息并检测VPN的变化。所有的DMVPN成员都使用GRE或mGRE接口在设备之间构建隧道。

mGRE配置的主要特点如下。

图1-20显示了部署mGRE的两种方式。

图1-20 GRE选项

DMVPN支持在分支路由器上使用动态物理IP地址。当分支设备连接到网络时,分支的动态相互发现过程就会初始化,该过程是通过NHRP(Next Hop Resolution Protocol)协议实现的。

NHRP是一种客户端-服务器模型的协议,如图1-21所示,其中中心设备充当服务器,分支设备充当客户端。路由器使用NHRP来确定IP隧道网络中下一跳的IP地址。分支路由器在初始连接到DMVPN网络时,会向中心路由器(NHRP服务器)注册自己的内部(隧道)和外部(物理接口)地址。这个注册过程会让中心路由器上的mGRE接口在无须提前知道分支隧道目的地址的情况下,即可向注册的分支路由器构建一条动态的GRE隧道。因此,NHRP会在中心路由器上为每个分支创建一个隧道IP地址到物理接口IP地址之间的映射。

图1-21 NHRP客户端-服务器模型协议

从路由协议的角度看,NHRP域操作与多点帧中继网络这样的NBMA网络类似。

在mGRE网络中使用NHRP可以将内部隧道IP地址映射到外部传输IP地址。在采用星型拓扑部署DMVPN时,管理员无须在中心路由器上配置有关分支的GRE或IPSec信息。在(通过NHRP命令)配置GRE隧道所连接的分支路由器时,需要将中心路由器作为下一跳服务器。当分支路由器启动时,它会自动初始化与中心路由器之间的IPSec隧道。接下来,它会使用NHRP向中心路由器通告自己当前的物理接口IP地址。这样执行通告的好处如下。

图1-22 NHRP示例

安全性也是DMVPN方案的重要组成部分。安全服务是通过使用IPSec框架来实现的。IPSec是一个开放标准的框架,它定义了如何实现安全的通信。这个框架依赖现有的算法,来实现加密、认证和密钥交换的功能。

IPSec提供4种重要的安全服务。

IPSec的认证和加密功能在DMVPN方案中扮演着重要的角色。认证功能确保只有期望的对端才能与其他对端建立通信。进行认证的最常用方式是PSK或证书。鉴于PSK必须在所有位置之间进行全员共享,因此推荐使用证书。

一般来说,当DMVPN通过Internet连接远程站点时,管理员都会启用加密。通过租用的WAN链路将分支站点连接到中心站点也使用加密,这种做法正在成为一种常态,因为服务提供商提供的设备也是不可靠的。

路由协议是TCP/IP协议栈的一部分,主要工作在第3层。网络通信需要借助大量协议来处理广泛的任务,以实现设备之间的通信。

IP协议的设计初衷是应用于广泛的传输介质。IPv4数据包的最大长度为65535字节。带有逐跳扩展头部和巨型帧负载选项的IPv6数据包最长可以支持4294967295字节。但多数传输链路都会强制使用一个比较小的最大数据包长度,这个长度称为最大传输单元(Maximum Transmission Unit,MTU)。

当路由器收到比出接口MTU更大的IPv4数据包时,它就必须对数据包进行分片,除非IPv4头部中设置了DF(Don’t Fragment,不分段)位。对数据包进行重组则由目的IPv4地址所在的目的设备负责。分片会造成下列问题:

为了避免分片,TCP最大分段长度(Maximum Segment Size,MSS)定义了接收方设备在一个TCP段中可以接受的最大数据量。TCP段可以通过一个IPv4数据包进行发送,也可以分片后使用多个IPv4数据包发送。发送方和接收方之间不会对MSS进行协商。发送设备需要对TCP分段的尺寸进行限制,使其不大于接收方设备所报告的MSS长度。

为了对避免IPv4数据包进行分片,所选TCP MSS为出接口的最小缓冲区大小和MTU减40字节。40字节包含了20字节的IPv4头部和20字节的TCP头部。例如,默认的以太网MTU是1500字节。那么,通过以太网接口发出的IPv4数据包,其TCP段的TCP MSS就应该是1460,即用以太网 MTU的1500字节减去IPv4头部的20字节,再减去TCP头部的20字节。

TCP MSS有助于避免在TCP连接两端对数据包进行分片,但不能避免因路径中的链路MTU更小而造成的分段。路径MTU发现(Path MTUDiscovery,PMTUD)可以用来确定从数据包的源到目的之间路径上的最小的MTU值。仅TCP协议支持PMTUD。

执行PMTUD的主机会使用由出接口确定的完整MSS,并设置数据包的TCP DF位,使其不会被其他设备执行分片。如果路径上的某台路由器因为其出接口的MTU更低而要对数据包进行分片,那么这台设备就会因为DF置位而丢弃该数据包,并向数据包的始发设备发送一条ICMP目的不可达消息。ICMP目的不可达消息会包含一段代码,指出其“需要分段但DF置位”及造成丢包的出接口MTU。源接收到ICMP消息,将MSS减小到MTU以下,然后重传消息。

如果路由器发送了ICMP目的不可达消息,但这条消息却被其他路由器、防火墙或源设备本身屏蔽掉,PMUTD就会出现问题。PMTUD依赖ICMP消息,所以在设备上过滤ICMP数据包时,应该针对“不可达”或“超时”的数据包制定例外条件。

IPv6路由器不会对数据包进行分片,除非这台设备是数据包的源。如果一台IPv6路由器收到了比其出接口MTU大的数据包,它会丢弃这个数据包并向源发送一个ICMPv6数据包过大消息,其中会包含这个较小的MTU。

IPv6的PMTUD工作原理与IPv4的PMTUD相似。RFC 1918,Path MTU Discovery for IP version 6,建议IPv6设备应执行PMTUD。

TCP在高带宽、长往返延迟的路径上可能会经历瓶颈。这些网络被称为长肥管道(long fat pipe)或长肥网络(long fat network),简称LFN。关键参数是带宽延迟积(Bandwidth Delay Product,BDP),也就是带宽(bps)与往返延迟(单位为秒的RTT)的乘积。BDP是用来“填满管道”所需的比特数(换句话说,也就是在流水线满载时,TCP必须处理的未确认数据总量)。BDP会被用来优化TCP窗口大小,以达到充分利用链路的目的,使得这条链路上随时都可以传输最大的数据量。TCP窗口大小应使用BDP。TCP窗口大小表示在收到确认之前可以发送的数据总量,这个值通常是MSS的几倍。

TCP结合了可靠性、流控制和拥塞避免机制。而UDP则是一款轻量型协议,其目的在于更快更简单地传输数据,因此不包含上述这些特性。

在拥塞期间,当网络中同时有TCP和UDP流量在传时,TCP会尝试减少对带宽的占用,这称为慢启动。但UDP并没有任何流控机制,因此会继续发送流量,而这可能会用尽TCP舍让出的可用带宽。这种现象称为TCP饥饿/UDP独占(TCP starvation/UDP dominance)。

虽然我们未必能够轻易分离出基于TCP和基于UDP的流量,但是当我们将使用这两种传输层协议的应用混合起来使用时,了解上述操作还是很重要的。

延迟是一个消息从一点到另一点所经历的总时间。网络延迟是数据包从源端经过网络到达最终的目的端的总时间。有几种因素可能会导致延迟,包括传播延迟、序列号、数据协议、路由、交换、队列和缓存。

TCP的流控和可靠性特性会对端到端的延迟造成影响。TCP会要求建立虚拟连接,并针对消息确认、窗口大小、拥塞控制和其他TCP机制建立双向通信,而这些都会对延迟构成影响。

UDP是一种不包含可靠性校验或流控机制的协议。设备只需要发送含有UDP段的数据包,并假设这个数据包会到达目的地。UDP通常用于流媒体这种要求延迟,同时也可以容忍偶发丢包的应用。UDP的延迟非常低,比多数TCP链接延迟要低。

ICMP重定向消息的作用是让路由器能够通知数据包的发送方,特定目的存在更优路由。

例如,在图1-23中,两台路由器R1和R2都被连接到与主机PCA相同的以太网段。PCA的IPv4的默认网关是路由器R1的IPv4地址。PCA会将发往PCX的数据包发给其默认网关R1。R1检查其路由表并确定下一跳是R2,与PCA在相同的以太网段上。因此R1会使用与从PCA接收这个数据包相同的接口将其转发出去。R1还会发送一条ICMP重定向消息,告知PCA到达PCX通过R2的路由更优。于是,PCA就可以使用R2作为下一跳路由器,以便更加直接地转发后续数据包了。

图1-23 ICMP重定向

ICMPv6(IP第6版的ICMP)重定向消息与ICMPv4重定向消息的功能相同,但前者还包含了一个额外的特性。在图1-23中,PCA和PCB位于不同的IPv6网络中。R1是PCA的IPv6默认网关。PCB与PCA位于相同以太网段,但处于不同的IPv6网络之中。在发送IPv6包给PCB时,PCA会将数据包发送给其默认网关R1。而R1也会采用与IPv4相似的做法,将这个IPv6数据包转发给PCB,但与IPv4的ICMP不同之处在于,它将会向R1发送一条ICMPv6重定向消息,通知其PCA有更优路由。于是,PCA可以直接将后续的IPv6数据包发送给PCB了,虽然PCB位于不同的IPv6网络中。

RIP是一种在小型网络中使用的IGP协议。它是一种以跳数作为路由度量的距离矢量路由协议。RIP有三个版本,即RIPv1、RIPv2和RIPng。RIPv1和RIPv2在IPv4网络中执行路由。而RIPng则用于在IPv6网络中进行路由。

在完成本节内容的学习后,读者应该能够:

RIP是最老的路由协议之一,它是一种标准化的IGP路由协议,能够工作在混合供应商的路由器环境中。它是配置最简单的路由协议之一,因此适合应用于小型网络环境中。

RIP是一种使用跳数(即路由器数量)作为度量的距离矢量协议。如果一台设备有两条到达目的网络的路径,那么跳数更少的路径将会被用来转发流量。如果一个网络距离16跳或更远,路由器则会认为该网络不可达。

RIP采用了水平分割这种路由环路避免技术。水平分割的作用是防止从一个接口收到的路由信息再从相同的接口通告出去。带有毒性反转的水平分割是一种类似的技术,但可以发送度量为16的更新,而RIP认为度量值为16的网络是不可达的。这种工作方式的理念是,最好明确告知邻居设备,一条路由是不可达的。当一台路由器上不再拥有去往某个特定网络的路由时,它就会使用路由毒化(将度量设置为16)来告知自己的邻居。

RIP也可以在等价链路上执行流量负载分担。默认值为4条等价路径之间可以执行负载分担。如果路径最大数量被设置为1,则设备会禁用负载分担功能。

在图1-24中,PC1正在向PC2发送流量。数据包会选择哪条路径呢?RIP会将选择直接的路径——即通过100Mbit/s链路的路径——因为通过这条路径到达目的只需跨越两跳,而通过三条1Gbit/s链路的跳数是4。所以此时,RIP会选择较差的路径。如OSPF或EIGRP这样更加先进的协议则不会选择通过100Mbit/s链路的那条较差路径。流量会通过1Gbit/s链路进行转发。

图1-24 RIP使用跳数作为度量

RIP有三个版本:RIPv1、RIPv2和RIPng。表1-5对RIPv2和RIPng进行了比较。

表1-5 RIPv2和RIPng特性比较

特性

RIPv2

RIPng

通告路由

IPv4

IPv6

传输协议

UDP(端口520)

UDP(端口521)

使用的组播地址

224.0.0.9

FF02::9

支持VLSM

度量

跳数(最大15)

跳数(最大15)

管理距离

120

120

路由更新

每30秒及拓扑变化时进行

每30秒及拓扑变化时进行

支持认证

RIPv1是一种有类路由协议,它已经被无类路由协议RIPv2所取代了。无类路由协议被视为第二代协议,因为当初设计它们的目的就是解决早期有类路由协议的一些限制。有类网络环境中的一个严重的限制是,路由更新过程中不交换子网掩码,这就要求相同主网络中的所有子网络都要使用相同的子网掩码。RIPv1被视为是一款传统的、已经过时的协议。

RIPng的工作方式与RIPv2相似。两种协议都是用UDP作为传输层协议,都使用组播地址来交换路由更新(RIPv1使用广播)。因为两协议都是无类的,所以它们也都支持VLSM。两个协议都以跳数作为度量,且管理距离(路由源的可信度)都为120。对于这两种协议,每30秒以及当网络发生变化时,路由更新就会在网络中传播。这两个协议也都支持认证。

RIPv2和RIPng有两个主要的区别:

本节为不太熟悉RIP配置的读者展示了一个简单的RIPv2配置示例。配置RIPv2的方法与配置EIGRP相似。

在图1-25中,所有路由器都配置了基本的管理特性,且参考拓扑中标记出的所有接口都已经进行了配置且已经启用。网络中没有配置静态路由,也没用启用路由协议;因此当前远程网络是无法访问的。在本网络中,需要以RIPv2作为动态路由协议使用。

图1-25 RIPv2拓扑

要启用RIP协议,需要使用router rip命令进入路由器配置模式。要对某个网络执行RIP路由器,需要使用network network-address路由器配置模式命令,并输入每个直连网络的有类网络地址。version 2命令的作用是启用RIPv2。

例1-4显示了路由器R1上的RIPv2配置。

例1-4 R1上的RIPv2配置

R1(config)# router rip
R1(config-router)# network 192.168.1.0
R1(config-router)# network 192.168.2.0
R1(config-router)# version 2
R1(config-router)#

在默认情况下,RIPv2会自动在主类网络边界汇总网络,将路由汇总为有类网络地址。如果有断开或不连续的子网,则有必要禁用自动路由汇总,通告子网来确保所有网络的可达性。当路由汇总被禁用时,协议会在有类网络边界发送子网路由信息。

如需修改RIPv2的默认自动汇总行为,可以使用路由器配置模式命令no auto-summary

Router(config-router)# no auto-summary

ip summary-address rip ip-address network-mask接口命令的作用是汇总特定接口下的地址或子网,这称为手工汇总。管理员只能给每个有类子网配置一个汇总地址。下面的示例指定了IP地址和网络掩码,标识了要被汇总的路由:

Router(config-if)# ip summary-address rip 10.2.0.0 255.255.0.0

管理员可以使用show ip protocols命令来验证目前使用的是自动汇总还是手工汇总。

注释


RIP路由汇总不支持超网通告(通告小于有类主网的网络前缀),除非这个网络是通过路由表中学习到的超网。

下面,我们会首先介绍图1-26拓扑中,R2上的基本RIPng配置。R1上已经预配好了RIPng协议。此外,R1上也已配置了一条静态路由,用来将所有未知的流量路由到Internet中。在本节稍后,我们会通过配置R1,让它与R2通过RIPng共享这条默认路由。

图1-26 RIPng拓扑

1.基本的RIPng配置

接下来,需要使用ipv6 unicast-routing命令来启用IPv6路由,如例1-5所示。IPv4路由在Cisco路由器上默认就会启用,但IPv6路由则并非如此。

例1-5 ipv6 unicast-routing命令

R2> enable
R2# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)# ipv6 unicast-routing

在R2上,使用ipv6 router rip name命令启用RIPng,将进程名称设置为CCNP_RIP。

邻居路由器之间的路由进程名称无须相同。

R2(config)# ipv6 router rip CCNP_RIP

尝试配置RIPng路由进程时,如果未启用IPv6路由,ipv6 router rip name命令就无法使用。

在R2上,使用show ipv6 interface brief验证Ethernet0/1(连接R1)和Loopback0(模拟R2的LAN)配置了IPv6地址。

注意在例1-6中,两个接口上都各配置了两个IPv6地址。以“2001”开头的地址是全局IPv6地址,这个IPv6地址是使用ipv6 address ipv6_address/prefix命令配置的。“FE80”是链路本地地址,这个地址是在配置全局IPv6地址时自动获取的,如果刚刚在接口配置模式下通过命令ipv6 enable启用IPv6,接口也会自动获取链路本地地址。链路本地地址会在交换路由信息时使用。

例1-6 show ipv6 interface brief命令

R2# show ipv6 interface brief
Ethernet0/0             [administratively down/down]
    unassigned
Ethernet0/1 [up/up]
 FE80::A8BB:CCFF:FE00:2010
 2001:DB8:A01:1400::2
Ethernet0/2             [administratively down/down]
    unassigned

<Output omitted>

Ethernet3/3             [administratively down/down]
    unassigned
Loopback0 [up/up]
 FE80::A8BB:CCFF:FE00:2000
    2001:DB8:A01:1E00::1

如例1-7所示,管理员在R2上使用ipv6 rip name enable接口命令在接口Ethernet0/1和Loopback0上启用了RIPng。如果该接口没有启用IPv6,而管理员却尝试为其启用RIPng,那么ipv6 rip name enable命令则会被拒绝。

例1-7 在接口上启用RIPng

R2(config)# interface ethernet 0/1
R2(config-if)# ipv6 rip CCNP_RIP enable
R2(config-if)# interface loopback 0
R2(config-if)# ipv6 rip CCNP_RIP enable

如果忘记使用ipv6 router rip name命令创建路由进程,而又在接口上启用了RIPng,设备会接受启用RIPng的命令。此时,Cisco IOS会自动创建RIPng进程。

假设用户在配置RIPng的第2步中,创建了名为CCNP_RIP的RIPng路由进程,但在第4步中却犯了一个错误:在接口上使用了CCNP_PIR进程名启用RIPng。这条命令并不会被拒绝。Cisco IOS会创建一个新的名为CCNP_PIR的RIPng进程。此时设备上就会出现两个路由进程,一个是用户直接创建的,另一个是Cisco IOS替用户创建的。因为RIPng进程名只在本地有意义,且两接口都会被包含在相同的路由进程中,所以RIPng的配置可以正常工作,即使管理员定义了两个名称不同的进程。

如例1-8所示,管理员在R2上输入了show ipv6 protocols命令。show ipv6 protocols命令可以显示出所有配置的IPv6协议信息。此时,因为设备上只配置了RIPng,因此这条命令的输出信息列出了启用RIPng的接口。

例1-8 show ipv6 protocols命令

R2# show ipv6 protocols
IPv6 Routing Protocol is "connected"
IPv6 Routing Protocol is "ND"
IPv6 Routing Protocol is "rip CCNP_RIP"
 Interfaces:
 Loopback0
 Ethernet0/1
  Redistribution:
    None

如例1-9所示,管理员在R2上使用了show ipv6 route命来验证IPv6路由表。注意,R2从R1那里学习了两个LAN网络的信息。

例1-9 R2的IPv6路由表

R2# show ipv6 route
IPv6 Routing Table - default - 7 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
       B - BGP, R - RIP, I1 - ISIS L1, I2 - ISIS L2
       IA - ISIS interarea, IS - ISIS summary, D - EIGRP, EX - EIGRP external
       ND - ND Default, NDp - ND Prefix, DCE - Destination, NDr - Redirect
       O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
R 2001:DB8:A01:100::/64 [120/2]
 via FE80::A8BB:CCFF:FE00:130, Ethernet0/1
R 2001:DB8:A01:A00::/64 [120/2]
 via FE80::A8BB:CCFF:FE00:130, Ethernet0/1
C    2001:DB8:A01:1400::/64 [0/0]
      via Ethernet0/1, directly connected
L    2001:DB8:A01:1400::2/128 [0/0]
      via Ethernet0/1, receive
C    2001:DB8:A01:1E00::/64 [0/0]
      via Loopback0, directly connected
L    2001:DB8:A01:1E00::1/128 [0/0]
      via Loopback0, receive
L    FF00::/8 [0/0]
      via Null0, receive

路由表中RIPng路由的度量显示为2。在RIPng中,发送方路由器认为自己已经有一跳远;因此,R1使用度量1通告其LAN。当R2收到更新时,会给度量值增加跳数1。因此,R2就会认为R1的LAN在两跳之外。

注释


RIPv2和RIPng在计算远程网络的跳数上存在显著的区别。在RIPng中,路由器在接收到RIPng更新时就会给度量值加1,然后在IPv6路由表中用该度量值标识对应的网络。在RIPv1和RIPv2中,路由器接收到RIP更新,在其IPv4路由表中使用该度量标识网络,然后在发送更新给其他路由器之前将度量值加1。这种操作方式的效果是,RIPng的跳数度量比RIPv1和RIPv2大1。

IPv6中没有有类网络的概念,所以在RIPng中没有任何自动路由汇总机制。要想使用手工汇总的方式,让RIPng在接口上通告汇总的IPv6地址,需要在接口配置模式下使用ipv6 rip summary-address命令来实现。

在例1-10中,R1上的两个环回接口被RIPng进程CCNP_RIP从Ethernet 0/3接口汇总通告了出去。

例1-10 ipv6 rip summary-address命令

R1(config)# interface Ethernet 0/3
R1(config-if)# ipv6 rip CCNP_RIP summary address 2001:db8:A01::/52

汇总IPv6前缀的过程与汇总IPv4网络的过程相同。2001:DB8:A01:100::/64和2001:DB8:A01:A00::/64前缀的前52位相同,因此可以表示为2001:DB8:A01::/52。

2.传播默认路由

在图1-27中,管理员给R1配置了一条静态默认路由,用来将所有未知流量发往Internet。

图1-27 使用默认路由的RIPng拓扑

如果希望R1与R2共享默认路由,需要使用下面的命令来实现:

R1(config-if)# ipv6 rip name default-information originate | only

管理员需要在接口配置模式中输入这条命令。在本例中,管理员需要进入Ethernet 0/3的接口配置模式,因为R1就是通过这个接口连接到R2的。

通过RIPng共享默认路由信息有两种方式。

注意default-information originate命令会向邻居路由器通告默认路由,即使路由器的路由表中并没有本地默认路由。

R1上有一条预配的IPv6路由。这条默认路由会将流量路由给Internet。管理员可以在R1上,使用ipv6 rip name default-information originate命令将默认路由共享给R2。RIPng进程的名称是CCNP_RIP。管理员应当在Ethernet 0/3接口的配置模式中输入这条命令。

在例1-11中,R1会将其默认路由以及所有其他的RIPng路由通过RIPng路由进程共享给R2。

例1-11 在R1上传播默认路由

R1(config)# interface Ethernet 0/3
R1(config-if)# ipv6 rip CCNP_RIP default-information originate

在R2上,管理员可以使用show ipv6 route rip命令来验证R2是否已经共享了自己的默认IPv6路由。

注意在例1-12中,R2在IPv6路由表里已经有了默认路由。这条路由是通过RIPng学习过来的。此外,读者也可以看到,除了默认路由之外,R2也学习到了所有其他的RIPng路由。

例1-12 R2的IPv6路由表

R2# show ipv6 route rip
IPv6 Routing Table - default - 9 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
       B - BGP, R - RIP, I1 - ISIS L1, I2 - ISIS L2
       IA - ISIS interarea, IS - ISIS summary, D - EIGRP, EX - EIGRP external
       ND - ND Default, NDp - ND Prefix, DCE - Destination, NDr - Redirect
       O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
R ::/0 [120/2]
    via FE80::A8BB:CCFF:FE00:130, Ethernet0/1
R   2001:DB8:A01:100::/64 [120/2]
    via FE80::A8BB:CCFF:FE00:130, Ethernet0/1
R   2001:DB8:A01:A00::/64 [120/2]
    via FE80::A8BB:CCFF:FE00:130, Ethernet0/1

如例1-13所示,管理员在R1的Ethernet 0/3接口上输入了ipv6 rip name default-information only命令。使用这条命令之后,R1就只会通过RIPng路由进程与R2共享默认路由。

例1-13 在R1上使用only仅传播默认路由

R1(config)# interface Ethernet 0/3
R1(config-if)# ipv6 rip CCNP_RIP default-information only

ipv6 rip name default-information only命令会覆盖ipv6 rip name default-information originate命令。这两条命令一次只有一条能够生效。

在R2上,管理员可以使用show ipv6route rip命令来验证RIPng仅从R1学习了默认路由。

请注意在例1-14中,路由器行为的变化。R1现在仅通过RIPng向R2通告默认路由。路由更新及R2的路由表中都不包含其他的RIPng路由。

例1-14 在R2上验证默认路由

R2# show ipv6 route rip
IPv6 Routing Table - default - 6 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
       B - BGP, R - RIP, I1 - ISIS L1, I2 - ISIS L2
       IA - ISIS interarea, IS - ISIS summary, D - EIGRP, EX - EIGRP external
       ND - ND Default, NDp - ND Prefix, DCE - Destination, NDr - Redirect
       O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
R   ::/0 [120/2]
     via FE80::A8BB:CCFF:FE00:130, Ethernet0/1

行为的变化不是瞬间发生的。将默认路由共享方式从originate改为only后,R2不会继续共享非默认路由的信息。然而,R1仍会在自己的路由表中保留非默认路由,直到这些路由在180秒后过期并被路由表移除。管理员可以在R2上使用clear ipv6 rip命令清理RIPng进程,来加速上述过程。此时路由器会清除RIPng路由并重新学习。注意,在生产网络上不要执行这样的操作。

show ipv6 protocols命令显示RIPng已经启用,同时显示了启用RIPng的接口。show ipv6 route rip命令显示了通过RIPng学到的路由。不过,还有一条命令在了解RIPng行为时非常有用:show ipv6 rip

例1-15中的show ipv6 rip命令显示了路由器上所有有关RIPng路由进程的信息。输出信息的最后一部分还显示了启用RIPng的接口——与show ipv6 protocols命令相似。

例1-15 在R2上验证RIPng进程

R2# show ipv6 rip
RIP process " CCNP_RIP", port 521, multicast-group FF02::9, pid 138
 Administrative distance is 120. Maximum paths is 16 
 Updates every 30 seconds, expire after 180 
     Holddown lasts 0 seconds, garbage collect after 120
     Split horizon is on; poison reverse is off
     Default routes are not generated
     Periodic updates 308, trigger updates 1
     Full Advertisement 0, Delayed Events 0
 Interfaces: 
 Loopback0 
 Ethernet0/1 
  Redistribution:
    None
R2#

然而,与命令show ipv6 protocols相比,show ipv6 rip还会显示一些其他的信息,比如使用的接口号、Hello计时器以及Dead计时器。示例中显示的所有设置都是系统默认值。

例1-16中的show ipv6 rip database命令会输出下列信息。

例1-16 在R2上验证RIPng数据库

R2# show ipv6 rip database
RIP process "CCNP_RIP", local RIB
 2001:DB8:A01:100::/64, metric 2, installed
     Ethernet0/1/FE80::A8BB:CCFF:FE00:7430, expires in 155 secs
 2001:DB8:A01:A00::/64, metric 2, installed
     Ethernet0/1/FE80::A8BB:CCFF:FE00:7430, expires in 155 secs
 2001:DB8:A01:1400::/64, metric 2
     Ethernet0/1/FE80::A8BB:CCFF:FE00:7430, expires in 155 secs
R2#

在例1-17 中,命令show ipv6 rip next-hops的输出信息中列出了RIPng进程以及每个进程下的所有下一跳地址。每个下一跳地址是通过哪个接口学到的也会列在输出信息之中。下一跳可能是这台路由器学习到这条路由的那个IPv6 RIP邻居的地址,或者是IPv6 RIP通告消息中明确列出的下一跳设备。IPv6 RIP邻居可以选择使用明确列出的下一跳通告其所有的路由。此时,邻居的地址就不会出现在下一跳的显示中。最后,括号中显示了IPv6 RIP路由表中使用这个下一跳的路由数量。

例1-17 在R2上验证RIPng下一跳地址

R2# show ipv6 rip next-hops
 RIP process "CCNP_RIP", Next Hops
  FE80::A8BB:CCFF:FE00:7430/Ethernet0/1 [3 paths]
R2#

在本章中,读者了解了路由协议的分类,学习了多种网络技术,连接远程站点到中心站点的方法以及RIPng。本章的内容涵盖了下列主题。

回答以下问题,并在附件A中查看答案。

1.什么是收敛的网络?

2.静态路由的两个缺点是什么?

  a.要想反映拓扑的变化就必须重新进行配置

  b.度量复杂

  c.涉及收敛

  d.无动态路由发现功能

3.show ip routeshow ipv6 route命令通常会提供以下哪两项信息?

  a.下一跳

  b.度量值

  c.CDP

  d.主机名

4.以下哪一项不是动态路由协议?

  a.RIPv1

  b.CDP

  c.EIGRP

  d.BGP

  e.RIPv2

5.什么是度量值?

  a.路由算法使用的测量标准

  b.用来管理网络资源的一组技术

  c.TCP/IP网络中的域间路由

  d.限制输入或输出传输速率的服务

6.以下哪项不是路由协议的分类?

  a.链路状态

  b.默认

  c.路径矢量

  d.距离矢量

7.什么是自动汇总?

8.RIPng的默认管理距离是多少?

  a.90

  b.100

  c.110

  d.120

9.将每种路由协议特性及其描述配对。

  距离矢量协议

  链路状态协议

  收敛时间

  扩展性

  EGP

  IGP

  a.工作在自治系统内

  b.工作在自治系统间

  c.描述了路由协议对变化作出响应所需的时间

  d.描述支持网络增长的能力

  e.仅与邻居交换最优路由

  f.每台路由器自己确定最优路径

10.哪三项优势是路由汇总的结果?(选三项)

  a.路由表更小

  b.使用的IP地址更少

  c.路径选择更加精确

  d.路由更新数量更少

  e.提升收敛速度

11.IPv6支持哪三种类型的地址?(选三项)

  a.单播

  b.组播

  c.任播

  d.广播

12.现代IGP路由协议默认使用哪种类型的流量来发送通告?

  a.单播

  b.组播

  c.任播

  d.广播

13.通过Internet连接两个远程站点的GRE隧道支持封装动态路由协议。

  a.

  b.

14.将每种DMVPN组件与其功能配对。

  __IPSec

  __mGRE

  __NHRP

  a.提供了一种可扩展的隧道框架

  b.提供了分支之间动态发现的能力

  c.为密钥提供了管理和传输保护的功能

15.关于RIPng,下列哪种说法是正确的?

  a.它只能在IPv4网络中进行路由

  b.它使用跳数作为度量值

  c.它是一种链路状态协议

  d.它可路由最多17跳远的网络


本章会讨论下列内容:

增强型内部网关协议(Enhanced Interior Gateway Routing Protocol,EIGRP)是一种由Cisco设计的高级距离矢量型路由协议。EIGRP的基本配置简单易懂,因此在小型网络中得到了广泛的应用。EIGRP的高级特性则可实现快速收敛、高扩展性并且可以对多种协议进行路由,能够满足复杂网络环境的需求。

EIGRP同时支持IPv4和IPv6。虽然在IPv4和IPv6中,EIGRP的标准配置方式有所区别,但在刚刚引入的命名EIGRP配置模式下,它们的配置方式已经实现了统一。

在完成本节内容的学习后,读者应该能够:

EIGRP是作为较老的内部网关路由协议(Interior Gateway RoutingProtocol,IGRP)的增强版本进行开发的,与高级内部网关协议有许多相同的特点,比如高速收敛、部分更新以及支持多个网络层协议的能力。配置EIGRP的第一步是在多种接口类型上建立EIGRP邻居关系。重要的是要知道如何验证这些关系已经妥善建立,以及Hello、保持计时器这样的参数和不同的WAN技术是如何影响会话建立的。

在完成本节内容的学习后,读者应该能够:

EIGRP不同于其他路由协议的关键性能包括快速收敛、支持可变长子网掩码(Variable-Length Subnet Masking,VLSM)、部分更新以及支持多种网络层协议。有关这款协议的设计及其架构的基本描述,已经通过指导性RFC的形式进行了发布,因此Cisco得以在控制EIGRP和客户体验的同时,将这项协议开放给其他厂商,以提升EIGRP的互操作性。

EIGRP是Cisco的私有协议,这项协议将链路状态型协议和距离矢量型协议的优势结合了起来。不过,EIGRP是一种距离矢量路由协议。EIGRP包含了很多RIP等其他距离矢量协议中所没有的高级特性,这也正是EIGRP被称为高级距离矢量路由协议的原因。

EIGRP和它的前身IGRP一样容易配置,而且适用于大量的网络拓扑。但是,让EIGRP成为高级距离矢量协议的原因,在于这项协议中增加了许多链路状态协议的特性,比如动态的邻居发现等。EIGRP是增强型的IGRP,因为它在任何时候都可以进行快速收敛,并且保证拓扑是无环的。这项协议的特性包括下面这些。

注释


EIGRP曾经被称为混合型协议,鉴于这种说法并不准确,因此目前已经不再使用。EIGRP不是距离矢量和链路状态路由协议的组合,而是拥有一些链路状态协议特征的距离矢量路由协议。因此,我们目前一般会用高级距离矢量这种说法来描述EIGRP协议。

EIGRP的其他特性还包括下面这些。

注释


IP这个术语是IP的统称,包含IPv4和IPv6。除此之外,如果特指IP协议的版本,可以分别使用术语IPv4和IPv6进行表述。

注释


虽然本章中也有一些回顾性的内容,但这一章默认读者拥有CCNA EIGRP的基本知识。如果读者需要更全面地回顾EIGRP或其他路由协议,可以参见Routing Protocols Companion Guide(Cisco Press,2014)。

EIGRP中使用的关键技术之一是可靠传输协议(Reliable Transport Protocol,RTP),这项技术的作用是实现可靠的信息交换。

如图2-1所示,EIGRP直接运行在IP层上,其协议号为88。RTP是EIGRP中的一项组件,负责把EIGRP数据包可靠、有序地传输给所有邻居设备。它支持将组播或单播数据包混合进行传输。在网络段上使用组播时,数据包会被发送给EIGRP的预留组播地址:在IPv4中,这个地址为224.0.0.10,在IPv6中为FF02::A。

图2-1 EIGRP封装

由于效率原因,RTP仅会采用可靠的方式来发送特定的EIGRP数据包,接收方需要发送一条EIGRP确认消息。例如,在以太网这类有组播能力的多路访问网络中,不需要以可靠方式单独向所有邻居发送Hello包。此时,EIGRP会发送一个组播Hello包,其中包含一个标识符,告知接收方这个数据包不需要确认。其他类型的包,比如更新包,则包含表示需要确认的标识符。可靠传输协议可以快速发送组播包,即使还有数据包未经确认也会继续发送。在链路拥有多种速率的情况下,协议的这项特性有助于将网络收敛时间保持在一个比较低的水平。

EIGRP协议的操作是基于存储在三个表中的信息来实现的:邻居表、拓扑表和路由表。

存储在邻居表中的主要信息是一组EIGRP路由器已经与之建立邻接关系的邻居设备。标识邻居的是其主IP地址和指向该邻居的直连接口。

拓扑表包含邻居路由器通告的所有目的路由。拓扑表中的每个条目都与通告该目的网络的那些邻居相互关联。拓扑表中会记录每个邻居所通告的度量值。这个度量值是邻居存储在路由表中,标识到达特定目的的度量值。另一个重要的信息是这台路由器到达同一个目的网络的度量值。这个度量值是邻居通告的度量加上到达邻居的链路开销。到达目的网络度量值最优的路由称为后继路由(successor),这种路由会被放在路由表中并通告给其他邻居。

在EIGRP中,建立和发现邻居路由的过程会同时进行。以图2-2中的拓扑为例,这个过程可以概括为如下所示。

图2-2 EIGRP操作概述

1.一台新的路由器(此例中为路由器R1)在链路上启动,并通过所有配置了EIGRP的接口对外发送Hello包。

2.在一个接口上接收到Hello包的路由器(R2)通过更新数据包进行应答,这个数据包中包含了路由表中的所有路由,但不包含通过该接口学习到的路由(水平分割)。R2向R1发送一个更新包1,但在R2发送Hello包给R1之前,邻居关系尚未建立。来自R2的更新包设置了初始化位,表示这是初始化过程。更新包中会包含邻居(R2)所知道的路由信息,其中包括邻居为每个目的通告的度量值。

3.在两台路由器都交换了Hello包且邻居邻接关系也已经建立起来之后,R1会向R2回复一个ACK数据包,表示自己接收到了更新信息。

4.R1提将所有更新包的信息提取到拓扑表中。拓扑表包含所有相邻的邻接路由器通告的目的网络。表中会列出每个目的、所有可以到达目的的邻居,以及它们对应的度量值。

5.R1给R2发送一个更新包。

6.收到更新包后,R2向R1发送一个ACK(确认)数据包。

在R1和R2成功交换更新包之后,它们就可以使用拓扑表中的后继路由来更新自己的路由表了。

本节会使用图2-3中的拓扑讨论基本的EIGRP配置,包括如何配置EIGRP进程,分析邻居邻接关系,以及配置不同的Hello和保持计时器。本节还会介绍如何通过配置被动接口来优化EIGRP的工作方式。

图2-3 基本的EIGRP拓扑

例2-1中显示了使用network命令和自治系统编号100在两个接口上启用EIGRP的配置方法。

例2-1 在BR1上配置EIGRP

BR1> enable
BR1# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
BR1(config)# router eigrp 100
BR1(config-router)# network 172.16.0.0
BR1(config-router)# network 192.168.1.0

要想在两台路由器之间建立EIGRP邻居关系,两台路由器必须都属于相同的自治系统。自治系统编号在路由器上唯一地标识EIGRP进程,并且会用来定义EIGRP路由域。来自相同路由域的路由器会相互交换EIGRP路由,这些路由会被标记为EIGRP内部路由。有不同自治系统编号的路由器则不会交换路由信息。在两个独立的EIGRP域中,有不同自治系统编号的路由器必须配置重分布才能共享路由信息。

为在路由器上启用EIGRP路由进程,需使用router eigrp autonomous-system-number命令进行配置。

使用network ip-address [wildcard-mask]命令可将一或多个本地接口包含在EIGRP进程中。与network命令相匹配的接口会启用EIGRP并开始收发EIGRP数据包。

反掩码是可选的,如果省略的话,EIGRP进程就会假设属于这个主类网络的所有直连网络都会参与路由进程。EIGRP会尝试通过属于A、B或C类网络的每个接口建立邻居关系。例如,如果接口上有两个B类子网172.16.1.0/30和172.16.2.0/30,而且network 172.16.0.0命令没有配置反掩码,那么这两个接口就都会包含在EIGRP进程中。EIGRP在确定要将哪些接口包含在EIGRP中时,会使用B类网络的默认反掩码(0.255.255.255)。

下一步是在BR2上配置EIGRP,如例2-2所示。反掩码参数的作用是限制将哪些接口包含在EIGRP进程中。若只希望将172.16.2.0/30子网包含在EIGRP进程中,必须输入命令network 172.16.2.0 0.0.0.3。在第三个反掩码组使用全0表示IPv4网络地址第三段的值必须为2。最后一组设置为3,表示最后3位不作校验,但其他位必须与network IP地址中定义的值相同。

例2-2 在BR2上配置EIGRP

BR2(config)# router eigrp 100
BR2(config-router)# network 172.16.2.0 0.0.0.3
BR2(config-router)# network 192.168.2.1 0.0.0.0

注释


反掩码可以视为是反的子网掩码。在反掩码中,网络位由0表示,主机位由1表示。子网掩码255.255.255.252取反为0.0.0.3。

为了只启用路由器上的特定接口,可以使用反掩码0.0.0.0来精确匹配接口地址的四个组。为了启用路由器上的所有接口参与路由进程,可使用地址和反掩码组合0.0.0.0 255.255.255.255 来匹配所有接口。

接下来,在例2-3中,路由器BR3的所有接口都在自治系统100中启用了EIGRP协议。一个EIGRP路由域中的每台路由器都是通过其路由器ID进行标识的。每当路由器与EIGRP邻居通信时,都会使用路由器ID。EIGRP路由器ID也会用于验证外部路由的源。如果收到的外部路由带有本地路由器的ID,这条路由就会被丢弃。管理员可以使用eigrp router-id router-id命令手动设置路由器ID。路由器ID是一个32位的值,这个值可以配置为除0.0.0.0和255.255.255.255之外的任何IPv4地址。管理员应该给每台路由器配置一个唯一的32位值。如果没有手动配置路由器ID,路由器就会选择最高的环回接口地址作为自己的路由器ID。如果路由器上没有环回接口,那么它就会选择活跃的本地接口上的最高IPv4地址。除非EIGRP进程被清除或者管理员手动配置路由器ID,否则路由器ID不会改变。

例2-3 在BR3上配置EIGRP

BR3(config)# router eigrp 100
BR3(config-router)# eigrp router-id 192.168.3.255
BR3(config-router)# network 0.0.0.0 255.255.255.255

在BR1上,管理员可以使用show ip eigrp neighbors命令并在最后加上可选关键字detail来验证EIGRP邻居关系,如例2-4所示。

例2-4 在BR1上验证EIGRP邻居关系

BR1# show ip eigrp neighbors
EIGRP-IPv4 Neighbors for AS(100)
H   Address      Interface   Hold   Uptime    SRTT   RTO  Q    Seq
                            (sec)     (ms)                Cnt  Num
0 172.16.1.1 Se0/0 13 01:29:20 17 102 0 11
BR1# show ip eigrp neighbors detail
EIGRP-IPv4 Neighbors for AS(100)
H   Address      Interface   Hold   Uptime    SRTT   RTO  Q    Seq
                            (sec)     (ms)                Cnt  Num
0   172.16.1.1   Se0/0       14     01:40:47    17   102  0    11
   Version 7.0/3.0, Retrans: 0, Retries: 0, Prefixes: 5
   Topology-ids from peer - 0

这条命令的输出显示了自治系统内建立的邻居关系。

如果使用了关键字detail,那么这条命令还会显示下列信息。

在例2-5中,管理员使用show ip eigrp interfaces命令显示了BR1上的活跃EIGRP接口。

例2-5 在BR1上验证EIGRP接口

BR1# show ip eigrp interfaces
EIGRP-IPv4 Interfaces for AS(100)
                  Xmit Queue   PeerQ       Mean   Pacing Time   Multicast   Pending
Interface  Peers  Un/Reliable  Un/Reliable SRTT   Un/Reliable   Flow Timer  Routes
Se0/0 1        0/0       0/0         17       0/16           88            0
Lo0          0        0/0       0/0          0       0/0             0            0

输出信息的Interface列描述了哪些接口包含在了EIGRP进程中,Peers列表示通过一个特定的接口直连的EIGRP邻居数量。在例2-6中,管理员使用了show ip eigrp interfaces detail命令来查看详细信息,这条命令的输出信息会显示发送数据包的数量、重传数量以及Hello间隔、保持时间计时器值等附加信息。

例2-6 在BR1上验证EIGRP接口详情

BR1# show ip eigrp interfaces detail
EIGRP-IPv4 Interfaces for AS(100)
                  Xmit Queue   PeerQ       Mean  Pacing Time  Multicast  Pending
Interface Peers  Un/Reliable  Un/Reliable  SRTT  Un/Reliable  Flow Timer Routes
Se0/0 1        0/0       0/0          17      0/16         88        0
 Hello-interval is 5, Hold-time is 15
 Split-horizon is enabled
 Next xmit serial <none>
 Packetized sent/expedited: 5/1
 Hello's sent /expedited: 16200/2
 Un/reliable mcasts: 0/0 Un/reliable ucasts: 4/5
 Mcast exceptions: 0 CR packets: 0 ACKs suppressed: 0
 Retransmissions sent: 0 Out-of-sequence rcvd: 0
<Output omitted>

在下面的示例中,我们通过show ip protocolsshow ip eigrp interfaces命令查看了HQ路由器上预配的EIGRP命令。

在例2-7中,show ip protocols命令的输出信息显示了哪些网络包含在EIGRP进程中,以及存在哪些路由信息源——在此例中,源分别对应属于BR1、BR2和BR3的WAN IP地址。

例2-7 在HQ上验证EIGRP网络

HQ# show ip protocols
*** IP Routing is NSF aware ***

Routing Protocol is "eigrp 100"
    <Output omitted>
  Routing for Networks:
    0.0.0.0
  Routing Information Sources:
    Gateway         Distance       Last Update
    172.16.2.2            90       23:04:13
    172.16.3.2            90       23:04:13
    172.16.1.2            90       23:04:13
  Distance: internal 90 external 170

例2-8中输出信息显示了启用EIGRP的工作接口。通过输出信息可以看到,Loopback 0没有和任何路由器配对。换句话说,Loopback 0接口不会接收到EIGRP数据包。LAN接口也是这样,这个接口上没有连接其他的路由器。为了节省一些资源,并要求路由器停止在特定的接口上发送和接收数据包,可以将这样的接口配置为被动接口。

例2-8 在HQ上验证EIGRP接口详情

HQ# show ip eigrp interfaces
EIGRP-IPv4 Interfaces for AS(100)
             Xmit     Queue     PeerQ        Mean   Pacing Time   Multicast   Pending
Interface   Peers  Un/Reliable  Un/Reliable  SRTT   Un/Reliable   Flow Timer   Routes
Et0/0         1        0/0       0/0           1       0/2           50           0
Se1/0         1        0/0       0/0          19       0/16          96           0
Se2/0         1        0/0       0/0          24       0/16         120           0
Lo0 0        0/0       0/0           0       0/0            0           0

例2-9所示为通过命令passive-interface default将一个接口配置为被动接口。

例2-9 配置被动接口为默认

HQ(config)# router eigrp 100
HQ(config-router)# passive-interface default
*Sep 24 03:27:31.719: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 172.16.3.2
  (Serial2/0) is down: interface passive
*Sep 24 03:27:31.719: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 172.16.1.2
  (Serial1/0) is down: interface passive
*Sep 24 03:27:31.720: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 172.16.2.2
  (Ethernet0/0) is down: interface passive

在EIGRP进程下使用passive-interface default命令时,路由器会立刻停止在所有接口上发送和接收Hello包数据和路由更新。配置后,所有现有的邻居关系就会终止。

如需在连接HQ和BR路由器的那个接口禁用被动接口设置,可使用no passive-interface interface-name命令,如例2-10所示。

例2-10 在HQ上禁用被动接口

HQ(config-router)# no passive-interface ethernet 0/0
*Sep 24 03:31:16.376: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 172.16.2.2
  (Ethernet0/0) is up: new adjacency
HQ(config-router)# no passive-interface serial 1/0
*Sep 24 03:31:42.184: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 172.16.1.2
  (Serial1/0) is up: new adjacency
HQ(config-router)# no passive-interface serial 2/0
*Sep 24 03:31:56.265: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 172.16.3.2
  (Serial2/0) is up: new adjacency

在与BR路由器相连的所有接口上配置了passive-interface interface-name命令后,路由器开始发送EIGRP Hello和更新消息,EIGRP邻居关系继而重新建立。

例2-11中的show ip protocols命令验证了HQ上的被动接口配置。如输出消息所示,只有接口Loopback 0仍旧被配置为被动接口。

例2-11 在HQ上验证被动接口

HQ# show ip protocols
*** IP Routing is NSF aware ***
  <Output omitted>
  Routing for Networks:
    0.0.0.0
Passive Interface(s):
Passive Interface(s):
    Loopback0
Routing Information Sources:
    Gateway         Distance        Last Update
    172.16.2.2            90        00:29:44
    172.16.3.2            90        00:29:44
    172.16.1.2            90        00:29:44
  Distance: internal 90 external 170

要想实时动态地观察Hello数据包的发送和接收,可以通过debug eigrp packets hello命令来调试启用EIGRP Hello数据包。在例2-12中,管理员在BR1上使用debug eigrp packets hello命令启用了EIGRP Hello包的调试。20秒后,管理员输入nodebug all命令禁用了调试功能。

例2-12 在BR1上观察EIGRP Hello包

BR1# debug eigrp packets hello
    (HELLO)
EIGRP Packet debugging is on
BR1#
*Sep 24 04:19:50.535: EIGRP: Sending HELLO on Serial0/0
*Sep 24 04:19:50.535: AS 100, Flags 0x0:(NULL), Seq 0/0 interfaceQ 0/0 iidbQ un/
rely 0/0
*Sep 24 04:19:50.877: EIGRP: Received HELLO on Serial0/0 nbr 172.16.1.1
*Sep 24 04:19:50.877: AS 100, Flags 0x0:(NULL), Seq 0/0 interfaceQ 0/0 iidbQ un/
rely 0/0 peerQ un/rely 0/0
BR1#
*Sep 24 04:19:55.232: EIGRP: Sending HELLO on Serial0/0
*Sep 24 04:19:55.232: AS 100, Flags 0x0:(NULL), Seq 0/0 interfaceQ 0/0 iidbQ un/
rely 0/0
*Sep 24 04:19:55.264: EIGRP: Received HELLO on Serial0/0 nbr 172.16.1.1
*Sep 24 04:19:55.264: AS 100, Flags 0x0:(NULL), Seq 0/0 interfaceQ 0/0 iidbQ un/
rely 0/0 peerQ un/rely 0/0
BR1# no debug all
All possible debugging has been turned off

为了动态学习直连网络上的其他设备,并建立和维系EIGRP邻居关系,EIGRP使用了小型Hello数据包。这些数据包会在各类接口上大约每5秒周期性发送一次。唯有在低速(T1或更低)NBMA网络中,这类数据包默认每60秒发一次。这个时间间隔称为Hello计时器。

EIGRP会通过Hello数据包来判断邻居是否活跃且工作正常。这些数据包中也包含了保持计时器参数,如果邻居停止发送Hello包,启用了EIGRP的路由器会通过这个参数来判断等待多长时间之后,宣布邻居关系终止。若发生上述情况,EIGRP就会开始寻找替代的转发路径。保持计时器默认设置为Hello间隔的三倍(15或180秒,具体数值取决于下层网络)。

例2-13显示了使用show ip eigrp interfaces detail命令在HQ上验证Hello和保持计时器的示例。

例2-13 在HQ上验证Hello和保持计时器

HQ# show ip eigrp interfaces detail
EIGRP-IPv4 Interfaces for AS(100)
             Xmit   Queue       PeerQ        Mean   Pacing Time   Multicast   Pending
Interface    Peers  Un/Reliable Un/Reliable  SRTT   Un/Reliable   Flow Timer  Routes
Et0/0          1       0/0         0/0          5       0/2           50         0
  Hello-interval is 5, Hold-time is 15
  <Output omitted>
Se1/0          1       0/0         0/0         13       0/15          71         0
  Hello-interval is 5, Hold-time is 15
  <Output omitted>
Se2/0          1       0/0         0/0       1008      10/400       4432         0
  Hello-interval is 60, Hold-time is 180
  <Output omitted>

除慢速NBMA链路外,Hello间隔在所有接口上默认为5秒。因为Serial 2/0使用的是帧中继,默认速率为1544kbit/s,不大于T1速率,所以Hello计时器默认为60秒。在比T1快的NBMA链路上,Hello计时器默认为5秒。

注意,环回接口不会包含在输出中,因为这个接口仍被配置为被动接口。

如例2-14所示,在BR1上可以使用debug eigrp packets hello命令来查看Hello和保持计时器。在BR1上启用调试之后,HQ上的Serial 1/0接口被禁用,调试的结果显示在BR1上。

例2-14 在接口被禁用时观察EIGRP Hello包

BR1# debug eigrp packets hello
    (HELLO)
EIGRP Packet debugging is on

--------------------------------------------------------------------------------
HQ(config)# interface Serial 1/0
HQ(config-if)# shutdown
HQ(config-if)#
*Apr 9 12:09:53.485: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 172.16.3.2
(Serial2/0) is down: interface down
HQ(config-if)#
*Apr   9 12:09:55.483: %LINK-5-CHANGED: Interface Serial2/0, changed state to administratively
down
*Apr   9 12:09:56.483: %LINEPROTO-5-UPDOWN: Line protocol on Interface Serial2/0,
changed state to down
BR1#
*Oct 10 13:47:03.981: EIGRP: Received HELLO on Serial0/0 nbr 172.16.1.1
*Oct 10 13:47:03.981: AS 100, Flags 0x0:(NULL), Seq 0/0 interfaceQ 0/0 iidbQ un/
rely 0/0 peerQ un/rely 0/0
*Oct 10 13:47:08.953: EIGRP: Sending HELLO on Serial0/0
*Oct 10 13:47:08.953: AS 100, Flags 0x0:(NULL), Seq 0/0 interfaceQ 0/0 iidbQ un/
rely 0/0
*Oct 10 13:47:13.833: EIGRP: Sending HELLO on Serial0/0
*Oct 10 13:47:13.833: AS 100, Flags 0x0:(NULL), Seq 0/0 interfaceQ 0/0 iidbQ un/
rely 0/0
*Oct 10 13:47:18.457: EIGRP: Sending HELLO on Serial0/0
*Oct 10 13:47:18.457: AS 100, Flags 0x0:(NULL), Seq 0/0 interfaceQ 0/0 iidbQ un/
rely 0/0
*Oct 10 13:47:18.982: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 172.16.1.1
(Serial0/0) is down: holding time expired
BR1# no debug all
All possible debugging has been turned off

在HQ上的Serial 1/0接口被关闭时,它就不会继续向BR1发送EIGRP Hello数据包,并立即宣布EIGRP邻居关系断开,因为接口关闭。然而,BR1仍然会认为EIGRP邻居关系处于建立状态,直至BR1上的保持计时器过期为止。在15秒没有收到Hello包后,BR1就会中断EIGRP邻居关系。

在邻居关系断开后,一定要在BR1上通过命令no debug all禁用调试。

如果WAN链路的2层状态能立刻反映端到端连通性的故障,EIGRP就可以更快地监测邻居故障。

EIGRP是基于链路类型确定默认的计时器值。如果默认的值不适用于某些特定的网络拓扑,可以修改Hello和保持计时器值。

修改Hello和保持计时器的主要原因是为了改善收敛时间。这对于低速NBMA链路尤其有吸引力,在低速NBMA链路上,默认的Hello和保持计时器为60秒和180秒,这个时间相对比较长。然而,在决定更改默认计时器值之前需要考虑一些注意事项。

与其他的IGP(如OSPF,EIGRP)相比,EIGRP邻居间的Hello和保持计时器不需相同就能成功建立EIGRP邻居关系;但计时器值不对称可能导致EIGRP邻居关系出现震荡以及网络出现不稳定。

例如,如果将链路一端的Hello间隔设置为5秒,默认保持时间设置为15秒,而将另一端Hello间隔设置为30秒,路由器的邻居关系将建立15秒,然后在下一个15秒内断开。

如果增加了链路上的Hello间隔,就可能导致网络需要更长时间来监测潜在的故障,因此收敛时间也会增加。反过来,如果将Hello计时器减小到极小值,则可能导致路由流量对链路产生很高的占用率。

要想更改EIGRP计时器,可以使用接口配置命令ip hello-interval eigrp as-number hello-time-intervalip hold-time eigrp as-number hold-time-interval。这些命令中使用的自治系统编号必须与EIGRP进程的自治系统编号一致。间隔的值的单位是秒。例2-15显示了在BR3上修改这些计时器的示例。

例2-15 在BR3上修改并验证EIGRP Hello和保持时间计时器

BR3(config)# interface serial 0/0
BR3(config-if)# ip hello-interval eigrp 100 10
BR3(config-if)# ip hold-time eigrp 100 30
BR3# show ip eigrp interface detail serial 0/0
EIGRP-IPv4 Interfaces for AS(100)
            Xmit   Queue        PeerQ        Mean    Pacing Time  Multicast    Pending
Interface   Peers  Un/Reliable  Un/Reliable  SRTT    Un/Reliable  Flow Timer   Routes
Se0/0         1        0/0       0/0         1268       0/16         6340          0
  Hello-interval is 10, Hold-time is 30
<Output omitted>

帧中继支持两种不同的接口类型:

在点到多点子接口上配置EIGRP时,要使用一个IP子网。为了模拟广播多路访问网络并让EIGRP通过帧中继虚电路(Virtual Circuit,VC)发送组播数据包,必须在帧中继静态映射语句中添加关键字broadcast,使用接口配置命令frame-relay map ip ip-address dlci broadcast

帧中继多点子接口可用于部分网状和全网状拓扑。部分网状帧中继网络必须处理可能的水平分割问题,因为这会阻止路由更新从接收到的接口被重新传输出去。

通过点到点主机接口配置EIGRP时,要为每个子接口使用一个不同的IP子网。一个帧中继物理接口上可以创建几个点到点子接口。这些是模拟租用线路网络的逻辑接口,与点到点物理接口的路由转发的方式相同。因为点到点子接口有一个数据链路连接标识符(Data-Link Connection Identifier,DLCI),所以不需要静态映射。组播流量在不需要额外配置的情况下就可以进行传输。此外,从拓扑的角度看,EIGRP认为点到点子接口是独立的物理接口,所以没有发生水平分割问题的可能性。帧中继点到点子接口适用于星型拓扑。

注释


有关配置帧中继的更多信息,参见Connecting Networks(Cisco Press,2014)。

通过3层多协议标签交换(Multiprotocol Label Switching,MPLS)虚拟专用网(Virtual Private Network,VPN)连接分支机构时,可以直接与服务提供商建立EIGRP路由协议。

如图2-4所示,3层MPLS VPN给使用点对点VPN架构的Internet服务提供商(Internet Service Provider,ISP)提供了以下特性:

图2-4 3层MPLS VPN

3层MPLS VPN的术语中将整体网络划分为客户控制的部分(客户网络,或C网络)和提供商控制的部分(提供商网络,或P网络)。C网络邻近的部分被称为站点,这些地方通过客户边界(CE)路由器与P网络相连。CE路由器连接到PE路由器,后者是提供商网络的边界设备。提供商网络的核心设备(提供商路由器,或P路由器)通过供应商骨干网进行中转传输,这些设备不携带客户路由。

在3层MPLS VPN骨干提供的3层骨干网中,CE路由器会将PE路由器视为是路径上额外的客户路由器。为了保持客户信息的独立,PE路由器会为每个客户维护一个独立的路由表。

3层MPLS VPN骨干对CE路由器来说就像是一个标准的企业骨干网。CE路由器运行标准IP路由软件并与PE路由器交换路由更新,PE路由器看起来像是客户网络中的正常路由器。从客户的角度看,SP网络中的骨干路由器是隐藏的,CE路由器感知不到3层MPLS VPN的存在。因此,MPLS骨干网的内部拓扑对于客户来说是透明的。

通常,从客户的角度看,有三种不同类型的2层MPLS VPN方案。

所谓点到点MPLS L2 VPN解决方案,就是MPLS骨干在客户路由器之间提供一个2层以太网点到点连接。通过点到点WAN以太网链路建立EIGRP邻居关系时,每个点到点连接都会处于自己的IP子网中。在增加分支机构而又希望同时确保分支之间的直接通信时,这种方案的扩展性并不理想。

在多点MPLS L2 VPN方案中,所有路由器都属于相同的共享L2广播域。图2-5所示为一个逻辑网络图。

图2-5 2层MPLS VPN

在共享网段上建立EIGRP邻居关系时,网段上的每台路由器都会与所有其他的路由器成为邻居。在这样的拓扑中,管理员一般都会在邻居之间配置EIGRP认证,以防止未经授权的人员将路由器增加到自己的WAN网络中。

EIGRP邻居关系一旦建立,就会开始交换路由信息。EIGRP使用更新数据包来交换这类信息。所有从邻居收到的路由信息都会存储在一个EIGRP拓扑表中。

EIGRP使用DUAL计算到达远程网络的最优路由。一条路由要想被插入到路由表中,它就必须满足可行性条件,这个条件的作用是在EIGRP网路中避免环路。有到达目的网络最低度量的路由称为将被插入路由表的候选路由。如果存在其余的路由,它们必须满足可行性条件才能成为备份路由,以便在主路由不可用的情况下,路由器仍可将数据包转发到目的网络。

为了计算每个目的网络的开销,EIGRP使用一个复杂的度量值,这个值默认由带宽和延迟组成。

在完成本节内容的学习后,读者将能够:

本节会介绍不同类型的EIGRP数据包,并深入解读EIGRP拓扑表,同时还会介绍EIGRP如何选择到达目的网络的最优路径。

本节首先将会根据图 2-6 所示拓扑中EIGRP的配置方法,来讨论EIGRP的数据包类型。

图2-6 EIGRP拓扑

管理员在BR路由器上配置EIGRP之前,使用命令debug eigrp packets启用了EIGRP调试功能,如例2-16所示。

例2-16 观察BR上的EIGRP

BR# debug eigrp packet
    (UPDATE, REQUEST, QUERY, REPLY, HELLO, IPXSAP, PROBE, ACK, STUB, SIAQUERY,
SIAREPLY)
EIGRP Packet debugging is on

在例 2-17 中,接下来,管理员在 BR 上使用自治系统号 100 启用了 EIGRP,但只在Loopback 0和Ethernet 0/0接口上启用了这个协议。观察了debug进程中的Hello数据包之后,管理员禁用了调试功能。

例2-17 观察BR上的EIGRP Hello包

BR(config)# router eigrp 100
BR(config-router)# network 192.168.1.0 0.0.0.255
BR(config-router)# network 172.16.1.0 0.0.0.3
*Oct 8 15:20:19.227: EIGRP: Sending HELLO on Ethernet0/0
*Oct 8 15:20:19.227: AS 100, Flags 0x0:(NULL), Seq 0/0 interfaceQ 0/0 iidbQ un/
rely 0/0
*Oct 8 15:20:19.235: EIGRP: Received HELLO on Ethernet0/0 nbr 172.16.1.1
*Oct 8 15:20:19.235: AS 100, Flags 0x0:(NULL), Seq 0/0 interfaceQ 0/0
*Oct 8 15:20:19.235: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 172.16.1.1
(Ethernet0/0) is up: new adjacency

*Oct 8 15:20:19.261: EIGRP: Enqueueing UPDATE on Ethernet0/0 tid 0 iidbQ un/rely
0/1 serno 1-2
*Oct 8 15:20:19.266: EIGRP: Sending UPDATE on Ethernet0/0 tid 0
*Oct 8 15:20:19.266: AS 100, Flags 0x0:(NULL), Seq 2/0 interfaceQ 0/0 iidbQ un/
rely 0/0 serno 1-2
*Oct 8 15:20:19.274: EIGRP: Received ACK on Ethernet0/0 nbr 172.16.1.1
*Oct 8 15:20:19.275: AS 100, Flags 0x0:(NULL), Seq 0/2 interfaceQ 0/0 iidbQ un/
rely 0/0 peerQ un/rely 0/1
<Output omitted>
*Oct 8 15:20:19.253: EIGRP: Received UPDATE on Ethernet0/0 nbr 172.16.1.1
*Oct 8 15:20:19.253: AS 100, Flags 0x0:(NULL), Seq 2/0 interfaceQ 0/0 iidbQ un/
rely 0/0 peerQ un/rely 0/1
*Oct 8 15:20:19.360: EIGRP: Enqueueing ACK on Ethernet0/0 nbr 172.16.1.1 tid 0
*Oct 8 15:20:19.360: Ack seq 2 iidbQ un/rely 0/0 peerQ un/rely 1/0
*Oct 8 15:20:19.364: EIGRP: Sending ACK on Ethernet0/0 nbr 172.16.1.1 tid 0
*Oct 8 15:20:19.364: AS 100, Flags 0x0:(NULL), Seq 0/2 interfaceQ 0/0 iidbQ un/
rely 0/0 peerQ un/rely 1/0
BR# no debug all

在WAN链路172.16.1.0/30上启用EIGRP进程后,EIGRP会立即开始发送和接收Hello数据包。发送和接收Hello数据包的过程是单向的,也就是说路由器会使用组播不可靠地发送Hello数据包,也并不会等待另一端发送确认消息。在BR路由器从HQ邻居收到一个Hello数据包后,它就会动态建立一个新的EIGRP邻接关系。Hello数据包会周期性地进行发送,以检查邻居的有效性。

路由更新与发送和接收Hello数据包的过程不同,它的发送和接收是双向的。更新消息中包含有路由信息,这种消息会通过可靠的方式进行发送,也就是说路由器会等待每个发送出去的更新包都能收到一个对应的确认包。反之亦然,每个接收到的更新包也都必须进行确认。这个传输可靠数据包的过程由两个步骤组成:在接口加入队列和捆绑路由更新,以及向邻居发送可靠的数据包。debug命令的输出信息中显示了发送和接收更新以及确认数据包这两个独立的过程。

debug输出信息中,“Seq...”部分之后的数字分别表示序号和确认号。认真查看debug输出可以发现,每个用可靠方式发出的数据包都有一个序列号。确认成功接收的确认包必须携带与接收到的数据包相同的编号。

接下来,我们使用命令show ip eigrp traffic验证了EIGRP数据包的流量统计信息,如例2-18所示。

例2-18 验证BR上的EIGRP包流量

BR# show ip eigrp traffic
EIGRP-IPv4 Traffic Statistics for AS(100)
  Hellos sent/received: 65/67
  Updates sent/received: 9/7
  Queries sent/received: 0/0
  Replies sent/received: 0/0
  Acks sent/received: 5/5
  SIA-Queries sent/received: 0/0
  SIA-Replies sent/received: 0/0
  Hello Process ID: 101
  PDM Process ID: 63
  Socket Queue: 0/10000/2/0 (current/max/highest/drops)
  Input Queue: 0/2000/2/0 (current/max/highest/drops)

show ip eigrp traffic命令显示了各类EIGRP数据包发送和接收的信息。这条命令在排错时可能会非常有用,经常与其他的EIGRP showdebug命令组合起来使用。这条命令的输出信息显示了Hello数据包、更新包、确认包以及查询和应答的统计信息。

路由器执行路由计算,且没有到达目的网络的备用路径时,就会发送查询包。这个数据包会以组播的形式可靠地发送给邻居,以确认它们是否有到达目的的备用路径。

发送应答数据包的目的是回应请求包。应答数据包是以单播形式可靠发送的。

在BR路由器上,可以使用命令show ip route eigrp验证EIGRP路由,如例2-19所示。

例2-19 验证BR上的EIGRP路由

BR# show ip route eigrp
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
+ - replicated route, % - next hop override

Gateway of last resort is not set

D      192.168.0.0/24 [90/409600] via 172.16.1.1, 18:20:16, Ethernet0/0
D EX   209.165.201.0/27 [170/537600] via 172.16.1.1, 18:20:16, Ethernet0/0

show ip route eigrp命令的输出信息中显示了路由表中的EIGRP路由。在输出信息中,可以看到两条EIGRP路由,一条标记为D,另一条标记为D EX。代码D表示EIGRP内部路由。

内部路由源自一个EIGRP自治系统内,表示将EIGRP中配置的一个直连网络视为内部网络,且在EIGRP自治系统中传播。而外部路由则是通过其他路由协议学来并重分布到EIGRP中的路由。这类路由由代码D EX表示。

方括号中的数字分别代表AD值和EIGRP度量值。“via”之后的IPv4地址表示下一跳IPv4地址(本例中为172.16.1.1),在最后可以看到各路由的出接口。

在BR配置的最后,剩下的两个接口Ethernet 0/1和Serial 0/2都被配置到了EIGRP进程中,如例2-20所示。

例2-20 在BR上配置network命令

BR(config)# router eigrp 100
BR(config-router)# network 172.16.2.0 0.0.0.3
BR(config-router)# network 172.16.3.0 0.0.0.3

在这个拓扑中配置和验证EIGRP的过程,将在下一节继续介绍。

选择最优路径

EIGRP使用DUAL计算到达目的网络的最优路径。这种算法使用距离信息(也称为组合度量)来选择高效、无环的路径。

DUAL通过累加两个值来计算此组合度量。第一个值是从邻居路由器到目的网络的度量值。由于这个值是报告给路由器的,因此称为通告距离(Reported Distance,RD)。在许多书中,读者也会看到通告距离(Advertised Distance)这个术语。第二个值是从本地路由器到达报告第一个值的那台路由器的度量值。在从本地路由器到目的网络的所有度量中,路由器会选择最小的组合度量值,并将其视为到达某个特定目的的最优路径。而这个所选的值称为可行距离(Feasible Distance,FD)。

度量值最小的路由称为后继路由,下一跳路由器为后继路由器。如果有多个路由器到目的网络的FD相同,则可能存在多个后继路由器。此时,EIGRP就会把所有的后继路由插入到路由表中。默认情况下最多可以将4条后继路由添加到路由表中。

可行后继路由器是一个有无环路径的下一跳路由器,它到达目的网络的开销比后继路由器大。当拓扑表中的特定前缀有多个路由存在时,路由器会验证这条路由是否是无环拓扑的一部分。为此,路由器会采用一个简单的规则,要求其他备份路由的RD总是小于最优路径的FD,这称为可行性条件。满足这个条件的路由就会被视为是一条备份路由,且被称为可行后继路由。下一跳路由器则称为可行后继路由器。

继续我们在上一节中的配置,在例2-21中,管理员使用show ip eigrp topology命令查看了BR EIGRP拓扑表的内容。请读者观察有关HQ LAN 192.168.0.0/24的信息。

例2-21 在BR上验证EIGRP拓扑表

BR# show ip eigrp topology
EIGRP-IPv4 Topology Table for AS(100)/ID(192.168.1.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - reply Status, s - sia Status

P 172.16.2.0/30, 1 successors, FD is 1536000
          via Connected, Ethernet0/1
P 192.168.0.0/24, 1 successors, FD is 409600
        via 172.16.1.1 (409600/128256), Ethernet0/0
        via 172.16.2.1 (1664000/128256), Ethernet0/1
P 192.168.1.0/24, 1 successors, FD is 128256
        via Connected, Loopback0
P 172.16.3.0/30, 1 successors, FD is 2169856
        via Connected, Serial2/0
P 172.16.1.0/30, 1 successors, FD is 281600
        via Connected, Ethernet0/0
P 209.165.201.0/27, 1 successors, FD is 537600
        via 172.16.1.1 (537600/426496), Ethernet0/0
        via 172.16.2.1 (1792000/426496), Ethernet0/1

EIGRP拓扑表是一个包含从所有EIGRP邻居学到的所有前缀的数据表。前缀之前的代码P表示该前缀是被动状态。当DUAL没有执行任何计算来发现可能的备份路径时,路由就会被认为是被动的。对于所有路由,被动状态都既是正常状态,也是理想状态。当所有路由都处于被动状态下时,网络就是完全收敛的。

只要有至少一个合法到达目的且满足FC的路径,路由就会保持在被动状态。可行性条件是EIGRP内部解决路由环路问题的根本途径。为了完全理解FC,读者必须首先理解其他的两个重要概念:通告距离和可行距离。

EIGRP中的距离或组合度量是一个整数,用来比较去往相同目的网络的不同路径。每个接收到的路由都会包含通告距离,而且这个值会被存储到EIGRP拓扑表中,可以在输出信息括号中第二个数的位置看到。对于去往网络192.168.0.0/24的路径,两条路径的值均为128256。

到达目的的总开销是括号中的第一个数,这个数值反映了通告距离加上达到邻居的开销之和。网络192.168.0.0/24通过接口Ethernet 0/0的总开销是409600,通过接口Ethernet 0/1的总开销则是1664000。

到达目的网络的最优路径是根据去往目的的最低总开销比较出来的。最优路径会成为后继路由,而后继路由路径的总开销值就会成为FD。

其余路径成为候选可行后继路由。一个路径如果要成为可行后继,必须满足可行性条件。路径的通告距离必须小于可行距离。

注释


如果希望比较全面地了解DUAL,请参阅Routing Protocols Companion Guide(Cisco Press,2014)。

下面我们继续讨论之前的情形,在例2-22中,管理员通过show ip route eigrp命令查看了BR路由表中的EIGRP路由。

例2-22 验证BR上的EIGRP路由

BR# show ip route eigrp
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

D      192.168.0.0/24 [90/ 409600] via 172.16.1.1, 02:32:24, Ethernet0/0
D EX   209.165.201.0/27 [170/537600] via 172.16.1.1, 02:32:24, Ethernet0/0

在分析了拓扑表中的所有路由后,EIGRP就会尝试只将后继路由添加到路由表中。如果路由器从其他更可信的路由源那里学习到了相同的目的网络,那么EIGRP后继路由就不会插入到路由表中。可行后继路由会保留在拓扑表中,以备后继路由失效。

BR拓扑表中所有接到的路由都可以通过命令show ip eigrp topology all-links进行查看,如例2-23所示。

例2-23 在BR上验证EIGRP拓扑表中的所有网络

BR# show ip eigrp topology all-links
EIGRP-IPv4 Topology Table for AS(100)/ID(192.168.1.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - reply Status, s - sia Status

P 172.16.2.0/30, 1 successors, FD is 1536000, serno 4
         via Connected, Ethernet0/1
         via 172.16.3.1 (3449856/1536000), Serial2/0
         via 172.16.1.1 (1561600/1536000), Ethernet0/0
P 192.168.0.0/24, 1 successors, FD is 409600, serno 2
         via 172.16.1.1 (409600/128256), Ethernet0/0
         via 172.16.3.1 (256512000/256000000), Serial2/0
         via 172.16.2.1 (1664000/128256), Ethernet0/1
P 192.168.1.0/24, 1 successors, FD is 128256, serno 6
         via Connected, Loopback0
P 172.16.3.0/30, 1 successors, FD is 2169856, serno 5
         via Connected, Serial2/0
         via 172.16.1.1 (2195456/2169856), Ethernet0/0
         via 172.16.2.1 (3449856/2169856), Ethernet0/1
P 172.16.1.0/30, 1 successors, FD is 281600, serno 1
         via Connected, Ethernet0/0
         via 172.16.3.1 (2195456/281600), Serial2/0
         via 172.16.2.1 (1561600/281600), Ethernet0/1
P 209.165.201.0/27, 1 successors, FD is 537600, serno 3
         via 172.16.1.1 (537600/426496), Ethernet0/0
         via 172.16.3.1 (256512000/256000000), Serial2/0
         via 172.16.2.1 (1792000/426496), Ethernet0/1

命令show ip eigrp topology all-links可以显示出到达目的网络的所有可能的路径。除了后继路由和可行后继路由之外,拓扑表中也有可能包含非后继路由。非后继路由是不满足可行性条件的路由。输出信息显示,到达网络192.168.0.0/24有三条可能的路径。通过下一跳172.16.3.1的路径通告距离为256000000,大于路由的可行距离409600。因为不满足可行条件,因此通过172.16.3.1的路径就不是候选的后继。在没有满足FC的路由时,路由器会对前缀重新执行路径计算;路由就会进入活跃状态,路由器则会开始向邻居请求替代路由。

接下来,例2-24显示了从BR路由器到HQ IP地址192.168.0.1的连续ping命令。

例2-24 从BR到192.168.0.1的连续ping命令

BR# ping 192.168.0.1 repeat 100000 size 1000
Type escape sequence to abort.
Sending 100000, 1000-byte ICMP Echos to 192.168.0.1, timeout is 2 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<Output omitted>

因为路由表中只有一条后继路由,而路由表中拥有两条满足可行性条件的路由,Internet控制消息协议(Internet Control Message Protocol,ICMP)流量会使用通过172.16.1.0/24的路径。

在例2-25中,HQ的Ethernet 0/0接口被管理员禁用,后面的输出信息为BR上的ping过程。

例2-25 HQ Ethernet 0/0接口关闭和在BR上观察到的结果

HQ(config)# interface Ethernet 0/0
HQ(config-if)# shutdown
*Oct 10 18:47:09.312: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 172.16.1.2
(Ethernet0/0) is down: interface down
*Oct 10 18:47:11.313: %LINK-5-CHANGED: Interface Ethernet0/0, changed state to
administratively down
*Oct 10 18:47:12.313: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/0,
changed state to down
BR#
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!.....
*Oct 9 22:04:24.088: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 172.16.1.1
(Ethernet0/0) is down: holding time expired.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<Output omitted>

在关闭HQ上的Ethernet 0/0接口后,接口上的线路协议状态立即变为down,且HQ上的EIGRP取消了通过此接口建立的邻居关系。然而,HQ端接口的状态没有被传送到对应的BR接口上。因此,BR上的EIGRP进程将不会立即声明通过Ethernet 0/0的EIGRP邻居关系断开。在没有接收到Hello数据包且保持计时器已过期之后,BR才会意识到链路另一端已经没有了活跃的对端。

在默认情况下,EIGRP在以太网接口上收敛需要花费15秒的时间。在这段时间窗口内的ICMP包会被丢弃。BR意识到邻居出现了故障,于是开始使用通过172.16.2.0/30链路的可行后继路由来转发ICMP数据包。

链路的2层状态并不反映邻居设备的操作状态,这种情况在现实世界中相当常见。如果需要加速收敛,可以调整EIGRP计时器,也可以部署其他的状态监测机制。

如果连续的ping还没完成,可以使用组合键Ctrl+Shift+6来终止ping操作。

例2-26显示了BR上的路由表。

例2-26 BR上的EIGRP路由

BR# show ip route eigrp
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

D      192.168.0.0/24 [90/1664000] via 172.16.2.1, 00:33:49, Ethernet0/1
D EX   209.165.201.0/27 [170/1792000] via 172.16.2.1, 00:33:49, Ethernet0/1

此前指向172.16.2.0/30链路的可行后继路由现在成为了后继路由,而且被插入到了路由表中。

在例2-27中,管理员使用show ip eigrp topology命令查看了BR上的拓扑表。

例2-27 BR上有新后继的EIGRP拓扑表

BR# show ip eigrp topology
EIGRP-IPv4 Topology Table for AS(100)/ID(192.168.1.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - reply Status, s - sia Status

P 172.16.2.0/30, 1 successors, FD is 1536000
        via Connected, Ethernet0/1
P 192.168.0.0/24, 1 successors, FD is 409600
        via 172.16.2.1 (1664000/128256), Ethernet0/1
P 192.168.1.0/24, 1 successors, FD is 128256
        via Connected, Loopback0
P 172.16.3.0/30, 1 successors, FD is 2169856
        via Connected, Serial2/0
P 172.16.1.0/30, 1 successors, FD is 281600
        via Connected, Ethernet0/0
P 209.165.201.0/27, 1 successors, FD is 537600
        via 172.16.2.1 (1792000/426496), Ethernet0/1

当后继路由失效之后,只有通过Ethernet 0/1接口的路由才能满足可行性条件。之前的可行后继路由现在成为了后继路由,并且也会出现在拓扑表和路由表中。第三条通过172.16.3.0/24的路由不满足可行性条件,也没有出现在show ip eigrp topology命令的输出信息中。

在例2-28中,管理员在BR上对HQ进行了连续的ping。在ping期间,管理员禁用了HQ的Ethernet 0/1接口。

例2-28 在BR上进行连续的ping且禁用HQ接口

BR# ping 192.168.0.1 repeat 100000 size 1000
Type escape sequence to abort.
Sending 100000, 1000-byte ICMP Echos to 192.168.0.1, timeout is 2 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<Output omitted>
-------------------------------------------------------------------
HQ(config)# interface ethernet 0/1
HQ(config-if)# shutdown
*Oct 10 20:42:45.548: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 172.16.2.2
(Ethernet0/1) is down: interface down
*Oct 10 20:42:47.543: %LINK-5-CHANGED: Interface Ethernet0/1, changed state to
administratively down
*Oct 10 20:42:48.543: %LINEPROTO-5-UPDOWN: Line protocol on Interface Ethernet0/1,
changed state to down
-------------------------------------------------------------------
BR#
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!......!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!
*Oct 10 20:42:56.443: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 172.16.2.1
(Ethernet0/1) is down: holding time expired
!!!!!!!!!!!
<Output omitted>

在HQ路由器上关闭Ethernet 0/1接口后,使用当前后继路由的EIGRP邻居关系就会终止。最后一个满足可行性条件的路由从拓扑和路由表中消失。DUAL计算开始,目的192.168.0.0/24进入活跃状态。BR路由器发送一个叫作查询的特殊包,用来询问邻居是否有路由可以到达丢失的那个前缀。数据包会通过唯一剩下的活跃路径172.16.3.0/30到达路由器HQ。HQ通过应答包响应查询消息,确认自己没有到达那个网络的替换路径。当BR收到应答包时,新路径的计算过程结束。

在DUAL计算期间,192.168.0.0/24会处于活跃状态。收敛过程会造成丢包,因为BR上通过172.16.2.0/30链路的EIGRP邻居的保持计时器必须过期,且路由器必须执行DUAL计算。

在BR通过后继路径检测到邻居不可达,而EIGRP计算出到达目的网络的新合法路径的这段期间,ICMP数据包会被丢弃。虽然拓扑表中所选的路由在之前的示例中不满足可行性条件,但由于拓扑表中没有了另外两条路由,因此这条路由现在成了唯一可用的路由。所以,这条路由会被选为后继路由并添加在路由表中。

如果连续的ping还没完成,可以使用组合键Ctrl+Shift+6来终止ping操作。

在例2-29中,管理员使用了命令show ip route eigrp来查看BR上路由表中的内容。

例2-29 使用新后继的BR路由表

BR# show ip route eigrp
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

D 192.168.0.0/24 [90/256512000] via 172.16.3.1, 00:32:19, Serial2/0
D EX 209.165.201.0/27 [170/256512000] via 172.16.3.1, 00:32:19, Serial2/0

HQ和BR之间唯一剩下的可用路径现在启用,并且出现在了拓扑表和路由表中。

路由器在交换路由信息之前,必须首先建立EIGRP邻居关系。会话建立后,路由器之间就会立即交换更新包,通告EIGRP拓扑表中的路由信息。切记,只有最优路径才会被通告给邻居。所以EIGRP使用的唯一路由,也就是后继路由,会被通告出去。

除了接收到的路由信息之外,拓扑表中还有两个其他的本地源:

重分布是一种把路由信息从一个源通告到另一个路由协议中的方法。在相同自治系统中使用多个路由协议时,常常需要使用重分布。另一个常见的使用情况是,管理员希望将已经定义的静态路由包含到某个特定的路由协议中。

EIGRP使用组合度量来判断到达目的网路的最优路径。获取度量值的公式中会使用下列参数。

读者可能会发现在许多图书和网上的文章中,最大传输单元(MTU)也会用于EIGRP的度量计算。虽然MTU值确实会在路由更新中与其他度量元素一起交换,但它从不会用于度量计算之中。只有在存在太多等价路径,路由器需要忽略一些到达相同目的的等价路径时,MTU才会被路由器用来充当决胜因素。此时,首选使用有最高的最小MTU值的路由。

在默认情况下,EIGRP只会使用带宽和延迟来计算度量值。计算过程中也会将接口负载和可靠性包含在内,虽然Cisco不建议使用这些参数。路由域中的所有路由器必须使用相同的元素计算度量,只在一台路由器上更改度量的计算参数可能会因环境不一致导致连通性问题。

用于度量计算的元素是由度量权重确定的,这个值也称为K值。默认的K值是:K1=1,K2=0,K3=1,K4=0,K5=0。如果K值被设置为默认值,那么路由器就只会基于带宽和延迟的值计算度量值。

可以使用show ip protocols命令来查看K值的设置。

为了计算指定目的网络的组合度量值,EIGRP会使用以下公式:

度量 = [(K1 * 带宽+ [(K2 * 带宽) / (256 – 负载)] + K3 * 延迟) * K5/(K4 + 可靠性)] * 256

如果K4和K5被设置为默认值,即0,那么公式中的K5/(K4 + 可靠性)这一部分就不会使用;也是就是该值会被设置为1。这个公式也相当于被简化为了:

度量 = (K1 * 带宽+ [(K2 * 带宽) / (256 – 负载)] + K3 * 延迟) * 256

如果考虑默认的K1-K3值,即K1=K3=1,K2=0,EIGRP的度量值公式则会被简化为:

度量 = (带宽+延迟) * 256

应注意不建议更改K值。

EIGRP度量计算使用的延迟和带宽值的格式与show interface命令显示出来的不同。EIGRP延迟值是路径上延迟的总和,单位是十毫秒,而show interface命令的输出信息则是以毫秒来显示延迟值的。EIGRP带宽是使用链路上最小带宽链路进行计算的,单位是千比特每秒(kilobits per second),并用这个数值除以107。带宽与延迟的和需要乘以256,这是为了确保EIGRP度量值对EIGRP前身,也就是IGRP的兼容。

注释


show interface输出信息中显示出来的延迟值不是测量出来的,而是计算出来的。Cisco IOS会通过协商,或者根据管理员配置的接口带宽来计算这个数值。

注释


如需全面了解EIGRP度量值的计算方法,可以参阅Routing ProtocolsCompanion Guide(Cisco Press,2014)。

EIGRP宽度量

EIGRP的组合开销度量值对于高带宽的接口或者是以太网通道(Ethernet channels)不能很好地扩展,会导致路由行为不正确或者不一致。管理员可以给接口配置的最低延迟值是10毫秒。因此,高速接口,如10吉比特以太网接口或聚合在一起的高速接口(GEether channe),在EIGRP看来就是一个GE接口。这可能造成预料之外的等价负载分担。

为了解决这类问题,管理员可以采用EIGRP宽度量(EIGRP Wide Metric)特性,来支持64位度量值计算和路由信息库(Routing Information Base,RIB)扩展,这个特性最多可以支持4.2兆兆比特接口(直连接口、或者通过像port channel或EtherChannel这类通道技术组成的接口)。

64比特的度量计算只能工作在EIGRP命名模式配置中。EIGRP经典模式则会使用32位度量进行计算。EIGRP命名模式的配置会在本章稍后的内容中进行讨论。

EIGRP宽度量超出了本书的讨论范围。更多信息请参见Cisco.com文档EIGRP Wide Metrics,地址为http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_eigrp/configuration/15-mt/ire-15-mt-book/ire-wid-met.pdf

在图2-7中,R1有两条到达R4后方网络的路径。图中显示了多条链路的带宽(Mbit/s)和延迟值(毫秒)。下面我们来判断两条路径的EIGRP度量值。

图2-7 R1有两条到达R4后方网络的路径

上面那条路径的计算过程如下。

1.顶端路径(R1-R2-R3-R4)的最低带宽是10 Mbit/s(10000 kbit/s)。这条路径的EIGRP带宽计算过程为:

2.顶端路径的延迟为:

3.因此,顶端路径的EIGRP度量计算过程为:

下面那条路径的计算过程如下。

1.底端路径(R1-R5-R6-R7-R4)的最低带宽是50000kbit/s。这条路径的EIGRP带宽计算过程为:

2.底端路径的延迟为:

3.因此,底端路径的EIGRP度量计算过程为:

因此,R1选择了下面的路径,因为这条路径的度量值更低——1843200,而上面那条路径的度量值则为2816000。R1会采用下面的路径,将R5作为下一跳路由器,因此IP路由表中的度量为1843200。上面路径的瓶颈是10Mbit/s那条链路,这也是为什么路由器会选用下方的路径。因为这意味着将数据传输到R4的速率最多只能是10Mbit/s。而在下面那条路径中,最低速率是50Mbit/s,这表示吞吐率可以达到这样的速率。因此,下面这条路径是更好的选择——比如说,我们可以以更快的速度传输大型文件。

可行性条件可以让EIGRP域内部保持无环的状态。前缀必须满足可行性条件才能成为一个可行后继路由,其通告距离必须低于后继路由的可行距离。这是EIGRP确保网络拓扑无环的主要方式。

为了说明可行性条件的重要性,请参考图2-8。路由器D以度量值5将自己的LAN网络通告给路由器B和C。路由器B和C分别将自己的度量值5和10增加到去往路由器D LAN网络的距离中,然后将这些距离通告给路由器A。路由器A将B发来的通告加上一个链路度量值3,将从C发来的通告加上一个链路度量值2。由此得出,从A到D的最优路径是穿越B的路径,因为A-B-D路径的度量值是13,而A-C-D路径的度量值则是17。

图2-8 R1有两条到达R4后方网络的路径

假设在路由器C上,路由器A和C之间链路的水平分割被禁用了片刻。当路由器A通告从A到C的最优路径度量13时,路由器C可能会使用增加后的度量值15将相同的路由通告回路由器A。此时,路由器A不知道路由器C到底是拥有去往路由器D LAN网络的其他路径还是它将最优路径的路由通告回了自己。但因为通过路由器C的RD比最优路径的FD大,路由器A还是不会使用来自路由器C的RD。这就是路由器A保证EIGRP域无环的方式。

图2-9是一个RD的计算示例。R1到达网络10.0.0.0/8有几种选择。R2、R4和R8都向R1发送了一条更新消息,每条更新中都包含了一个RD,这是由邻居路由器计算出来的、通向通告的网络10.0.0.0/8的开销。

图2-9 R1的通告距离计算

图2-10是一个计算FD的示例。R1到达网络10.0.0.0/8有几个可用选项。三个邻居的每个更新各有不同的RD。R1会通过累加到R2、R4和R8的本地链路开销和每条路径上的RD,来计算每条到达网络10.0.0.0/8路径的距离。到达目的的最低度量路径是穿越R2的路径。因此10.0.0.0/8网络的FD等于31。

图2-10 R1的可行距离计算

图2-11展示了R1上达到网络10.0.0.0/8的后继和可行后继。去往网络10.0.0.0/8一共有三条路径。路由器会计算全部这三条路径的距离(度量)和RD值,它们是路由表中的三条候选路由。通过R2的那条候选路由距离(度量)值最低,因此这条路由成为了后继路由。次优度量的路由(且当这条路由的RD比后继路由的FD低时)则会成为可行后继路由。通过R8的路由满足上述条件,因此会成为可行后继路由。通过R4的路由不满足可行性条件,因此会成为非后继路由。只有后继路由才会成为添加进路由表中的候选路由。

图2-11 R1的后继和可行后继路由

注释


如需全面了解EIGRP度量值的计算方法及示例,可以参阅Routing Protocols Companion Guide(Cisco Press,2014)。

在相对大型的网络中部署EIGRP时,需要对默认的EIGRP行为进行优化,以实现预期的扩展性。通过部署EIGRP末节配置,可以限制EIGRP的查询范围,使EIGRP更易扩展,同时降低EIGRP的复杂性。汇总可以减少路由表的规模,并优化路由器之间的路由信息交换。

EIGRP默认支持通过多条链路负载分担,以便利用那些可用的冗余链路。要想提升网络的利用率,也可以通过配置EIGRP来实现非等价的负载分担。

在完成本节内容的学习后,读者应该能够:

EIGRP依赖邻居路由器来提供路由信息。当一台路由器失去了一条路由,且拓扑表中没有可行后继路由时,它就会查找到达目的的替代路径。这称为路由变为活跃状态。

失去路由时,路由器会给(除了用于到达之前后继路由的哪个接口之外的)所有接口的邻居发送查询包(水平分割行为)。这些数据包会询问每个邻居是否有到达某个特定目的的路由。如果一台邻居路由器有替代路由,它就会对查询进行应答并不再进一步传播查询消息。如果邻居没有可替代路由,它就会向自己的每一个邻居查询替代路径。查询消息就会这样在网络中传播,这种方式可以创建一个查询的扩展树。当一台路由器对查询进行应答时,它就会停止在网络的那个分支传播查询消息。

在图2-12所示的网络中,我们可以看到丢失一条路由可能导致EIGRP域中发送大量的查询请求。当路由器R1去往网络192.168.14.0的路由丢失时,R1会通过除了后继路由接口外的所有接口(水平分割),向所有邻居路由器发送查询消息。查询消息会传播到R2。因为R2没有与丢失的路由相关的信息,所以它会继续查询自己的邻居,而邻居也会相继发起查询,以此类推。每个查询消息都要求邻居作出应答,因此流量也会增加。图中的网络拓扑显示了没有到达网络192.168.14.0的冗余链路。

图2-12 EIGRP查询和应答

管理员可以使用例2-30中的show ip eigrp topology命令查看活跃状态的路由。这类路由会由字母进行A标记,而字母P表示处于正常的被动状态。

例2-30 观察R1上的活跃路由

R1# show ip eigrp topology
EIGRP-IPv4 Topology Table for AS(1)/ID(172.16.1.2)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - reply Status, s - sia Status
P 192.168.12.0/24, 1 successors, FD is 281600
        via Connected, GigabitEthernet0/1
A 192.168.14.0/24, 0 successors, FD is 409600, Q
    1 replies, active 00:00:02, query-origin: Local origin
      Remaining replies:
         via 172.16.1.1, r, GigabitEthernet0/0
P 172.16.1.0/30, 1 successors, FD is 281600
        via Connected, GigabitEthernet0/0

EIGRP的查询传播过程效率很低,会发送许多查询,每个查询都需要一个应答。有两种主要的方案可以用来优化查询传播过程并限制链路上不必要的EIGRP负载。管理员可以使用路由汇总或者EIGRP末节路由特性来优化查询信息的交换过程。

注释


如需全面了解EIGRPDUAL及示例,可以参见Routing Protocols Companion Guide(Cisco Press,2014)。

大型EIGRP网络的稳定性通常取决于网络的查询范围,而将大型网络的分支标记为末节则是减少EIGRP查询数量并提升网络扩展性的方式之一。

EIGRP末节路由特性让使用者可以限制网络中的查询消息范围。那些配置为末节的路由器不会将学到的EIGRP路由转发给其他邻居,更重要的是,非末节路由器也不会向末节路由器发送查询消息。这就节省了CPU和带宽资源,同时提高了收敛速度。

在图2-13中,管理员将边界路由器R5到R8配置为了末节设备,所以R3和R4不会向它们发送网络192.168.14.0/24的查询消息。这样做减少了查询消息的总数和使用的带宽。将远程路由器配置为末节也可以减少拓扑的复杂程度,同时简化了配置。对星型拓扑来说尤其如此,管理员可以在双宿主远程路由器或分支上启用末节路由特性。这也就意味着管理员不需要在远程路由器上配置路由过滤就可以避免将远程路由器看作到达中心路由器的传输路径。

图2-13 EIGRP末节路由器

EIGRP的查询传播过程效率不高,这个过程会发送许多查询消息,且每个查询消息都需要进行应答。EIGRP的末节配置可以将路由器标记为末节路由器,进而减少交换的EIGRP查询消息数量。本节会介绍配置和验证EIGRP末节特性的命令。

在图2-14的拓扑中,有三台路由器:HQ、BR1A和BR1B。所有路由器都预配置了EIGRP。BR1A向HQ通告了汇总网络192.168.16.0/23,这个网络对192.168.16.0/24和192.168.17.0/24这两个前缀进行了汇总。BR1A将去往192.168.18.0/24的静态路由重分布到EIGRP(因此它是外部EIGRP路由)。BRIA在其所有直连网络上运行EIGRP。

图2-14 配置末节路由的EIGRP拓扑

例2-31展示了检查路由器HQ和BR1A上的路由表,示例中标记出来的特定路由会在之后进行讨论。

例2-31 R1和BR路由表

HQ# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        10.1.0.0/16 is directly connected, Loopback0
L        10.1.0.1/32 is directly connected, Loopback0
      172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
C        172.16.1.0/30 is directly connected, Ethernet0/0
L        172.16.1.1/32 is directly connected, Ethernet0/0
D 192.168.0.0/24 [90/409600] via 172.16.1.2, 00:12:07, Ethernet0/0
D 192.168.16.0/23 [90/307200] via 172.16.1.2, 00:12:07, Ethernet0/0
D EX 192.168.18.0/24 [170/307200] via 172.16.1.2, 00:12:07, Ethernet0/0
BR1A# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      10.0.0.0/16 is subnetted, 1 subnets
D        10.1.0.0 [90/409600] via 172.16.1.1, 00:34:56, Ethernet0/0
      172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
C        172.16.1.0/30 is directly connected, Ethernet0/0
L        172.16.1.2/32 is directly connected, Ethernet0/0
      192.168.0.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.0.0/24 is directly connected, Loopback0
L        192.168.0.1/32 is directly connected, Loopback0
D 192.168.16.0/23 is a summary, 03:05:24, Null0
      192.168.16.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.16.0/24 is directly connected, Ethernet0/1
L        192.168.16.1/32 is directly connected, Ethernet0/1
S     192.168.17.0/24 [1/0] via 192.168.16.2
S 192.168.18.0/24 [1/0] via 192.168.16.2

可以看出,HQ通过EIGRP学习到了网络192.168.0.0/24、192.168.16.0/23和192.168.18.0/24。第一条路由代表BR1A上的LAN,第二条是汇总路由,最后一条则是重分布的静态路由。

管理员可以使用show ip eigrp neighbors details来验证HQ的邻居,如例2-32所示。

例2-32 验证HQ的邻居

HQ# show ip eigrp neighbors detail
EIGRP-IPv4 Neighbors for AS(1)
H   Address     Interface                  Hold    Uptime    SRTT    RTO   Q   Seq
                                           (sec)   (ms)                   Cnt  Num
0   172.16.1.2  Et0/0                        13    02:14:33    12    100   0   20
   Version 7.0/3.0, Retrans: 0, Retries: 0, Prefixes: 3
   Topology-ids from peer - 0

BFD sessions
 NeighAddr         Interface

不难发现,BR1A是HQ唯一可见的邻居。HQ所有学到的EIGRP路由都是通过它接收到的。还要注意,BR1A和HQ配置在了EIGRP自治系统1当中。

接下来,在例2-33中,管理员使用命令debug eigrp packet terse在HQ上启用了EIGRP包调试功能,同时关闭了Loopback 0接口。

例2-33 在HQ上调试EIGRP查询和应答包

HQ# debug eigrp packets terse
    (UPDATE, REQUEST, QUERY, REPLY, IPXSAP, PROBE, ACK, STUB, SIAQUERY, SIAREPLY)
EIGRP Packet debugging is on

HQ# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
HQ(config)# interface Loopback 0
HQ(config-if)# shutdown
*Oct 8 13:11:18.173: EIGRP: Enqueueing QUERY on Ethernet0/0 tid 0 iidbQ un/rely 0/1
serno 21-21
*Oct 8 13:11:18.177: EIGRP: Sending QUERY on Ethernet0/0 tid 0
*Oct 8 13:11:18.177: AS 1, Flags 0x0:(NULL), Seq 19/0 interfaceQ 0/0 iidbQ un/
rely 0/0 serno 21-21
*Oct 8 13:11:18.178: EIGRP: Received ACK on Ethernet0/0 nbr 172.16.1.2
*Oct 8 13:11:18.178: AS 1, Flags 0x0:(NULL), Seq 0/19 interfaceQ 0/0 iidbQ un/
rely 0/0 peerQ un/rely 0/1
*Oct 8 13:11:18.178: EIGRP: Ethernet0/0 multicast flow blocking cleared
*Oct 8 13:11:18.207: EIGRP: Received REPLY on Ethernet0/0 nbr 172.16.1.2
*Oct 8 13:11:18.207: AS 1, Flags 0x0:(NULL), Seq 21/19 interfaceQ 0/0 iidbQ un/
rely 0/0 peerQ un/rely 0/0
*Oct 8 13:11:18.207: EIGRP: Enqueueing ACK on Ethernet0/0 nbr 172.16.1.2 tid 0
*Oct 8 13:11:18.207: Ack seq 21 iidbQ un/rely 0/0 peerQ un/rely 1/0
*Oct 8 13:11:18.207: Handling TLV: 242 41 for 0 route: 10.1.0.0/16
*Oct 8 13:11:18.215: EIGRP: Sending ACK on Ethernet0/0 nbr 172.16.1.2 tid 0
*Oct 8 13:11:18.215: AS 1, Flags 0x0:(NULL), Seq 0/21 interfaceQ 0/0 iidbQ un/
rely 0/0 peerQ un/rely 1/0
HQ(config-if)#
*Oct 8 13:11:20.155: %LINK-5-CHANGED: Interface Loopback0, changed state to
administratively down
*Oct 8 13:11:21.159: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0,
changed state to down

可以看到,HQ通过Ethernet 0/0接口向邻居BR1A发送了一条查询消息。EIGRP路由器使用查询包询问邻居去往某条(最近丢失的)路由的路径信息。BR1A首先通过一个Ack消息确认接收到了查询消息,接着使用一个应答包对接收到的查询消息作出了响应。应答包中的信息表明BR1A没有到达网络10.1.0.0/16的替代路由。HQ通过发送确认响应了一个应答包。

路由器HQ在丢失到达网络10.1.0.0/16的路径时,丢失路由的EIGRP状态就会变为活跃。路由进程保持在活跃状态,直到其发现了另一条路径或从邻居那里接收了所有发送请求的响应消息。

EIGRP末节选项

通过一些不同的EIGRP末节选项,管理员可以精确地指定EIGRP末节应该通告哪些路由,如表2-1所示。

表2-1 eigrp stub全局配置命令的参数

参数

描述

receive-only

(可选)设置路由器为只接收消息的邻居

leak-map name

(可选)允许基于leak map的动态前缀

connected

(可选)通告直连路由

static

(可选)通告静态路由

summary

(可选)通告汇总路由

redistributed

(可选)通告来自其他协议及自治系统的重分布路由

要想使用EIGRP将路由器配置为末节设备,可以在路由器配置模式或者地址族配置模式中使用eigrp stub命令。要想禁用EIGRP末节路由特性,则可以在这条命令前面添加关键字no

在默认情况下,配置为末节的路由器会与所有邻居共享直连和汇总路由。管理员可以将除receive-only之外的所有的末节选项组合起来使用,以便通告自己需要通告的那种路由。

connected选项可以让EIGRP末节路由器通告所有与EIGRP network命令相匹配的接口的直连路由。这个选项默认即启用,同时也是实际中使用最为广泛的末节可选项。

summary选项可以让EIGRP末节路由器发送汇总路由。管理员可以手工创建汇总路由,也可以在主类网络边界路由器上通过命令auto-summary自动创建汇总。summary默认即启用。

static选项可以让EIGRP末节路由器通告静态路由。但管理员仍然需要使用redistribute static命令将静态路由重分布到EIGRP中。

redistribute选项可以让EIGRP末节路由器通告所有重分布进来的路由,前提是管理员在末节路由器上使用redistribute命令配置了重分布。

receive-only选项会限制末节路由器,让它不能和一个EIGRP自治系统中的任何其他路由器共享它的路由信息。使用这个选项时,不允许设置其他可选项,因为它会路由器通告阻止任何类型的路由。这个选项很少使用。使用这个选项的情况包括路由器只有一个接口,或者管理员配置了带有端口地址转换(Port Address Translation,PAT)的网络地址转换(Network Address Translation,NAT),使得所有主机都隐藏在一个WAN接口之后。

在例2-34中,管理员重新打开了HQ的Loopback 0接口。在例2-35中,管理员通过命令eigrp stub将BR1A配置为了EIGRP末节,HQ上的输出信息显示,邻接关系重新得到了建立。

例2-34 重新启用H1的Loopback 0接口

HQ(config)# interface loopback 0
HQ(config-if)# no shutdown

例2-35 BR1A被配置为EIGRP末节路由器

BR1A(config)# router eigrp 1
BR1A(config-router)# eigrp stub
*Oct 18 11:51:16.232: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.1.1
(Ethernet0/0) is down: peer info changed
BR1A(config-router)#
*Oct 18 11:51:20.495: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.1.1
(Ethernet0/0) is up: new adjacency

-----------------------------------------------------------------
*Oct 18 11:51:16.228: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.1.2
(Ethernet0/0) is down: Interface PEER-TERMINATION received
HQ#
*Oct 18 11:51:20.503: EIGRP: Adding stub (1 Peers, 1 Stubs)
*Oct 18 11:51:20.503: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.1.2
(Ethernet0/0) is up: new adjacency
*Oct 18 11:51:20.503: EIGRP: Enqueueing UPDATE on Ethernet0/0 nbr 172.16.1.2 tid 0
iidbQ un/rely 0/1 peerQ un/rely 0/0
*Oct 18 11:51:20.508: EIGRP: Received UPDATE on Ethernet0/0 nbr 172.16.1.2
<Output omitted>

在将BR1A路由器配置为末节之后,EIGRP的邻接关系需要重新建立。

EIGRP末节路由器会通过EIGRP Hello包宣布自己的新状态。它发送的Hello数据包会告知邻居,链路另一端的路由器是一台末节路由器,所以它们不应该再向自己发送查询包。这会改善网络的收敛时间,因为中心路由器不需要等待远程机构发送的查询应答消息。

接下来,我们需要验证HQ是如何检测到BR1A被配置为末节路由器的。HQ上的所有调试功能都被命令undebug all所禁用了。如例2-36所示。

例2-36 在HQ上禁用调试

HQ# undebug all
All possible debugging has been turned off

在例2-37中,管理员在HQ上使用命令show ip eigrp neighbors details查看了EIGRP邻居。

例2-37 在HQ上验证邻居BR1A为EIGRP末节

HQ# show ip eigrp neighbors detail
EIGRP-IPv4 Neighbors for AS(1)
H   Address                 Interface               Hold Uptime   SRTT   RTO  Q  Seq
                                                    (sec)         (ms)       Cnt Num
0   172.16.1.2              Et0/0                     11 00:39:00    7   100  0  13
   Version 7.0/3.0, Retrans: 0, Retries: 0, Prefixes: 2
   Topology-ids from peer - 0
   Stub Peer Advertising (CONNECTED SUMMARY ) Routes
   Suppressing queries

BFD sessions
 NeighAddr           Interface

在例2-37中不难发现,路由器HQ将路由器BR1A看作是一个末节路由器。在默认情况下,末节路由器只会向邻居通告直连路由和汇总路由;而所有其他路由都会被过滤。此外,读者还可以看到与查询消息有关的信息。HQ正在抑制查询消息,因为BR1A被配置为了末节。

在例2-38中,管理员使用show ip route命令验证了BR1A上的路由表。

例2-38 在BR1A上验证路由表

BR1A# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      10.0.0.0/16 is subnetted, 1 subnets
D 10.1.0.0 [90/409600] via 172.16.1.1, 00:18:52, Ethernet0/0
      172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
C        172.16.1.0/30 is directly connected, Ethernet0/0
L        172.16.1.2/32 is directly connected, Ethernet0/0
      192.168.0.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.0.0/24 is directly connected, Loopback0
L        192.168.0.1/32 is directly connected, Loopback0
D     192.168.16.0/23 is a summary, 00:22:21, Null0
      192.168.16.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.16.0/24 is directly connected, Ethernet0/1
L        192.168.16.1/32 is directly connected, Ethernet0/1
S     192.168.17.0/24 [1/0] via 192.168.16.2
S     192.168.18.0/24 [1/0] via 192.168.16.2

可以看到,BR1A上的路由表在这台路由器被配置为末节之后没有变化。将一台路由器配置为末节不会改变或限制它从邻居收到的信息,而只会限制它与邻居共享的信息。

例2-39使用show ip route命令查看了HQ上的路由表。

例2-39 BR1A为末节时验证HQ上的路由表

HQ# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        10.1.0.0/16 is directly connected, Loopback0
L        10.1.0.1/32 is directly connected, Loopback0
      172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
C        172.16.1.0/30 is directly connected, Ethernet0/0
L        172.16.1.1/32 is directly connected, Ethernet0/0
D 192.168.0.0/24 [90/409600] via 172.16.1.2, 00:09:07, Ethernet0/0
D 192.168.16.0/23 [90/307200] via 172.16.1.2, 00:09:07, Ethernet0/0

在默认情况下,EIGRP末节路由器只会通告直连路由和汇总路由。在输出信息中可以看到,外部EIGRP路由192.168.18.0/24并没有出现在HQ的路由表中。

在例2-40中,管理员在BR1A上使用eigrp stub connected命令将其配置为了一台只通告直连路由的EIGRP末节路由器。

例2-40 BR1A配置为EIGRP Connected末节路由器

BR1A(config)# router eigrp 1
BR1A(config-router)# eigrp stub connected
*Oct 20 18:46:50.137: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.1.1
(Ethernet0/0) is down: peer info changed
*Oct 20 18:46:50.419: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.1.1
(Ethernet0/0) is up: new adjacency

在更改EIGRP末节选项后,所有邻居会话都需要断开重建。

接下来,我们在例2-41中使用show ip eigrp neighbors detail命令验证了HQ上的EIGRP邻居末节设置。

例2-41 在HQ上验证邻居BR1A为一个EIGRP Connected末节

HQ# show ip eigrp neighbors detail
EIGRP-IPv4 Neighbors for AS(1)
H   Address                 Interface          Hold Uptime   SRTT   RTO   Q   Seq
                                               (sec)         (ms)        Cnt  Num
0   172.16.1.2              Et0/0                14 00:10:25   12   100   0   8
    Version 7.0/3.0, Retrans: 0, Retries: 0, Prefixes: 2
    Topology-ids from peer - 0
    Stub Peer Advertising (CONNECTED ) Routes
    Suppressing queries

BFD sessions
 NeighAddr            Interface

例2-42在HQ路由器上使用show ip route命令验证了它的路由表。

例2-42 验证HQ路由表

HQ# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        10.1.0.0/16 is directly connected, Loopback0
L        10.1.0.1/32 is directly connected, Loopback0
      172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
C        172.16.1.0/30 is directly connected, Ethernet0/0
L        172.16.1.1/32 is directly connected, Ethernet0/0
D 192.168.0.0/24 [90/409600] via 172.16.1.2, 00:14:52, Ethernet0/0
D 192.168.16.0/24 [90/307200] via 172.16.1.2, 00:14:52, Ethernet0/0

可以看出,BR1A现在只会通告直连网络192.168.0.0/24和192.168.16.0/24。HQ不会再收到汇总路由192.168.16.0/23和指向网络192.168.18.0/24的重分布静态路由。

接下来,管理员在例2-43中使用eigrp stub receive-only命令将BR1A配置为了一台EIGR Preceive-only的末节路由器。

例2-43 BR1A配置为EIGRP Receive-Only末节路由器

BR1A(config)# router eigrp 1
BR1A(config-router)# eigrp stub receive-only
*Oct 20 19:06:42.909: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.1.1
(Ethernet0/0) is down: peer info changed
BR1A(config-router)#
*Oct 20 19:06:46.356: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.1.1
(Ethernet0/0) is up: new adjacency

每次更改EIGRP末节设置都需要重建EIGRP邻居会话。

例2-44使用show ip eigrp neighbors detail命令验证了HQ上的EIGRP邻居末节设置。

例2-44 在HQ上验证邻居BR1A为一个EIGRP Receive-Only末节

HQ# show ip eigrp neighbors detail
EIGRP-IPv4 Neighbors for AS(1)
H   Address                 Interface               Hold Uptime   SRTT   RTO  Q  Seq
                                                    (sec)         (ms)       Cnt Num
0   172.16.1.2              Et0/0                     10 00:03:03 1999  5000  0  10
   Version 7.0/3.0, Retrans: 1, Retries: 0
   Topology-ids from peer - 0
   Receive-Only Peer Advertising (No) Routes
   Suppressing queries

BFD sessions
 NeighAddr           Interface

邻居路由器现在已经配置成为了一个receive-only末节路由器。HQ会继续抑制查询数据包,但即使EIGRP会话建立起来,路由器BR1A也会不通告任何路由。

例2-45使用show ip route命令,通过HQ的路由表验证了上面的理论。

例2-45 验证HQ路由表

HQ# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        10.1.0.0/16 is directly connected, Loopback0
L        10.1.0.1/32 is directly connected, Loopback0
      172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
C        172.16.1.0/30 is directly connected, Ethernet0/0
L        172.16.1.1/32 is directly connected, Ethernet0/0

可以看到,所有动态EIGRP路由都从HQ的路由表中消失了。路由器BR1A被配置为了一台receive-only的末节路由器,因此不会向HQ通告任何路由。如果BR1A身后的所有主机都要使用PAT转换时,这是一种很有效的做法。在这样的环境中,HQ不需要知道路由器BR1A身后的网络,因为所有的出站量都会被发送给BR1A的WAN接口,在接口上将执行PAT。

在例2-46中,BR1A的路由表使用show ip route命令显示。

例2-46 配置为Receive-Only末节的BR1A的路由表

BR1A# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      10.0.0.0/16 is subnetted, 1 subnets
D 10.1.0.0 [90/409600] via 172.16.1.1, 00:05:57, Ethernet0/0
      172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
C        172.16.1.0/30 is directly connected, Ethernet0/0
L        172.16.1.2/32 is directly connected, Ethernet0/0
      192.168.0.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.0.0/24 is directly connected, Loopback0
L        192.168.0.1/32 is directly connected, Loopback0
D     192.168.16.0/23 is a summary, 01:20:33, Null0
      192.168.16.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.16.0/24 is directly connected, Ethernet0/1
L        192.168.16.1/32 is directly connected, Ethernet0/1
S     192.168.17.0/24 [1/0] via 192.168.16.2
S     192.168.18.0/24 [1/0] via 192.168.16.2

注意,即使receive-only这个末节选项也不会影响末节路由器所接收到的路由。BR1A上的路由表无论EIGRP末节配置如何都不会发生变化。

当一台路由器失去了一条路由并向邻居发送了查询消息时,它会希望能够以应答数据包的形式收到该查询消息的响应消息。如果没有成功接收查询消息的应答包,就会导致会话终止。

EIGRP使用一种可靠的组播方式来搜索替用路由。因此,接收到在网络中产生的每个查询的应答消息,对于EIGRP来说势在必得。

一旦有一条路由进入活跃状态且查询进程初始化,那么只有接收到每个查询消息的应答后,路由才能走出活跃状态并转换为被动状态。如果路由器在3分钟内(默认时间)没有接收到所有待完成查询的应答消息,路由就会进入stuck-in-active(SIA)状态。这个计时器称为活跃计时器。一旦活跃计时器过期,邻居关系就会被重置。这项设置会让通过失去的邻居所学习到的所有路由都进入活跃状态,并向失去的邻居重新通告路由器所知的所有路由。

如图2-15所示,丢失应答消息最常见的原因是两台路由器之间存在不可靠的链路,而这条链路上出现了一些丢包的情况。虽然路由器能够接收到足够的数据包来维持邻居关系,但无法接收到所有查询或应答消息。当这种情况发生时,受到影响的设备就会产生EIGRP DUAL-3-SIA错误消息。

图2-15 EIGRP丢失应答

由于丢失一个应答消息就重置邻居关系,这是非常激进的做法。在使用慢速链路的大型环境中,这种做法可能会造成收敛时间延迟以及网络不稳定。

为了克服上述限制,EIGRP引入了两种新的数据包。当查询消息没有收到应答时,EIGRP在活跃计时器的时间进程过半后(90秒后)就会发送一个SIA查询包。这种做法可以让邻居路由器通过SIA应答进行响应,确认上游路由器目前仍然在搜索替代路由。

图2-16所示的数据包会按照以下顺序进行交换。

图2-16 EIGRP Stuck in Active

减小查询消息数量还有一种方式,那就是部署路由汇总。当一台路由器接收到某个网络的EIGRP查询,而该网络包含在路由器路由表的一个汇总路由中,它会立刻发送一条应答消息,而不再进一步转发查询包。这样可以减少发送的查询数量,因此可以提升收敛时间。

在图2-17所示的情境中,路由器HQ对所有远程网络执行了汇总。汇总路由会通告给其他路由器,如路由器GW。当远程位置的连接失效,且HQ没有任何到达失去网络的可行后继时,它就会向邻居发送一个查询消息。当路由器GW接收到一个网络192.168.12.0/24的查询消息时,它会立刻使用一个应答消息作出响应,而不再进一步转发查询,因为它有一条汇总路由192.168.0.0/16,其中包含了192.168.12.0/24这个前缀。然而,由于这条路由是通过路由器HQ学来的,所以路由器GW会回应说明它没有到达192.168.12.0/24的替代路径。

图2-17 使用汇总路由减少查询

部署EIGRP汇总有几点好处。它不仅可以减小路由器上路由表的大小,还可以限制查询范围。本节会使用图2-18中的拓扑来配置EIGRP汇总。

图2-18 EIGRP汇总拓扑

在进行汇总之前,例2-47使用show ip route命令显示了HQ上的路由表。

例2-47 在汇总前验证HQ的路由表

HQ# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is 209.165.200.226 to network 0.0.0.0

S*    0.0.0.0/0 [1/0] via 209.165.200.226
      10.0.0.0/16 is subnetted, 7 subnets
D        10.10.0.0 [90/409600] via 172.16.1.2, 00:18:16, Ethernet0/1
D        10.11.0.0 [90/409600] via 172.16.1.2, 00:18:16, Ethernet0/1
D        10.12.0.0 [90/409600] via 172.16.1.2, 00:18:16, Ethernet0/1
D        10.13.0.0 [90/409600] via 172.16.1.2, 00:18:16, Ethernet0/1
D        10.64.0.0 [90/409600] via 172.16.2.2, 00:16:55, Ethernet0/2
D        10.65.0.0 [90/409600] via 172.16.2.2, 00:16:55, Ethernet0/2
D        10.66.0.0 [90/409600] via 172.16.2.2, 00:16:55, Ethernet0/2
      172.16.0.0/16 is variably subnetted, 4 subnets, 2 masks
C        172.16.1.0/30 is directly connected, Ethernet0/1
L        172.16.1.1/32 is directly connected, Ethernet0/1
C        172.16.2.0/30 is directly connected, Ethernet0/2
L        172.16.2.1/32 is directly connected, Ethernet0/2
      209.165.200.0/24 is variably subnetted, 2 subnets, 2 masks
C        209.165.200.224/27 is directly connected, Ethernet0/0
L        209.165.200.225/32 is directly connected, Ethernet0/0

通过输出信息显示,HQ从路由器BR1和BR2接收到了7个不同的内部网络。使用汇总减少路由表中路由的数量既可以提升网络的收敛速度,也可以减小查询范围。EIGRP支持自动汇总和手工汇总。

在例2-48中,管理员在BR1上使用auto-summary配置命令配置了自动EIGRP汇总。

例2-48 在BR1上配置自动汇总

BR1(config)# router eigrp 1
BR1(config-router)# auto-summary
*Oct 26 08:56:42.288: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.1.1
(Ethernet0/0) is resync: summary configured
*Oct 26 08:56:42.292: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.1.1
(Ethernet0/0) is resync: summary up, remove components

启用自动汇总时,邻居之间的邻接关系并不会终止,它们之间只会同步路由信息。auto-summary这条EIGRP命令会在有类网络边界自动汇总路由。在运行Cisco IOS 15之前版本的系统上,这种EIGRP行为默认就会启用。

在例2-49中,管理员在HQ上使用show ip route命令对汇总路由进行了验证。

例2-49 在HQ上验证BR1的汇总路由

HQ# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is 209.165.200.226 to network 0.0.0.0

S*    0.0.0.0/0 [1/0] via 209.165.200.226
      10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks
D 10.0.0.0/8 [90/409600] via 172.16.1.2, 00:17:23, Ethernet0/1
D        10.64.0.0/16 [90/409600] via 172.16.2.2, 00:32:36, Ethernet0/2
D        10.65.0.0/16 [90/409600] via 172.16.2.2, 00:32:36, Ethernet0/2
D        10.66.0.0/16 [90/409600] via 172.16.2.2, 00:32:36, Ethernet0/2
      172.16.0.0/16 is variably subnetted, 4 subnets, 2 masks
C        172.16.1.0/30 is directly connected, Ethernet0/1
L        172.16.1.1/32 is directly connected, Ethernet0/1
C        172.16.2.0/30 is directly connected, Ethernet0/2
L        172.16.2.1/32 is directly connected, Ethernet0/2
      209.165.200.0/24 is variably subnetted, 2 subnets, 2 masks
C        209.165.200.224/27 is directly connected, Ethernet0/0
L        209.165.200.225/32 is directly connected, Ethernet0/0

HQ的路由表中并没有10.10.0.0/16到10.13.0.0/16的路由。这些路由都被自动汇总的路由10.0.0.0/8所替代了。

接下来,例2-50通过show ip route命令查看了BR1上的路由表。

例2-50 BR1上的Null0汇总路由

BR1# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 12 subnets, 3 masks
D 10.0.0.0/8 is a summary, 00:15:53, Null0
C        10.10.0.0/16 is directly connected, Loopback0
L        10.10.0.1/32 is directly connected, Loopback0
C        10.11.0.0/16 is directly connected, Loopback1
L        10.11.0.1/32 is directly connected, Loopback1
C        10.12.0.0/16 is directly connected, Loopback2
L        10.12.0.1/32 is directly connected, Loopback2
C        10.13.0.0/16 is directly connected, Loopback3
L        10.13.0.1/32 is directly connected, Loopback3
D        10.64.0.0/16 [90/435200] via 172.16.1.1, 00:31:01, Ethernet0/0
D        10.65.0.0/16 [90/435200] via 172.16.1.1, 00:31:01, Ethernet0/0
D        10.66.0.0/16 [90/435200] via 172.16.1.1, 00:31:01, Ethernet0/0
      172.16.0.0/16 is variably subnetted, 4 subnets, 3 masks
D        172.16.0.0/16 is a summary, 00:15:53, Null0
C        172.16.1.0/30 is directly connected, Ethernet0/0
L        172.16.1.2/32 is directly connected, Ethernet0/0
D        172.16.2.0/30 [90/307200] via 172.16.1.1, 00:31:06, Ethernet0/0
      209.165.200.0/27 is subnetted, 1 subnets
D        209.165.200.224 [90/307200] via 172.16.1.1, 00:31:06, Ethernet0/0

可以看到,BR1路由表中有一条路由描述的是10.0.0.0/8这个网络,并且指向Null0接口。当配置了自动汇总时,这条路由会自动进入路由表中,以避免路由环路。设想若BR1接收到了一个数据包,其目的网络包含在汇总路由10.0.0.0/8之中,但是没有出现在BR1的路由表中。如果BR1有指向HQ的默认路由,它就会把这个数据包发回给HQ,而HQ则会将其发回给BR1。因此,这个数据包就会陷入路由环路中,直到生存时间(TTL)值过期。如果向邻居通告汇总路由的路由器将这条路由指向自己的Null0接口,就可以防止路由环路的问题。

在例 2-51 中,BR2 上也使用EIGRP配置命令 auto-summary 启用了自动 EIGRP汇总。

例2-51 在BR2上配置自动汇总

BR2(config)# router eigrp 1
BR2(config-router)# auto-summary
BR2(config-router)#
*Oct 26 09:30:45.251: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.2.1
(Ethernet0/0) is resync: summary configured
*Oct 26 09:30:45.255: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.2.1
(Ethernet0/0) is resync: summary up, remove components

例2-52通过show ip route命令查看了HQ的路由表,验证了HQ上的汇总路由。

例2-52 在HQ上验证BR2的汇总路由

HQ# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is 209.165.200.226 to network 0.0.0.0

S*    0.0.0.0/0 [1/0] via 209.165.200.226
D 10.0.0.0/8 [90/409600] via 172.16.2.2, 00:51:02, Ethernet0/2
                 [90/409600] via 172.16.1.2, 00:51:02, Ethernet0/1
      172.16.0.0/16 is variably subnetted, 4 subnets, 2 masks
C        172.16.1.0/30 is directly connected, Ethernet0/1
L        172.16.1.1/32 is directly connected, Ethernet0/1
C        172.16.2.0/30 is directly connected, Ethernet0/2
L        172.16.2.1/32 is directly connected, Ethernet0/2
      209.165.200.0/24 is variably subnetted, 2 subnets, 2 masks
C        209.165.200.224/27 is directly connected, Ethernet0/0
L        209.165.200.225/32 is directly connected, Ethernet0/0

注意,HQ从BR2接收到了与从BR1所接收到的相同的汇总路由。这是因为BR1和BR2都在主类网络边界,因此会通告相同的汇总路由。因为两条路由有相同的开销,所以HQ会在两条路由之间进行负载分担。

管理员使用ping命令对从HQ到IP地址10.10.0.1之间的连通性进行了测试,这个地址属于路由器BR1上的汇总网络。例2-53显示了ping测试的结果。

例2-53 测试从HQ到汇总网络的连通性

HQ# ping 10.10.0.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.10.0.1, timeout is 2 seconds:
U.U.U
Success rate is 0 percent (0/5)

连通性测试很有可能失败。如果成功接收到了ICMP应答,可以尝试测试到汇总网络中其他IP地址的连通性,如10.11.0.1、10.12.0.1或10.13.0.1。

输出U.U.U表示HQ接收到了ICMP目的不可达应答。因为HQ认为两台路由器都有到前缀10.0.0.0/8内所有网络的连接,所以它很可能会把流量转发给错误的邻居。

自动汇总在无类网络不连续的网络中会造成连通性问题。网络10.0.0.0/8代表一个大的有类网络,但在上述情景中,这个有类网络的不同部分部署在了不同的位置。鉴于当今大量网络中所使用的都是小的无类子网地址,因此自动汇总只在极少数情况下有用,所以我们不建议使用自动汇总来优化EIGRP。

要想禁用BR1和BR2上的自动汇总,需要在这两台路由器上输入命令no auto-summary,如例2-54所示。

例2-54 在BR1和BR2上禁用自动汇总

BR1(config)# router eigrp 1
BR1(config-router)# no auto-summary
*Oct 26 12:59:46.864: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.1.1
(Ethernet0/0) is resync: summary configured
---------------------------------------------------------------------------
BR2(config)# router eigrp 1
BR2(config-router)# no auto-summary
*Oct 26 13:01:07.169: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.2.1
(Ethernet0/0) is resync: summary configured

例2-55通过HQ上show ip route命令的输出信息验证了两路由器上都已经禁用了自动汇总。

例2-55 HQ的路由表验证自动汇总已被禁用

HQ# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is 209.165.200.226 to network 0.0.0.0

S*    0.0.0.0/0 [1/0] via 209.165.200.226
      10.0.0.0/16 is subnetted, 7 subnets
D        10.10.0.0 [90/409600] via 172.16.1.2, 00:23:26, Ethernet0/1
D        10.11.0.0 [90/409600] via 172.16.1.2, 00:23:26, Ethernet0/1
D        10.12.0.0 [90/409600] via 172.16.1.2, 00:23:26, Ethernet0/1
D        10.13.0.0 [90/409600] via 172.16.1.2, 00:23:26, Ethernet0/1
D        10.64.0.0 [90/409600] via 172.16.2.2, 00:22:05, Ethernet0/2
D        10.65.0.0 [90/409600] via 172.16.2.2, 00:22:05, Ethernet0/2
D        10.66.0.0 [90/409600] via 172.16.2.2, 00:22:05, Ethernet0/2
      172.16.0.0/16 is variably subnetted, 4 subnets, 2 masks
C        172.16.1.0/30 is directly connected, Ethernet0/1
L        172.16.1.1/32 is directly connected, Ethernet0/1
C        172.16.2.0/30 is directly connected, Ethernet0/2
L        172.16.2.1/32 is directly connected, Ethernet0/2
      209.165.200.0/24 is variably subnetted, 2 subnets, 2 masks
C        209.165.200.224/27 is directly connected, Ethernet0/0
L        209.165.200.225/32 is directly connected, Ethernet0/0

HQ路由器现在已经拥有了所有通告的EIGRP网络。

1.计算汇总路由

计算汇总路由需要对希望进行汇总的子网进行分析。读者需要确定所有地址中相同的最高位比特。把IP地址转换为二进制格式,就可以发现子网之间相同的比特。

在表 2-2 中,子网之间的前 13 个比特是相同的。因此,最佳的汇总路由是10.8.0.0/13。

表2-2 计算IPv4汇总路由

前缀

二进制格式

10.10.0.0/16

00001010 . 00001 010 .00000000 . 00000000

10.11.0.0/16

00001010 . 00001 011 .00000000 . 00000000

10.12.0.0/16

00001010 . 00001 110 .00000000 . 00000000

10.13.0.0/16

00001010 . 00001 111 .00000000 . 00000000

汇总路由

 

10.8.0.0/13

00001010 . 00001 000 .00000000 . 00000000

切记,汇总路由10.8.0.0/13也描述了除表中四个子网之外的一些未列出的网络,比如10.9.0.0/16和10.14.0.0/16。如果这些子网部署在了网络的不同部分,那么这个计算出的汇总路由就会造成连通性问题。在这个示例中,我们需要定义两个独立的汇总路由。汇总路由10.10.0.0/15只描述网络10.10.0.0/16和10.11.0.0/16,而汇总路由10.12.0.0/15则只描述10.12.0.0/16和10.13.0.0/16这两个子网。

如果一台路由器有两个到达相同目的的路由(如一个汇总路由以及一个有更长匹配前缀长度的明细路由),路由表进程会选择更加详细的匹配项。

书接上文,例2-56所示为管理员在BR1使用接口配置命令ip summary-address eigrp 110.8.0.0/13在Ethernet 0/0接口上配置了手工汇总。

例2-56 在BR1上配置手工汇总

BR1(config)# interface Ethernet 0/0
BR1(config-if)# ip summary-address eigrp 1 10.8.0.0/13
*Dec 3 13:22:53.406: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.1.1
(Ethernet0/0) is resync: summary configured

要配置手工路由汇总,就必须选择正确的接口来传播汇总路由、正确的自治系统编号、汇总地址及其掩码。从Cisco IOS 15开始,ip summary-address命令既可以使用点分十进制格式的子网掩码,也可使用前缀长度,如例中所示。

判断出需要汇总为一个网络的所有那些子网IP地址中相同的比特位,就可以确定要指定使用哪类汇总路由。地址之间的所有相同比特决定了汇总地址及掩码。

注意,只有在路由表中存在汇总路由的更详细项(明细条目)时,路由器才会通告汇总路由。

例2-57使用命令show ip route命令查看了BR1的路由表。

例2-57 BR1路由表中的Null0路由

BR1# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 10 subnets, 4 masks
D 10.8.0.0/13 is a summary, 00:43:25, Null0
C        10.10.0.0/16 is directly connected, Loopback0
L        10.10.0.1/32 is directly connected, Loopback0
C        10.11.0.0/16 is directly connected, Loopback1
L        10.11.0.1/32 is directly connected, Loopback1
C        10.12.0.0/16 is directly connected, Loopback2
L        10.12.0.1/32 is directly connected, Loopback2
C        10.13.0.0/16 is directly connected, Loopback3
L        10.13.0.1/32 is directly connected, Loopback3
D        10.64.0.0/14 [90/435200] via 172.16.1.1, 00:24:06, Ethernet0/0
      172.16.0.0/16 is variably subnetted, 3 subnets, 2 masks
C        172.16.1.0/30 is directly connected, Ethernet0/0
L        172.16.1.2/32 is directly connected, Ethernet0/0
D        172.16.2.0/30 [90/307200] via 172.16.1.1, 05:09:11, Ethernet0/0
      209.165.200.0/27 is subnetted, 1 subnets
D        209.165.200.224 [90/307200] via 172.16.1.1, 05:09:11, Ethernet0/0

配置路由器通告汇总路由时,路由器也会将这条路由增加到自己的路由表中,并指向Null接口以避免路由环路。转发到Null接口的数据包会被丢弃,这样可以避免路由器将数据包转发到默认路由,并由此造成路由环路的可能性。

例如,如果BR1接收到了发往网络10.8.0.0/24的数据包,那么指向Null接口的路由10.8.0.0/13就会成为最佳匹配路由。因此这个数据包就会被丢弃,因为路由器不知道更详细的路由。

如例2-58所示,BR2也使用ip summary-address eigrp 1 10.64.0.0/14接口命令在Ethernet 0/0接口上配置了手工汇总。

例2-58 在BR2上配置手工汇总

BR2(config)# interface Ethernet 0/0
BR2(config-if)# ip summary-address eigrp 1 10.64.0.0/14
*Dec 3 13:31:55.741: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.2.1
(Ethernet0/0) is resync: summary configured

汇总地址是通过分析路由器BR2上各子网的相同比特计算出来的。

例2-59所示为管理员通过命令show ip route查看HQ路由表,以验证汇总路由已经通告了出去。

例2-59 验证HQ接收的汇总路由

HQ# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is 209.165.200.226 to network 0.0.0.0

S*    0.0.0.0/0 [1/0] via 209.165.200.226
      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
D 10.8.0.0/13 [90/409600] via 172.16.1.2, 01:30:05, Ethernet0/1
D 10.64.0.0/14 [90/409600] via 172.16.2.2, 01:10:46, Ethernet0/2
      172.16.0.0/16 is variably subnetted, 4 subnets, 2 masks
C        172.16.1.0/30 is directly connected, Ethernet0/1
L        172.16.1.1/32 is directly connected, Ethernet0/1
C        172.16.2.0/30 is directly connected, Ethernet0/2
L        172.16.2.1/32 is directly connected, Ethernet0/2
      209.165.200.0/24 is variably subnetted, 2 subnets, 2 masks
C        209.165.200.224/27 is directly connected, Ethernet0/0
L        209.165.200.225/32 is directly connected, Ethernet0/0

所有分支子网被汇总成了两条汇总路由。汇总路由的度量等于被汇总的明细路由的最小度量。

此外还可以看到一条指向下一跳IP地址209.165.200.226,通过Ethernet 0/0接口可达的默认路由。

例2-60使用ping 209.165.202.129命令测试了HQ是否可以连通Internet上的外部网络。

例2-60 在HQ上测试到外部网络的连通性

HQ# ping 209.165.202.129
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 209.165.202.129, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms

外部IP地址连通性的测试成功,因为HQ有指向Internet网络的默认路由。

接下来,我们在例2-61中使用命令ping 209.165.202.129测试BR1是否与外部网络之间存在连通性。在该例中,我们也使用show ip route 209.165.202.129命令验证了路由器的路由表。

例2-61 在BR1上测试到外部网络的连通性

BR1# ping 209.165.202.129
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 209.165.202.129, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
BR1# show ip route 209.165.202.129
% Network not in table

路由器与外部IP地址209.165.202.129之间不存在连通性,因为BR1上并没有关于如何到达209.165.202.129 IP地址的信息。

去往外部网络的连通性通常都是通过默认路由实现的,因为一一描述所有独立的外部网络(比如像Internet上的那些网络)会消耗大量的时间和资源。

2.获取默认路由

路由器可以通过几种不同的方式获取默认路由。

使用默认路由的主要目的是为了减少路由表的大小。这种方法尤其适用于末节网络,因为末节网络更适合优化路由条目的数量。

路由器在安装默认路由之前,会检查默认的候选路由。

注释


在EIGRP中,默认路由不能直接注入到OSPF中,此时可以使用default-information originate命令;不过,管理员可以在接口上汇总为0.0.0.0/0。

路由器会分析所有的候选默认路由,并基于AD和路由度量值选择其中最优的候选条目作为默认路由。

选定后,路由器会将最后的网关设置为选定候选路由的下一跳。这种做法不适用于最佳候选路由正好是直连路由的情况。

在例2-62中所示的路由表中,在HQ上一条静态默认路由通过redistribute static EIGRP命令被重分布到了EIGRP中。

例2-62 验证HQ的路由表及重分布静态默认路由

HQ# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is 209.165.200.226 to network 0.0.0.0

S* 0.0.0.0/0 [1/0] via 209.165.200.226
      10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
D        10.8.0.0/13 [90/409600] via 172.16.1.2, 23:00:26, Ethernet0/1
D        10.64.0.0/14 [90/409600] via 172.16.2.2, 22:41:07, Ethernet0/2
      172.16.0.0/16 is variably subnetted, 4 subnets, 2 masks
C        172.16.1.0/30 is directly connected, Ethernet0/1
L        172.16.1.1/32 is directly connected, Ethernet0/1
C        172.16.2.0/30 is directly connected, Ethernet0/2
L        172.16.2.1/32 is directly connected, Ethernet0/2
      209.165.200.0/24 is variably subnetted, 2 subnets, 2 masks
C        209.165.200.224/27 is directly connected, Ethernet0/0
L        209.165.200.225/32 is directly connected, Ethernet0/0
HQ# configure terminal
HQ(config)# router eigrp 1
HQ(config-router)# redistribute static

注意,HQ的路由表中有静态默认路由。redistribute static命令将所有HQ上静态定义的路由重分布到了EIGRP进程中。因为这条默认路由是HQ上定义的唯一的静态路由,所以只有这条路由会被重分布。

在例2-63中,使用show ip route命令验证了BR1上的路由表。

例2-63 验证BR1上收到了重分布的静态默认路由

BR1# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is 172.16.1.1 to network 0.0.0.0

D*EX 0.0.0.0/0 [170/307200] via 172.16.1.1, 00:17:06, Ethernet0/0
      10.0.0.0/8 is variably subnetted, 10 subnets, 4 masks
D        10.8.0.0/13 is a summary, 23:10:22, Null0
C        10.10.0.0/16 is directly connected, Loopback0
L        10.10.0.1/32 is directly connected, Loopback0
C        10.11.0.0/16 is directly connected, Loopback1
L        10.11.0.1/32 is directly connected, Loopback1
C        10.12.0.0/16 is directly connected, Loopback2
L        10.12.0.1/32 is directly connected, Loopback2
C        10.13.0.0/16 is directly connected, Loopback3
L        10.13.0.1/32 is directly connected, Loopback3
D        10.64.0.0/14 [90/435200] via 172.16.1.1, 22:51:03, Ethernet0/0
      172.16.0.0/16 is variably subnetted, 3 subnets, 2 masks
C        172.16.1.0/30 is directly connected, Ethernet0/0
L        172.16.1.2/32 is directly connected, Ethernet0/0
D        172.16.2.0/30 [90/307200] via 172.16.1.1, 1d03h, Ethernet0/0
      209.165.200.0/27 is subnetted, 1 subnets
D        209.165.200.224 [90/307200] via 172.16.1.1, 1d03h, Ethernet0/0

可以看到,BR1通过EIGRP接收到了默认路由。通告默认路由的邻居路由器HQ被选为最后的网关。BR1现在会把所有目的地址未知的数据包转发给HQ。

星号(*)标记的路由0.0.0.0即为候选的默认路由。标记为D EX的路由是一个外部EIGRP路由。EIGRP会将所有从其他路由协议学到的路由或路由表中的静态路由都标记为外部路由。

如例2-64所示,管理员使用命令ping 209.165.202.129验证了BR1到外部网络的连通性。

例2-64 验证从BR1到外部网络的连通性

BR1# ping 209.165.202.129
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 209.165.202.129, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms

从BR1到外部网络之间目前可以连通。因为BR1没有目的IP地址209.165.202.129的明细信息,所以它会使用收到的默认网络将数据包转发给HQ路由器。

EIGRP可以使用通向相同目的的多条链路分发流量,从而增加有效的网络带宽。EIGRP既支持在相同开销的路径上执行负载分担,也支持在不同开销路径的上执行负载分担。

EIGRP默认支持最多4条等开销路径的负载分担。管理员可以使用maximum-paths命令配置IP路由协议支持的最大平行路由数量。路由表中可保存的一样好的路由的最大数量取决于IOS版本;经测试该值通常为32。

在交换数据包时,路由器会以数据包为单位执行通过相同度量路径的负载分担。在快速交换数据包时,路由器则会基于目的地址执行通过相同度量路径的负载分担。Cisco快速转发(CEF)默认情况下即会启用,这种技术同时支持基于数据包的负载分担和基于目的的负载分担。

通过不同开销链路执行负载分担的做法默认是禁用的。只有可行后继路由可以包含在EIGRP的负载分担中,这是为了确保拓扑是无环的。

在本节中,我们会配置EIGRP非等价负载分担。图2-19中的拓扑包含了两台通过三条链路互连的路由器。前两条Ethernet链路相同,第三条串行链路较慢。两台路由器上均已配置了EIGRP。

图2-19 EIGRP负载分担拓扑

1.EIGRP负载分担

首先,例2-65验证了HQ与R路由器IP地址192.168.0.1之间的连通性。

例2-65 验证从HQ到BR的连通性

HQ# ping 192.168.0.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.0.1, timeout is 2 seconds:
!!!!!

HQ上的路由表如例2-66所示。

例2-66 验证HQ上的路由表

HQ# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      172.16.0.0/16 is variably subnetted, 6 subnets, 2 masks
C        172.16.1.0/30 is directly connected, Ethernet0/0
L        172.16.1.1/32 is directly connected, Ethernet0/0
C        172.16.2.0/30 is directly connected, Ethernet0/1
L        172.16.2.1/32 is directly connected, Ethernet0/1
C        172.16.3.0/30 is directly connected, Serial1/0
L        172.16.3.1/32 is directly connected, Serial1/0
D 192.168.0.0/24 [90/409600] via 172.16.2.2, 00:26:18, Ethernet0/1
                        [90/409600] via 172.16.1.2, 00:26:18, Ethernet0/0

即使两路由器之间建立了三条链路,HQ也只会针对目的网络192.168.0.0/24在路由表中插入两条等价EIGRP路由。发往这个目的地址的流量会通过接口Ethernet 0/0和Ethernet 0/1进行负载分担。

HQ的路由表中包含了两条去往192.168.0.0/24网络的路径,读者可以通过观察HQ EIGRP拓扑表中存储的内容来了解这一点。例2-67所示为HQ上的EIGRP拓扑表。

例2-67 查看HQ的等价路由路由表

HQ# show ip eigrp topology
EIGRP-IPv4 Topology Table for AS(1)/ID(172.16.3.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - reply Status, s - sia Status

P 172.16.2.0/30, 1 successors, FD is 281600
        via Connected, Ethernet0/1
P 192.168.0.0/24, 2 successors, FD is 409600
        via 172.16.1.2 (409600/128256), Ethernet0/0
        via 172.16.2.2 (409600/128256), Ethernet0/1
        via 172.16.3.2 (2297856/128256), Serial1/0
P 172.16.3.0/30, 1 successors, FD is 2169856
        via Connected, Serial1/0
P 172.16.1.0/30, 1 successors, FD is 281600
        via Connected, Ethernet0/0

EIGRP拓扑表显示了HQ通过三个接口接收到的有关目的网络192.168.0.0/24的信息。Ethernet接口上的两条路由都有最低开销,因此都被选为了后继路由。第三条通过串行接口收到的路由开销值更高,因为串行链路的带宽比较低。

在默认情况下,路由器只会启用等价负载分担。要想使用非等价链路,需要进行额外的配置。

2.通过不等开销路径进行EIGRP负载分担

EIGRP可以通过多条拥有不同度量值的路由来分发流量,这种做法称为不等价负载分担。EIGRP执行负载分担的程度可以通过variance参数进行设置。通过设置variance值,EIGRP可以将多条拥有不同度量的无环路由添加到本地路由表中。EIGRP总是会把后继路由添加到本地路由表中。其余的可行后继是本地路由表中的候选路由。其他的EIGRP条目必须满足两个条件才能被添加到本地路由表中。

variance命令的默认值为1,表示路由器只执行等价负载分担;只有度量值相同的后继路由才会添加到本地路由表中。variance命令并不限制最大路径的数量;它是定义EIGRP负载分担可以接受的度量值范围的倍数。如果variance被设置为2,那么所有通过EIGRP学到的、度量小于两倍后继度量的路由都会被添加到本地路由表中。EIGRP variance命令只有一个参数,即倍数,这是负载分担的度量值,取值为1~128,默认为1,表示执行等价负载分担。

注释


EIGRP本身并不会在多条路由之间进行负载分担;它只会把路由添加到本地路由表中。而本地路由表则可以让交换硬件或软件在多条路径之间执行负载分担。

在例2-68中,管理员在HQ上修改了variance乘数,使EIGRP进行非等价负载分担。

例2-68 在HQ上配置variance参数

HQ(config)# router eigrp 1
HQ(config-router)# variance 6

通过串行链路的路径开销为2297856,而最优路径的开销为409600。所以,如果希望将通过串行链路的路径包含在路由表中,至少需要将variance值设置为6或更大。当variance被设置为6或更大时,通过串行链路的路径开销(2297856)就会小于最优路径开销乘以variance乘数的值。

例2-69所示为HQ路由表中路由的变化。

例2-69 在HQ上验证variance参数

HQ# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      172.16.0.0/16 is variably subnetted, 6 subnets, 2 masks
C        172.16.1.0/30 is directly connected, Ethernet0/0
L        172.16.1.1/32 is directly connected, Ethernet0/0
C        172.16.2.0/30 is directly connected, Ethernet0/1
L        172.16.2.1/32 is directly connected, Ethernet0/1
C        172.16.3.0/30 is directly connected, Serial1/0
L        172.16.3.1/32 is directly connected, Serial1/0
D 192.168.0.0/24 [90/2297856] via 172.16.3.2, 00:02:03, Serial1/0
                        [90/409600] via 172.16.2.2, 00:02:03, Ethernet0/1
                        [90/409600] via 172.16.1.2, 00:02:03, Ethernet0/0

配置完variance乘数之后,路由器将去往目的192.168.0.0/24的所有三条路由都添加到了路由表中。

variance值也可以通过查看IP协议设置的方法进行验证,如例2-70所示。

例2-70 验证HQ上的variance设置

HQ# show ip protocols
*** IP Routing is NSF aware ***

Routing Protocol is "eigrp 1"
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  Default networks flagged in outgoing updates
  Default networks accepted from incoming updates
  EIGRP-IPv4 Protocol for AS(1)
    Metric weight K1=1, K2=0, K3=1, K4=0, K5=0
    NSF-aware route hold timer is 240
    Router-ID: 172.16.3.1
    Topology : 0 (base)
      Active Timer: 3 min
      Distance: internal 90 external 170
      Maximum path: 4
      Maximum hopcount 100
      Maximum metric variance 6

  Automatic Summarization: disabled
  Maximum path: 4
  Routing for Networks:
    0.0.0.0
  Routing Information Sources:
    Gateway         Distance       Last Update
    172.16.2.2            90       00:02:21
    172.16.3.2            90       00:02:21
    172.16.1.2            90       00:02:21
  Distance: internal 90 external 170

这条命令输出信息中显示了路由器上当前的variance设置,以及可以用来执行负载分担的最大路径数。管理员可以使用EIGRP配置命令maximum-path修改后面的值。设置为1相当于禁用EIGRP负载分担。

EIGRP最初是为了对IPv4、IPX和AppleTalk的流量执行路由而诞生的,因此也可以轻松地扩展出路由IPv6流量的功能。虽然IPv6的EIGRP与IPv4的EIGRP大部分特性都相同,但前者也包含了一些特有的细节。

IPv4和IPv6版的EIGRP有一个主要区别,那就是后者必须在每个启用了IPv6的接口上手动启用EIGRP。

在完成本节内容的学习后,读者应该能够:

IPv6版的EIGRP旨在发送IPv6前缀/长度而不是IPv4子网/掩码值。这个版本的EIGRP在有些Cisco文档中称为EIGRPv6,以此来强调这个协议是用来处理IPv6流量的。IPv6版的EIGRP与IPv4版的EIGRP有很多共同点,但两者之间还是存在以下区别。

在本节中,我们会执行IPv6 EIGRP配置、建立及验证。图2-20的拓扑中包含了三台路由器:HQ、BR1和BR2。分支路由器通过Ethernet链路连接到中心路由器。HQ和BR1上已经预置了IPv6的EIGRP,但BR2尚未配置EIGRP。所有路由器上的IPv6地址都已配置完毕。

除了图2-20所示的IPv6全局单播地址,管理员还在每台路由器上配置了以下IPv6链路本地地址:

图2-20 IPv6的EIGRP拓扑

1.IPv6的EIGRP配置

在配置IPv6的EIGRP之前,必须在路由器上启用IPv6单播路由。例2-71所示为管理员使用全局配置命令ipv6 unicast-routing在BR2上启用IPv6路由。

例2-71 在BR2上启用IPv6路由

BR2# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
BR2(config)# ipv6 unicast-routing

对IPv6流量启用路由功能的必要命令是在全局配置模式中输入ipv6 unicast-routing。如果没有这条命令,管理员还是可以在路由器接口上配置IPv6地址,但这台路由器并不会成为IPv6路由器。

ipv6 unicast-routing命令可以让路由器:

如果在路由器上配置了IPv6路由协议,noipv6 unicast-routing将从IPv6路由表中移除所有的IPv6路由协议条目。例2-72显示了BR2上的IPv6 EIGRP配置,使用自治系统100及router ID 192.168.2.1。

例2-72 在BR2上配置EIGRP router ID

BR2(config)# ipv6 router eigrp 100
BR2(config-rtr)# eigrp router-id 192.168.2.1

注释


IPv6 EIGRP有一个shutdown特性。路由进程必须在“noshutdown”模式中,IPv6 EIGRP才能进行处理操作。在新版IOS中,noshutdown是默认的。如有必要,管理员可以在IPv6 EIGRP配置模式中输入noshutdown命令。

配置 IPv6 的 EIGRP 包括两个步骤。第一步是使用 ipv6 router eigrp 命令配置 IPv6 EIGRP 路由进程。输入命令后,必须指定自治系统编号,这与 IPv4 EIGRP 中的含义相同。它定义了一个管理员控制下的自治系统,且所有邻居路由器的值必须相同才能建立EIGRP邻接关系。

另一个重要的参数是EIGRP router ID。同IPv4的EIGRP一样,IPv6的EIGRP也使用了32位的router ID。如果路由器上没有配置活跃的IPv4地址,路由器就不能选取EIGRP router ID。此时,必须在EIGRP路由进程下手动配置router ID。

每台参与IPv4及IPv6 EIGRP的路由器都有一个32位的路由器ID标识。路由器会以环回接口上配置的最高IPv4地址来作为路由器ID。如果没有配置环回接口,路由器就会以活跃物理接口上配置的最高IPv4地址来作为路由器ID。如果路由器上也没有配置IPv4接口,那么管理员就必须手工定义路由器ID才能让IPv6 EIGRP正常工作。

例2-73展示了BR2上Ethernet 0/0和Loopback0接口的IPv6 EIGRP配置。

例2-73 在BR2接口上配置IPv6的EIGRP

BR2(config)# interface ethernet 0/0
BR2(config-if)# ipv6 eigrp 100
*Oct 23 19:57:55.933: %DUAL-5-NBRCHANGE: EIGRP-IPv6 100: Neighbor
FE80:200::1 (Ethernet0/0) is up: new adjacency
BR2(config-if)# exit
BR2(config)# interface loopback 0
BR2(config-if)# ipv6 eigrp 100

IPv6 EIGRP配置过程的第二步是在接口上启用这个协议。在接口上启用IPv6的EIGRP之前,接口上必须拥有合法的IPv6链路本地地址。这是因为IPv6的EIGRP会使用链路本地地址来建立EIGRP邻居关系。

当接口通过手工配置或动态的方式获取到全局IPv6地址之后,这个接口上就会自动创建出链路本地地址。Cisco IOS会使用EUI-64来创建链路本地地址的接口ID。

在没有分配全局单播地址的接口上,管理员也可以使用接口模式命令ipv6 enable在接口上启用IPv6。此时,接口会自动分配到IPv6链路本地地址。重复一遍,接口ID会使用EUI-64格式生成。

不过,自动创建的EUI-64链路本地地址难于记忆和分辨,因为这样的64位接口ID没有提供任何描述性的信息。要想弥补这一点,通常的做法是在路由器上使用命令ipv6 address link-local-address link-local手工分配一个容易分辨的IPv6链路本地地址。管理员可以在一台路由器的所有链路上配置使用相同的链路本地地址,只要链路本地地址在每条链路上唯一即可。

例2-74查看了已经与路由器HQ建立的EIGRP IPv6邻居邻接关系。

例2-74 在BR2上验证IPv6 EIGRP的邻居邻接

BR2# show ipv6 eigrp neighbors
EIGRP-IPv6 Neighbors for AS(100)
H   Address                 Interface               Hold Uptime   SRTT   RTO  Q  Seq
                                                    (sec)         (ms)       Cnt Num
0 Link-local address: Et0/0 13 08:25:34 9 100 0 16
 FE80:200::1

命令show ipv6 eigrp neighbors的输出消息与showip eigrp neighbors的输出信息类似。但读者可以观察到这两者的地址格式字段存在区别,这是因为前者是使用链路本地IPv6地址来建立EIGRP邻居关系的。其他字段的含义均与IPv4验证命令所显示的字段含义相同。

例2-75显示了BR2上的IPv6 EIGRP拓扑表。

例2-75 在BR2上验证IPv6 EIGRP的拓扑表

BR2# show ipv6 eigrp topology
EIGRP-IPv6 Topology Table for AS(100)/ID(192.168.2.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - reply Status, s - sia Status

P 2001:DB8:0:2::/64, 1 successors, FD is 435200
        via FE80:200::1 (435200/409600), Ethernet0/0
P 2001:DB8:0:200::/64, 1 successors, FD is 281600
        via Connected, Ethernet0/0
P 2001:DB8::/64, 1 successors, FD is 435200
        via FE80:200::1 (435200/409600), Ethernet0/0
P 2001:DB8:0:1::/64, 1 successors, FD is 435200
        via FE80:200::1 (435200/409600), Ethernet0/0
P 2001:DB8:0:3::/64, 1 successors, FD is 435200
        via FE80:200::1 (435200/409600), Ethernet0/0
P 2001:DB8:0:100::/64, 1 successors, FD is 307200
        via FE80:200::1 (307200/281600), Ethernet0/0

命令的输出消息再次显示了IPv4与IPv6 EIGRP之间的相似之处。两协议都使用了组合度量值,这是由默认接口带宽和延迟参数计算出来的一个整数值。为了把数据包发送给目的地址,路由器会选择度量值最小(最优)的路由。这条路由称为后继路由,它会被添加到路由表中。其他满足可行性条件的路由则会成为候选可行后继路由。

IPv6的EIGRP会使用链路本地地址来建立邻居关系,这些地址也会作为学习路由的源地址显示在拓扑表中。

例2-76 在BR2上显示IPv6路由表

BR2# show ipv6 route eigrp
IPv6 Routing Table - default - 10 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
       B - BGP, R - RIP, I1 - ISIS L1, I2 - ISIS L2
       IA - ISIS interarea, IS - ISIS summary, D - EIGRP, EX - EIGRP external
       ND - ND Default, NDp - ND Prefix, DCE - Destination, NDr - Redirect
       O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
D   2001:DB8::/64 [90/435200]
       via FE80:200::1, Ethernet0/0
D 2001:DB8:0:1::/64 [90/435200]
       via FE80:200::1, Ethernet0/0
D   2001:DB8:0:2::/64 [90/435200]
       via FE80:200::1, Ethernet0/0
D   2001:DB8:0:3::/64 [90/435200]
       via FE80:200::1, Ethernet0/0
D   2001:DB8:0:100::/64 [90/307200]
       via FE80:200::1, Ethernet0/0

拓扑表中的后继路由是会被添加到路由表的候选路由。方括号中的第一个数为管理距离,默认与IPv4 EIGRP的管理距离相同。对于内部EIGRP路由,这个值会设置为90。方括号中的第二个数代表可行距离,是最优路径的EIGRP组合度量值。

例2-77显示了从BR2 LAN接口到BR1 LAN地址的ping测试结果。

例2-77 验证到BR1 LAN的连通性

BR2# ping 2001:DB8:0:1::1 source loopback 0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:DB8:0:1::1, timeout is 2 seconds:
Packet sent with a source address of 2001:DB8:0:16::1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms

如果已经配置BR2路由器上的LAN和WAN接口使用IPv6的EIGRP进行通告,那么LAN接口间的ICMP echo和应答数据包也就可以成功地进行发送和接收。

2.计算IPv6汇总路由

要想计算IPv6汇总路由,需要首先分析希望进行汇总的子网。需要计算所有地址中相同的最高比特位。将IP地址转换为部分二进制格式就可以分辨出各个子网相同的比特。

在表 2-3 中,4 个子网的前 62 个比特位是相同的。因此,最佳的汇总路由是2001:DB8:0:0::/62。

表2-3 计算IPv6汇总路由

前缀

二进制格式

2001:DB8:0:0::64

2001:DB8:0:00000000000000 00::/64

2001:DB8:0:1::64

2001:DB8:0:00000000000000 01::/64

2001:DB8:0:2::64

2001:DB8:0:00000000000000 10::/64

2001:DB8:0:3::64

2001:DB8:0:00000000000000 11::/64

汇总路由

 

2001:DB8:0:0::62

2001:DB8:0:00000000000000 00::/62

例2-78显示了路由器BR1通过命令ipv6 summary-address eigrp汇总了所有本地前缀。

例2-78 配置IPv6 EIGRP汇总路由

BR1(config)# interface Ethernet0/0
BR1(config-if)# ipv6 summary-address eigrp 100 2001:DB8:0:0::/62
*Oct 24 18:14:31.222: %DUAL-5-NBRCHANGE: EIGRP-IPv6 100: Neighbor
FE80:100::1 (Ethernet0/0) is resync: summary configured

汇总技术可以用一条比较短的前缀来代替几条比较长的前缀。IPv6 EIGRP中汇总路由的唯一方式是手工汇总。IPv6的EIGRP不支持自动汇总。IPv6的EIGRP与IPv4的EIGRP相似,可以在接口配置模式使用ipv6 summary-address eigrp命令配置手工汇总。在给IPv6的EIGRP配置汇总路由之后,路由器会在配置了汇总的接口上重新同步其邻居关系。BR1此后只会向HR路由器发送汇总的路由条目,而不会再发送那些明细前缀。

汇总可以减少路由表中路由条目数量,并可以消除一部分网络出现故障后,路由条目进行不必要的路由更新,进而提升了网络稳定性。汇总也可以减少对处理器以及对内存资源的需求。

例2-79展示了BR2的IPv6路由表。

例2-79 验证BR2上收到的汇总路由

BR2# show ipv6 route eigrp
IPv6 Routing Table - default - 7 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
       B - BGP, R - RIP, I1 - ISIS L1, I2 - ISIS L2
       IA - ISIS interarea, IS - ISIS summary, D - EIGRP, EX - EIGRP external
       ND - ND Default, NDp - ND Prefix, DCE - Destination, NDr - Redirect
       O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
D 2001:DB8::/62 [90/435200]
     via FE80:200::1, Ethernet0/0
D   2001:DB8:0:100::/64 [90/307200]
     via FE80:200::1, Ethernet0/0

路由器BR2上IPv6路由表的内容显示,四个LAN前缀由一个长度更短的/62汇总前缀所取代。

另一个在验证IPv6 EIGRP时非常常用的命令是show ipv6 protocols,如例2-80所示。这条命令的输出信息中包含的是参与IPv6 EIGRP路由的接口、K值以及router ID。IPv6 EIGRP内部和外部路由的默认AD均与IPv4 EIGRP相同,即90和170。这条命令也可以看出IPv6 EIGRP是一款距离矢量型路由协议;它的最大跳数相对来说比较大,是100。

例2-80 在BR1上验证IPv6的EIGRP

BR2# show ipv6 protocols
IPv6 Routing Protocol is "connected"
IPv6 Routing Protocol is "ND"
IPv6 Routing Protocol is "eigrp 100"
EIGRP-IPv6 Protocol for AS(100)
  Metric weight K1=1, K2=0, K3=1, K4=0, K5=0 K6=0
  NSF-aware route hold timer is 240
  Router-ID: 192.168.2.1
  Topology : 0 (base)
    Active Timer: 3 min
    Distance: internal 90 external 170
    Maximum path: 16
    Maximum hopcount 100
    Maximum metric variance 1
    Total Prefix Count: 0
    Total Redist Count: 0

  Interfaces:
     Ethernet0/0
     Loopback0
  Redistribution:
    None

虽然完成基本的EIGRP配置非常简单,但配置其他参数也会增加配置的复杂性。其中有一些参数需要在全局配置模式下进行配置,其他参数则需要在特定接口的配置模式下配置。在配置IPv6 EIGRP时,配置过程可会复杂到让人无法忍受的地步。管理员需要使用相似但略有不同的命令和配置方式来启用IPv6的EIGRP。

Cisco引入了一种配置EIGRP的全新方式,这种方式称为命名的EIGRP。通过这种方式,管理员可以把所有EIGRP配置集中在一处,为所有下层网络协议使用统一的配置命令。

在完成本节内容的学习后,读者应该能够:

在一台路由器上同时配置IPv4和IPv6的EIGRP可能是一项十分复杂的任务,因为管理员需要在不同的路由器配置模式中进行配置,即router eigrpipv6 router eigrp。有一种新的配置方式可以在一个配置模式下同时配置IPv4和IPv6的EIGRP。

命名的EIGRP配置可以消除同时配置IPv4和IPv6 EIGRP时的复杂性。例如,在IPv4的EIGRP中宣告接口的配置需要在EIGRP路由器配置模式中进行。但在IPv6的EIGRP中,管理员则需在特定的接口上配置宣告。这种差异可能会让人混淆,这也就是EIGRP命名配置之所以希望统一EIGRP配置并简化配置任务的原因,使用EIGRP命名配置可以减少配置出错的可能。

在Cisco IOS版本15.0(1)M及之后的版本中,可以采用EIGRP命名配置的方法。

图2-21所示为本节中配置命名EIGRP时使用的拓扑。在拓扑中可以看到有三台路由器都同时配置了IPv4和IPv6地址。HQ、BR1和BR2上都配置了基本的IPv4和IPv6 EIGRP。

图2-21 命名EIGRP拓扑

为了验证拓扑中IPv4和IPv6的完全连通性,我们从BR2向BR2发送了ping测试,如例2-81所示。

例2-81 验证IPv4和IPv6连通性

BR2# ping 192.168.1.1 source Loopback0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
Packet sent with a source address of 192.168.2.1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
BR2# ping 2001:DB8:0:1::1 source Loopback0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2001:DB8:0:1::1, timeout is 2 seconds:
Packet sent with a source address of 2001:DB8:0:2::1
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms

因为拓扑中的三台路由器都预配置了IPv4和IPv6的EIGRP,因此连接性测试应该是成功的。

BR2上现有的EIGRP配置如例2-82所示。

例2-82 当前的IPv4和IPv6 EIGRP配置

BR2# show running-config
<Output omitted>
interface Loopback0
 ip address 192.168.2.1 255.255.255.0
 ipv6 address 2001:DB8:0:2::1/64
 ipv6 enable
 ipv6 eigrp 1
!
interface Loopback1
 ip address 192.168.3.1 255.255.255.0
 ipv6 address 2001:DB8:0:3::1/64
 ipv6 enable
 ipv6 eigrp 1
!
interface Ethernet0/0
 ip address 172.16.1.6 255.255.255.252
 ipv6 address 2001:DB8:0:101::2/64
 ipv6 enable
 ipv6 eigrp 1
<Output omitted>
router eigrp 1
 network 0.0.0.0
<Output omitted>
ipv6 router eigrp 1
<Output omitted>

可以看到IPv4和IPv6的EIGRP都配置了自治系统1。所有显示出来的IPv4配置都在路由器配置模式中,而IPv6 EIGRP的配置命令则分别出现在路由器配置模式和每个接口的配置中。

在BR2上为IPv4和IPv6配置命名EIGRP之前,我们移除了基本的EIGRP配置,如例2-83所示。

例2-83 在BR2上移除IPv4和IPv6 EIGRP配置

BR2# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
BR2(config)# no router eigrp 1
BR2(config)# no ipv6 router eigrp 1
BR2(config)#
*Dec 27 09:50:05.585: %DUAL-5-NBRCHANGE: EIGRP-IPv6 1: Neighbor
FE80::A8BB:CCFF:FE00:3310 (Ethernet0/0) is down: procinfo free
BR2(config)# interface Ethernet0/0
BR2(config-if)# no ipv6 eigrp 1
BR2(config-if)# interface Loopback0
BR2(config-if)# no ipv6 eigrp 1
BR2(config-if)# interface Loopback1
BR2(config-if)# no ipv6 eigrp 1

清除配置时,IPv4的基本EIGRP配置以及一部分IPv6 EIGRP的配置需要在全局配置模式下进行清除,此外还有一些IPv6 EIGRP配置需要从接口配置模式下清除。

1.地址族

对于 IPv4 网络,经典或基本 EIGRP 的配置需要使用全局配置命令 router eigrp as-number来实现,而IPv6则需要使用命令ipv6 router eigrp as-number。在这两种情况下,自治系统编号的作用都是标识独立的EIGRP进程。

EIGRP命名配置模式则需要使用全局配置命令router eigrp virtual-instance-name进行配置。IPv4和IPv6的EIGRP都可以在这个模式下配置。

EIGRP支持多协议,且可以承载许多不同路由类型的信息。命名EIGRP配置是按照分层的方式进行组织的,某个特定路由类型的配置需要在相同的地址族下完成。

IPv4单播和IPv6单播是两种最常使用的地址族。

2.IPv4地址族的EIGRP

例2-84使用图2-21所示的拓扑,展示了BR2的命名EIGRP配置,示例中的虚拟实例被命名为了LAB。命名EIGRP需要在全局配置模式中进行配置,配置时在命令router eigrp后面加上EIGRP虚拟实例的名称。这个名称仅本地有效,不需要与邻居路由器的命名相同。router eigrp virtual-instance-name命令会定义一个EIGRP实例,这个EIGRP实例可以用于所有的地址族中。此时,路由协议尚未启用。管理员必须首先定义至少一个地址族。

例2-84 BR2上IPv4地址族被增加到EIGRP命名配置中

BR2(config)# router eigrp LAB
BR2(config-router)# address-family ipv4 autonomous-system 1
BR2(config-router-af)#

例2-84显示了BR2使用现有的自治系统编号1进入IPv4地址族配置模式。EIGRP路由域中所有路由器的自治系统编号必须相同。

EIGRP命名配置模式下的命令ipv4 address-family,语法和参数如表2-4所示:

address-family ipv4 [multicast] [unicast] [vrf vrf-name] autonomous-system autonomous- system-number

表2-4 EIGRP address-family ipv4命令参数

参数

描述

ipv4

选择IPv4协议地址族

multicast

(可选)指定组播地址族。只有在EIGRP命名IPv4配置中才可以使用这个关键字

unicast

(可选)指定单播地址族。这是默认设置

vrf vrf-name

(可选)指定VRF名称

autonomous-system autonomous-system-number

指定自治系统编号

命令address-family会启用IPv4地址族,并以定义的自治系统启动EIGRP。输入这条命令就会进入地址族配置模式,这一点通过前面的提示符就可以体现出来。

在IPv4地址族配置模式中,管理员可以使用network命令针对特定接口启用EIGRP,这里还可以定义其他的通用参数,如router-ideigrp stub

地址族默认为单播地址族,除非管理员手动修改设置。单播地址族会用于进行单播路由交换。

注释


在经典或基础的IPv4和IPv6 EIGRP配置中,EIGRP命令address-family对于IPv4和IPv6都适用。配置方法与命名EIGRP相似。

接下来在地址族配置模式中,管理员在BR2上为所有的IPv4接口启用了EIGRP,如例2-85所示。

例2-85 在IPv4地址族配置模式中启用所有接口

BR2(config-router-af)# network 0.0.0.0
*Dec 27 14:15:53.944: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor 172.16.1.5
(Ethernet0/0) is up: new adjacency

在命名配置中,可以使用命令network为接口启用IPv4EIGRP,具体的配置方法与一般的EIGRP配置方式相同。可以通过反掩码来专门指定接口地址,或者使用0.0.0.0在所有启用IPv4的接口上启用EIGRP。

如需验证命名IPv4 EIGRP的配置、BR2上的EIGRP邻居、EIGRP拓扑表以及路由表中的EIGRP路由,方法如例2-86所示。

例2-86 验证BR2 IPv4 EIGRP的命名配置

BR2# show ip eigrp neighbors
EIGRP-IPv4 VR(LAB) Address-Family Neighbors for AS(1)
H   Address                 Interface              Hold Uptime   SRTT   RTO  Q  Seq
                                                   (sec)         (ms)       Cnt Num
0   172.16.1.5              Et0/0                    14 00:21:56   10   100  0  12

BR2# show ip eigrp topology
EIGRP-IPv4 VR(LAB) Topology Table for AS(1)/ID(192.168.3.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - reply Status, s - sia Status

P 192.168.3.0/24, 1 successors, FD is 163840
        via Connected, Loopback1
P 192.168.2.0/24, 1 successors, FD is 163840
        via Connected, Loopback0
P 10.0.0.0/24, 1 successors, FD is 458752000
        via 172.16.1.5 (458752000/327761920), Ethernet0/0
P 192.168.1.0/24, 1 successors, FD is 524288000
        via 172.16.1.5 (524288000/458752000), Ethernet0/0
P 172.16.1.4/30, 1 successors, FD is 131072000
        via Connected, Ethernet0/0
P 172.16.1.0/30, 1 successors, FD is 196608000
        via 172.16.1.5 (196608000/131072000), Ethernet0/0

BR2# show ip route eigrp
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      10.0.0.0/24 is subnetted, 1 subnets
D        10.0.0.0 [90/3584000] via 172.16.1.5, 00:36:57, Ethernet0/0
      172.16.0.0/16 is variably subnetted, 3 subnets, 2 masks
D        172.16.1.0/30 [90/1536000] via 172.16.1.5, 00:36:57, Ethernet0/0
D     192.168.1.0/24 [90/4096000] via 172.16.1.5, 00:36:57, Ethernet0/0

即使在命名配置模式中配置EIGRP,EIGRP的操作以及与邻居的交互方式也不会有所改变。管理员可以使用相同的验证命令来分析和验证EIGRP的状态。

可以使用地址族配置模式中的命令af-interface interface-type interface number在IPv4和IPv6的EIGRP进程中配置或者移除某个接口。这条命令一般用来在接口上配置注入手工汇总和认证这类的参数。我们会在下文中用IPv6地址族的EIGRP来具体介绍这条命令。

3.IPv6地址族的EIGRP

例2-87所示为将自治系统1的IPv6地址族添加到BR2上的EIGRP命名配置中。

例2-87 BR2上IPv6地址族被增加到EIGRP命名配置中

BR2(config)# router eigrp LAB
BR2(config-router)# address-family ipv6 autonomous-system 1
BR2(config-router-af)#
*Dec 30 09:37:23.652: %DUAL-5-NBRCHANGE: EIGRP-IPv6 1: Neighbor
FE80::A8BB:CCFF:FE00:3310 (Ethernet0/0) is up: new adjacency

EIGRP命令address-family ipv6需要在路由器配置模式中进行配置,这条命令的语法和参数如表2-5所示:

address-family ipv6 [unicast] [vrf vrf-name] autonomous-system autonomous-system-number

表2-5 EIGRP address-family ipv6命令参数

参数

描述

ipv6

选择IPv6协议地址族

unicast

(可选)指定单播地址族;这是默认设置

vrf vrf-name

(可选)指定VRF名称

autonomous-system autonomous-system-number

指定自治系统编号

在定义IPv6地址族时,使用正确的自治系统编号非常重要。在初始状态下,拓扑中的三台路由器都配置了IPv6自治系统1,因此如果不想重新配置HQ和BR1,管理员也需要使用相同的自治系统。切记,IPv4和IPv6地址族之间的自治系统编号并不需要相同;而相同地址族中邻居之间的编号必须相同。

注释


IPv4和IPv6地址族的EIGRP自治系统编号不需要相同。对于IPv4和IPv6,只需要在相同的EIGRP路由域中的所有路由器都使用相同的自治系统编号。

注意,定义完IPv6地址族之后,IPv6 EIGRP邻居关系立刻就会建立起来。IPv6的EIGRP不需要在接口上启用。所有启用了IPv6的接口都会自动包含在IPv6的EIGRP进程中。

在运行配置中,IPv6地址族配置默认显示为单播地址族。

可以使用地址族配置模式中的命令af-interface interface-type interface number,在IPv6的EIGRP进程中配置或移除某个(某些)接口,详见表2-6。

af-interface {default | interface-type interface number}

表2-6 af-interface地址族配置模式命令参数

参数

描述

default

指定默认的地址族接口配置模式。这个模式下应用的命令,会影响这个地址族实例所使用的所有接口

interface-type interface number

地址族子模式命令会影响的接口类型和编号

在例2-88中,管理员使用BR2上没有的接口Ethernet 0/1进行了配置(因为这样不会影响当前的配置)。管理员在地址族接口配置模式中使用命令shutdown把接口从IPv6的EIGRP中移除,而这个接口默认包含在内。不过,由于这个接口还有其他的IPv6用途,因此它仍然处于up/up状态。这个接口仍可以由网络上的其他设备ping通。

例2-88 在一个接口上禁用IPv6的EIGRP

BR2(config)# router eigrp LAB
BR2(config-router)# address-family ipv6 autonomous-system 1
BR2(config-router-af)# af-interface ethernet 0/1
BR2(config-router-af-interface)# shutdown

命令af-interface也可以用来配置其他特定的EIGRP接口参数,如认证、带宽百分比以及手工汇总等。这些选项的完整列表会在本章之后的例2-95中进行介绍。

例2-89验证了BR2上的EIGRP邻居、IPv6 EIGRP拓扑表以及IPv6路由表中的EIGRP路由。在基础配置模式和命名配置模式中,验证IPv6 EIGRP所使用的命令相同。

例2-89 在BR2上验证IPv6的EIGRP

BR2# show ipv6 eigrp neighbors
EIGRP-IPv6 VR(LAB) Address-Family Neighbors for AS(1)
H   Address                 Interface              Hold Uptime   SRTT   RTO  Q  Seq
                                                   (sec)         (ms)       Cnt Num
0   Link-local address:     Et0/0                    10 02:03:36 1594  5000  0  11
    FE80::A8BB:CCFF:FE00:3310

BR2# show ipv6 eigrp topology
EIGRP-IPv6 VR(LAB) Topology Table for AS(1)/ID(192.168.3.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - reply Status, s - sia Status

P 2001:DB8:0:2::/64, 1 successors, FD is 163840
        via Connected, Loopback0
P 2001:DB8::/64, 1 successors, FD is 458752000
        via FE80::A8BB:CCFF:FE00:3310 (458752000/327761920), Ethernet0/0
P 2001:DB8:0:1::/64, 1 successors, FD is 524288000
        via FE80::A8BB:CCFF:FE00:3310 (524288000/458752000), Ethernet0/0
P 2001:DB8:0:3::/64, 1 successors, FD is 163840
        via Connected, Loopback1
P 2001:DB8:0:100::/64, 1 successors, FD is 196608000
        via FE80::A8BB:CCFF:FE00:3310 (196608000/131072000), Ethernet0/0
P 2001:DB8:0:101::/64, 1 successors, FD is 131072000
        via Connected, Ethernet0/0

BR2# show ipv6 route eigrp
IPv6 Routing Table - default - 10 entries
Codes: C - Connected, L - Local, S - Static, U - Per-user Static route
       B - BGP, HA - Home Agent, MR - Mobile Router, R - RIP
       H - NHRP, I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea
       IS - ISIS summary, D - EIGRP, EX - EIGRP external, NM - NEMO
       ND - ND Default, NDp - ND Prefix, DCE - Destination, NDr - Redirect
       O - OSPF Intra, OI - OSPF Inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2, l - LISP
D   2001:DB8::/64 [90/3584000]
     via FE80::A8BB:CCFF:FE00:3310, Ethernet0/0
D   2001:DB8:0:1::/64 [90/4096000]
     via FE80::A8BB:CCFF:FE00:3310, Ethernet0/0
D   2001:DB8:0:100::/64 [90/1536000]
     via FE80::A8BB:CCFF:FE00:3310, Ethernet0/0

例2-90所示为运行配置,输出信息显示了BR2上命名EIGRP的配置结构。

例2-90 展示BR2的运行配置

BR2# show running config | section router eigrp
router eigrp LAB
 !
 address-family ipv4 unicast autonomous-system 1
  !
  topology base
  exit-af-topology
  network 0.0.0.0
 exit-address-family
 !
 address-family ipv6 unicast autonomous-system 1
  !
  topology base
  exit-af-topology
 exit-address-family

请注意,配置都是围绕着地址族以分层的方式进行构建的。地址族之间的配置也是统一的,这意味着像认证和汇总这样的额外参数都可以用相同的方式进行配置。

配置的拓扑库部分指的是拓扑库配置模式。拓扑库中所配置的,是EIGRP配置中与拓扑表相关的那部分内容。比如,在拓扑库中可以定义variancemaximum-paths参数,以定义负载分担的方式,或者从其他路由源重分布路由。这部分内容会在本章稍后的例2-97中讨论。

例2-91显示了在命名EIGRP配置模式中,如何配置手工汇总。在EIGRPIPv4地址族中,管理员进入了地址族接口配置模式,对BR2的环回前缀进行了汇总。

例2-91 在命名配置模式中进行EIGRP汇总

BR2(config)# router eigrp LAB
BR2(config-router)# address-family ipv4 autonomous-system 1
BR2(config-router-af)# af-interface ethernet 0/0
BR2(config-router-af-interface)# summary-address 192.168.2.0/23
BR2(config-router-af-interface)#
*Dec 30 13:36:07.935: %DUAL-5-NBRCHANGE: EIGRP-IPv4 1: Neighbor
172.16.1.5 (Ethernet0/0) is resync: summary configured

使用命令af-interface进入地址族接口配置模式。所有接口相关的EIGRP命令都可以在地址族接口配置模式中进行配置。汇总、Hello和Dead计时器、被动接口设置均在此列。

在IPv4地址族接口配置模式中,可以使用summary-address命令汇总IPv4前缀。管理员可以通过十进制格式或者前缀长度格式的方式来指定子网掩码,如例中所示。

查看BR1的路由表即可看到汇总的路由条目,如例2-92所示。

例2-92 展示BR1包含汇总路由的路由表

BR1# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      10.0.0.0/24 is subnetted, 1 subnets
D        10.0.0.0 [90/409600] via 172.16.1.1, 3d05h, Ethernet0/0
      172.16.0.0/16 is variably subnetted, 3 subnets, 2 masks
C        172.16.1.0/30 is directly connected, Ethernet0/0
L        172.16.1.2/32 is directly connected, Ethernet0/0
D        172.16.1.4/30 [90/307200] via 172.16.1.1, 3d05h, Ethernet0/0
      192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.1.0/24 is directly connected, Loopback0
L        192.168.1.1/32 is directly connected, Loopback0
D 192.168.2.0/23 [90/307200] via 172.16.1.1, 00:34:21, Ethernet0/0

可以看到BR1现在只接收到了描述BR2上两个环回的汇总路由。

如例2-93所示,除Ethernet 0/0外,所有BR2的IPv6接口都被配置为了被动接口。

例2-93 配置除Ethernet 0/0外的所有IPv6接口为被动

BR2(config)# router eigrp LAB
BR2(config-router)# address-family ipv6 autonomous-system 1
BR2(config-router-af)# af-interface default
BR2(config-router-af-interface)# passive-interface
*Dec 31 08:42:40.864: %DUAL-5-NBRCHANGE: EIGRP-IPv6 1: Neighbor
FE80::A8BB:CCFF: FE00:F010 (Ethernet0/0) is down: interface passive
BR2(config-router-af-interface)# exit
BR2(config-router-af)# af-interface ethernet0/0
BR2(config-router-af-interface)# no passive-interface
*Dec 31 08:42:57.111: %DUAL-5-NBRCHANGE: EIGRP-IPv6 1: Neighbor
FE80::A8BB:CCFF: FE00:F010 (Ethernet0/0) is up: new adjacency

在使用命名方式配置EIGRP时,可以使用af-interface default命令来定义应用到(属于一个地址族的)EIGRP接口的用户默认设置。例如,在默认情况下,认证模式是禁用的,而管理员可以为地址族中的所有EIGRP接口启用消息摘要5(MD5)认证,在地址族接口配置模式中通过不同的地址族接口配置命令,可以选择性地覆盖新的默认设置。

例2-93中的输出信息显示,passive-interface命令应用到了所有接口,包括连接BR2和网络其余部分的Ethernet 0/0接口。

进入af-interface配置模式并指定对应的接口可以编辑各个接口的设置。Ethernet 0/0接口配置了命令no passive-interface后,EIGRP邻居邻接关系就会重建。

使用af-interface default命令时要多加小心,因为不同类型接口的默认设置也有可能不同。例如,多数接口的默认Hello间隔为5秒,但慢速NBMA接口则为60秒,但在地址族接口配置模式中更改Hello间隔则会影响所有的接口。

例2-94中使用show ip protocols命令验证接口被标记为被动。

例2-94 验证BR2上的被动接口

BR2# show ipv6 protocols
IPv6 Routing Protocol is "connected"
IPv6 Routing Protocol is "ND"
IPv6 Routing Protocol is "eigrp 1"
EIGRP-IPv6 VR(lab) Address-Family Protocol for AS(1)
  Metric weight K1=1, K2=0, K3=1, K4=0, K5=0 K6=0
  Metric rib-scale 128
  Metric version 64bit
  NSF-aware route hold timer is 240
  Router-ID: 192.168.3.1
  Topology : 0 (base)
    Active Timer: 3 min
    Distance: internal 90 external 170
    Maximum path: 16
    Maximum hopcount 100
    Maximum metric variance 1
    Total Prefix Count: 6
    Total Redist Count: 0

  Interfaces:
    Ethernet0/0
    Loopback1 (passive)
    Loopback0 (passive)
  Redistribution:
    None

命名EIGRP配置模式会把所有的EIGRP配置集中到一处。这种配置方法使用了三种不同的配置模式来组织不同的配置选项。

例2-95 地址族配置模式

BR1(config)# router eigrp LAB
BR1(config-router)# address-family ipv6 unicast autonomous-system 1
BR1(config-router-af)# ?
Address Family configuration commands:
  af-interface           Enter Address Family interface configuration
  default                Set a command to its defaults
  eigrp                  EIGRP Address Family specific commands
  exit-address-family    Exit Address Family configuration mode
  help                   Description of the interactive help system
  maximum-prefix         Maximum number of prefixes acceptable in aggregate
  metric                 Modify metrics and parameters for address advertisement
  neighbor               Specify an IPv6 neighbor router
  no                     Negate a command or set its defaults
  shutdown               Shutdown address family
  timers                 Adjust peering based timers
  topology               Topology configuration mode

BR1(config-router-af)#

例2-96所示为BR1上地址族接口配置模式中的可用命令。

例2-96 地址族接口配置模式

BR1(config)# router eigrp LAB
BR1(config-router)# address-family ipv6 unicast autonomous-system 1
BR1(config-router-af)# af-interface ethernet 0/0
BR1(config-router-af-interface)# ?
Address Family Interfaces configuration commands:
  authentication         authentication subcommands
  bandwidth-percent      Set percentage of bandwidth percentage limit
  bfd                    Enable Bidirectional Forwarding Detection
  dampening-change       Percent interface metric must change to cause update
  dampening-interval     Time in seconds to check interface metrics
  default                Set a command to its defaults
  exit-af-interface      Exit from Address Family Interface configuration mode
  hello-interval         Configures hello interval
  hold-time              Configures hold time
  next-hop-self          Configures EIGRP next-hop-self
  no                     Negate a command or set its defaults
  passive-interface      Suppress address updates on an interface
  shutdown               Disable Address-Family on interface
  split-horizon          Perform split horizon
  summary-address        Perform address summarization

BR1(config-router-af-interface)#

例2-97所示为BR1上地址族拓扑配置模式中的可用命令。

例2-97 地址族拓扑配置模式

BR1(config)# router eigrp LAB
BR1(config-router)# address-family ipv6 unicast autonomous-system 1
BR1(config-router-af)# topology base
BR1(config-router-af-topology)# ?
Address Family Topology configuration commands:
  default                Set a command to its defaults
  default-information    Control distribution of default information
  default-metric         Set metric of redistributed routes
  distance               Define an administrative distance
  distribute-list        Filter entries in eigrp updates
  eigrp                  EIGRP specific commands
  exit-af-topology       Exit from Address Family Topology configuration mode
  maximum-paths          Forward packets over multiple paths
  metric                 Modify metrics and parameters for advertisement
  no                     Negate a command or set its defaults
  redistribute           Redistribute IPv6 prefixes from another routing protocol
  summary-metric         Specify summary to apply metric/filtering
  timers                 Adjust topology specific timers
  traffic-share          How to compute traffic share over alternate paths
  variance               Control load balancing variance

BR1(config-router-af-topology)#

对比经典的EIGRP配置和命名的EIGRP配置模式最简单的方法是并排展示它们的配置示例。

如例2-98所示,命名EIGRP会将所有的配置组织在一处。IPv4和IPv6的EIGRP配置命令都被组织在对应的地址族中。所有之前在接口下配置的命令现在都在EIGRP地址族接口配置模式中进行设置。不仅配置变得更加简单,清晰的分层结构也可以简化分析和排错的过程。

例2-98 经典与命名EIGRP比较

interface Loopback1
 ip address 192.168.3.1 255.255.255.0
 ipv6 address 2001:DB8:0:3::1/64
 ipv6 eigrp 1
!
interface Ethernet0/0
 ip address 172.16.1.6 255.255.255.252
 ip summary-address eigrp 1 192.168.2.0 255.255.254.0
 ipv6 address 2001:DB8:0:101::2/64
 ipv6 eigrp 1
!
router eigrp 1
 network 0.0.0.0
 passive-interface default
 no passive-interface Ethernet0/0
!
ipv6 router eigrp 1
!
router eigrp LAB
 !
 address-family ipv4 unicast autonomous-system 1
  !
  af-interface default
   passive-interface
  exit-af-interface
  !
  af-interface Ethernet0/0
   summary address 192.168.2.0/23
   no passive-interface
  exit-af-interface
  !
  topology base
  exit-af-topology
  network 0.0.0.0
 exit-address-family
 !
 address-family ipv6 unicast autonomous-system 1
 !
  topology base
  exit-af-topology
 exit-address-family

在本章中,读者了解了建立EIGRP邻居关系,构建EIGRP拓扑表,优化EIGRP行为,配置IPv6 EIGRP以及部署命名的EIGRP配置等内容。本章的内容涵盖了下列主题。

回答以下问题,并在附件A中查看答案。

1.下列哪种传输层协议用于交换EIGRP消息?

  a.TCP

  b.UDP

  c.RSVP

  d.RTP

  e.EIGRP直接运行在网络层上,不使用额外的传输层协议

2.哪种类型的数据包会用于建立邻居关系?

  a.确认包

  b.Hello包

  c.查询包

  d.应答包

  e.更新包

3.EIGRP度量计算默认使用哪些度量值进行计算?(选择两项)

  a.带宽

  b.MTU

  c.可靠性

  d.负载

  e.延迟

  f.跳数

4.下列哪项是选择可行后继的公式?

  a.当前后继路由的RD小于可行后继路由的FD

  b.当前后继路由的FD小于可行后继路由的RD

  c.可行后继路由的FD小于当前后继路由的RD

  d.可行后继路由的RD小于当前后继路由的FD

5.EIGRP拓扑表中的被动状态说明什么?

  a.网络中没有待完成的查询消息

  b.网络不可达

  c.网络已经启动且能够正常工作,这个状态表示的就是正常状态

  d.已选择了可行后继

6.IPv6的EIGRP使用的是下列哪个组播地址?

  a.FF01::2

  b.FF01::10

  c.FF02::5

  d.FF02::A

  e.IPv6的EIGRP不使用组播地址

7.下列哪条验证命令可以显示接收到的IPv6 EIGRP路由的报告距离?

  a.show ipv6 route

  b.show ipv6 route eigrp

  c.show ipv6 eigrp

  d.show ip eigrp neighbors

  e.show ipv6 eigrp topology

  f.show ip protocols

8.使用命名EIGRP配置有哪两点好处?

  a.可以提升扩展性

  b.可以实现更快速的收敛

  c.可以统一IPv4和IPv6配置命令

  d.支持多区域

  e.可以将所有EIGRP配置集中在一处

9.EIGRP的操作流量是组播还是广播?

10.EIGRP使用的四项关键技术分别是什么?

11.下列哪一项最能描述EIGRP拓扑表?

  a.拓扑表是通过路由器接收到的Hello包填充的

  b.拓扑表中会包含路由器学来的所有达到目的网络的路由

  c.拓扑表中仅包含到达目的网络的最优路由

12.指出EIGRP的5种数据包类型。

13.LAN链路上EIGRP Hello包多久发送一次?

14.保持时间和Hello间隔有什么区别?

15.下列哪些说法是正确的?(选择三项)

  a.当路由器不对一条路由进行重新计算时,这条路由就会被认为是被动的

  b.路由在进行重新计算时是被动的

  c.路由在进行重新计算时是活动的

  d.当路由器不对一条路由进行重新计算时,这条路由就会被认为是活动的

  e.被动是一条路由的正常操作状态

  f.活动是一条路由的正常操作状态

16.下列哪项关于通告距离(RD)和可行距离(FD)的说法是正确的?(选择两项)

  a.RD是邻居路由器到达特定网络的EIGRP度量

  b.RD是此路由器到达特定网络的EIGRP度量

  c.FD是此路由器到达特定网络的EIGRP度量

  d.FD是邻居路由器到达特定网络的EIGRP度量

17.路由器A有三个接口,它们的IP地址分别为172.16.1.1/24、172.16.2.3/24和172.16.5.1/24。使用什么命令可以配置EIGRP,仅让地址为172.16.2.3/24和172.16.5.1/24的接口运行在自治系统100中?

18.EIGRP配置命令passive-interface的作用是什么?

19.EIGRP末节特性是如何限制查询范围的?

20.命令eigrp stub receive-only的作用是什么?


相关图书

CCNP SWITCH 300-115学习指南
CCNP SWITCH 300-115学习指南
CCNP ROUTE 300-101认证考试指南
CCNP ROUTE 300-101认证考试指南
CCNP TSHOOT 300-135学习指南
CCNP TSHOOT 300-135学习指南
CCNP TSHOOT 300-135认证考试指南
CCNP TSHOOT 300-135认证考试指南
CCNP SWITCH 300-115认证考试指南
CCNP SWITCH 300-115认证考试指南
CCNP TSHOOT(642-832)学习指南
CCNP TSHOOT(642-832)学习指南

相关文章

相关课程