书名:CCNP企业高级路由ENARSI 300-410认证考试指南
ISBN:978-7-115-61675-3
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
著 [加] 雷蒙德·拉科斯特(Raymond Lacoste) [美] 布拉德·埃奇沃思(Brad Edgeworth)
译 夏俊杰
责任编辑 李 瑾
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
本书是思科CCNP企业高级路由ENARSI 300-410认证考试的备考指南,涵盖与ENARSI考试相关的各种故障排查技术,包括IPv4和IPv6编址、IPv4 EIGRP和EIGRPv6、OSPF和OSPFv3、BGP、路由映射、路由重分发、DMVPN、ACL和前缀列表、基础设施安全以及设备管理和管理工具等的基础知识和故障排查技术,为广大备考人员提供翔实的学习资料。为了帮助读者更好地深入掌握各章知识,作者在每章开头均安排了“我已经知道了吗?”测验,可以帮助读者确定如何分配有限的学习时间;主要章节还提供了大量故障工单,便于读者掌握认证考试中可能遇到的各种复杂场景;每章结束前的“备考任务”中以列表方式总结了本章的考试要点以及各种有用的配置和故障排查命令,便于读者随时参考和复习。
本书主要面向备考CCNP企业高级路由ENARSI 300-410认证考试的考生,同时本书相关内容实用性很强,对于提高日常网络维护和排障工作效率来说也非常有用,因而也适合从事企业网络及复杂网络故障排查工作的工程技术人员参考。
雷蒙德·拉科斯特致力于提升IT从业人员的技能,丰富IT从业人员的知识。他从2001年开始至今培训了数以百计的IT专业人员,帮助他们实现思科认证梦。工作特点决定了雷蒙德需要全职教授思科课程,他目前是StormWind Studios负责思科企业路由和交换、AWS及ITIL的首席讲师。雷蒙德将所有技术都视为一间“逃生室”,致力于挖掘并解开所有协议的各种谜团。雷蒙德通过了110多项考试,他的办公室墙上挂满了微软、思科、ISC2、ITIL、AWS和CompTIA证书。如果大家有机会参观雷蒙德的办公室,肯定会看到期望中的网络设备、证书及各种奖章,但这些并不是他的全部骄傲和兴趣,至少对雷蒙德来说不是。最令人印象深刻的是他的宝石和其他矿物收藏,只要谈到这些,雷蒙德就会滔滔不绝,他为黄铁矿石中那些奇妙的重晶石标本感到兴奋不已。目前雷蒙德与他的妻子和两个孩子居住在加拿大东部,一起经历各种冒险活动。
布拉德·埃奇沃思是思科公司的系统架构师,也是Cisco Live的杰出演讲者,曾发表过多次主题演讲。加入思科公司之前,布拉德曾在多家世界500强企业担任网络架构师和顾问。布拉德专注于企业和服务提供商环境,重点研究架构与操作的简便性和一致性。布拉德拥有得克萨斯州奥斯汀圣爱德华大学计算机系统管理的文学学士学位。
赫克托·门多萨(Hector Mendoza)在思科公司工作了14年,目前是支持大型SP客户的解决方案集成架构师。在负责这项主动性支持工作之前,赫克托在安全组的HTTS(High Touch Technical Support,深入接触技术支持)提供响应性支持,为思科公司的大型客户提供技术支持。赫克托曾在Cisco Live发表过4次演讲,也是思科安全课件的内部审稿人,是继续教育和知识共享的坚定倡导者。赫克托对技术充满热情,热衷于解决复杂问题,喜欢与客户开展合作。闲暇时,赫克托会从技术角度评审同事们写作的思科出版社出版的图书。
拉斯·朗(Russ Long)从小就痴迷于计算机和网络,致力于从数字化“怪物”和“外星人”手中“拯救世界”,而且始终初心不改。拉斯的职业生涯始于企业级IT工作,负责将太平洋西北部的光纤网络连接在一起。自此以后,他的职业道路漫长而曲折:从系统管理员到IT顾问,再到计算机商店老板,接下来是IT讲师。最近十多年里,拉斯致力于IT环境的教育和咨询工作。他喜欢的话题是思科路由和交换、现实世界的安全性及存储解决方案和虚拟化等。
雷蒙德·拉科斯特
谨将本书献给我的妻子梅兰妮(Melanie),是她默默的支持让我不断进步,这是世界上最艰巨也最伟大的工作。感谢梅兰妮,你是无与伦比的妻子和母亲。
布拉德·埃奇沃思
谨将本书献给我的女儿蒂根(Teagan)。我知道你希望写一本有关精灵和公主的书,虽然我不知道该怎么做,但是你的原话始终萦绕于我心:
我可以说西班牙语、英语、法语、中文和“蛇语”!
雷蒙德·拉科斯特
衷心感谢布拉德和我一起加入本书的写作旅程,我们精诚合作,竭尽所能创造精品。感谢你的分享与帮助。
感谢我的妻子和孩子,让我安心写作,给予我最无私的支持与帮助。我爱你们!
感谢拉斯·朗,你是我的老朋友,也是值得信任的好朋友。感谢你在本书面世之前帮我找出各种错误,使我的写作一直保持最佳状态。
感谢赫克托·门多萨,虽然我们并不相识,不过你发现了很多对于读者来说影响重大的错误,在此表示感谢!
感谢布雷特·巴托(Brett Bartow),感谢你对我们的信任,让我们有机会写作本书。
感谢MJB,感谢你让我不断接受挑战,并确保不会出现纰漏。
最后,感谢思科出版社团队以及你们的家人和朋友,出版如此高质量的培训材料离不开你们的努力。
布拉德·埃奇沃思
感谢雷蒙德和布雷特,让我有机会写作本书。非常荣幸能有机会与大家分享我的知识,在此深表感谢!感谢思科出版社团队,感谢你们将我的一堆零散知识变成一件文化精品。
感谢技术审稿人赫克托和拉斯,感谢你们在本书面世之前发现我们的错误。如果还有遗漏,就怪你们俩哦。
感谢众多的思科公司的同事和朋友,感谢你们向我无私地分享各种知识,并在过去几年的多个项目中为我提供了机会,在此表示衷心的感谢。特别感谢克雷格·史密斯(Craig Smith)、亚伦·福斯(Aaron Foss)、拉米罗·加尔萨·里奥斯(Ramiro Garza Rios)、维尼特·贾恩(Vinit Jain)、理查德·弗尔(Richard Furr)、大卫·普拉尔(David Prall)、达斯汀·舒曼(Dustin Schueman)、泰森·斯科特(Tyson Scott)、丹尼斯·菲什伯恩(Denise Fishbourne)、泰勒·克里克(Tyler Creek)和穆罕默德·阿里(Mohammed Ali)。
恭喜!如果你正在阅读本书前言,那表明你已经决定要获得思科CCNP企业认证了。获得思科认证有助于加深你对常见通信协议及思科设备的体系架构和配置的理解。思科公司在路由器和交换机领域占有很高的市场份额且产品遍布全球。
多年以来,专业认证一直都是计算机行业的重要一环,其重要性也日益显著。这些专业认证能够长期存在的原因有很多,但最重要的原因之一就是可信度。在其他条件相同的情况下,人们普遍认为拥有专业认证的员工/顾问/求职者更加出色。
思科主要提供3类认证:CCNA(思科认证网络工程师)、CCNP(思科认证资深网络工程师)和CCIE(思科认证互联网专家)。
思科宣布对上述3项认证进行调整,所有调整均于2020年2月生效。调整声明包含诸多对认证的修改,但最值得注意的地方包括以下几点。
● 认证考试将包括一些额外主题(如编程)。
● CCNA认证不再是获得CCNP认证的先决条件,不再提供CCNA专项课程。
● 除选择题之外,认证考试还将加强对考生在网络设备配置及故障排查方面的能力考查。
● 如果希望获得CCNP认证,就必须参加并通过核心课程和主修课程考试,如ENARSI。
希望通过CCNP企业认证的考生必须参加并通过CCNP和CCIE企业认证核心课程ENCOR 350-401考试,然后还要参加并通过以下任意一门主修课程考试才能获得CCNP企业认证。
● ENARSI 300-410,以获得ENARSI(Implementing Cisco Enterprise Advanced Routing and Service,部署思科企业高级路由和服务)。
● ENSDWI 300-415,以获得SDWAN300(Implementing Cisco SD-WAN Solution,部署思科SD-WAN解决方案)。
● ENSLD 300-420,以获得ENSLD(Designing Cisco Enterprise Network,设计思科企业网络)。
● ENWLSD 300-425,以获得ENWLSD(Designing Cisco Enterprise Wireless Network,设计思科企业无线网络)。
● ENWLSI 300-430,以获得ENWLSI(Implementing Cisco Enterprise Wireless Network,部署思科企业无线网络)。
● ENAUTO 300-435,以获得ENAUI(Implementing Automation for Cisco Enterprise Solution,思科企业解决方案部署自动化)。
本书最重要也最明显的目标就是帮助读者通过CCNP ENARSI 300-410认证考试。同时,本书的组织方式也能够帮助读者更好地应对日常工作。
本书旨在帮助读者发现需要深入学习的考试主题,并充分理解和记住这些细节信息,同时确认自己已经记住这些知识。我们希望读者能够真正学懂并理解这些主题,而非死记硬背。ENARSI 300-410认证考试涵盖了CCNP认证的基础主题,涵盖的知识对娴熟的路由/交换工程师或专家而言至关重要。本书将通过以下方法来帮助读者通过考试。
● 帮助读者发现尚未掌握的考试主题。
● 提供必要的解释和信息以填补知识空白。
● 提供练习和应用场景,以增强读者回忆和推断考题答案的能力。
● 通过配套网站的测试题,为读者提供考试主题的相关练习,帮助读者适应考试过程。
本书不是通用性的有关网络的图书(虽然也可以这么设计),而是旨在提高读者通过ENARSI 300-410 认证考试的概率。虽然阅读本书也能够达到很多其他目的,但本书的真正目的是帮助读者通过考试。
为什么要通过ENARSI 300-410认证考试呢?因为这是获得CCNP企业认证的“里程碑”事件,并不是一件很容易的事情。获得CCNP企业认证有何意义呢?加薪、升职、得到尊重?美化自己的简历?证明自己一直都在认真学习,不满足于现有成就?得到自己的经销商雇主的认同(需要更多的认证员工才能获得更高的思科折扣)?我相信,获得CCNP企业认证的原因应该是其中之一甚至更多。
ENARSI 300-410认证考试的备考策略可能会因每个人掌握的技能、知识和经验的不同而有所不同。例如,参加过CCNP ENARSI 300-410认证考试培训课程的考生与完全通过在职培训学习路由知识的考生,两者采取的备考策略不太一样。
无论采用何种备考策略或者具备何种背景、能力,本书的目的都是帮助大家在最短的时间内通过考试。例如,如果你已经完全了解了IP编址和子网划分,就无须练习或阅读这部分内容。当然,也有很多人喜欢确保自己真正掌握了特定知识,因而仍然希望阅读已经掌握的知识。本书的组织方式能够帮助大家获得自信,确信自己已经掌握了很多知识,而且能发现自己还有哪些不足,必须进一步学习才能真正掌握这些知识。
本书在结构设计上充分考虑灵活阅读的需要,允许读者在不同的章之间轻松切换,从而快速发现所需的有用信息。当然,读者也可以按部就班地逐章阅读本书。如果读者希望阅读整本书,那么依照本书的编写顺序阅读就是一种非常好的方式。
本书各章的主要内容如下。
● 第1章“IPv4/IPv6编址与路由回顾”:本章讨论IPv4和IPv6编址、DHCP与路由等基础知识以及相关的故障排查技术。
● 第2章“EIGRP”:本章解释EIGRP基础知识、EIGRP配置模式以及路径度量计算。
● 第3章“高级EIGRP”:本章解释多种EIGRP高级概念,包括故障检测、路由汇总、WAN站点优化技术以及路由过滤。
● 第4章“IPv4 EIGRP故障排查”:本章讨论与EIGRP邻居邻接关系和EIGRP路由相关的故障排查技术。
● 第5章“EIGRPv6”:本章讨论EIGRP宣告IPv6网络的方式以及EIGRPv6的配置和故障排查方式。
● 第6章“OSPF”:本章解释OSPF的基本概念、路由交换以及OSPF网络类型、故障检测、认证等内容。
● 第7章“高级OSPF”:本章在第6章的基础上,解释OSPF数据库及其构建拓扑结构的方式,同时讨论OSPF路径选择、路由汇总以及OSPF网络优化技术。
● 第8章“OSPFv2故障排查”:本章讨论与OSPFv2邻居邻接关系和OSPFv2路由相关的故障排查技术。
● 第9章“OSPFv3”:本章解释OSPF协议为支持IPv6而进行的变更。
● 第10章“OSPFv3故障排查”:本章讨论与OSPFv3相关的故障排查技术。
● 第11章“BGP”:本章解释BGP的基本概念、路径属性以及IPv4和IPv6网络前缀的配置方式。
● 第12章“高级BGP”:本章在第11章的基础上讨论拥有大量BGP对等关系的路由器的BGP团体及配置技术。
● 第13章“BGP路径选择”:本章讨论BGP路径选择进程、识别BGP最佳路径以及在等价路径上实现负载均衡的方法。
● 第14章“BGP故障排查”:本章讨论识别和排查与BGP邻居邻接关系、BGP路由及BGP路径选择有关的故障问题。此外,还讨论MP-BGP(IPv6 BGP)。
● 第15章“路由映射与条件转发”:本章讨论路由映射、网络前缀选择机制,还讨论将特定网络流量通过不同的接口向外进行条件转发的方式。
● 第16章“路由重分发”:本章解释路由重分发规则、路由重分发的配置方式以及基于源或目的路由协议的重分发行为。
● 第17章“路由重分发故障排查”:本章讨论与路由重分发相关的故障排查技术,包括配置差错、次优路由及路由环路故障等内容。
● 第18章“VRF、MPLS和MPLS三层VPN”:本章讨论VRF的配置和验证方式,以及MPLS和MPLS三层VPN的操作方式。
● 第19章“DMVPN隧道”:本章讨论GRE隧道、NHRP、DMVPN以及DMVPN的部署优化技术。
● 第20章“DMVPN隧道安全”:本章解释保护WAN网络流量的重要性以及为DMVPN隧道部署IPsec隧道保护机制的方式。
● 第21章“ACL和前缀列表故障排查”:本章讨论与IPv4 ACL和IPv6 ACL及前缀列表相关的故障排查技术。
● 第22章“基础设施安全”:本章讨论与AAA、uRPF和CoPP相关的故障排查技术,同时介绍多种IPv6第一跳安全特性。
● 第23章“设备管理和管理工具故障排查”:本章讨论与本地或远程接入、远程传输、syslog、SNMP、IP SLA、对象跟踪、NetFlow和Flexible NetFlow相关的故障排查技术,还介绍Cisco DNA Center Assurance提供的故障排查工具。
虽然每次ENARSI 300-410认证考试的考题都严格保密,但我们知道哪些内容是成功通过考试的关键,思科将考试要点发布为考试大纲。表I-1列出了大纲中的考试要点,以及每个要点在本书中对应的章,这些要点也是现实中使用企业网络技术时必须掌握的核心内容。
表I-1 ENARSI 300-410认证考试的要点及对应的章
ENARSI 300-410认证考试要点 |
对应的章 |
---|---|
1.0 三层技术 |
|
1.1管理距离故障排查(所有路由协议) |
1 |
1.2路由协议的路由映射故障排查(属性、标记、过滤) |
17 |
1.3环路避免机制故障排查(过滤、标记、水平分割、路由毒化) |
17 |
1.4路由协议或路由源之间的重分发故障排查 |
16、17 |
1.5路由协议手动和自动汇总故障排查 |
3、4、5、7、8、9、10、12 |
1.6配置和验证策略路由 |
15 |
1.7配置和验证VRF-Lite |
18 |
1.8描述双向转发检测(BFD) |
23 |
1.9 EIGRP故障排查(传统配置和命名配置模式) |
4、5 |
1.9.a地址簇(IPv4和IPv6) |
2、3、4、5 |
1.9.b邻居关系和认证 |
2、4、5 |
1.9.c无环路径选择(RD、FD、FC、后继路由、可行后继路由、SIA) |
3、4 |
1.9.d末梢 |
4 |
1.9.e负载均衡(等价和非等价) |
2 |
1.9.f度量 |
2 |
1.10 OSPF(v2和v3)故障排查 |
6、7、8、9、10 |
1.10.a地址簇(IPv4和IPv6) |
8、10 |
1.10.b邻居关系和认证 |
6、8、10 |
1.10.c网络类型、区域类型和路由器类型 |
8、10 |
1.10.c(i)点到点、点到多点、广播、非广播 |
6、8、10 |
1.10.c(ii)区域类型:骨干区域、普通区域、转接区域、末梢区域、NSSA、完全末梢区域 |
7、8、10 |
1.10.c(iii)内部路由器、骨干路由器、ABR、ASBR |
6、8、10 |
1.10.c(iv)虚链路 |
7、8 |
1.10.d路由优先级 |
7 |
1.11 BGP(内部和外部)故障排查 |
11、12、13、14 |
1.11.a地址簇(IPv4和IPv6) |
10、14 |
1.11.b邻居关系和认证(下一跳、多跳、4字节AS、私有AS、路由刷新、同步、操作、对等体组、状态和定时器) |
10、14 |
1.11.c路由优先级(属性和最佳路径) |
13、14 |
1.11.d路由反射器(不含多路由反射器、联盟及动态对等体) |
10 |
1.11.e策略(入站/出站过滤、路径控制) |
11、14 |
2.0 VPN技术 |
|
2.1描述MPLS操作(LSR、LDP、标签交换、LSP) |
18 |
2.2描述MPLS三层VPN |
18 |
2.3配置和验证DMVPN(单台中心路由器) |
19、20 |
2.3.a GRE/mGRE |
19 |
2.3.b NHRP |
19 |
2.3.c IPsec |
20 |
2.3.d动态邻居 |
19 |
2.3.e Spoke-to-Spoke(分支路由器到分支路由器) |
19 |
3.0 基础设施安全 |
|
3.1基于IOS AAA(TACACS+、RADIUS、本地数据库)的设备安全 |
22 |
3.2路由器安全特性故障排查 |
|
3.2.a IPv4 ACL(标准、扩展和基于时间的ACL) |
21 |
3.2.b IPv6流量过滤器 |
21 |
3.2.c uRPF |
22 |
3.3 CoPP故障排查[Telnet、SSH、HTTP(S)、SNMP、EIGRP、OSPF、BGP] |
22 |
3.4描述IPv6第一跳安全特性(RA保护、DHCPv6保护、绑定表、IPv6 ND检测/监听、源保护) |
22 |
4.0 基础设施服务 |
|
4.1设备管理故障排查 |
23 |
4.1.a控制台和vty |
23 |
4.1.b Telnet、HTTP、HTTPS、SSH、SCP |
23 |
4.1.c(T)FTP |
23 |
4.2 SNMP(v2c和v3)故障排查 |
23 |
4.3利用日志记录(本地、syslog、debug、条件式debug、时间戳)排查网络故障 |
23 |
4.4 IPv4和IPv6 DHCP故障排查(DHCP客户端、IOS DHCP服务器、DHCP中继、DHCP操作) |
1 |
4.5利用IP SLA排查网络性能故障(抖动、跟踪对象、时延、连接性) |
23 |
4.6 NetFlow(v5、v9、Flexible NetFlow)故障排查 |
23 |
4.7利用Cisco DNA Center Assurance排查网络故障(连接性、监控、设备运行状况、网络运行状况) |
23 |
每个版本的认证考试都有不同的考试要点,强调不同的功能或特征,而且某些考试要点可能相当广泛和笼统。本书的目的是尽可能全面地呈现ENARSI 300-410认证考试要点,以帮助读者做好考试准备。虽然某些章节的内容并未涉及特定的考试要点,但是它们能够为读者清晰地理解考试要点提供必要的基础知识。
本书只能作为“静态”参考,实际的考试要点可能会随时发生变化,思科可以,也确实经常调整认证考试的主题内容。
准备认证考试期间,不要将本书作为唯一的参考内容,建议经常登录思科官网,上面提供了大量与考试要点相关的有用信息。如果希望了解与特定主题相关的更多详细信息,建议参阅相关主题的思科文档。
需要注意的是,随着技术的不断发展,思科保留更改考试要点的权利,恕不另行通知。虽然可以参考表I-1中的考试要点,但读者还是应该登录思科官网确认实际的考试要点,以确保考前做好充足准备。
虽然本书是非常好的自学资源,但是仅仅阅读本书还不够。通常,网络工程师都知道,要想真正掌握一门网络技术,就必须自己动手去实践这门技术。我们鼓励读者按照本书案例,自己动手创建拓扑结构并加以部署。
思科提供如下多种在线资源供大家动手练习。
● 思科VIRL(Virtual Internet Routing Lab,虚拟Internet路由实验室),提供可扩展的网络设计和仿真环境。
● 思科dCloud,提供各种思科体系架构的演示、培训及沙箱资源,提供可定制的网络环境,而且都是免费的。
● 思科DevNet,提供大量与编程和可编程性相关的学习资源,包括免费的实验室。
本书由异步社区出品,社区(https://www.epubit.com)为您提供后续服务。
作者、译者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。
当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,单击“发表勘误”,输入错误信息,单击“提交勘误”按钮即可,如下图所示。本书的作者、译者和编辑会对您提交的错误信息进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。
我们的联系邮箱是contact@epubit.com.cn。
如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。
如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线投稿(直接访问www.epubit.com/contribute即可)。
如果您所在的学校、培训机构或企业想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。
如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接通过邮件发送给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。
“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。
“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、人工智能、测试、前端、网络技术等。
异步社区
微信服务号
本章主要讨论以下主题。
● IPv4编址:本节将回顾IPv4编址的基本内容,并讨论与IPv4编址相关的故障及故障排查技术。
● IPv4 DHCP:本节将回顾IPv4 DHCP的基本内容,并讨论与DHCP相关的故障以及各种DHCP show命令的输出结果。
● IPv6编址:本节将简要回顾IPv6编址的基本内容。
● IPv6 SLAAC、状态化DHCPv6和无状态DHCPv6:本节将讨论客户端如何通过SLAAC、状态化DHCPv6和无状态DHCPv6获得IPv6编址信息。
● 包转发过程:本节将讨论包转发过程以及验证包转发过程中数据结构表项的相关命令,还将提供一系列有助于排查相关故障的思科IOS软件命令。
● 路由信息源:本节将讨论最可靠的路由信息源以及路由表与各种数据结构进行交互以填充最佳信息的方式。
● 静态路由:本节将讨论IPv4和IPv6静态路由的配置和验证方式。
● 故障工单:本节将通过一些故障工单来说明通过结构化的故障排查过程解决故障问题的方法。
虽然全球都在部署IPv6,但整体部署进度仍然较为缓慢,大多数网络仍然依赖IPv4,很多新网络以及网络扩容还在通过IPv4进行部署,因而要求人们必须掌握相关技能来配置、验证IPv4编址以及完成与IPv4编址相关的故障排查操作。因此,本章将简要回顾与IPv4编址相关的基本内容。
通常,人们倾向于采用DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)来部署IPv4地址,以实现IP地址的动态分配。但这种动态分配过程可能会出现问题,导致设备无法从DHCP服务器成功获取IPv4地址。因此,本章将简要回顾DHCP的工作方式以及识别可能导致客户端无法从DHCP服务器获取IP地址问题的方法。
无论如何,组织机构早晚都要迁移到IPv6,IPv6不但能够提供比IPv4大得多的地址空间,而且具备很多优势。本章将说明IPv6设备确定目的端是位于本地还是远程的方式,同时将讨论与IPv6地址分配及故障排查相关的注意事项。
在深入研究EIGRP(Enhanced Interior Gateway Routing Protocol,增强型内部网关路由协议)、OSPF(Open Shortest Path First,开放最短通路优先)和BGP(Border Gateway Protocol,边界网关协议)等高级路由主题之前,需要先讨论常规的数据包传递过程(也称为路由过程)。该过程是数据包到达路由器的入站接口并通过包交换处理到达出站接口所经历的过程,与数据包是IPv4还是IPv6数据包无关。无论哪种数据包,路由器都执行相同的处理步骤,即从入站接口获取数据包之后通过交换处理使其到达出站接口。此外,还需要了解路由器通过“最佳”路由填充路由表的方式,了解将这些路由归为最佳路由的原因。通过EIGRP学到的路由是否比静态路由更优?通过OSPF或BGP学到的路由又如何呢?如何对比不同来源的路由信息?如果同时有多个源端提供了相同的路由信息,那么路由器该如何做出最佳路由决策呢?
静态路由是网络的一部分,但由于静态路由都是手动配置的,因而极易出现人为错误,从而导致次优路由或路由环路。因此,本章将回顾IPv4和IPv6静态路由的配置和验证过程。
请注意,本章将主要讨论CCNA或ENCOR认证考试涉及的IPv4/IPv6编址、IPv4/IPv6 DHCP、包转发过程、管理距离和静态路由等内容,建议大家认真阅读本章内容,因为这些内容是后续章节以及备考ENARSI的基础知识。
“我已经知道了吗?”测验的目的是帮助读者确定是否需要完整地学习本章知识或者直接跳至“备考任务”,如果读者对题目的答案还存在疑问,或者评估自己对这些主题知识的掌握程度还不够的话,就可以从头学起。表1-1列出了本章的主要内容以及与这些内容相关联的“我已经知道了吗?”测验题,答案可参见附录。
表1-1 “我已经知道了吗?”基本主题章节与所对应的测验题
涵盖测验题的基本主题章节 |
测验题 |
---|---|
IPv4编址 |
1~3 |
IPv4 DHCP |
4~6 |
IPv6编址 |
7~8 |
IPv6 SLAAC、状态化DHCPv6和无状态DHCPv6 |
9~12 |
包转发过程 |
13~15 |
路由信息来源 |
16~17 |
静态路由 |
18~19 |
注意:
自我评价的目的是检验你对本章知识的掌握程度,如果不知道或仅知道部分问题的答案,出于自我评价的目的,请在该问题上标记“错”。为了不影响自我评价的结果,对不懂的问题请不要猜测答案,否则可能会造成一种已掌握的假象。
1.如果IP地址为10.1.1.27/28的PC希望与IP地址为10.1.1.18的PC进行通信,那么会发生什么情况?(选择两项)
a.将帧发送给默认网关
b.将帧直接发送给目的PC
c.使用ARP获取默认网关的MAC地址
d.使用ARP获取目的PC的MAC地址
2.如果IP地址为10.1.1.27/29的PC希望与IP地址为10.1.1.18的PC进行通信,那么会发生什么情况?(选择两项)
a.将帧发送给默认网关
b.将帧直接发送给目的PC
c.使用ARP获取默认网关的MAC地址
d.使用ARP获取目的PC的MAC地址
3.可以通过下面哪条命令来验证路由器接口配置的IP地址?
a.ipconfig
b.show ip interface
c.arp -a
d.show ip arp
4.IPv4 DHCP的进程的正确操作顺序是什么?
a.Offer→Request→Acknowledgment→Discover
b.Discover→Request→Acknowledgment→Offer
c.Request→Offer→Discover→Acknowledgment
d.Discover→Offer→Request→Acknowledgment
5.下面哪条命令可以在路由器接口上将DHCPDISCOVER(发现)消息转发给不同子网中的DHCP服务器?
a.ip address dhcp
b.ip helper-address
c.ip dhcp-forwarder
d.ip dhcp server
6.下面哪条命令能够让路由器接口从DHCP服务器获取IP地址?
a.ip dhcp client
b.ip dhcp server
c.ip address dhcp
d.ip helper-address
7.IPv6通过下面哪种协议来确定同一局域网中的设备的MAC地址?
a.地址解析协议
b.反向地址解析协议
c.邻居发现协议
d.邻居请求
8.使用EUI-64时,下面哪些选项是正确的?(选择两项)
a.不加修改地使用接口MAC地址
b.将FFFE添加到接口MAC地址中间
c.将MAC地址从左数的第7个比特翻转
d.将MAC地址从右数的第7个比特翻转
9.Cisco IOS路由器通过什么命令在接口上启用SLAAC?
a.ipv6 address autoconfig
b.ipv6 address dhcp
c.ipv6 address prefix eui-64
d.ipv6 nd ra suppress
10.无状态地址自动配置的要求是什么?(选择3项)
a.前缀必须为/64
b.路由器必须发送而不抑制RA消息
c.路由器必须启用IPv6单播路由
d.路由器必须发送RS消息
11.路由器可以通过下面哪条命令通知客户端它们需要从DHCPv6服务器获取额外的配置信息?
a.ipv6 nd ra suppress
b.ipv6 dhcp relay destination
c.ipv6 address autoconfig
d.ipv6 nd other-config-flag
12.可以通过下面哪条命令将路由器接口配置为DHCPv6中继代理?
a.ipv6 forwarder
b.ipv6 helper-address
c.ipv6 dhcp relay destination
d.ipv6 dhcp client
13.路由器的数据平面维护了哪两种数据结构?
a.IP路由表
b.ARP缓存
c.转发信息库
d.邻接表
14.可以通过下面哪条命令验证FIB中的路由?
a.show ip route
b.show ip arp
c.show ip cef
d.show adjacency detail
15.下面哪些选项可以填充路由协议的数据结构,如EIGRP拓扑表?(选择3项)
a.来自邻居的更新
b.重分发的路由
c.为路由进程启用的接口
d.静态路由
16.下面哪一项的默认管理距离最小?
a.OSPF
b.EIGRP(内部)
c.RIP
d.BGP
17.OSPF区域内路由的默认管理距离是多少?
a.90
b.110
c.115
d.120
18.如何创建浮动静态路由?
a.将静态路由的度量值设置得大于首选路由来源
b.将静态路由的度量值设置得小于首选路由来源
c.将静态路由的AD设置得大于首选路由来源
d.将静态路由的AD设置得小于首选路由来源
19.如果使用指定的以太网接口而不是下一跳IP地址来创建IPv4静态路由,那么会怎么样?
a.路由器将通过ARP获取直连路由器的IP地址的MAC地址
b.路由器将以目的MAC地址FFFF:FFFF:FFFF转发数据包
c.路由器将通过ARP获取数据包源IP地址的MAC地址
d.路由器将通过ARP获取数据包目的IP地址的MAC地址
与通过街道地址唯一地定义每个人的住址相似,IPv4地址负责唯一地定义设备在网络中的位置。街道地址通常由两部分组成:街道名称和房屋编号。两者组成的地址在整个城镇范围内都是唯一的,这样就能确保比萨送货员可以将比萨送到家中。如果街道地址不正确,就无法收到比萨,我想没有人希望发生这种情况。
IPv4编址与此类似,如果设备编址不正确,就无法收到发给它们的数据包。因此,必须掌握IPv4编址的基本知识以及验证网络上的设备编址是否正确的方法。本节将简要回顾IPv4编址的基本知识,并讨论与IPv4编址相关的故障及排查方式。
IPv4地址由两部分组成:网络/子网部分和主机部分。同一网络/子网中的所有设备都必须共享完全相同的网络/子网部分。如果网络/子网部分不相同,那么 PC 对二层帧的编址就会出现错误,并向错误的方向发送数据包。图1-1给出了一个正确的IPv4编址示例,在子网(10.1.1.0/26)中包含了两台PC和一台默认网关R1。
图1-1 正确的IPv4编址示例
如果PC1需要与PC2进行通信,那么首先需要对PC2的IP地址执行DNS查找操作,然后返回其IP地址10.1.1.20。接下来,PC1需要确定PC2是否与自己位于同一子网中,因为这将确定该帧是否拥有PC2的MAC地址或DG(Default Gateway,默认网关)的MAC地址。PC1确定其网络/子网部分的方式是以二进制方式比较其IP地址和子网掩码。
● 00001010.00000001.00000001.00001010:二进制PC1 IP地址。
● 11111111.11111111.11111111.11000000:二进制PC1子网掩码(子网掩码中的1表示网络部分)。
● 00001010.00000001.00000001.00:PC1网络/子网ID。
接下来,PC1将网络/子网ID的二进制比特与PC2 IP地址中的对应位二进制比特进行对比。
● 00001010.00000001.00000001.00:PC1网络/子网ID。
● 00001010.00000001.00000001.00010100:二进制PC2 IP地址。
由于两者的二进制比特完全相同,因而PC1判断出PC2与自己位于同一个网络/子网中,能够进行直接通信,而不需要将数据发送给默认网关。此后,PC1就可以使用自己的MAC地址作为源地址,并将PC2的MAC地址作为目的地址来创建数据帧。
如果PC1需要与IP地址为192.0.2.1的Web服务器进行通信,那么情况又如何呢?首先,PC1需要对Web服务器的IP地址执行DNS查找操作,此时将返回其IP地址192.0.2.1。接下来,PC1需要确定Web服务器是否与自己位于同一个网络/子网中,这将确定帧是否拥有Web服务器的MAC地址或默认网关的MAC地址。PC1确定其网络/子网部分的方式是以二进制方式比较其IP地址和子网掩码的。
● 00001010.00000001.00000001.00001010:二进制PC1 IP地址。
● 11111111.11111111.11111111.11000000:二进制PC1子网掩码(子网掩码中的1表示网络部分)。
● 00001010.00000001.00000001.00:PC1网络/子网ID。
接下来,PC1将网络/子网ID的二进制比特与Web服务器IP地址中的对应位二进制比特进行对比。
● 00001010.00000001.00000001.00:PC1网络/子网ID。
● 11000000.00000000.00000010.00000001:二进制形式的Web服务器IP地址。
由于这些二进制比特不相同,因而PC1判断出Web服务器与自己不在同一个网络/子网中。因此,为了与Web服务器进行通信,PC1需要将数据发送给默认网关。此后,PC1就可以使用自己的MAC地址作为源地址,并将R1的MAC地址作为目的地址来创建数据帧。
可以看出,正确的IP编址对于成功的通信过程来说至关重要。如果PC1配置的子网掩码(255.255.255.240)有问题,那么会怎么样呢(见图1-2)?
图1-2 错误的IPv4编址示例
PC1通过对比二进制形式的IP地址与子网掩码来确定其网络/子网部分。
● 00001010.00000001.00000001.00001010:二进制PC1 IP地址。
● 11111111.11111111.11111111.11110000:二进制PC1子网掩码。
● 00001010.00000001.00000001.0000:PC1网络/子网ID。
接下来,PC1将网络/子网ID的二进制比特与PC2 IP地址中的对应位二进制比特进行对比。
● 00001010.00000001.00000001.0000:PC1网络/子网ID。
● 00001010.00000001.00000001.00010100:二进制PC2 IP地址。
由于这些二进制比特不相同,因而PC1判断出PC2与自己不在同一个网络/子网中,无法进行直接通信,必须将数据包发送给路由器,再由路由器将数据包路由给PC2所在的子网。但这两台PC实际上都连接在同一个子网中,因而出现了IPv4编址和连接故障。
除子网掩码错误可能产生故障之外,错误的IP地址与正确的子网掩码相结合也可能产生故障问题。此外,如果PC配置的默认网关有问题,就无法将数据包转发给其他子网中的正确设备。
作为故障排查人员,必须能够快速识别并解决这些故障问题。可以在Windows PC上通过ipconfig命令验证IP地址信息(见例1-1),在IOS路由器或IOS交换机上通过show ip interface interface_type interface_number命令验证IP地址信息(见例1-1)。
例1-1 在PC和路由器上验证IP地址
C:\>ipconfig
Windows IP Configuration
Ethernet adapter PC1:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . .: 10.1.1.10
Subnet Mask . . . . . . . . . . .: 255.255.255.192
IP Address. . . . . . . . . . . .: 2001:10::10
IP Address. . . . . . . . . . . .: fe80::4107:2cfb:df25:5124٪7
Default Gateway . . . . . . . . .: 10.1.1.1
R1# show ip interface gigabitEthernet 1/0
GigabitEthernet1/0 is up, line protocol is up
Internet address is 10.1.1.1/26
...output omitted...
本节将以图1-3为例介绍一种快速确定特定子网中的IP地址的方法。
图1-3 确定子网中的IP地址
首先在子网掩码中找到我们最关心的八比特组。从二进制角度来看,就是拥有最后一个二进制1的八比特组。从十进制角度来看,就是大于0的最后一个八比特组。对于本例的255.255.255.192来说,第四个八比特组是大于0的最后一个八比特组,该八比特组的数值是192。如果子网掩码是255.255.192.0,那么最后一个大于0的八比特组就是第三个八比特组。考虑子网掩码255.255.255.0,由于第四个八比特组是0,因而我们关心的是第三个八比特组,因为这是最后一个数值大于0的八比特组。
接下来,用256减去192,得到64。数字64表示地址块的大小,或者说是在该八比特组中进行计数的数字。本例的子网为10.1.1.0/26,由于块大小为64,因而该子网始于10.1.1.0/26,结束于10.1.1.63/26。下一个子网则是10.1.1.64/26~10.1.1.127/26,第三个子网是10.1.1.128/26~10.1.1.191/26,以此类推。
接下来将设备地址与刚才确定的子网范围进行比较。本例中的PC1、PC2和R1上的接口应该位于同一个子网,因而必须为它们配置正确的IP地址,否则将无法进行正确通信。例如,从PC1上ipconfig命令的输出结果可以看出(见例1-2),由于已经确定了地址范围,因而可以很容易地看出PC1与R1及PC2不在同一个子网中。虽然它们的子网掩码相同,但PC1的地址范围是10.1.1.64/26~10.1.1.127/26,而PC2和R1的地址范围却是10.1.1.0/26~10.1.1.63/26。根据图1-3,PC1应该与PC2及R1位于同一个子网中,但现在却位于不同的子网中。因此,必须修改PC1的IP地址,以确保其位于正确的子网中。
例1-2 通过ipconfig命令验证PC的IP地址
C:\>ipconfig
Windows IP Configuration
Ethernet adapter PC1:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . .: 10.1.1.74
Subnet Mask . . . . . . . . . . .: 255.255.255.192
IP Address. . . . . . . . . . . .: 2001:10::10
IP Address. . . . . . . . . . . .: fe80::4107:2cfb:df25:5124٪7
Default Gateway . . . . . . . . .: 10.1.1.1
DHCP负责将IPv4地址信息分配给网络主机。具体来说,DHCP允许DHCP客户端从DHCP服务器获取IP地址、子网掩码、默认网关IP地址、DNS服务器IP地址以及其他类型的IP地址信息。DHCP服务器可以位于子网内部或远程子网中,也可以与默认网关是同一台设备。
由于DHCP是目前较为常用的IPv4地址分配方法,因而我们必须掌握DHCP的处理过程,从而能够识别和排查与DHCP相关的故障问题。本节将解释DHCP的操作方式,重点讨论DHCP故障的识别和排查技术。
如果家里有电缆调制解调器、DSL(Digital Subscriber Line,数字用户线)或光纤连接,那么家里的路由器很可能是通过DHCP方式从服务提供商那里获得IP地址的,此时的路由器将充当家庭设备的DHCP服务器。企业网中的PC启动之后,会从企业的DHCP服务器接收其IP地址配置信息。图1-4显示了DHCP客户端从DHCP服务器获取IP地址信息时发生的消息交换过程,即DORA(Discover, Offer, Request, Acknowledgement,发现、提供、请求、确认)进程。
DORA进程的操作步骤如下。
步骤1 由于DHCP客户端刚开始启动时没有IP地址、默认网关或其他此类配置信息,因而 DHCP 客户端最初进行通信的方式是将广播消息(DHCPDISCOVER消息)发送给目的IP地址255.255.255.255和目的MAC地址FFFF:FFFF:FFFF,以试图找到DHCP服务器,此时的源IP地址为0.0.0.0,源MAC地址为发送设备的MAC地址。
图1-4 DHCP DORA进程
步骤2 DHCP服务器收到DHCPDISCOVER消息之后,通过DHCPOFFER消息进行响应,该消息携带了未租借的IP地址、子网掩码和默认网关信息。由于DHCPDISCOVER消息的发送方式是广播,因而可能会有多台DHCP服务器通过DHCPOFFER消息响应该DHCPDISCOVER消息,通常客户端会选择其接收到的第一个发送DHCPOFFER消息的服务器。
步骤3 DHCP客户端以广播方式向选定的服务器发送DHCPREQUEST消息,说明其将使用DHCPOFFER消息提供的IP地址,因而希望服务器将相关IP地址租借给自己。
步骤4 DHCP服务器以DHCPACK消息响应客户端,指示已经将该IP地址租借给客户端,并在消息中包含客户端可能需要的其他DHCP选项(如租期等)。
请注意,步骤1需要以广播方式发送DHCPDISCOVER消息,由于广播包无法跨越路由器边界,因而客户端如果与DHCP服务器位于不同的网络上,就需要将客户端的默认网关配置为DHCP中继代理,以便将广播包作为单播包转发给服务器。可以使用接口配置模式命令ip helper-address ip_address配置路由器,让路由器将DHCP消息中继给组织机构中的DHCP服务器。
下面将以图1-5和例1-3为例加以说明。图1-5中的DHCP客户端属于172.16.1.0/24网络,而DHCP服务器则属于10.1.1.0/24网络。例1-3将路由器R1配置为DHCP中继代理。
图1-5 DHCP中继代理
例1-3 DHCP中继代理配置
R1# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)# service dhcp
R1(config)# interface fa 0/0
R1(config-if)# ip helper-address 10.1.1.2
请注意配置中的service dhcp命令,该命令的作用是在路由器上启用DHCP服务,必须启用DHCP服务才能确保DHCP服务正常工作。但通常并不需要配置该命令,因为系统默认启用DHCP服务。不过,在排查DHCP中继代理故障时,还是需要确认是否已启用DHCP服务。此外,例1-3中通过ip helper-address 10.1.1.2命令指定了DHCP服务器的IP地址。如果指定了错误的IP地址,就会将DHCP消息中继给错误的网络设备。与此同时,还必须在接收客户端DHCPDISCOVER消息的接口上配置ip helper-address命令,否则路由器将无法中继DHCP消息。
需要注意的是,将路由器配置为DHCP中继代理之后,除DHCP消息之外,路由器还会中继以下类型的广播包。
● TFTP(Trivial File Transfer Protocol,简易文件传送协议)。
● DNS(Domain Name System,域名系统)。
● ITS(Internet Time Service,互联网时间服务)。
● NetBIOS名称服务器。
● NetBIOS数据报服务器。
● BootP(Boot Strap Protocol,引导协议)。
● TACACS(Terminal Access Controller Access Control System,终端访问控制器接入控制系统)。
表1-2列出了排查DHCP故障问题时可能遇到的各种DHCP消息类型,以供参考。
表1-2 DHCP消息类型
DHCP消息 |
描述 |
---|---|
DHCPDISCOVER |
客户端发送该消息以试图定位DHCP服务器,该消息以广播IP地址255.255.255.255进行发送(使用UDP端口67) |
DHCPOFFER |
DHCP服务器发送该消息以响应DHCPDISCOVER消息(使用UDP端口68) |
DHCPREQUEST |
客户端向DHCP服务器发送该消息以请求DHCPOFFER消息提供的IP编址信息及其他选项 |
DHCPDECLINE |
客户端向DHCP服务器发送该消息以告知服务器IP地址已被网络占用 |
DHCPACK |
DHCP服务器向客户端发送该消息并在消息中包含IP配置参数 |
DHCPNAK |
DHCP服务器向客户端发送该消息以告知客户端,DHCP服务器拒绝向客户端提供所请求的IP配置信息 |
DHCPRELEASE |
客户端向DHCP服务器发送该消息以告知服务器,客户端已经释放了DHCP租约,允许DHCP服务器重新将该客户端IP地址分配给其他客户端 |
DHCPINFORM |
客户端向DHCP服务器发送该消息以请求IP配置参数,通常由接入服务器发送该消息,目的是为连接在接入服务器上的远程客户端请求IP配置信息 |
除充当DHCP中继代理之外,路由器还可以充当DHCP客户端。也就是说,路由器接口可以从DHCP服务器获取IP地址。图1-6显示了充当DHCP客户端的路由器,该路由器的Fast Ethernet 0/1接口从DHCP服务器获取IP地址。例1-4提供了DHCP服务器配置信息。请注意,ip address命令使用了dhcp选项,而不是常见的IP地址和子网掩码信息。
图1-6 路由器充当DHCP客户端
以下代码显示了DHCP客户端的配置信息:
R1# configure terminal
R1(config)# int fa 0/1
R1(config-if)# ip address dhcp
路由器和多层交换机也可以充当DHCP服务器。图1-7显示了充当DHCP服务器的路由器,例1-4给出了路由器的配置信息。ip dhcp excluded-address 10.8.8.1 10.8.8.10命令可防止DHCP将这些IP地址分配给客户端。请注意,必须在该命令的排除项中包含路由器接口的IP地址,因为路由器不会将自己的接口IP地址分配给客户端。ip dhcp pool POOL-A命令的作用是创建一个名为POOL-A的DHCP地址池,该地址池从10.8.8.0/24网络区间内分配IP地址,默认网关为10.8.8.1,DNS服务器为192.168.1.1,WINS服务器为192.168.1.2。
图1-7 路由器充当DHCP服务器
例1-4 DHCP服务器配置
R1# show run
...OUTPUT OMITTED...
ip dhcp excluded-address 10.8.8.1 10.8.8.10
!
ip dhcp pool POOL-A
network 10.8.8.0 255.255.255.0
default-router 10.8.8.1
dns-server 192.168.1.1
netbios-name-server 192.168.1.2
...OUTPUT OMITTED...
从例1-5可以看出,如果将设备配置为从DHCP服务器接收IP地址,但是由于配置了自动配置机制,客户端显示的IP地址是APIPA(Automatic Private IP Addressing,自动专用IP寻址)地址(169.254.x.x),那么就可以确定客户端无法从DHCP服务器获取IP地址。不过,此时千万不要立即断定DHCP就是故障根源,因为还有可能出现了二层故障,如VLAN、中继、STP(Spanning Tree Protocol,生成树协议)或安全性等,这些故障也会导致客户端的DHCPDISCOVER消息无法到达DHCP服务器。
例1-5 在PC上验证DHCP分配的IP地址
C:\>ipconfig /all
Windows IP Configuration
...output omitted...
Ethernet adapter PC1 Lab:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . .: AMD PCNET Family PCI Ethernet Adapter
Physical Address. . . . . . . . .: 08-00-27-5D-06-D6
Dhcp Enabled. . . . . . . . . . .: Yes
Autoconfiguration Enabled . . . .: Yes
Autoconfiguration IP Address. . .: 169.254.180.166
Subnet Mask . . . . . . . . . . .: 255.255.0.0
IP Address. . . . . . . . . . . .: 2001:10::10
IP Address. . . . . . . . . . . .: fe80::a00:27ff:fe5d:6d6٪4
Default Gateway . . . . . . . . .:
如果怀疑DHCP出现了故障,就可以在故障排查过程中考虑以下潜在问题。
● 路由器不转发广播包:路由器默认不转发广播包,包括DHCPDISCOVER广播消息。因此,如果DHCP客户端与DHCP服务器位于不同的子网中,就需要将路由器明确配置为充当DHCP中继代理。
● DHCP地址池的IP地址耗尽:DHCP地址池包含的地址数量有限,一旦耗尽,新的DHCP请求就会被拒绝。
● 配置错误:DHCP 服务器的配置可能不正确。例如,地址池的网络地址范围不正确,或者没有将静态分配给路由器或DNS服务器的地址正确排除在外。
● IP地址重复:DHCP服务器可能将已经静态分配给网络上其他主机的IP地址分配给了客户端,这些重复的IP地址可能会给DHCP客户端以及静态分配了该IP地址的主机带来连接故障。
● 冗余服务器无法通信:为了实现冗余机制,可能会在网络中部署一些冗余的DHCP服务器,为了确保冗余机制有效,这些DHCP服务器之间必须进行相互通信。如果服务器之间的通信失败,那么DHCP服务器就可能会给客户端分配完全重叠的IP地址。
● DHCP的“拉取”特性:DHCP客户端可以在需要IP地址的时候向DHCP服务器请求IP地址,但DHCP服务器无法在客户端获得IP地址之后更改客户端的IP地址。也就是说,DHCP客户端可以从DHCP服务器拉取信息,而DHCP服务器却无法将信息变更推送给DHCP客户端。
● 接口配置的IP地址不在DHCP地址池中:充当DHCP服务器的路由器或多层交换机必须有一个接口的IP地址位于该服务器分配的IP地址池/子网中,路由器只能将地址池中的地址分配给通过该接口可达的客户端,这样就能确保路由器接口与客户端位于同一个子网当中。不过,需要注意的是,如果由中继代理在客户端与充当DHCP服务器的路由器之间转发DHCP消息,那么情况将有所不同,此时,不要求DHCP服务器的接口IP地址必须位于地址池中。
show ip dhcp conflict命令的示例输出结果如下:
R1# show ip dhcp conflict
IP address Detection method Detection time
172.16.1.3 Ping Oct 15 2018 8:56 PM
输出结果表明网络存在重复的IP地址172.16.1.3,路由器通过ping测试发现了该重复IP地址。解决了网络中的重复IP地址问题之后,就可以通过clear ip dhcp conflict *命令清除上述信息。
例1-6显示了show ip dhcp binding命令输出结果,输出结果表明已将IP地址10.1.1.10分配给了DHCP客户端,可以通过clear ip dhcp binding *命令释放该DHCP租约。
例1-6 show ip dhcp binding命令输出结果
R1# show ip dhcp binding
Bindings from all pools not associated with VRF:
IP address Client-ID/ Lease expiration Type
Hardware address/
User name
10.1.1.3 0100.50b6.0765.7a Oct 17 2018 07:53 PM Automatic
10.1.1.10 0108.0027.5d06.d6 Oct 17 2018 07:53 PM Automatic
例1-7给出了debug ip dhcp server events命令输出结果,显示了DHCP数据库的更新情况。
例1-7 debug ip dhcp server events命令输出结果
R1# debug ip dhcp server events
DHCPD: Seeing if there is an internally specified pool class:
DHCPD: htype 1 chaddr c001.0f1c.0000
DHCPD: remote id 020a00000a01010101000000
DHCPD: circuit id 00000000
DHCPD: Seeing if there is an internally specified pool class:
DHCPD: htype 1 chaddr c001.0f1c.0000
DHCPD: remote id 020a00000a01010101000000
DHCPD: circuit id 00000000
DHCPD: no subnet configured for 192.168.1.238.
例1-8显示了debug ip dhcp server packet命令输出结果,表明IP地址为10.1.1.3的DHCP客户端关闭时收到了DHCPRELEASE消息。此外,还可以看到DHCP客户端获取IP地址10.1.1.4时所经历的四步过程:DHCPDISCOVER、DHCPOFFER、DHCPREQUEST和DHCPACK。
例1-8 debug ip dhcp server packet命令输出结果
R1# debug ip dhcp server packet
DHCPD: DHCPRELEASE message received from client
0063.6973.636f.2d63.3030.312e.3066.3163.2e30.3030.302d.4661.302f.30 (10.1.1.3).
DHCPD: DHCPRELEASE message received from client
0063.6973.636f.2d63.3030.312e.3066.3163.2e30.3030.302d.4661.302f.30 (10.1.1.3).
DHCPD: Finding a relay for client
0063.6973.636f.2d63.3030.312e.3066.3163.2e30.3030.302d.4661.302f.30 on interface
FastEthernet0/1.
DHCPD: DHCPDISCOVER received from client
0063.6973.636f.2d63.3030.312e.3066.3163.2e30.3030.302d.4661.302f.30 on interface
FastEthernet0/1.
DHCPD: Allocate an address without class information
(10.1.1.0)
DHCPD: Sending DHCPOFFER to client
0063.6973.636f.2d63.3030.312e.3066.3163.2e30.3030.302d.4661.302f.30 (10.1.1.4).
DHCPD: broadcasting BOOTREPLY to client c001.0f1c.0000.
DHCPD: DHCPREQUEST received from client
0063.6973.636f.2d63.3030.312e.3066.3163.2e30.3030.302d.4661.302f.30.
DHCPD: No default domain to append - abort update
DHCPD: Sending DHCPACK to client
0063.6973.636f.2d63.3030.312e.3066.3163.2e30.3030.302d.4661.302f.30 (10.1.1.4).
DHCPD: broadcasting BOOTREPLY to client c001.0f1c.0000.
与每个人都通过街道地址唯一地定义自己的居住位置一样,IPv6地址也唯一地定义每台设备的位置。街道地址由两部分组成:街道名称和房屋编号。两者组成的地址在整个城镇范围内都是唯一的。同样,IPv6地址也由两部分组成,前64比特通常代表子网前缀(所属的网络),后64比特通常代表接口/主机ID(在网络中的位置)。
本节将简要回顾IPv6编址及地址分配的基本知识,并讨论与IPv6编址相关的故障及其排查方式。
与IPv4一样,IPv6也必须根据设备所处的位置为其配置适当的IPv6地址,以确保能够将数据包路由给设备或者从设备路由出去。图1-8给出了一个IPv6编址示例,2001:db8:a:a::/64是IPv6地址的前64比特,代表子网前缀,是节点所在的IPv6网络。路由器R1分配了接口IPv6地址2001:db8:a:a::1,最后64比特(::1)是接口/主机ID,表示其在该IPv6网络中的位置。PC1的IPv6地址为::10,而PC2的IPv6地址为::20。2001:db8:a:a::/64中的所有设备都将R1的Gig0/0接口地址(2001:db8:a:a::1)配置为默认网关地址。
图1-8 IPv6编址示例
与IPv4一样,IPv6主机与其他主机进行通信时,会将自己的子网比特与目的IP地址中的相同比特进行比较。如果匹配,就表明两台设备都位于同一个子网中;如果不匹配,就表明两台设备位于不同的子网中。如果两台设备位于同一个子网中,那么相互之间就可以进行直接通信;如果位于不同的子网中,就需要通过默认网关进行通信。
例如,假设图1-8中的PC1需要与Web服务器2001:db8:d::1进行通信,由于PC1意识到Web服务器位于其他网络当中,因而PC1必须使用默认网关的MAC地址将帧发送给默认网关。假设PC1需要与PC2进行通信,由于两者位于同一子网中,因而可以进行直接通信。
可以通过ipconfig命令验证Windows PC的IPv6地址(见例 1-9)。例1-9中的PC1静态配置了链路本地地址fe80::a00:27ff:fe5d:6d6和全局单播地址2001:db8:a:a::10。请注意链路本地地址末尾的%11,这是接口标识号,它是必需的,因为系统可以据此知道应该从哪个接口发送数据包。需要记住的是,可以在同一台设备上为多个接口分配相同的链路本地地址。
例1-9 使用ipconfig命令验证IPv6编址
C:\PC1>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
IPv6 Address. . . . . . . . . . .: 2001:db8:a:a::10
Link-local IPv6 Address . . . . .: fe80::a00:27ff:fe5d:6d6٪11
IPv4 Address. . . . . . . . . . .: 10.1.1.10
Subnet Mask . . . . . . . . . . .: 255.255.255.192
Default Gateway . . . . . . . . .: 2001:db8:a:a::1
10.1.1.1
IPv6地址由两部分组成:子网ID和接口/主机ID。由于接口ID通常为64比特,因而几乎没有人希望在组织机构内部对其进行手动配置。虽然可以静态定义接口ID,但最好的方法是允许终端设备为全局单播地址和链路本地地址自动随机或基于IEEE EUI-64标准分配自己的接口ID。
EUI-64使用客户端的MAC地址(48比特)将其分为两半,在中间添加十六进制数值FFFE,然后从左数将第7比特翻转,如果该比特为1,就变为0,如果是0,就变为1。例1-9中的链路本地地址为fe80::a00:27ff:fe5d:6d6,其中,子网ID为fe80::,接口ID为a00:27ff:fe5d:6d6,如果补上省略的前导0,那么该地址就变为0a00:27ff:fe5d:06d6。由于其中包含了FFFE,因而这是一个EUI-64接口ID。接下来将详细解释其衍生方式。
例1-10显示了PC1的ipconfig/all输出结果。请注意,MAC地址为08-00-27-5D-06-D6。将其分成两半并在中间添加FFFE之后,就可以得到08-00-27-FF-FE-5D-06-D6。接下来将十六进制数值分为4组,并用冒号替换其中的“-”,从而得到0800:27FF:FE5D:06D6(看起来与链路本地地址中的内容非常接近,但并不完全相同)。链路本地地址中的接口ID以0a开头,而这里以08开头,原因就在于第7比特被翻转了。下面看一下翻转情况:十六进制形式的08写成二进制形式就是00001000。从左到右数第7比特是0,因而将其变为1,得到00001010,转换为十六进制之后就是0a,因而接口ID为0A00:27FF:FE5D:06D6。
例1-10 使用ipconfig/all验证IPv6编址
C:\PC1>ipconfig/all
Windows IP Configuration
Host Name . . . . . . . . . . . .: PC1
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . .: Broadcast
IP Routing Enabled. . . . . . . .: No
WINS Proxy Enabled. . . . . . . .: No
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . .: Intel(R) PRO/1000 MT Desktop Adapter
Physical Address. . . . . . . . .: 08-00-27-5D-06-D6
DHCP Enabled. . . . . . . . . . .: No
Autoconfiguration Enabled . . . .: Yes
IPv6 Address. . . . . . . . . . .: 2001:db8:a:a::10(Preferred)
Link-local IPv6 Address . . . . .: fe80::a00:27ff:fe5d:6d6٪11(Preferred)
IPv4 Address. . . . . . . . . . .: 10.1.1.10(Preferred)
Subnet Mask . . . . . . . . . . .: 255.255.255.192
Default Gateway . . . . . . . . .: 2001:db8:a:a::1
10.1.1.1
DNS Servers . . . . . . . . . . .: fec0:0:0:ffff::1٪1
fec0:0:0:ffff::2٪1
fec0:0:0:ffff::3٪1
NetBIOS over Tcpip. . . . . . . .: Enabled
路由器默认以EUI-64方式生成链路本地地址的接口部分。Windows PC在自动配置IPv6地址时,默认随机为链路本地地址和全局单播地址生成接口部分。不过,也可以更改该默认设置,让其使用EUI-64。在PC上静态配置IPv6地址时,需要以手动方式分配接口部分。但是在路由器上,如果希望通过EUI-64方式静态配置全局单播地址,就需要在ipv6 address命令的末尾使用关键字eui-64(见例1-11)。
例1-11 在路由器接口上使用EUI-64
R2# config t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)# interface gigabitEthernet 0/0
R2(config-if)# ipv6 address 2001:db8:a:a::/64 eui-64
可以使用show ipv6 interface命令验证全局单播地址以及分配给接口的EUI-64接口ID(见例1-12)。可以看出,R2的Gig0/0接口拥有一个全局单播地址,该地址的接口ID基于EUI-64标准。
例1-12 在路由器接口上验证EUI-64
R2# show ipv6 interface gigabitEthernet 0/0
GigabitEthernet0/0 is up, line protocol is up
IPv6 is enabled, link-local address is FE80::C80E:15FF:FEF4:8
No Virtual link-local address(es):
Global unicast address(es):
2001:DB8:A:A:C80E:15FF:FEF4:8, subnet is 2001:DB8:A:A::/64 [EUI]
Joined group address(es):
FF02::1
FF02::1:FFF4:8
MTU is 1500 bytes
...output omitted...
手动分配IP地址(IPv4或IPv6)是一种无法满足大规模网络扩展需求的地址配置方式。对于IPv4来说,可以通过DHCP来提供动态编址方式。对于IPv6来说,可以采用3种动态地址配置方式:SLAAC(Stateless Address Autoconfiguration,无状态地址自动配置)、状态化DHCPv6或无状态DHCPv6。本节将分别介绍这3种地址配置方式以及相应的故障排查方式。
SLAAC旨在允许设备无须使用DHCPv6服务器即可配置自己的IPv6地址、前缀和默认网关。Windows PC默认自动启用SLAAC并生成自己的IPv6地址,例1-13显示了PC1的ipconfig/all命令的输出结果。
例1-13 使用ipconfig/all验证是否已启用IPv6 SLAAC
C:\PC1>ipconfig/all
Windows IP Configuration
Host Name . . . . . . . . . . . .: PC1
Primary Dns Suffix . . . . . . . :
Node Type . . . . . . . . . . . .: Broadcast
IP Routing Enabled. . . . . . . .: No
WINS Proxy Enabled. . . . . . . .: No
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . : SWITCH.local
Description . . . . . . . . . . .: Intel(R) PRO/1000 MT Desktop Adapter
Physical Address. . . . . . . . .: 08-00-27-5D-06-D6
DHCP Enabled. . . . . . . . . . .: Yes
Autoconfiguration Enabled . . . .: Yes
IPv6 Address. . . . . . . . . . .: 2001:db8::a00:27ff:fe5d:6d6(Preferred)
Link-local IPv6 Address . . . . .: fe80::a00:27ff:fe5d:6d6%11(Preferred)
IPv4 Address. . . . . . . . . . .: 10.1.1.10(Preferred)
Subnet Mask . . . . . . . . . . .: 255.255.255.192
...output omitted...
如果要在思科路由器上使用SLAAC,就需要通过ipv6 address autoconfig命令在接口上手动启用SLAAC(见例1-14)。
例1-14 在路由器接口上启用SLAAC
R2# config t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)# interface gigabitEthernet 0/0
R2(config-if)# ipv6 address autoconfig
Windows PC和路由器接口启用了SLAAC之后,PC将发送RS(Router Solicitation,路由器请求)消息,以确定是否有路由器连接在本地链路上,然后等待路由器发送RA(Router Advertisement,路由器宣告)消息,该消息将指示连接在相同网络上的路由器(默认网关)所使用的前缀。此后PC和路由器就可以使用该前缀信息生成自己的IPv6地址(在生成该RA消息的路由器接口所处的网络中),路由器采用EUI-64生成接口部分,PC则随机生成接口部分(除非明确配置使用EUI-64)。此外,PC还将发送RA消息的设备的IPv6链路本地地址作为默认网关地址。
图1-9显示了RA消息处理过程。首先,R1通过Gig0/0接口发送RA消息,源IPv6地址是Gig0/0的链路本地地址,源MAC地址是接口Gig0/0的MAC地址,目的IPv6地址是全部节点(all-nodes)链路本地多播IPv6地址FF02::1,目的MAC地址是全部节点目的MAC地址33:33:00:00:00:01(与全部节点链路本地多播IPv6地址FF02::1相关联)。在默认情况下,所有启用了IPv6功能的接口都要侦听去往这两个地址的数据包和帧。
图1-9 RA消息处理过程
图1-9中的PC1收到RA消息之后,将提取RA消息中包含的前缀信息(2001:db8:a:a::/64)。本例使用EUI-64创建IPv6地址,同时从RA消息的源地址字段获得链路本地地址并将其用作默认网关地址(见例1-15)。例1-15中显示了PC1的ipconfig输出结果。
例1-15 在PC上验证SLAAC生成的IPv6地址
C:\PC1>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
IPv6 Address. . . . . . . . . . .: 2001:db8:a:a:a00:27ff:fe5d:6d6
Link-local IPv6 Address . . . . .: fe80::a00:27ff:fe5d:6d6٪11
IPv4 Address. . . . . . . . . . .: 10.1.1.10
Subnet Mask . . . . . . . . . . .: 255.255.255.192
Default Gateway . . . . . . . . .: fe80::c80a:eff:fe3c:8٪11
10.1.1.1
如果要在路由器接口上验证SLAAC生成的IPv6地址,就可以使用show ipv6 interface命令。从例1-16可以看出,全局单播地址是通过SLAAC方式生成的。请注意示例底部,默认路由器被列为R1的链路本地地址,但需要注意的是,仅当路由器未启用IPv6单播路由(从而该路由器仅充当终端设备)时才会出现这种情况。
例1-16 在路由器接口上验证SLAAC生成的IPv6地址
R2# show ipv6 interface gig 0/0
GigabitEthernet0/0 is up, line protocol is up
IPv6 is enabled, link-local address is FE80::C80B:EFF:FE3C:8
No Virtual link-local address(es):
Stateless address autoconfig enabled
Global unicast address(es):
2001:DB8:A:A:C80B:EFF:FE3C:8, subnet is 2001:DB8:A:A::/64 [EUI/CAL/PRE]
valid lifetime 2591816 preferred lifetime 604616
Joined group address(es):
FF02::1
FF02::1:FF3C:8
...output omitted...
Default router is FE80::C80A:EFF:FE3C:8 on GigabitEthernet0/0
请注意,仅在路由器接口启用了IPv6及IPv6单播路由,且未在接口上抑制RA的情况下,路由器接口才默认生成RA消息。因此,如果SLAAC工作异常,就需要检查。
● 通过show run | include ipv6 unicast-routing命令确保应该生成RA消息的路由器已经启用了IPv6单播路由:
R1# show run | include ipv6 unicast-routing
ipv6 unicast-routing
● 通过show ipv6 interface命令确保路由器在正确接口上启用了IPv6(见例1-17)。
● 通过show ipv6 interface命令确保宣告RA消息的路由器接口拥有/64前缀(见例1-17,仅当路由器使用/64前缀时,SLAAC才起作用)。
● 通过show ipv6 interface命令确保路由器接口未抑制RA消息(见例1-18)。
例1-17 验证路由器接口已启用IPv6
R1# show ipv6 interface gigabitEthernet 0/0
GigabitEthernet0/0 is up, line protocol is up
IPv6 is enabled, link-local address is FE80::C80A:EFF:FE3C:8
No Virtual link-local address(es):
Global unicast address(es):
2001:DB8:A:A::1, subnet is 2001:DB8:A:A::/64
Joined group address(es):
FF02::1
FF02::2
FF02::1:FF00:1
FF02::1:FF3C:8
...output omitted...
例1-18 验证未抑制RA消息
R1# show ipv6 interface gigabitEthernet 0/0
GigabitEthernet0/0 is up, line protocol is up
IPv6 is enabled, link-local address is FE80::C80A:EFF:FE3C:8
No Virtual link-local address(es):
Global unicast address(es):
2001:DB8:A:A::1, subnet is 2001:DB8:A:A::/64
...output omitted...
ND DAD is enabled, number of DAD attempts: 1
ND reachable time is 30000 milliseconds (using 30000)
ND RAs are suppressed (all)
Hosts use stateless autoconfig for addresses.
此外,如果子网上有多台路由器生成了RA消息(这一点对于使用冗余默认网关的场景来说很正常),那么客户端就可以通过RA消息了解到有多个默认网关(见例1-19)。上部的默认网关是R2的链路本地地址,下部的默认网关是R1的链路本地地址。看起来似乎很好,但仅当这两个默认网关都能到达相同网络时才能提供所谓的冗余能力。以图1-8为例,如果PC1使用R2作为默认网关,就会丢弃去往Web服务器的数据包,因为R2无法将数据包路由给Web服务器(见例1-20的ping输出结果),除非将这些数据包从接收接口重定向回去,但这是非正常处理行为。因此,如果用户抱怨无法访问资源,且通过多台生成RA消息的路由器连接网络,就应该检查通过SLAAC获得的默认网关,验证这些默认网关能否路由到期望的网络资源。
例1-19 验证PC配置的默认网关
C:\PC1># ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
IPv6 Address. . . . . . . . . . .: 2001:db8:a:a:a00:27ff:fe5d:6d6
Link-local IPv6 Address . . . . .: fe80::a00:27ff:fe5d:6d6٪11
IPv4 Address. . . . . . . . . . .: 10.1.1.10
Subnet Mask . . . . . . . . . . .: 255.255.255.192
Default Gateway . . . . . . . . .: fe80::c80b:eff:fe3c:8٪11
fe80::c80a:eff:fe3c:8٪11
10.1.1.1
例1-20 从PC1到2001:db8:d::1的ping失败
C:\PC1>ping 2001:db8:d::1
Pinging 2001:db8:d::1 with 32 bytes of data:
Destination net unreachable.
Destination net unreachable.
Destination net unreachable.
Destination net unreachable.
Ping statistics for 2001:db8:d::1:
Packets: Sent = 4, Received = 0, Lost = 4 (100٪ loss),
虽然设备可以通过SLAAC来确定自己的IPv6地址、前缀及默认网关,但设备通过SLAAC获取的信息相对较少。现代网络中的设备可能还需要NTP(Network Time Protocol,网络时间协议)服务器信息、域名信息、DNS服务器信息以及TFTP服务器信息等。此时就可以通过DHCPv6服务器来分发IPv6编址信息以及其他多种可选信息。思科路由器和多层交换机都可以充当DHCP服务器。例1-21提供了R1的DHCPv6配置示例,通过命令ipv6 dhcp server让接口可以使用DHCP地址池分发IPv6编址信息。如果客户端未收到IPv6编址信息或者从充当DHCPv6服务器的路由器或多层交换机收到错误的IPv6编址信息,就可以检查接口配置并确保其关联了正确的DHCP地址池。
例1-21 R1的DHCPv6配置示例
R1# show run | section dhcp
ipv6 dhcp pool DHCPV6POOL
address prefix 2001:DB8:A:A::/64
dns-server 2001:DB8:B:B::1
domain-name cisco.com
R1# show run interface gigabitEthernet 0/0
Building configuration...
Current configuration : 173 bytes
!
interface GigabitEthernet0/0
no ip address
ipv6 address 2001:DB8:A:A::1/64
ipv6 dhcp server DHCPV6POOL
end
例1-22提供了show ipv6 dhcp binding命令(该命令可以显示客户端使用的IPv6地址)、show ipv6 dhcp interface命令(该命令可以显示与DHCPv6地址池相关联的接口)以及show ipv6 dhcp pool命令(该命令可以显示已配置的DHCP地址池)的输出结果。
例1-22 验证R1的DHCPv6信息
R1# show ipv6 dhcp binding
Client: FE80::A00:27FF:FE5D:6D6
DUID: 000100011B101C740800275D06D6
Username : unassigned
VRF : default
IA NA: IA ID 0x0E080027, T1 43200, T2 69120
Address: 2001:DB8:A:A:D519:19AB:E903:F802
preferred lifetime 86400, valid lifetime 172800
expires at May 25 2018 08:37 PM (172584 seconds)
R1# show ipv6 dhcp interface
GigabitEthernet0/0 is in server mode
Using pool: DHCPV6POOL
Preference value: 0
Hint from client: ignored
Rapid-Commit: disabled
R1# show ipv6 dhcp pool
DHCPv6 pool: DHCPV6POOL
Address allocation prefix: 2001:DB8:A:A::/64 valid 172800 preferred 86400 (1 in
use, 0 conflicts)
DNS server: 2001:DB8:B:B::1
Domain name: cisco.com
Active clients: 0
无状态DHCPv6是SLAAC和DHCPv6的组合。这种情况下的客户端通过路由器的RA消息自动确定IPv6地址、前缀和默认网关。RA消息中包含一个标志,该标志告诉客户端从DHCPv6服务器获取其他非编址信息,如DNS服务器或TFTP服务器的地址。为此,需要确保启用了接口配置命令ipv6 nd other-config-flag,以确保RA消息会通知客户端必须从DHCPv6服务器获取其他信息。例1-23在Gigabit Ethernet 0/0接口下配置了该命令,而且从show ipv6 interface gigabitEthernet 0/0的输出结果可以看出,主机通过无状态自动配置获取了IPv6编址信息,并且从DHCP服务器获取了其他信息。
例1-23 验证无状态DHCPv6
R1# show run int gig 0/0
Building configuration...
Current configuration : 171 bytes
!
interface GigabitEthernet0/0
no ip address
media-type gbic
speed 1000
duplex full
negotiation auto
ipv6 address 2001:DB8:A:A::1/64
ipv6 nd other-config-flag
end
R1# show ipv6 interface gigabitEthernet 0/0
GigabitEthernet0/0 is up, line protocol is up
IPv6 is enabled, link-local address is FE80::C80A:EFF:FE3C:8
No Virtual link-local address(es):
Global unicast address(es):
2001:DB8:A:A::1, subnet is 2001:DB8:A:A::/64
Joined group address(es):
FF02::1
FF02::2
FF02::1:FF00:1
FF02::1:FF3C:8
...output omitted...
ND advertised default router preference is Medium
Hosts use stateless autoconfig for addresses.
Hosts use DHCP to obtain other configuration.
与IPv4相似,DHCPv6也要经历4个协商步骤。不过,DHCPv6使用的是以下消息。
步骤1 SOLICIT(请求)消息:客户端通过多播地址FF02::1:2发送该消息以定位DHCPv6服务器,其中,FF02::1:2是全部DHCPv6服务器(all-DHCPv6- servers)多播地址。
步骤2 ADVERTISE(宣告)消息:服务器以单播ADVERTISE消息响应SOLICIT消息,向客户端提供编址信息。
步骤3 REQUEST(请求)消息:客户端向服务器发送该消息,以确认服务器提供的地址及其他参数。
步骤4 REPLY(应答)消息:服务器通过该消息完成协商过程。
表1-3提供了排查DHCPv6故障问题时可能遇到的各种DHCPv6消息类型,以供参考。
表1-3 DHCPv6消息类型
DHCPv6消息 |
描述 |
---|---|
SOLICIT(请求) |
客户端发送该消息以试图定位DHCPv6服务器 |
ADVERTISE(宣告) |
DHCPv6服务器发送该消息以响应SOLICIT消息,指示其可用 |
REQUEST(请求) |
客户端向特定DHCPv6服务器发送该消息以请求IP配置参数 |
CONFIRM(证实) |
客户端向服务器发送该消息以确定服务器分配的地址是否仍然可用 |
RENEW(续租) |
客户端向分配地址参数的服务器发送该消息以延长所分配地址的生存期 |
REBIND(重新绑定) |
如果客户端未收到RENEW消息的应答消息,那么客户端就会发送该消息以延长所分配地址的生存期 |
REPLY(应答) |
服务器向客户端发送该消息(包含已分配的地址和其他配置参数)以响应从客户端收到的SOLICIT、REQUEST、RENEW或REBIND消息 |
RELEASE(释放) |
客户端向服务器发送该消息以告知服务器不再需要其分配的地址 |
DECLINE(拒绝) |
客户端向服务器发送该消息以告知服务器其已经使用已分配的地址 |
RECONFIGURE(重新配置) |
如果服务器有新信息或更新信息,就向客户端发送该消息 |
INFORMATION-REQUEST(信息请求) |
如果客户端不需要服务器分配的IP地址,而只需要其他配置信息,就向服务器发送该消息 |
RELAY-FORW(中继转发) |
中继代理通过该消息将消息转发给DHCP服务器 |
RELAY-REPL(中继应答) |
服务器通过该消息应答中继代理 |
到目前为止,所有DHCPv6示例中的DHCP服务器与客户端都位于同一个本地网络中,但是对于实际的大多数网络来说,DHCP 服务器通常位于不同的网络中,这样就会出现新的问题。请注意,SOLICIT 消息的多播地址是一个链路本地范围多播地址,以 FF02 开头,因而该多播消息不会离开本地网络,客户端也无法访问 DHCPv6服务器。
如果要将DHCPv6消息中继给其他网络中的DHCPv6服务器,就需要使用接口配置命令ipv6 dhcp relay destination,将客户端所属网络中的本地路由器接口配置为中继代理。例1-24为接口Gigabit Ethernet 0/0配置了命令ipv6 dhcp relay destination 2001:db8:a:b::7,作用是将SOLICIT消息转发给所列地址的DHCPv6服务器。
例1-24 将R1配置为DHCPv6中继代理
R1# config t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)# interface gigabitethernet0/0
R1(config-if)# ipv6 dhcp relay destination 2001:db8:a:b::7
排查基于IP的网络连接故障时,通常都选择从OSI参考模型的网络层(第3层)开始开展故障排查工作(分而治之法)。例如,如果网络上两台主机之间出现了连接问题,就可以通过在主机之间执行ping测试来检查第3层是否有问题。如果ping测试成功,就可以确定故障出在OSI参考模型的上层(第4层~第7层);如果ping测试失败,就可以将故障排查工作集中在第1层~第3层上。如果最终确定第3层有问题,就可以将故障排查工作聚焦到路由器的包转发过程上。
本节将讨论具体的包转发过程以及验证包转发过程中用到的各种数据结构表项的相关命令。此外,本节还将提供与包转发故障排查操作相关的思科IOS软件命令集。
下面先以图1-10为例来解释基本的路由过程。假设拓扑结构中的PC1需要访问Server1的HTTP资源,请注意,PC1和Server1位于不同的网络上。那么,该如何将来自源IP地址192.168.1.2的数据包路由到目的IP地址192.168.3.2呢?
图1-10 基本的路由拓扑结构
具体的包转发过程如下。
步骤1 如前所述,PC1将自己的IP地址和子网掩码192.168.1.2/24与目的IP地址192.168.3.2进行对比。PC1首先确定自己的IP地址的网络部分,然后将这些二进制比特与目的IP地址的相同二进制比特进行对比。如果相同,就知道其与目的端位于同一个子网中;如果不同,就说明目的端位于远程子网中。对于本例来说,PC1判断出目的IP地址位于远程子网中。因此,PC1需要将帧发送到默认网关(可以在PC1上手动配置网关,也可以通过DHCP方式加以动态学习),本例中的PC1拥有默认网关地址192.168.1.1(路由器R1)。为了构建正确的二层帧,PC1需要知道帧的目的MAC地址,对于本例来说就是PC1的默认网关的MAC地址。如果PC1的ARP(Address Resolution Protocol,地址解析协议)缓存中没有该MAC地址,那么PC1就需要通过ARP来发现该MAC地址。PC1收到路由器R1的ARP应答消息之后,就可以将路由器R1的MAC地址添加到自己的ARP缓存中。此后,PC1就可以将目的端为Server1的数据封装到发送给R1的帧中(见图1-11)。
图1-11 基本路由过程:步骤1
步骤2 路由器R1收到PC1发送的数据帧,由于目的MAC地址是R1的,因而R1 将删除二层报头并查看 IP(三层)报头。IP 报头包含一个 TTL(Time-To-Live,生存时间)字段,该字段每经过一跳路由器都会递减1,因而路由器R1会构建数据包的TTL字段,如果TTL字段值递减至0,那么路由器就会丢弃该数据包,并向源端发送一条time-exceeded(超时)的ICMP(Internet Control Message Protocol,互联网控制报文协议)消息。假定TTL字段值未递减至0,那么路由器R1就会检查其路由表以确定到达IP地址192.168.3.2的最佳路径。对于本例来说,路由器R1的路由表中有一个表项,其指出可以通过接口Serial 1/1到达网络192.168.3.0/24。请注意,由于串行接口没有MAC地址,因而不需要ARP。因此,路由器R1将使用PPP(Point-to-Point Protocol,点到点协议)二层帧头通过Serial 1/1接口向外转发该数据帧(见图1-12)。
图1-12 基本路由过程:步骤2
步骤3 路由器R2收到帧后,将删除PPP帧头,然后像路由器R1一样递减IP报头中的TTL字段值。同样,假设TTL字段值未递减至0,那么路由器R2将查看IP报头以确定目的网络。对于本例来说,目的网络192.168.3.0/24直连在路由器R2的Fast Ethernet 0/0接口上。与PC1发出ARP请求以确定默认网关的MAC地址一样,路由器R2也发送ARP请求以确定Server1的MAC地址(如果Server1的MAC地址不在ARP缓存中)。从Server1收到ARP应答之后,路由器R2就可以将ARP应答结果存储到ARP缓存中,并通过Fast Ethernet 0/0接口将数据帧转发给Server1(见图1-13)。
图1-13 基本路由过程:步骤3
上述路由过程用到了两种路由器数据结构。
● IP路由表:路由器在路由IP包时,需要查询IP路由表以找到最佳匹配路由。最佳匹配路由指的是前缀最长的路由。例如,假设路由器拥有网络10.0.0.0/8、10.1.1.0/24和10.1.1.0/26的路由表项,此外,假设路由器正在尝试转发目的IP地址为10.1.1.10的数据包,那么路由器将会选择10.1.1.0/26路由表项作为10.1.1.10的最佳匹配路由,因为该路由表项拥有最长前缀/26(匹配的比特数最多)。
● 三层到二层映射表:图1-13中的路由器R2的ARP缓存包含了三层到二层映射信息。具体来说,就是该ARP缓存包括了一个映射关系,说明MAC地址2222.2222.2222对应于IP地址192.168.3.2。虽然ARP缓存用于以太网的三层到二层映射数据结构,但相似的数据结构也可以用于多点帧中继网络和DMVPN(Dynamic Multipoint Virtual Private Network,动态多点虚拟专网)网络。但是,对于PPP或HDLC(High-Level Data Link Control,高级数据链路控制)等点到点链路来说,由于链路另一侧所连接的设备只有一种可能,因而无须映射信息即可确定下一跳设备。
持续查询路由器的IP路由表及三层到二层映射表(如ARP缓存)的效率比较低。幸运的是,CEF(Cisco Express Forwarding,思科快速转发)可以从路由器的IP路由表和三层到二层映射表收集相关信息,此后就可以直接引用CEF硬件中的数据结构来转发数据包。
CEF提供了两种主要数据结构。
● FIB(Forwarding Information Base,转发信息库):FIB包含了与IP路由表信息相似的三层信息,还包含了与多播路由和直连主机相关的信息。
● 邻接表(Adjacency Table):路由器使用CEF执行路由查找时,FIB会引用邻接表中的表项。邻接表表项包含了路由器正确构建数据帧所需的帧头信息,因而多点以太网接口的邻接表表项中存在出站接口和下一跳MAC地址信息,而点到点接口则只需要出站接口信息。
图1-14显示了路由器的数据结构。
图1-14 路由器的数据结构
排查包转发过程故障时,需要检查路由器的IP路由表。如果观察到的流量行为与IP路由表信息不一致,那么需要记住的是,IP路由表由路由器的控制平面进行维护,并用于在数据平面构建表项。CEF运行在数据平面并使用FIB。需要查看CEF数据结构(FIB和邻接表),其中包含了做出包转发决策所需的所有信息。
例1-25提供了show ip route ip_address命令输出结果,表明到达IP地址192.168.1.11的下一跳IP地址是192.168.0.11(通过接口Fast Ethernet 0/0可达)。由于该信息来自控制平面,因而包含了路由协议(本例为OSPF)信息。
例1-25 show ip route ip_address命令输出结果
Router# show ip route 192.168.1.11
Routing entry for 192.168.1.0/24
Known via "ospf 1", distance 110, metric 11, type intra area
Last update from 192.168.0.11 on FastEthernet0/0, 00:06:45 ago
Routing Descriptor Blocks:
192.168.0.11, from 10.1.1.1, 00:06:45 ago, via FastEthernet0/0
Route metric is 11, traffic share count is 1
例1-26提供了show ip route ip_address subnet_mask命令输出结果,表明整个网络192.168.1.0/24都可以通过接口Fast Ethernet 0/0访问,下一跳IP地址为192.168.0.11。
例1-26 show ip route ip_address subnet_mask命令输出结果
Router# show ip route 192.168.1.0 255.255.255.0
Routing entry for 192.168.1.0/24
Known via "ospf 1", distance 110, metric 11, type intra area
Last update from 192.168.0.11 on FastEthernet0/0, 00:06:57 ago
Routing Descriptor Blocks:
192.168.0.11, from 10.1.1.1, 00:06:57 ago, via FastEthernet0/0
Route metric is 11, traffic share count is 1
例1-27显示了携带和不携带longer-prefixes选项的show ip route ip_address subnet_mask longer-prefixes命令输出结果。可以看出,不携带longer-prefixes选项时,路由器显示IP路由表中没有子网172.16.0.0 255.255.0.0,但是携带了longer-prefixes选项之后,则显示了两条路由,因为这两条路由都是172.16.0.0/16网络的子网。
例1-27 show ip route ip_address subnet_mask longer-prefixes命令输出结果
Router# show ip route 172.16.0.0 255.255.0.0
% Subnet not in table
R2# show ip route 172.16.0.0 255.255.0.0 longer-prefixes
Codes: 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
- ODR, P - periodic downloaded static route
Gateway of last resort is not set
172.16.0.0/30 is subnetted, 2 subnets
C 172.16.1.0 is directly connected, Serial1/0.1
C 172.16.2.0 is directly connected, Serial1/0.2
例1-28显示了show ip cef ip_address命令输出结果。可以看出,根据CEF,可以通过Fast Ethernet 0/0接口访问IP地址192.168.1.11,下一跳IP地址为192.168.0.11。
例1-28 show ip cef ip_address命令输出结果
Router# show ip cef 192.168.1.11
192.168.1.0/24, version 42, epoch 0, cached adjacency 192.168.0.11
0 packets, 0 bytes
via 192.168.0.11, FastEthernet0/0, 0 dependencies
next hop 192.168.0.11, FastEthernet0/0
valid cached adjacency
例1-29显示了show ip cef ip_address subnet_mask命令输出结果。可以看出,根据CEF,可以通过Fast Ethernet 0/0接口访问IP地址192.168.1.0/24,下一跳IP地址为192.168.0.11。
例1-29 show ip cef ip_address subnet_mask命令输出结果
Router# show ip cef 192.168.1.0 255.255.255.0
192.168.1.0/24, version 42, epoch 0, cached adjacency 192.168.0.11
0 packets, 0 bytes
via 192.168.0.11, FastEthernet0/0, 0 dependencies
next hop 192.168.0.11, FastEthernet0/0
valid cached adjacency
show ip cef exact-route source_address destination_address命令输出结果如下:
Router# show ip cef exact-route 10.2.2.2 192.168.1.11
10.2.2.2 -> 192.168.1.11 : FastEthernet0/0 (next hop 192.168.0.11)
从输出结果可以看出,自源IP地址10.2.2.2并去往目的IP地址192.168.1.11的数据包将从Fast Ethernet 0/0去往下一跳IP地址192.168.0.11。
对于点对多点帧中继或以太网等多点接口来说,路由器知道了数据包的下一跳地址之后,还需要相应的二层信息[如下一跳MAC地址或DLCI(Data Link Connection Identifier,数据链路连接标识符)]才能正确构建数据帧。例1-30提供了show ip arp命令输出结果,该命令可以显示存储在路由器控制平面的ARP缓存信息,包括已学到或已配置的MAC地址以及相关联的IP地址。
例1-30 show ip arp命令输出结果
Router# show ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 192.168.0.11 0 0009.b7fa.d1e1 ARPA FastEthernet0/0
Internet 192.168.0.22 - c001.0f70.0000 ARPA FastEthernet0/0
例1-31提供了show frame-relay map命令输出结果。输出结果显示了帧中继接口、与该接口相关联的DLCI以及可以通过该接口到达的下一跳IP地址[使用与列出的DLCI相关联的PVC(Permanent Virtual Circuit,永久虚电路)]。对于本例来说,如果R2需要将数据发送给下一跳IP地址172.16.33.6,就需要通过与DLCI 406相关联的PVC到达该目的端。
例1-31 show frame-relay map命令输出结果
Router# show frame-relay map
Serial1/0 (up): ip 172.16.33.5 dlci 405(0x195,0x6450), static,broadcast,
CISCO, status defined, active
Serial1/0 (up): ip 172.16.33.6 dlci 406(0x196,0x6460), static,broadcast,
CISCO, status defined, active
例1-32提供了show ip nhrp命令输出结果。该命令可以显示DMVPN网络使用的NHRP(Next Hop Resolution Protocol,下一跳解析协议)缓存。对于本例来说,如果需要将数据包发送给下一跳IP地址192.168.255.2,就需要通过NBMA(Non-Broadcast MultiAccess,非广播多路访问)地址198.51.100.2到达该目的端。
例1-32 show ip nhrp命令输出结果
HUBRouter# show ip nhrp
192.168.255.2/32 via 192.168.255.2
Tunnel0 created 00:02:35, expire 01:57:25
Type: dynamic, Flags: unique registered
NBMA address: 198.51.100.2
192.168.255.3/32 via 192.168.255.3
Tunnel0 created 00:02:36, expire 01:57:23
Type: dynamic, Flags: unique registered
NBMA address: 203.0.113.2
例1-33提供了show adjacency detail命令输出结果。输出结果显示了CEF信息,这些信息用于构造通过不同的路由器接口到达下一跳IP地址所需的帧头。请注意,Serial 1/0接口的数值为64510800,这是路由器将数据包转发到下一跳IP地址172.16.33.5所需信息(包括DLCI 405)的十六进制表示形式。请注意Fast Ethernet 3/0接口的数值CA1B01C4001CCA1C164000540800,该数值是以太网帧的目的MAC地址、源MAC地址和EtherType代码,前12个十六进制数值是目的MAC地址,后12个十六进制数值是源MAC地址,0800是IPv4 EtherType代码。
例1-33 show adjacency detail命令输出结果
Router# show adjacency detail
Protocol Interface Address
IP Serial1/0 172.16.33.5(7)
0 packets, 0 bytes
epoch 0
sourced in sev-epoch 1
Encap length 4
64510800
FR-MAP
IP Serial1/0 172.16.33.6(7)
0 packets, 0 bytes
epoch 0
sourced in sev-epoch 1
Encap length 4
64610800
FR-MAP
IP FastEthernet3/0 203.0.113.1(7)
0 packets, 0 bytes
epoch 0
sourced in sev-epoch 1
Encap length 14
CA1B01C4001CCA1C164000540800
L2 destination address byte offset 0
L2 destination address byte length 6
Link-type after encap: ip
ARP
设计路由网络时,需要在多种可选路由信息源(如直连、静态、EIGRP、OSPF和BGP等)之间确定路由信息源。对于这些不同的路由信息源选项来说,我们必须能够识别出最值得信任(可信)的路由信息源,这一点对于使用多个路由信息源的场景来说极为重要,因为对于任何给定路由来说,只能使用其中的一个路由信息源来填充路由表。因此,对于故障排查人员来说,必须了解如何确定最佳路由信息源以及如何将该路由信息源的信息安装到路由表中。
本节将解释什么是最可靠的路由信息源以及路由表与各种数据结构进行交互以使用最佳信息填充路由表的方式。
通常来说,为了更有效地排查路由信息源故障,必须理解动态路由协议的数据结构与路由器的IP路由表之间的交互方式。图1-15显示了IP路由协议的数据结构与路由器的IP路由表之间的交互方式。
图1-15 IP路由协议的数据结构与IP路由表之间的交互方式
路由器收到相邻路由器的路由信息之后,将信息存储在IP 路由协议的数据结构中,并由路由协议进行分析以确定最佳路径(基于度量)。IP 路由协议的数据结构也可以由本地路由器填充。例如,路由器可能会被配置为进行路由重分发,将路由信息从路由表重分发到IP路由协议的数据结构中。此外,路由器也可能会让指定接口参与IP路由协议进程,此时,该接口所属的网络就会被安装到路由协议的数据结构中。
不过,路由表中包含哪些信息呢?从图1-15可以看出,路由协议的数据结构可以填充路由表,直连路由可以填充路由表,静态路由也可以填充路由表,这些都是路由信息源。
路由器可以同时从以下路由信息源接收路由信息。
● 直连路由。
● 静态路由。
● RIP(Routing Information Protocol,路由信息协议)。
● EIGRP。
● OSPF。
● BGP。
如果从这些路由源收到的路由信息是面向不同目的网络的路由信息,就可以将这些路由信息分别用于各自学到的目的网络,并安装到路由表中。但是,如果从RIP和OSPF收到的路由信息完全相同,那么该怎么办呢?例如,假设这两种路由协议都向路由器通告了网络 10.1.1.0/24,那么路由器该如何选择最可信或最佳路由信息源呢?路由器不可能同时使用这两种路由信息源,必须选择一个并将该路由信息安装到路由表中。
每种路由信息源都有一个AD(Administrative Distance,管理距离),不同的路由信息源进行对比时,可以将路由信息源的AD视为该路由源的可信度或信任度。表1-4列出了不同路由信息源的默认AD,AD值越小的路由信息源越优。
表1-4 路由信息源的默认AD
路由信息源 |
AD |
---|---|
直连路由 |
0 |
静态路由 |
1 |
EIGRP汇总路由 |
5 |
eBGP(external Border Gateway Protocol,外部边界网关协议) |
20 |
EIGRP(内部) |
90 |
OSPF |
110 |
IS-IS(Intermediate System to Intermediate System,中间系统到中间系统) |
115 |
RIP |
120 |
ODR(On-Demand Routing,按需路由) |
160 |
EIGRP(外部) |
170 |
iBGP(internal Border Gateway Protocol,内部边界网关协议) |
200 |
未知(不可信) |
255 |
例如,RIP的默认AD为120,OSPF的默认AD为110。因此,如果RIP和OSPF都知道去往某特定网络的路由(如10.1.1.0/24),就会将OSPF路由注入路由器的IP路由表中,因为OSPF拥有更加可信的AD。因此,IP路由协议的数据结构选择的最佳路由只是即将注入路由器IP路由表的候选路由,仅当路由器确定某路由来自最佳路由信息源之后,才会将该路由注入路由表中。如本书后续章节所述,排查特定路由协议故障时,可能会发现路由表中缺失特定路由协议的路由,或者因使用较低AD值的路由信息源而产生次优路由问题。
可以通过show ip route ip_address命令验证路由表中的路由的AD值(见例1-34)。可以看出,去往10.1.1.0的路由的AD为0,去往10.1.23.0的路由的AD为90。
例1-34 验证路由表中的路由的AD值
R1# show ip route 10.1.1.0
Routing entry for 10.1.1.0/26
Known via "connected", distance 0, metric 0 (connected, via interface)
Redistributing via eigrp 100
Routing Descriptor Blocks:
directly connected, via GigabitEthernet1/0
Route metric is 0, traffic share count is 1
R1# show ip route 10.1.23.0
Routing entry for 10.1.23.0/24
Known via "eigrp 100", distance 90, metric 3072, type internal
Redistributing via eigrp 100
Last update from 10.1.13.3 on GigabitEthernet2/0, 09:42:20 ago
Routing Descriptor Blocks:
10.1.13.3, from 10.1.13.3, 09:42:20 ago, via GigabitEthernet2/0
Route metric is 3072, traffic share count is 1
Total delay is 20 microseconds, minimum bandwidth is 1000000 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 1
如果希望始终不使用来自特定路由信息源的路由信息或路由信息的子网,就可以将来自该路由信息源的特定路由或全部路由的AD值更改为255,即意味着这些路由“不可信”。
此外,还可以通过AD来控制路径选择。例如,假设有两条不同的路径都能到达同一目的端,这两条路径学自不同的路由信息源(如EIGRP和静态路由),那么此时将优选静态路由。但是,该静态路由指向的却是一条比EIGRP路径慢的备用链路,因而此时更希望将EIGRP路径安装到路由表中(因为静态路由会产生次优路由),但是又不允许删除该静态路由,那么该如何处理呢?为了解决该问题,可以创建一条浮动静态路由,让该静态路由的AD值大于优选路由。由于此时希望优选EIGRP路由,因而需要将该静态路由的AD值调整为大于EIGRP的AD值(90),调整之后,就可以将学自EIGRP的路由安装到路由表中,该路由失效之后,才会将静态路由安装到路由表中。
静态路由由管理员手动配置,在默认情况下,静态路由是第二可靠的路由信息源(AD为1)。管理员可以通过静态路由精确地控制如何将数据包路由到特定目的端。本节将讨论IPv4和IPv6静态路由配置语法以及相关的故障排查技术。
可以在全局配置模式下通过命令ip route prefix mask {ip_address | interface_type interface_number} [distance]配置IPv4静态路由。下面的代码段显示了R1的静态路由配置示例,为R1配置了一条关于网络10.1.3.0/24的静态路由:
R1# config t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)# ip route 10.1.3.0 255.255.255.0 10.1.12.2 8
可以通过下一跳地址10.1.12.2(R2)到达该网络(见图1-16),分配的AD值为8(默认值为1)。
图1-16 在R1上使用下一跳选项配置静态路由
例1-35显示了R1的show ip route static命令输出结果。可以看出,网络10.1.3.0/24是通过静态路由学到的,可以通过下一跳IP地址10.1.12.2到达该网络,且AD为8,度量为0(因为无法像动态路由协议那样了解目的端的真正距离)。
例1-35 验证R1的静态路由
R1# show ip route static
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
...output omitted...
10.0.0.0/8 is variably subnetted, 7 subnets, 2 masks
S 10.1.3.0/24 [8/0] via 10.1.12.2
排查IPv4静态路由故障时,需要了解静态路由无法提供所需路由结果的原因。例如,网络和掩码如果其中任何一个不正确,那么静态路由都无法按预期路由数据包,此时,路由器就可能会丢弃数据包,因为这些数据包与静态路由或其他路由都不匹配,最终可能需要通过默认路由转发数据包,导致指向错误的方向。此外,如果静态路由包含了不应包含的网络,那么也可能会以错误的方式路由数据包。
考虑以下问题:如果在图1-16中的R2上通过命令ip route 10.1.3.0 255.255.255.0 10.1.12.1配置了静态路由,那么去往10.1.3.0的数据包就会发送给R1,这是错误的路由方式。这是因为例1-35显示R1将通过R2(10.1.12.2)去往网络10.1.3.0/24,因此,R1与R2将不停地来回发送目的端为10.1.3.0/24的数据包,直至TTL到期。
请注意,下一跳IP地址对于静态路由来说是非常重要的参数,它可以告诉本地路由器应该将数据包发送到哪里。以例1-35为例,下一跳IP地址是10.1.12.2,因而必须将目的端为10.1.3.0的数据包转发到10.1.12.2。接下来,R1在路由表中递归查找10.1.12.2以确定如何到达该IP地址(见例1-36)。例1-36显示了R1的show ip route 10.1.12.2命令输出结果,可以看出,10.1.12.2直连Gigabit Ethernet 1/0。
例1-36 R1递归查找下一跳地址
R1# show ip route 10.1.12.2
Routing entry for 10.1.12.0/24
Known via "connected", distance 0, metric 0 (connected, via interface)
Routing Descriptor Blocks:
directly connected, via GigabitEthernet1/0
Route metric is 0, traffic share count is 1
由于到达10.1.12.2的出站接口是Gigabit Ethernet 1/0,因而以太网帧需要源和目的MAC地址。因此,R1在ARP缓存中查找MAC地址(见例1-37),发现10.1.12.2的MAC地址是ca08.0568.0008。
例1-37 在ARP缓存中查找MAC地址
R1# show ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 10.1.1.1 - ca07.0568.0008 ARPA GigabitEthernet0/0
Internet 10.1.12.1 - ca07.0568.001c ARPA GigabitEthernet1/0
Internet 10.1.12.2 71 ca08.0568.0008 ARPA GigabitEthernet1/0
请注意,本例中的下一跳IP地址的MAC地址用于二层帧,而不是数据包中的IP地址的MAC地址。这样做的好处是,路由器在使用ARP进程时,只要查找下一跳的MAC地址并将其存储到ARP缓存中。此后,所有去往下一跳地址10.1.12.2的数据包都不需要再发送ARP请求,只要在ARP缓存中查找即可,使得整个路由过程更加高效。
了解了下一跳IP地址之后,还需要了解另一个选项。从前面的ip route语法可以看出,可以在命令中指定出站接口而非下一跳IP地址。使用出站接口选项时必须正确区分适用场景,正确的场景是纯点到点接口,如DSL或串行接口。点到点以太网链路并不是纯点到点链路,而是多路访问连接,而且由于是以太网接口,因而还需要源MAC地址和目的MAC地址。如果将以太网接口指定为下一跳,那么路由器就必须通过ARP为每个数据包中的每个目的IP地址查找对应的MAC地址。具体情况如下。
假设R1配置了以下静态路由:ip route 10.1.3.0 255.255.255.0 gigabit Ethernet 1/0。例1-38显示了该静态路由在路由表中的呈现方式,说明10.1.3.0/24与接口Gigabit Ethernet 1/0直连。但事实是否如此呢?从图1-17可以看出,10.1.3.0/24并没有与该接口直连,但是由于静态路由的配置方式,导致R1认为其与该接口直连。
例1-38 指定出站接口的静态路由
R1# show ip route static
...output omitted...
10.0.0.0/8 is variably subnetted, 7 subnets, 2 masks
S 10.1.3.0/24 is directly connected, GigabitEthernet1/0
图1-17 在R1上使用出站接口选项配置静态路由
假设网络10.1.1.0/24中的用户试图访问网络10.1.3.0/24中的资源,即通过10.1.3.8访问10.1.3.1的资源。R1收到数据包之后,查找路由表并发现最长匹配项如下:
S 10.1.3.0/24 is directly connected, GigabitEthernet1/0
由于R1认为该网络与其直连,因而数据包中的目的IP地址应该位于与Gig1/0直连的网络上,但图1-17显示的事实却并非如此。由于Gig1/0是以太网接口,因而R1通过ARP来确定数据包目的地址字段中的IP地址的MAC地址(这一点与指定下一跳IP地址不同,如果指定的是下一跳IP地址,那么将使用下一跳IP地址的MAC地址)。例1-39显示了R1的ARP缓存,请注意,每个目的IP地址在ARP缓存中都有一个表项。如果路由器没有转发ARP请求,那会是什么原因呢?出现这种情况的原因是代理ARP(路由器默认启用该功能特性),如果路由器的路由表拥有去往ARP请求中的IP地址的路由,那么代理ARP功能就允许路由器以自己的MAC地址响应ARP请求。请注意,例1-39中列出的MAC地址全部相同,而且与表项10.1.12.2的MAC地址完全匹配。由于R2拥有到达ARP请求的IP地址的路由,因而以自己的MAC地址进行响应。
例1-39 R1的ARP缓存(R2启用了代理ARP功能)
R1# show ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 10.1.1.1 - ca07.0568.0008 ARPA GigabitEthernet0/0
Internet 10.1.3.1 0 ca08.0568.0008 ARPA GigabitEthernet1/0
Internet 10.1.3.2 0 ca08.0568.0008 ARPA GigabitEthernet1/0
Internet 10.1.3.3 3 ca08.0568.0008 ARPA GigabitEthernet1/0
Internet 10.1.3.4 0 ca08.0568.0008 ARPA GigabitEthernet1/0
Internet 10.1.3.5 1 ca08.0568.0008 ARPA GigabitEthernet1/0
Internet 10.1.3.6 0 ca08.0568.0008 ARPA GigabitEthernet1/0
Internet 10.1.3.7 0 ca08.0568.0008 ARPA GigabitEthernet1/0
Internet 10.1.3.8 1 ca08.0568.0008 ARPA GigabitEthernet1/0
Internet 10.1.12.1 - ca07.0568.001c ARPA GigabitEthernet1/0
Internet 10.1.12.2 139 ca08.0568.0008 ARPA GigabitEthernet1/0
例1-40通过命令show ip interface验证路由器是否启用了代理ARP功能。
例1-40 验证是否启用了代理ARP功能
R2# show ip interface gigabitEthernet 0/0
GigabitEthernet0/0 is up, line protocol is up
Internet address is 10.1.12.2/24
Broadcast address is 255.255.255.255
Address determined by non-volatile memory
MTU is 1500 bytes
Helper address is not set
Directed broadcast forwarding is disabled
Multicast reserved groups joined: 224.0.0.5 224.0.0.6
Outgoing access list is not set
Inbound access list is not set
Proxy ARP is enabled
Local Proxy ARP is disabled
Security level is default
Split horizon is enabled
ICMP redirects are always sent
如果未启用代理ARP功能,那么R1的ARP缓存将如例1-41所示。请注意,虽然R1仍在发送ARP请求,但是并未收到任何ARP应答消息,因而无法构建二层帧,从而出现封装故障(调试IP数据包就可以发现该故障)。
例1-41 R1的ARP缓存(R2禁用了代理ARP功能)
R1# show ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 10.1.1.1 - ca07.0568.0008 ARPA GigabitEthernet0/0
Internet 10.1.3.1 0 Incomplete ARPA
Internet 10.1.3.2 0 Incomplete ARPA
Internet 10.1.3.3 0 Incomplete ARPA
Internet 10.1.3.4 0 Incomplete ARPA
Internet 10.1.3.5 0 Incomplete ARPA
Internet 10.1.3.6 0 Incomplete ARPA
Internet 10.1.3.7 0 Incomplete ARPA
Internet 10.1.3.8 0 Incomplete ARPA
Internet 10.1.12.1 - ca07.0568.001c ARPA GigabitEthernet1/0
Internet 10.1.12.2 139 ca08.0568.0008 ARPA GigabitEthernet1/0
由于R1通过ARP来确定每个数据包中的目的IP地址的MAC地址,因而永远也不要在静态路由中指定以太网接口。如果在静态路由中指定了以太网接口,就会导致路由器资源(如处理器和内存)的过度消耗,因为控制平面会在转发过程中通过ARP来确定二层MAC地址。
识别静态路由配置差错以及所引起的问题,对于故障排查操作来说非常重要,因为静态路由配置出错会导致流量被错误路由或次优路由。此外,需要记住的是,由于静态路由的AD值为1,因而静态路由比去往同一目的端的其他路由信息源更优。
可以在全局配置模式下通过命令ipv6 route {ipv6_prefix/prefix_length} {ipv6_address | interface_type interface_number} [administrative_distance] [next_hop_address]配置IPv6静态路由。下面的代码段显示了R1的IPv6静态路由配置示例。在R1上使用下一跳选项配置IPv6静态路由如图1-18所示。
R1# config t
R1(config)# ipv6 route 2001:DB8:0:3::/64 gigabitEthernet 1/0
FE80::2 8
图1-18 在R1上使用下一跳选项配置IPv6静态路由
静态路由告诉R1关于网络2001:DB8:0:3::/64的路由信息,可以通过下一跳地址FE80::2(R2的链路本地地址)到达该网络,且分配了AD值8(默认值为1)。请注意,该配置指定了以太网出站接口,如果将链路本地地址作为下一跳IP地址,那么这就是强制要求,因为同一个链路本地地址可以用在多个本地路由器接口上。此外,多个远程路由器接口也可以使用相同的链路本地地址。只要链路本地地址在同一局域网内的两台设备之间是唯一的,就可以实现正常通信。如果将全局单播地址作为下一跳地址,就不必指定出站接口。
例1-42显示了R1的show ipv6 route static命令输出结果,表明网络2001:DB8:0:3::/64是通过静态路由学到的,可以通过下一跳地址FE80::2到达该网络,且AD值为8,度量为0(因为无法像动态路由协议那样了解目的端的真正距离)。
例1-42 验证R1的IPv6静态路由
R1# show ipv6 route static
...output omitted...
S 2001:DB8:0:3::/64 [8/0]
via FE80::2, GigabitEthernet1/0
前文曾经说过,IPv6没有广播,因而IPv6不使用ARP,而是使用基于多播的NDP(Neighbor Discovery Protocol,邻居发现协议)来确定邻居设备的MAC地址。对于本例来说,如果R1需要将数据包路由到2001:DB8:0:3::/64,那么查询路由表后发现应该使用下一跳地址FE80::2(出站接口Gig1/0),因而查询IPv6邻居表以确定是否存在FE80::2出站接口Gig 1/0的MAC地址:
R1# show ipv6 neighbors
IPv6 Address Age Link-layer Addr State Interface
FE80::2 0 ca08.0568.0008 REACH Gi1/0
该表必须有一个映射链路本地地址和接口的表项,但是,如果只有一个匹配项,就不是正确表项。如果IPv6邻居表中没有表项,就要发送邻居请求消息以发现Gig1/0接口的MAC地址FE80::2。
与IPv4相似,如果接口是以太网接口,就不能在静态路由中使用接口选项,因为代理ARP会消耗大量的路由器资源。请注意,IPv6不存在代理ARP,因此,如果要为以太网接口使用接口选项,那么仅当目的IPv6地址与指定路由器接口直连时才有效。这是因为数据包中的目的IPv6地址用作下一跳地址,且需要通过NDP查找MAC地址。如果目的IPv6地址不在直连网络中,那么邻居发现操作将会失败,最终导致二层封装失败。以图1-18为例,如果在R1上配置了以下IPv6静态路由(称为直连静态路由),那么将会发生什么情况?
ipv6 route 2001:DB8:0:3::/64 gigabitEthernet 1/0
R1收到去往2001:db8:0:3::3的数据包之后,通过静态路由发现该目的端与Gig1/0直连(与图1-18不一致),因而R1通过Gig1/0接口向外发送NS(Neighbor Solicitation,邻居请求)消息(使用请求节点多播地址FF02::1:FF00:3),以请求与2001:db8:0:3::3相关联的MAC地址发送的NS。如果没有连接在Gig1/0上的设备正在使用请求节点多播地址FF02::1:FF00:3和IPv6地址2001:db8:0:3::3,就无法得到该NS消息的应答消息,二层封装也将失败。
因此,能够识别静态路由的配置差错以及所导致的故障问题,对于故障排查人员来说是一项非常重要的技能,静态路由的配置差错会导致流量被错误路由或次优路由。此外,需要记住的是,由于静态路由的默认AD值为1,因而静态路由比去往相同目的端的其他路由信息源更优。
本节将介绍与本章主题相关的各种故障工单,目的是解释在现实世界或考试环境中开展故障排查操作的过程。
故障工单1-1和1-2基于图1-19所示的拓扑结构。
图1-19 IPv4编址故障工单示例拓扑结构
故障问题:PC1无法访问Web服务器192.0.2.1上的资源。
首先,可以从PC1向192.0.2.1发起ping测试(见例1-43)。可以看出,ping测试失败。
例1-43 从PC1向192.0.2.1发起的ping测试失败
C:\PC1>ping 192.0.2.1
Pinging 192.0.2.1 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 192.0.2.1:
Packets: Sent = 4, Received = 0, Lost = 4 (100٪ loss),
接下来,从PC1向默认网关R1(10.1.1.1)发起ping测试(见例1-44)。可以看出,ping测试成功。
例1-44 从PC1向默认网关发起的ping测试成功
C:\PC1>ping 10.1.1.1
Reply from 10.1.1.1: bytes=32 time 1ms TTL=128
Reply from 10.1.1.1: bytes=32 time 1ms TTL=128
Reply from 10.1.1.1: bytes=32 time 1ms TTL=128
Reply from 10.1.1.1: bytes=32 time 1ms TTL=128
Ping statistics for 10.1.1.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0٪ loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
此时需要确定该故障是否是一个孤立事件,因而登录PC2并向192.0.2.1发起ping测试(见例1-45)。可以看出,ping测试成功。
例1-45 从PC2向192.0.2.1发起的ping测试成功
C:\PC2>ping 192.0.2.1
Reply from 192.0.2.1: bytes=32 time 1ms TTL=128
Reply from 192.0.2.1: bytes=32 time 1ms TTL=128
Reply from 192.0.2.1: bytes=32 time 1ms TTL=128
Reply from 192.0.2.1: bytes=32 time 1ms TTL=128
Ping statistics for 192.0.2.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0٪ loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
至此,可以确定PC1和PC2到路由器的二层及三层连接正常,还可以确定PC2可以访问Internet资源(虽然PC1无法访问Internet资源)。出现这种情况的原因很多,最可能的原因就是Gig0/0或Gig1/0接口配置的ACL(Access Control List,访问控制列表)禁止PC1访问Internet资源。当然,也可能是NAT(Network Address Translation,网络地址转换)阻止了10.1.1.10的地址转换。不过在沿着这个思路继续排查故障之前,应该首先检查一些基本配置信息。如PC1的默认网关配置是否正确?如果不正确,那么PC1就可能会将去往远程子网的数据包发送给错误的默认网关。查看PC1的ipconfig输出结果(见例1-46),即可发现PC1的默认网关被配置为10.1.1.100,而IP地址并不是R1的接口的IP地址。
例1-46 PC1的ipconfig输出结果
C:\PC1>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . .: 10.1.1.10
Subnet Mask . . . . . . . . . . .: 255.255.255.192
Default Gateway . . . . . . . . .: 10.1.1.100
将默认网关的IP地址更改为R1的接口地址10.1.1.1之后,即可成功ping通192.0.2.1(见例1-47)。
例1-47 从PC1向192.0.2.1发起的ping测试成功
C:\PC1>ping 192.0.2.1
Reply from 192.0.2.1: bytes=32 time 1ms TTL=128
Reply from 192.0.2.1: bytes=32 time 1ms TTL=128
Reply from 192.0.2.1: bytes=32 time 1ms TTL=128
Reply from 192.0.2.1: bytes=32 time 1ms TTL=128
Ping statistics for 192.0.2.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0٪ loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
故障问题:PC1无法访问Web服务器192.0.2.1上的资源。
首先,可以从PC1向192.0.2.1发起ping测试(见例1-48)。可以看出,ping测试失败。
例1-48 从PC1向192.0.2.1发起的ping测试失败
C:\PC1>ping 192.0.2.1
Pinging 192.0.2.1 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 192.0.2.1:
Packets: Sent = 4, Received = 0, Lost = 4 (100٪ loss),
接下来,从PC1向默认网关R1(10.1.1.1)发起ping测试(见例1-49)。可以看出,ping测试仍然失败。
例1-49 从PC1向默认网关发起的ping测试失败
C:\PC1>ping 10.1.1.1
Pinging 10.1.1.1 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 10.1.1.1:
Packets: Sent = 4, Received = 0, Lost = 4 (100٪ loss),
此时需要确定该故障是否是一个孤立事件,因而登录PC2并向IP地址192.0.2.1及默认网关发起ping测试(见例1-50)。可以看出,ping测试均失败,表明该故障不是孤立事件。
例1-50 从PC2向192.0.2.1和默认网关发起的ping测试失败
C:\PC2>ping 192.0.2.1
Pinging 192.0.2.1 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 192.0.2.1:
Packets: Sent = 4, Received = 0, Lost = 4 (100٪ loss),
C:\PC2>ping 10.1.1.1
Pinging 10.1.1.1 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 10.1.1.1:
Packets: Sent = 4, Received = 0, Lost = 4 (100٪ loss),
至此,可以确定PC1和PC2到默认网关的二层及三层连接中断。出现这种问题的原因很多,如VLAN、VACL(VLAN Access Control List,VLAN访问控制列表)、中继、VTP(VLAN Trunking Protocol,VLAN中继协议)和STP都可能导致该故障。不过,在检查这些故障原因之前仍然应该先检查一些基础配置信息,首先查看客户端的IP编址信息。在PC1上执行ipconfig命令后可以看出(见例1-51),PC1配置了APIPA地址169.254.180.166/16,且没有默认网关,这就意味着PC1无法与DHCP服务器进行通信,且正在自动配置IP地址。虽然该信息仍然不能排除VLAN、中继、VTP、STP等故障原因,但确实可以帮助故障排查人员缩小排查范围。
例1-51 PC1的ipconfig输出结果
C:\PC1>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . .: 169.254.180.166
Subnet Mask . . . . . . . . . . .: 255.255.0.0
Default Gateway . . . . . . . . .:
从图1-19的故障工单示例的拓扑结构可以看出,DHCP服务器位于R1的接口Gig2/0之外,与PC位于不同的子网中,因而需要通过R1将PC的DHCPDISCOVER消息转发给位于172.16.1.10的DHCP服务器。为此,需要在Gig0/0接口上配置ip helper-address命令,此时可以从这里开始排查故障问题,并根据需要排查其他区域。在R1上运行命令show run interface gigabitEthernet 0/0(见例1-52),可以看出IP辅助地址为172.16.1.100,与拓扑结构不一致。
例1-52 验证R1 Gig0/0的IP辅助地址
R1# show run interface gigabitEthernet 0/0
Building configuration...
Current configuration : 193 bytes
!
interface GigabitEthernet0/0
ip address 10.1.1.1 255.255.255.192
ip helper-address 172.16.1.100
ip nat inside
end
在接口配置模式下通过no ip helper-address 172.16.1.100和ip helper-address 172.16.1.10命令修复了IP辅助地址之后,PC1即可从DHCP服务器接收IP地址信息(见例1-53)。
例1-53 通过ip helper-address命令解决IP编址错误问题
C:\PC1>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 10.1.1.10
Subnet Mask . . . . . . . . . . . : 255.255.255.192
Default Gateway . . . . . . . . . : 10.1.1.1
验证了PC1的编址信息之后,发现可以成功ping通192.0.2.1(见例1-54)。
例1-54 从PC1向192.0.2.1发起的ping测试成功
C:\PC1>ping 192.0.2.1
Reply from 192.0.2.1: bytes=32 time 1ms TTL=128
Reply from 192.0.2.1: bytes=32 time 1ms TTL=128
Reply from 192.0.2.1: bytes=32 time 1ms TTL=128
Reply from 192.0.2.1: bytes=32 time 1ms TTL=128
Ping statistics for 192.0.2.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0٪ loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
故障工单1-3和1-4基于图1-20所示的拓扑结构。
图1-20 IPv6编址故障工单示例拓扑结构
故障问题:PC1无法访问Web服务器2001:db8:d::1上的资源。
假设网络通过SLAAC进行IPv6编址,并通过DHCPv6提供其他选项信息(如域名、TFTP服务器地址以及DNS服务器地址)。
首先,可以从PC1向2001:db8:d::1的Web服务器发起ping测试(见例1-55)。可以看出,ping测试失败。
例1-55 从PC1向2001:db8:d::1的Web服务器发起的ping测试失败
C:\PC1>ping 2001:db8:d::1
Pinging 2001:db8:d::1 with 32 bytes of data:
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.
Ping statistics for 2001:db8:d::1:
Packets: Sent = 4, Received = 0, Lost = 4 (100٪ loss),
接下来,向2001:db8:a:a::1的默认网关发起ping测试(见例1-56)。可以看出,ping测试失败。
例1-56 从PC1向2001:db8:a:a::1的默认网关发起的ping测试失败
C:\PC1>ping 2001:db8:a:a::1
Pinging 2001:db8:a:a::1 with 32 bytes of data:
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.
Ping statistics for 2001:db8:a:a::1:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
接下来,通过ipconfig命令验证PC1的IPv6地址。从例1-57可以看出,PC1并没有通过SLAAC生成自己的全局单播地址,也没有识别出网络上的默认网关。
例1-57 验证PC1的IPv6地址
C:\PC1>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . : cisco.com
Link-local IPv6 Address . . . . . : fe80::a00:27ff:fe5d:6d6٪11
IPv4 Address. . . . . . . . . . . : 10.1.1.10
Subnet Mask . . . . . . . . . . . : 255.255.255.192
Default Gateway . . . . . . . . . : 10.1.1.1
PC2用户打电话称自己无法访问任何IPv6资源,因而访问PC2并运行ipconfig命令(见例1-58)。可以看出,PC2没有生成IPv6地址,也没有识别出默认网关。
例1-58 验证PC2的IPv6地址
C:\PC2>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . : cisco.com
Link-local IPv6 Address . . . . . : fe80::a00:27ff:fe5d:ce47٪9
IPv4 Address. . . . . . . . . . . : 10.1.1.20
Subnet Mask . . . . . . . . . . . : 255.255.255.192
Default Gateway . . . . . . . . . : 10.1.1.1
前文曾经说过,SLAAC依赖于RA,因而R1的Gig0/0接口必须在链路上发送RA消息,以确保PC1和PC2通过SLAAC生成自己的IPv6地址。在R1上运行命令show ipv6 interface gigabitEthernet 0/0(见例1-59),输出结果表明主机通过SLAAC进行编址,并通过DHCP获得其他配置参数,但同时表明RA消息被抑制了。因此,PC1和PC2无法收到RA消息(为地址自动配置提供必需的前缀信息)。
例1-59 验证R1是否抑制了RA消息
R1# show ipv6 interface gigabitEthernet 0/0
GigabitEthernet0/0 is up, line protocol is up
IPv6 is enabled, link-local address is FE80::C80A:EFF:FE3C:8
No Virtual link-local address(es):
Global unicast address(es):
2001:DB8:A:A::1, subnet is 2001:DB8:A:A::/64
Joined group address(es):
FF02::1
FF02::2
FF02::1:2
FF02::1:FF00:1
FF02::1:FF3C:8
MTU is 1500 bytes
ICMP error messages limited to one every 100 milliseconds
ICMP redirects are enabled
ICMP unreachables are sent
ND DAD is enabled, number of DAD attempts: 1
ND reachable time is 30000 milliseconds (using 30000)
ND RAs are suppressed (all)
Hosts use stateless autoconfig for addresses.
Hosts use DHCP to obtain other configuration.
可以通过命令show run interface gigabitEthernet 0/0验证接口的配置信息(见例1-60)。可以看出,该接口配置了ipv6 nd ra suppress all命令,该命令将阻止R1发送RA消息。
例1-60 验证R1的接口配置
R1# show run interface gigabitEthernet 0/0
Building configuration...
Current configuration : 241 bytes
!
interface GigabitEthernet0/0
no ip address
ipv6 address 2001:DB8:A:A::1/64
ipv6 nd other-config-flag
ipv6 nd ra suppress all
ipv6 dhcp relay destination 2001:DB8:A:B::7
end
通过no ipv6 nd ra all命令删除上述命令之后,PC1即可成功生成一个全局IPv6地址并识别出IPv6默认网关(见例1-61)。
例1-61 验证PC1的IPv6地址
C:\PC1>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . : cisco.com
IPv6 Address. . . . . . . . . . . : 2001:db8:a:a:a00:27ff:fe5d:6d6
Link-local IPv6 Address . . . . . : fe80::a00:27ff:fe5d:6d6٪11
IPv4 Address. . . . . . . . . . . : 10.1.1.10
Subnet Mask . . . . . . . . . . . : 255.255.255.192
Default Gateway . . . . . . . . . : fe80::c80a:eff:fe3c:8٪11
10.1.1.1
通过向2001:db8:d::1的Web服务器发起ping测试即可确认是否能够访问IPv6资源(见例1-62)。可以看出,ping测试成功。此时,可以打电话给PC2的用户,让其确认是否可以访问Internet资源,该用户表示已经可以访问。
例1-62 从PC1向2001:db8:d::1的Web服务器发起ping测试
C:\PC1>ping 2001:db8:d::1
Pinging 2001:db8:d::1 with 32 bytes of data:
Reply from 2001:db8:d::1: time=37ms
Reply from 2001:db8:d::1: time=35ms
Reply from 2001:db8:d::1: time=38ms
Reply from 2001:db8:d::1: time=38ms
Ping statistics for 2001:db8:d::1:
Packets: Sent = 4, Received = 4, Lost = 0 (0٪ loss),
Approximate round trip times in milli-seconds:
Minimum = 35ms, Maximum = 38ms, Average = 36ms
故障问题:PC1无法访问Web服务器2001:db8:d::1上的资源。
假设网络通过SLAAC进行IPv6编址,并通过DHCPv6提供其他选项信息(如域名、TFTP服务器地址以及DNS服务器地址)。
首先,可以从PC1向2001:db8:d::1的Web服务器发起ping测试(见例1-63)。可以看出,ping测试失败。
例1-63 从PC1向2001:db8:d::1的Web服务器发起的ping测试失败
C:\PC1>ping 2001:db8:d::1
Pinging 2001:db8:d::1 with 32 bytes of data:
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.
Ping statistics for 2001:db8:d::1:
Packets: Sent = 4, Received = 0, Lost = 4 (100٪ loss),
接下来,向默认网关2001:db8:a:a::1发起ping测试(见例1-64),但ping测试失败。
例1-64 从PC1向默认网关2001:db8:a:a::1发起的ping测试失败
C:\PC1>ping 2001:db8:a:a::1
Pinging 2001:db8:a:a::1 with 32 bytes of data:
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.
Ping statistics for 2001:db8:a:a::1:
Packets: Sent = 4, Received = 0, Lost = 4 (100٪ loss),
接下来,通过ipconfig命令验证PC1的IPv6地址。从例1-65可以看出,PC1并没有通过SLAAC生成自己的全局单播地址,但其识别出了网络上链路本地地址为fe80::c80a:eff:fe3c:8的默认网关。
例1-65 验证PC1的IPv6地址
C:\PC1>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . : cisco.com
Link-local IPv6 Address . . . . . : fe80::a00:27ff:fe5d:6d6٪11
IPv4 Address. . . . . . . . . . . : 10.1.1.10
Subnet Mask . . . . . . . . . . . : 255.255.255.192
Default Gateway . . . . . . . . . : fe80::c80a:eff:fe3c:8٪11
10.1.1.1
PC2用户打电话称自己无法访问任何IPv6资源,因而访问PC2并运行ipconfig命令(见例1-66)。可以看出,PC2遇到了与PC1相同的故障问题。
例1-66 验证PC2的IPv6地址
C:\PC2>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . : cisco.com
Link-local IPv6 Address . . . . . : fe80::a00:27ff:fe5d:ce47٪9
IPv4 Address. . . . . . . . . . . : 10.1.1.10
Subnet Mask . . . . . . . . . . . : 255.255.255.192
Default Gateway . . . . . . . . . : fe80::c80a:eff:fe3c:8٪11
10.1.1.1
前文曾经说过,SLAAC依赖于RA,因而R1的Gig0/0接口必须在链路上发送RA消息,以确保PC1和PC2通过SLAAC生成自己的IPv6地址。在R1上运行命令show ipv6 interface gigabitEthernet 0/0(见例1-67),输出结果表明主机通过SLAAC进行编址,并通过DHCP获得其他配置参数,但是没有证据表明RA消息被抑制了,这一点从PC1和PC2能够识别出默认网关也能判断出来,但其识别出的默认网关是否正确呢?从例1-65和例1-66可以看出,默认网关是fe80::c80a:eff:fe3c:8,例1-67似乎也证实没有问题,但如果进一步分析例1-67,是否能够看出什么问题呢?
例1-67 验证R1是否抑制了RA消息
R1# show ipv6 interface gigabitEthernet 0/0
GigabitEthernet0/0 is up, line protocol is up
IPv6 is enabled, link-local address is FE80::C80A:EFF:FE3C:8
No Virtual link-local address(es):
Global unicast address(es):
2001:DB8:A:A::1, subnet is 2001:DB8:A::/60
Joined group address(es):
FF02::1
FF02::2
FF02::1:2
FF02::1:FF00:1
FF02::1:FF3C:8
MTU is 1500 bytes
ICMP error messages limited to one every 100 milliseconds
ICMP redirects are enabled
ICMP unreachables are sent
ND DAD is enabled, number of DAD attempts: 1
ND reachable time is 30000 milliseconds (using 30000)
ND advertised reachable time is 0 (unspecified)
ND advertised retransmit interval is 0 (unspecified)
ND router advertisements are sent every 200 seconds
ND router advertisements live for 1800 seconds
ND advertised default router preference is Medium
Hosts use stateless autoconfig for addresses.
Hosts use DHCP to obtain other configuration.
如果没有发现问题,那么请仔细查看分配给接口Gig0/0的全局前缀,该前缀是2001:db8:a::/60,但SLAAC仅在前缀为/64时才有效。
可以通过命令show run interface gigabitEthernet 0/0验证接口的配置信息(见例1-68)。可以看出,该接口配置了命令ipv6 address 2001:db8:a:a::1/60。虽然能够生成RA消息,但是SLAAC无法工作(除非前缀为/64)。
例1-68 验证R1的接口配置
R1# show run interface gigabitEthernet 0/0
Building configuration...
Current configuration : 216 bytes
!
interface GigabitEthernet0/0
ipv6 address 2001:DB8:A:A::1/60
ipv6 nd other-config-flag
ipv6 dhcp relay destination 2001:DB8:A:B::7
end
检查了网络设计方案之后,确认应该是/64前缀。通过no ipv6 address 2001:db8:a:a::1/60命令删除了配置命令并运行命令ipv6 address 2001:db8:a:a::1/64之后,PC1即可成功生成一个全局IPv6单播地址(见例1-69)。
例1-69 验证PC1的IPv6地址
C:\PC1>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . : cisco.com
IPv6 Address. . . . . . . . . . . : 2001:db8:a:a:a00:27ff:fe5d:6d6
Link-local IPv6 Address . . . . . : fe80::a00:27ff:fe5d:6d6٪11
IPv4 Address. . . . . . . . . . . : 10.1.1.10
Subnet Mask . . . . . . . . . . . : 255.255.255.192
Default Gateway . . . . . . . . . : fe80::c80a:eff:fe3c:8٪11
10.1.1.1
通过向2001:db8:d::1的Web服务器发起ping测试即可确认是否能够访问IPv6资源(见例1-70)。可以看出,ping测试成功。此时,可以打电话给PC2的用户,让其确认是否可以访问Internet资源,该用户表示已经可以访问。
例1-70 从PC1向2001:db8:d::1的Web服务器发起ping测试
C:\PC1>ping 2001:db8:d::1
Pinging 2001:db8:d::1 with 32 bytes of data:
Reply from 2001:db8:d::1: time=37ms
Reply from 2001:db8:d::1: time=35ms
Reply from 2001:db8:d::1: time=38ms
Reply from 2001:db8:d::1: time=38ms
Ping statistics for 2001:db8:d::1:
Packets: Sent = 4, Received = 4, Lost = 0 (0٪ loss),
Approximate round trip times in milli-seconds:
Minimum = 35ms, Maximum = 38ms, Average = 36ms
故障工单1-5和1-6基于图1-21所示的拓扑结构。
图1-21 静态路由故障工单示例拓扑结构
故障问题:网络10.1.1.0/24中的用户抱怨无法访问10.1.3.0/24网络中FTP服务器上的资源,FTP服务器使用静态IPv4地址10.1.3.10。另外,用户表示他们能够访问地址为10.1.3.5的Web服务器(请注意,本例的网络仅使用静态路由)。
首先,从网络10.1.1.0/24中的PC1向10.1.3.10发起ping测试来验证故障问题。从例1-71可以看出,ping测试失败,R1响应了目的端不可达消息,表明R1不知道如何路由去往10.1.3.10的数据包。此外,从PC1向10.1.3.5发起的ping测试成功(见例1-71)。
例1-71 PC1无法ping通10.1.3.10,但是能够ping通10.1.3.5
C:\PC1>ping 10.1.3.10
Pinging 10.1.3.10 with 32 bytes of data;
Reply from 10.1.1.1: Destination host unreachable.
Reply from 10.1.1.1: Destination host unreachable.
Reply from 10.1.1.1: Destination host unreachable.
Reply from 10.1.1.1: Destination host unreachable.
Ping statistics for 10.1.3.10:
Packets: Sent = 4, Received = 4, lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
C:\PC1>ping 10.1.3.5
Pinging 10.1.3.5 with 32 bytes of data:
Reply from 10.1.3.5: bytes=32 time 1ms TTL=128
Reply from 10.1.3.5: bytes=32 time 1ms TTL=128
Reply from 10.1.3.5: bytes=32 time 1ms TTL=128
Reply from 10.1.3.5: bytes=32 time 1ms TTL=128
Ping statistics for 10.1.3.5:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
接下来,访问R1并在R1上运行show ip route命令,以确认其是否知道如何将数据包路由到10.1.3.10。从例1-72可以看出,与10.1.3.10最匹配的路由表项是10.1.3.0/29,但10.1.3.10是否属于该子网?
例1-72 验证路由表项
R1# show ip route
...output omitted...
Gateway of last resort is not set
10.0.0.0/8 is variably subnetted, 6 subnets, 3 masks
C 10.1.1.0/24 is directly connected, GigabitEthernet0/0
L 10.1.1.1/32 is directly connected, GigabitEthernet0/0
S 10.1.3.0/29 [1/0] via 10.1.12.2
C 10.1.12.0/24 is directly connected, GigabitEthernet1/0
L 10.1.12.1/32 is directly connected, GigabitEthernet1/0
S 10.1.23.0/24 [1/0] via 10.1.12.2
网络10.1.3.0/29的地址范围是10.1.3.0~10.1.3.7,10.1.3.10并不在该子网范围内,但10.1.3.5在该子网范围内。这就解释了为何用户能够到达10.1.3.0/24网络中的一个地址而不能到达另一个地址。在R1上运行show ip route 10.1.3.10和show ip route 10.1.3.5命令可以进一步验证该结果。从例1-73可以看出,R1有匹配10.1.3.5的路由表项,但是没有匹配10.1.3.10的路由表项。
例1-73 验证特定路由
R1# show ip route 10.1.3.10
% Subnet not in table
R1# show ip route 10.1.3.5
Routing entry for 10.1.3.0/29
Known via "static", distance 1, metric 0
Routing Descriptor Blocks:
10.1.12.2
Route metric is 0, traffic share count is 1
由于图1-21中的网络是10.1.3.0/24,而路由表中的表项却是10.1.3.0/29,因而可以初步判断静态路由配置错误。此时,可以通过show run | include ip route命令检查运行配置来加以验证:
R1# show run | include ip route
ip route 10.1.3.0 255.255.255.248 10.1.12.2
ip route 10.1.23.0 255.255.255.0 10.1.12.2
请注意命令ip route 10.1.3.0 255.255.255.248 10.1.12.2,该命令在路由表中生成了路由表项10.1.3.0/29。仔细分析后可以发现,该命令的子网掩码配置有问题。
为了解决该问题,需要通过命令no ip route 10.1.3.0 255.255.255.248 10.1.12.2删除静态路由,然后通过命令ip route 10.1.3.0 255.255.255.0 10.1.12.2创建一条新静态路由。完成上述操作之后,在R1上运行show ip route命令,可以看出此时的路由表中的表项为10.1.3.0/24(见例1-74)。
例1-74 验证R1路由表中更新后的静态路由
R1# show ip route
...output omitted...
Gateway of last resort is not set
10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks
C 10.1.1.0/24 is directly connected, GigabitEthernet0/0
L 10.1.1.1/32 is directly connected, GigabitEthernet0/0
S 10.1.3.0/24 [1/0] via 10.1.12.2
C 10.1.12.0/24 is directly connected, GigabitEthernet1/0
L 10.1.12.1/32 is directly connected, GigabitEthernet1/0
S 10.1.23.0/24 [1/0] via 10.1.12.2
接下来,运行show ip route 10.1.3.10命令(见例1-75)。可以看出,目前路由表中已经有了IP地址10.1.3.10的路由表项。
例1-75 验证是否存在10.1.3.10的路由表项
R1# show ip route 10.1.3.10
Routing entry for 10.1.3.0/24
Known via "static", distance 1, metric 0
Routing Descriptor Blocks:
10.1.12.2
Route metric is 0, traffic share count is 1
最后,从PC1向IP地址10.1.3.10发起ping测试。从例1-76可以看出,ping测试成功。
例1-76 从PC1向10.1.3.10发起的ping测试成功
C:\PC1>ping 10.1.3.10
Pinging 10.1.3.10 with 32 bytes of data:
Reply from 10.1.3.10: bytes=32 time 1ms TTL=128
Reply from 10.1.3.10: bytes=32 time 1ms TTL=128
Reply from 10.1.3.10: bytes=32 time 1ms TTL=128
Reply from 10.1.3.10: bytes=32 time 1ms TTL=128
Ping statistics for 10.1.3.10:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
故障问题:对流量进行主动监测后发现,所有从2001:DB8:0:1::/64到2001:DB8:0:3::/64的流量都经过了R2,但实际上应该直接通过Gig2/0链路去往R3,仅当Gig2/0链路出现故障之后,才应该通过R2将流量从2001:DB8:0:1::/64转发给2001:DB8:0:3::/64。因此,需要确定网络以错误方式转发流量的原因并加以修复(请注意,本例的网络仅使用静态路由)。
首先,可以从PC1向2001:DB8:0:3::3(该地址是R3 Gig0/0接口的IPv6地址)发起跟踪操作来确认故障问题(见例1-77)。跟踪结果表明,数据包正在通过R2进行转发。
例1-77 从PC1向R3 Gig0/0接口的IPv6地址发起跟踪操作
C:\PC1>tracert 2001:DB8:0:3::3
Tracing route to 2001:DB8:0:3::3 over a maximum of 30 hops
1 6 ms 1 ms 2 ms 2001:DB8:0:1::1
2 5 ms 1 ms 2 ms 2001:DB8:0:12::2
3 5 ms 1 ms 2 ms 2001:DB8:0:23::3
Trace complete.
接下来,在R1上运行show ipv6 route 2001:DB8:0:3::/64命令(见例1-78),确认2001:DB8:0:3::/64的下一跳IPv6地址是2001:DB8:0:12::2,该地址是R2的Gig0/0接口的IPv6地址,但实际的下一跳IPv6地址应该是2001:DB8:0:13::3,即R3的Gig2/0接口地址。
例1-78 在R1上验证去往2001:DB8:0:3::/64的IPv6路由
R1# show ipv6 route 2001:DB8:0:3::/64
Routing entry for 2001:DB8:0:3::/64
Known via "static", distance 10, metric 0
Backup from "static [11]"
Route count is 1/1, share count 0
Routing paths:
2001:DB8:0:12::2
Last updated 00:09:07 ago
看起来似乎有人在静态路由中配置了错误的下一跳IPv6地址。可以通过show run | include ipv6 route命令验证R1为2001:DB8:0:3::/64网络配置的静态路由,从例1-79可以看出,R1为网络2001:DB8:0:3::/64配置了两条路由,这两条路由的下一跳IPv6地址分别是2001:DB8:0:12::2和2001:DB8:0:13::3。
例1-79 验证R1配置的IPv6静态路由
R1# show run | include ipv6 route
ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:12::2 10
ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:13::3 11
ipv6 route 2001:DB8:0:23::/64 2001:DB8:0:12::2
为什么下一跳IPv6地址为2001:DB8:0:12::2的路由优于下一跳IPv6地址为2001:DB8:0:13::3的路由呢?仔细分析例1-80中的两条命令可以发现,下一跳IPv6地址为2001:DB8:0:12::2的AD值为10,下一跳IPv6地址为2001:DB8:0:13::3的AD值为11,由于首选AD值较低的路由,因而AD值为10的静态路由更优,是首选路由。
为了解决该问题,需要将下一跳IPv6地址为2001:DB8:0:13::3的静态路由的AD值配置得较低。对于本例来说,可以通过ipv6 route 2001:DB8:0:3::/64 2001:DB8:0:13::3 1命令将其AD值更改为1,即静态路由的默认设置。更改完成后,可以通过命令show ipv6 route 2001:DB8:0:3::/64检查路由表信息,以确认下一跳IPv6地址为2001:DB8:0:13::3的静态路由是否已经位于路由表当中。从例1-80可以看出,修改操作成功。
例1-80 验证R1的IPv6路由表
R1# show ipv6 route 2001:DB8:0:3::/64
Routing entry for 2001:DB8:0:3::/64
Known via "static", distance 1, metric 0
Backup from "static [11]"
Route count is 1/1, share count 0
Routing paths:
2001:DB8:0:13::3
Last updated 00:01:14 ago
接下来,从PC1向2001:DB8:0:3::3发起跟踪操作。从例1-81可以看出,此时已经不再通过R2转发数据包,所有流量均流经R1与R3之间的链路。
例1-81 从PC1向R3 Gig0/0接口的IPv6地址发起跟踪操作
C:\PC1>tracert 2001:DB8:0:3::3
Tracing route to 2001:DB8:0:3::3 over a maximum of 30 hops
1 6 ms 1 ms 2 ms 2001:DB8:0:1::1
2 5 ms 1 ms 2 ms 2001:DB8:0:13::3
Trace complete.
本书提供多种备考手段,包括此处的考试要点。
请复习本章涉及的所有重要主题,这些内容都用“考试要点”图标做了标记,表1-5列出了这些考试要点及其描述。
表1-5 考试要点
考试要点 |
描述 |
---|---|
段落 |
设备确定是否将数据包发送给本地或远程设备的决策过程 |
段落 |
IPv4编址错误可能产生的后果 |
例1-1 |
验证PC和路由器的IPv4编址信息 |
小节 |
确定子网中的IP地址 |
步骤列表 |
DHCPv4 DORA进程 |
例1-3 |
DHCP中继代理配置 |
代码 |
DHCP客户端配置 |
段落 |
如何将路由器配置为DHCP服务器 |
列表 |
排查DHCP相关故障时需考虑的潜在问题 |
小节 |
DHCP故障排查命令 |
段落 |
IPv6场景下,设备确定是否将数据包发送给本地或远程设备的决策过程 |
段落 |
EUI-64进程 |
例1-12 |
在路由器接口上验证EUI-64 |
例1-14 |
在路由器接口上启用SLAAC |
段落 |
RA消息处理进程 |
段落 |
验证SLAAC生成的IPv6地址 |
列表 |
使用SLAAC时可能存在的问题 |
例1-17 |
验证接口是否启用了IPv6 |
例1-18 |
验证是否抑制了RA消息 |
例1-19 |
验证PC配置的默认网关 |
例1-21 |
R1的DHCPv6配置示例 |
例1-22 |
验证R1的DHCPv6信息 |
例1-23 |
验证无状态DHCPv6 |
步骤列表 |
DHCPv6的4个协商步骤 |
例1-24 |
将R1配置为DHCPv6中继代理 |
列表 |
IP路由表和三层到二层映射表 |
列表 |
FIB和邻接表 |
例1-25 |
show ip route ip_address命令输出结果 |
例1-28 |
show ip cef ip_address命令输出结果 |
例1-30 |
show ip arp命令输出结果 |
表1-4 |
路由信息源的默认AD |
例1-34 |
验证路由表中的路由的AD值 |
段落 |
IPv4静态路由中的下一跳IP地址的重要性 |
段落 |
在IPv4静态路由中使用以太网接口 |
段落 |
在IPv6静态路由中使用以太网接口 |
请对本章中的下列关键术语进行定义。
DHCP、DORA、DHCPDISCOVER、DHCPOFFER、DHCPREQUEST、DHCPACK、DHCP中继代理、APIPA、邻居发现、EUI-64、SLAAC、状态化DHCPv6、无状态DHCPv6、路由器请求、路由器宣告、链路本地地址、全局单播地址、SOLICIT消息、ADVERTISE消息、REQUEST消息、REPLY消息、DHCPv6中继代理、数据包转发、ARP、TTL、路由表、ARP缓存、CEF、FIB、邻接表、控制平面、数据平面、管理距离、静态路由、代理ARP。
以下列出本章用到的各种重要的配置和验证命令,虽然不需要记忆每条命令的完整语法格式,但是应该记住这些命令所需的基本关键字。
为了检查你对这些命令的记忆情况,请用一张纸遮住表1-6的右侧,通过表格左侧的描述内容,看一看是否能记起这些命令。
表1-6 命令参考
任务 |
命令语法 |
---|---|
显示Windows PC的IP地址、子网掩码和默认网关 |
ipconfig |
显示Windows PC的IP地址、子网掩码和默认网关以及DNS服务器、域名、MAC地址和是否启用了自动配置机制 |
ipconfig /all |
显示路由器接口的各种IP相关参数,包括已分配的IP地址和子网掩码 |
show ip interface interface_type interface_ number |
识别被配置为DHCP服务器的路由器存在的所有IP地址冲突问题以及路由器识别地址冲突的方法[通过ping或无故ARP(gratuitous ARP)] |
show ip dhcp conflict |
显示IOS DHCP服务器分配的IP地址、相应的MAC地址和租约到期时间 |
show ip dhcp binding |
确定接口是否启用了IPv6,显示路由器接口所属多播组,显示与接口相关联的全局和链路本地单播地址,指示采用EUI-64还是无状态自动配置来获取接口的IPv6地址,显示接口是否抑制了RA消息,显示与接口连接在同一条链路上的设备获取IPv6地址及其他地址选项的方式 |
show ipv6 interface interface_type interface_number |
显示每个DHCPv6客户端正在使用的IPv6地址 |
show ipv6 dhcp binding |
显示分配给路由器每个接口的DHCPv6地址池 |
show ipv6 dhcp interface |
显示路由器上配置的DHCPv6地址池 |
show ipv6 dhcp pool |
显示路由器去往指定IP地址的最佳路由 |
show ip route ip_address |
显示路由器的路由表中唯一的静态路由 |
show ip route static |
如果在路由器的IP路由表中找到了指定路由(拥有匹配的子网掩码长度),就显示路由器到指定网络的最佳路由 |
show ip route ip_address subnet_mask |
显示路由器的IP路由表中指定网络地址和子网掩码范围内的所有路由(排查路由汇总故障时,该命令非常有用) |
show ip route ip_address subnet_mask longer- prefixes |
显示转发数据包所需的信息(如下一跳IP地址和出站接口),与show ip route ip_address命令的输出结果类似(该命令的输出结果来自CEF,因而不显示路由协议信息) |
show ip cef ip_address |
显示路由器FIB信息,显示将数据包路由到拥有指定子网掩码的指定网络所需的信息 |
show ip cef ip_address subnet_mask |
显示将数据包从指定源IP地址转发到指定目的IP地址所需的邻接关系(如果路由器在多个邻接关系之间进行负载均衡,且希望查看负责特定源IP地址与目的IP地址组合的邻接关系,那么该命令将非常有用) |
show ip cef exact-route source_address destination_address |
显示设备配置的静态IPv6路由 |
show ipv6 route static |
显示三层IPv6地址到二层MAC地址的映射 |
show ipv6 neighbors |
显示路由器的ARP缓存,包含IPv4地址到MAC地址的映射 |
show ip arp |
由于ENARSI 300-410认证考试重点考查考生作为网络专家的实际动手能力,因而必须掌握与本章主题相关的配置、验证及故障排查命令。
本章主要讨论以下主题。
● EIGRP基础知识:本节将讨论EIGRP与其他路由器建立邻居关系和进行路由交换的方式。
● EIGRP配置模式:本节将通过基线配置来说明EIGRP的两种配置模式。
● 路径度量计算:本节将解释EIGRP计算路径度量以识别最佳和备用无环路径的方式。
EIGRP(Enhanced Interior Gateway Routing Protocol,增强型内部网关路由协议)是企业网最常见的增强型距离向量路由协议,EIGRP是IGRP(Interior Gateway Routing Protocol,内部网关路由协议)的派生协议,提供了对VLSM(Variable-Length Subnet Masking,可变长度子网掩码)和高速接口度量的支持。最初的EIGRP是思科专有协议,但目前已通过RFC 7868发布为IETF(Internet Engineering Task Force,互联网工程任务组)标准。
本章将讨论EIGRP的底层机制和路径度量计算方式,并解释路由器的EIGRP配置方式。有关EIGRP的相关内容将在以下章进行讨论。
● 第2章“EIGRP”:本章将介绍EIGRP的基本概念。
● 第3章“高级EIGRP”:本章将讨论EIGRP的故障检测机制以及路由协议优化技术,还将讨论包括路由过滤和流量控制在内的相关内容。
● 第4章“IPv4 EIGRP故障排查”:本章将从IPv4的角度回顾路由协议的常见故障问题以及EIGRP的故障排查方法。
● 第5章“EIGRPv6”:本章将讨论如何将IPv4 EIGRP的概念延伸到IPv6以及常见的EIGRPv6故障排查方法。
“我已经知道了吗?”测验的目的是帮助读者确定是否需要完整地学习本章知识或者直接跳至“备考任务”,如果读者对题目的答案还存在疑问,或者评估自己对这些主题知识的掌握程度还不够的话,就可以从头学起。表2-1列出了本章的主要内容以及与这些内容相关联的“我已经知道了吗?”测验题,答案可参见附录。
表2-1 “我已经知道了吗?”基本主题章节与所对应的测验题
涵盖测验题的基本主题章节 |
测验题 |
---|---|
EIGRP基础知识 |
1~6 |
EIGRP配置模式 |
7~9 |
路径度量计算 |
10 |
注意:
自我评价的目的是检验你对本章知识的掌握程度,如果不知道或仅知道部分问题的答案,出于自我评价的目的,请在该问题上标记“错”。为了不影响自我评价的结果,对不懂的问题请不要猜测答案,否则可能会造成一种已掌握的假象。
1.EIGRP使用协议ID 进行路由器间通信。
a.87
b.88
c.89
d.90
2.EIGRP使用几种数据包类型进行路由器间通信?
a.3种
b.4种
c.5种
d.6种
e.7种
3.建立EIGRP邻接关系时,无须匹配下面哪一项?
a.度量K值
b.主用子网
c.Hello和保持定时器
d.认证参数
4.什么是EIGRP后继路由器?
a.去往目的前缀且路径度量最小的路径的下一跳路由器
b.去往目的前缀且路径度量最小的路由器
c.为广播网络维护EIGRP邻接关系的路由器
d.满足可行性条件(报告距离小于可行距离)的路由器
5.EIGRP拓扑表包含哪些属性?(选择所有正确项)
a.目的端网络前缀
b.跳数
c.总路径时延
d.最大路径带宽
e.EIGRP邻居列表
6.在可行情况下,EIGRP使用哪些目的地址?(选择两项)
a.IP地址224.0.0.9
b.IP地址224.0.0.10
c.IP地址224.0.0.8
d.MAC地址01:00:5E:00:00:0A
e.MAC地址0C:15:C0:00:00:01
7.EIGRP进程通过以下哪些技术初始化?(选择两项)
a.使用接口命令ip eigrp as-number ipv4 unicast
b.使用全局配置命令router eigrp as-number
c.使用全局配置命令router eigrp process-name
d.使用接口命令router eigrp as-number
8.是非题:为了建立邻居关系,必须为EIGRP配置EIGRP路由器ID(RID)。
a.对
b.错
9.是非题:在EIGRP路由器之间使用MD5认证时,只要密码相同即可,密钥链序列号可以不同。
a.对
b.错
10.EIGRP可以修改路由器的哪个参数来控制路径选择,同时不影响OSPF等其他路由协议?
a.接口带宽
b.接口MTU
c.接口时延
d.接口优先级
EIGRP克服了其他距离向量路由协议(如RIP)的不足,支持非等价负载均衡、最大支持255跳网络以及快速收敛等功能特性。EIGRP通过DUAL(Diffusing Update ALgorithm,扩散更新算法)来识别网络路径,并通过预先计算好的无环备份路径提供快速收敛能力。大多数距离向量路由协议将跳数作为路由决策的度量,但通过跳数选择路径时无法考虑链路速率和总时延,因而EIGRP在路由选择算法中引入了除跳数之外的决策因素。
路由器可以运行多个EIGRP进程,每个进程都运行在一个AS(Autonomous System,自治系统)环境下。这里所说的自治系统指的是公共路由域,同一路由域内的路由器使用相同的度量计算公式,并且仅与同一自治系统内的成员交换路由。请注意,不要将EIGRP自治系统与BGP自治系统相混淆。
以图2-1为例,EIGRP AS 100包括R1、R2、R3和R4,EIGRP AS 200包括R3、R5和R6。每个EIGRP进程都与一个特定的自治系统相关联,都维护一个独立的EIGRP拓扑表。R1不知道AS 200的路由,因为AS 200与其自治系统(AS 100)不是同一个自治系统。R3同时参与了两个自治系统,在默认情况下,R3不会将某个自治系统学到的路由传输给另一个自治系统。
图2-1 EIGRP自治系统
EIGRP通过PDM(Protocol-Dependent Module,协议相关模块)支持多种网络协议,如IPv4、IPv6、AppleTalk和IPX。EIGRP的设计思路就是由PDM负责处理每种通信协议的路由选择准则。从理论上来说,如果创建了新的通信协议,那么只要设计新的PDM即可。请注意,目前的EIGRP实现仅支持IPv4和IPv6。
本节将介绍EIGRP的一些术语以及路径选择过程。下面将以图2-2为例,解释R1计算去往网络10.4.4.0/24的最佳路径和可选无环路径的方式,括号中的数值表示根据带宽和时延计算得到的链路度量。
图2-2 EIGRP示例拓扑结构
表2-2定义了EIGRP的关键术语以及其与图2-2的关系。
表2-2 EIGRP的关键术语
术语 |
定义及其与图2-2的关系 |
---|---|
后继路由 |
到达目的端的拥有最低路径度量的路由,R1到达R4上的10.4.4.0/24的后继路由是R1→R3→R4 |
后继路由器 |
后继路由的第一台下一跳路由器,10.4.4.0/24的后继路由器是R3 |
FD(Feasible Distance,可行距离) |
到达目的端的最低度量路径的度量值。FD的计算公式将在2.4节介绍,R1为网络10.4.4.0/24计算得到的FD值为3328(256 + 256 + 2816) |
RD(Reported Distance,报告距离) |
路由器报告的到达指定前缀的距离。RD值宣告路由器的FD,R3以RD值3072宣告前缀10.4.4.0/24,R4以RD值2816将前缀10.4.4.0/24宣告给R1和R2 |
可行性条件 |
如果要将某路由视为备用路由,那么收到的该路由的RD值必须小于本地计算出的FD值。该逻辑可以确保无环路径 |
可行后继路由 |
满足可行性条件的路由被保留为备用路由,可行性条件可以确保备用路由是无环路径。路由R1→R4是可行后继路由,因为对于路径R1→R3→R4来说,RD值2816小于FD值3328 |
EIGRP提供了一张拓扑表,使其与真正的距离向量路由协议有所不同。EIGRP的拓扑表是DUAL的重要组成部分,其中包含了识别无环备份路由的相关信息。拓扑表包含了EIGRP自治系统内宣告的所有网络前缀。拓扑表的每个表项均包含以下信息。
● 网络前缀。
● 宣告该前缀的EIGRP邻居。
● 每个邻居的度量(RD和跳数)。
● 用于度量计算的相关数值(负载、可靠性、总时延和最小带宽)。
可以通过命令show ip eigrp topology [all-links]查看拓扑表信息。虽然默认仅显示后继路由和可行后继路由,但是也可以通过可选关键字all-links显示所有未通过可行性条件的路径。
图2-3显示了图2-2中的R1的拓扑表信息。本节将以网络10.4.4.0/24为重点来介绍拓扑表的相关内容。
分析网络10.4.4.0/24可以看出,R1计算出后继路由的FD值为3328。后继路由器(上游路由器)以RD值3072宣告该后继路由。第二个路径表项的路径度量为5376,RD值为2816。由于2816小于3072,因而第二个表项通过了可行性条件,成为该网络前缀的可行后继路由。
路由10.4.4.0/24处于被动状态(用P表示,即Passive),表明该拓扑结构稳定。如果拓扑结构发生了变化,那么在计算新路径的时候,路由将处于主动状态(用A表示,即Active)。
图2-3 EIGRP拓扑表输出结果
EIGRP不需要在自治系统内部周期性地宣告所有网络前缀,这一点与RIP、OSPF和IS-IS等路由协议不同。EIGRP邻居在建立邻接关系时会交换整个路由表,以后在网络出现拓扑结构变化之后,仅宣告增量更新。邻居邻接表对于跟踪邻居状态以及发送给每个邻居的更新来说至关重要。
EIGRP使用5种不同的数据包类型与其他路由器进行通信(见表2-3)。EIGRP使用IP协议ID 88,并尽可能使用多播包,当然,也可以在必要时使用单播包。路由器之间的通信应尽可能采用组播方式,使用组地址224.0.0.10或MAC地址01:00:5e:00:00:0a。
表2-3 EIGRP数据包类型
数据包类型 |
数据包名称 |
功能 |
---|---|---|
1 |
Hello |
该数据包负责发现EIGRP邻居,而且可以在邻居不可用的时候检测邻居 |
2 |
请求(Request) |
用于从一个或多个邻居获得特定信息 |
3 |
更新(Update) |
负责与其他EIGRP路由器一起传送包含路由和可达性信息的数据包 |
4 |
查询(Query) |
在路由收敛期间,发送该数据包以查找其他路径 |
5 |
应答(Reply) |
该数据包是查询数据包的响应数据包 |
注:
为了降低链路的带宽消耗,EIGRP使用了多播包(可到达多台设备的数据包)。虽然广播包的效果相似,但网段上的所有节点都必须处理广播包,使用多播包的好处是只有侦听特定多播组的节点才需要处理这些多播包。
EIGRP使用RTP(Reliable Transport Protocol,可靠传输协议)来确保按序传送数据包,并确保路由器能够收到特定数据包。每个EIGRP数据包中都包含一个序列号。如果序列号为0,那么接收端EIGRP路由器就无须响应;如果序列号不为0,那么接收端EIGRP路由器都必须以ACK包(包含原始序列号)加以响应。
确保能够收到数据包可以让传输方法变得更加可靠。EIGRP的所有更新、查询和应答包都要求可靠传输,而Hello和ACK包则无须确认,因而可能并不可靠。
如果发端路由器在重传超时之前仍未收到邻居发送的 ACK 包,就会通知未确认路由器停止处理多播包。发端路由器将以单播方式发送所有流量,直到邻居完全同步。完成同步操作之后,发端路由器会通知目的端路由器再次处理多播包。请注意,所有单播包都需要确认。对于每个需要确认的数据包来说,EIGRP 最多重传 16 次,如果达到最大重传次数,就会重置邻居关系。
注:
不要将EIGRP环境中的RTP与另一个RTP(Real-Time Transport Protocol,实时传输协议)相混淆,后者负责在IP网络上传输音频或视频,而EIGRP的RTP则在支持多播通信的同时实现数据包的确认操作,其他可靠的面向连接的通信协议(如TCP)则无法使用多播寻址。
与其他距离向量路由协议不同,EIGRP 需要在处理路由并将路由添加到 RIB(Routing Information Base,路由信息库)之前建立邻居关系。路由器收到EIGRP Hello包之后,就会尝试成为对端路由器的邻居。两台路由器必须确保以下参数匹配才能成为邻居。
● 度量计算公式的K值。
● 主用子网必须匹配。
● ASN(Autonomous System Number,自治系统号)必须匹配。
● 认证参数必须匹配。
图2-4显示了EIGRP建立邻居邻接关系的过程。
图2-4 EIGRP邻居邻接关系建立过程(从R1的角度来看)
本节将介绍两种EIGRP配置模式:传统配置模式和命名配置模式。
对于EIGRP传统配置模式来说,大多数配置是在EIGRP进程中完成的,但某些设置需要在接口子模式下完成。由于用户需要在EIGRP进程与多个网络接口之间来回切换,因而增加了部署和故障排查的复杂性。需要独立设置的参数包括Hello宣告间隔、水平分割、认证和汇总路由宣告。
传统配置模式需要初始化路由进程,首先通过全局配置命令router eigrp as-number标识ASN并初始化EIGRP进程,接下来需要通过命令network ip-address [mask]标识网络接口。相关配置语句将在后续章节进行讨论。
为了帮助网络工程师克服在传统EIGRP自治系统配置中遇到的诸多困难,包括配置分散以及命令范围不清晰等,思科提供了EIGRP命名配置模式。
EIGRP命名配置模式具有以下优点。
● 可以在同一个位置执行所有EIGRP配置。
● 支持当前及未来扩展的各种EIGRP功能特性。
● 支持多地址簇[包括VRF(Virtual Routing and Forwarding,虚拟路由和转发)实例]。EIGRP命名配置模式也称为多地址簇配置模式。
● 命令的配置范围非常明确。
EIGRP命名配置模式提供了分层配置能力,将设置存储在3个层级。
● 地址簇子模式:该子模式包含了与全局EIGRP AS操作相关的设置,如网络接口的选择、EIGRP K值、日志记录设置及末梢设置。
● 接口子模式:该子模式包含了与接口相关的设置,如 Hello 宣告间隔、水平分割、认证和汇总路由宣告。EIGRP的接口配置支持两种配置方法,可以将命令分配给指定接口或默认接口(此时会为所有启用了EIGRP的接口应用这些设置)。如果默认接口配置与指定接口配置存在冲突,那么指定接口配置将优于默认接口配置。
● 拓扑结构子模式:该子模式包含了与EIGRP拓扑数据库以及将路由呈现给路由器RIB的方式相关的设置。本节还将讨论与路由重分发和管理距离相关的设置。
EIGRP命名配置模式使得在同一个EIGRP进程下运行多个实例成为可能。在特定实例上启用EIGRP接口的过程如下。
步骤1 通过命令router eigrp process-name初始化EIGRP进程(请注意,如果为process-name使用数字,那么千万不要将其与自治系统号相关联)。
步骤2 通过命令address-family {IPv4 | IPv6} {unicast | vrf vrf-name} autonomous- system as-number为相应的地址簇初始化EIGRP实例。
步骤3 通过命令network network mask在接口上启用EIGRP。
两种配置模式都需要通过network语句来标识EIGRP将要使用的接口,network语句支持通配符掩码,可以根据需要进行精确或模糊配置。
注:
EIGRP的两种配置方式相互独立。传统EIGRP自治系统配置模式下的配置变更,不会修改运行EIGRP命名配置模式的路由器的设置。
EIGRP进程下的network语句的语法形式为network ip-address [mask],关键字mask可以省略,从而启用特定接口(属于该network语句定义的类别边界)。
一种常见误解是认为network语句负责将网络添加到EIGRP拓扑表中。但实际上,network语句的作用是标识启用EIGRP的接口,并将该接口的直连网络添加到EIGRP拓扑表中,再由EIGRP将拓扑表宣告给EIGRP自治系统中的其他路由器。
EIGRP不会将接口的辅助直连网络添加到拓扑表中,如果希望将辅助直连网络安装到EIGRP路由表中,就必须将它们重分发到EIGRP进程中。有关路由重分发的详细内容请参阅本书第16章。
为了更好地解释通配符掩码的概念,表2-4列出了一组路由器接口及IP地址,接下来将提供与特定场景相匹配的配置示例。
表2-4 路由器接口和IP地址示例
路由器接口 |
IP地址 |
---|---|
Gigabit Ethernet 0/0 |
10.0.0.10/24 |
Gigabit Ethernet 0/1 |
10.0.10.10/24 |
Gigabit Ethernet 0/2 |
192.0.0.10/24 |
Gigabit Ethernet 0/3 |
192.10.0.10/24 |
例2-1仅在与表2-4所列IP地址显式匹配的接口上启用EIGRP。
例2-1 使用显式IP地址的EIGRP配置
Router eigrp 1
network 10.0.0.10 0.0.0.0
network 10.0.10.10 0.0.0.0
network 192.0.0.10 0.0.0.0
network 192.10.0.10 0.0.0.0
例2-2通过network语句配置EIGRP,匹配了表2-4列出的子网。本例中的network语句将IP地址的最后一个八比特组设置为0,并将通配符掩码更改为255,这样就能匹配/24网络范围内的所有IP地址。
例2-2 使用显式子网的EIGRP配置
Router eigrp 1
network 10.0.0.0 0.0.0.255
network 10.0.10.0 0.0.0.255
network 192.0.0.0 0.0.0.255
network 192.10.0.0 0.0.0.255
以下代码通过network语句为10.0.0.0/8或192.0.0.0/8网络范围内的接口配置EIGRP:
router eigrp 1
network 10.0.0.0 0.255.255.255
network 192.0.0.0 0.255.255.255
以下代码为所有接口启用EIGRP:
router eigrp 1
network 0.0.0.0 255.255.255.255
注:
虽然通配符network语句能够简化大网络范围的配置操作,但是也可能会在非期望接口上启用EIGRP。
接下来将以图2-5为例来解释R1(传统配置模式)和R2(命名配置模式)的EIGRP配置。
图2-5 EIGRP示例拓扑结构
R1和R2在所有接口上启用了EIGRP。R1通过多个明确的网络接口地址来配置EIGRP,R2则通过一条命令在所有网络接口上启用EIGRP。例2-3给出了R1和R2的EIGRP配置示例。
例2-3 EIGRP配置示例
R1 (Classic Configuration)
interface Loopback0
ip address 192.168.1.1 255.255.255.255
!
interface GigabitEthernet0/1
ip address 10.12.1.1 255.255.255.0
!
interface GigabitEthernet0/2
ip address 10.11.11.1 255.255.255.0
!
router eigrp 100
network 10.11.11.1 0.0.0.0
network 10.12.1.1 0.0.0.0
network 192.168.1.1 0.0.0.0
------------------------------------------------------------------------------------------------
R2 (Named Mode Configuration)
interface Loopback0
ip address 192.168.2.2 255.255.255.255
!
interface GigabitEthernet0/1
ip address 10.12.1.2 255.255.255.0
!
interface GigabitEthernet0/2
ip address 10.22.22.2 255.255.255.0
!
router eigrp EIGRP-NAMED
address-family ipv4 unicast autonomous-system 100
network 0.0.0.0 255.255.255.255
如前所述,EIGRP命名配置模式包括3种配置子模式。例2-3仅使用了EIGRP地址簇子模式(使用network语句)。EIGRP拓扑结构子模式由命令topology base自动创建,并通过命令exit-af-topology退出该子模式,拓扑结构子模式的所有设置均列在这两条命令之间。
例2-4显示了EIGRP传统配置模式与命名配置模式在路由器上的配置结构差异。
例2-4 两种配置模式的配置结构
R1# show run | section router eigrp
router eigrp 100
network 10.11.11.1 0.0.0.0
network 10.12.1.1 0.0.0.0
network 192.168.1.1 0.0.0.0
------------------------------------------------------------------------------------------------
R2# show run | section router eigrp
router eigrp EIGRP-NAMED
!
address-family ipv4 unicast autonomous-system 100
!
topology base
exit-af-topology
network 0.0.0.0
exit-address-family
注:
EIGRP接口子模式配置包含命令af-interface interface-id或af-interface default,并在该命令之后立即列出所有特定命令,然后通过命令exit-af-interface退出EIGRP接口子模式配置。本章将在后面给出具体示例。
配置EIGRP时,一种最佳实践是验证只有期望接口运行了EIGRP。可以通过命令show ip eigrp interfaces [{interface-id [detail] | detail}]显示活动的EIGRP接口,如果使用了可选关键字detail,就可以显示更多有用信息,如认证、EIGRP定时器、水平分割以及各种数据包计数信息。
例2-5显示了R1 EIGRP接口的摘要信息以及R2 Gi0/1接口的详细信息。
例2-5 验证EIGRP接口
R1# 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
Gi0/2 0 0/0 0/0 0 0/0 0 0
Gi0/1 1 0/0 0/0 10 0/0 50 0
Lo0 0 0/0 0/0 0 0/0 0 0
------------------------------------------------------------------------------------------------
R2# show ip eigrp interfaces gi0/1 detail
EIGRP-IPv4 VR(EIGRP-NAMED) Address-Family Interfaces for AS(100)
Xmit Queue PeerQ Mean Pacing Time Multicast Pending
Interface Peers Un/Reliable Un/Reliable SRTT Un/Reliable Flow Timer Routes
Gi0/1 1 0/0 0/0 1583 0/0 7912 0
Hello-interval is 5, Hold-time is 15
Split-horizon is enabled
Next xmit serial <none>
Packetized sent/expedited: 2/0
Hello's sent/expedited: 186/2
Un/reliable mcasts: 0/2 Un/reliable ucasts: 2/2
Mcast exceptions: 0 CR packets: 0 ACKs suppressed: 0
Retransmissions sent: 1 Out-of-sequence rcvd: 0
Topology-ids on interface - 0
Authentication mode is not set
Topologies advertised on this interface: base
Topologies not advertised on this interface:
表2-5解释了EIGRP接口显示的主要字段信息。
表2-5 EIGRP接口字段
字段 |
描述 |
---|---|
Interface |
运行EIGRP的接口 |
Peers |
接口上检测到的对等体数量 |
Xmit Queue Un/Reliable |
传输队列中剩余的不可靠/可靠数据包数,数值为0表示网络稳定 |
Mean SRTT |
将数据包发送给邻居并收到邻居应答消息的平均时间(ms) |
Multicast Flow Timer |
路由器发送多播包的最大时间(s) |
Pending Routes |
发送队列中等待发送的路由数 |
每个EIGRP进程都要维护一张邻居表,以确保邻居处于活动状态并正确处理更新消息。如果不跟踪邻居状态,那么自治系统就可能包含错误数据,导致错误地路由流量。EIGRP路由器在宣告包含网络前缀的更新包之前,必须先建立邻居关系。
可以通过命令show ip eigrp neighbors [interface-id]显示路由器的EIGRP邻居。例2-6通过该命令显示了EIGRP邻居信息。
例2-6 验证EIGRP邻居
R1# show ip eigrp neighbors
EIGRP-IPv4 Neighbors for AS(100)
H Address Interface Hold Uptime SRTT RTO Q Seq
(sec) (ms) Cnt Num
0 10.12.1.2 Gi0/1 13 00:18:31 10 100 0 3
表2-6解释了例2-6显示的关键字段信息。
表2-6 EIGRP邻居字段
字段 |
描述 |
---|---|
Address |
EIGRP邻居的IP地址 |
Interface |
检测到邻居存在的接口 |
Hold Uptime |
从邻居接收数据包以确保其仍然有效的剩余时间 |
SRTT |
数据包发送到邻居的时间以及从邻居收到答复的时间(ms) |
RTO |
重传超时时间(等待ACK) |
Q Cnt |
队列中等待发送的数据包(更新/查询/应答)数量 |
Seq Num |
从该路由器最后收到的序列号 |
可以通过show ip route eigrp命令查看RIB中安装的EIGRP路由。源自AS内部的EIGRP路由的AD值为90,且在路由表中以“D”加以标记。源自AS外部的路由是外部EIGRP路由,外部EIGRP路由的AD值为170,且在路由表中以“D EX”加以标记。将AD值较高的外部EIGRP路由安装到RIB中是一种环路保护机制。
例2-7显示了图2-5所示的示例拓扑结构中的EIGRP路由,以高亮方式显示的方括号中的第二个数字就是路由的度量。
例2-7 R1和R2的EIGRP路由
R1# 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
a - application route
+ - replicated route, ٪ - next hop override, p - overrides from PfR
Gateway of last resort is not set
10.0.0.0/8 is variably subnetted, 5 subnets, 2 masks
D 10.22.22.0/24 [90/3072] via 10.12.1.2, 00:19:25, GigabitEthernet0/1
192.168.2.0/32 is subnetted, 1 subnets
D 192.168.2.2 [90/2848] via 10.12.1.2, 00:19:25, GigabitEthernet0/1
------------------------------------------------------------------------------------------------
R2# show ip route eigrp
! Output omitted for brevity
Gateway of last resort is not set
10.0.0.0/8 is variably subnetted, 5 subnets, 2 masks
D 10.11.11.0/24 [90/15360] via 10.12.1.1, 00:20:34, GigabitEthernet0/1
192.168.1.0/32 is subnetted, 1 subnets
D 192.168.1.1 [90/2570240] via 10.12.1.1, 00:20:34, GigabitEthernet0/1
注:
R2的路由度量与R1的路由度量不同,这是因为在默认情况下,R1的EIGRP传统配置模式使用传统度量,而R2的命名配置模式使用宽度量。相关内容将在2.4节进行详细讨论。
RID(Router ID,路由器ID)是一个唯一标识EIGRP路由器的32比特数字,通常用于环路预防机制。可以动态设置RID(默认方式),也可以手动设置RID。
EIGRP RID的动态选择算法将所有处于Up状态的环回接口的最大IPv4地址作为RID。如果没有处于Up状态的环回接口,那么EIGRP进程在初始化的时候,就会将所有处于Up状态的物理接口的最大IPv4地址作为RID。
由于IPv4地址长度为32比特且以点分十进制格式表示,因而通常将IPv4地址作为RID。可以在传统配置模式和命名配置模式中通过命令eigrp router-id router-id配置RID(见例2-8)。
例2-8 静态配置EIGRP RID
R1(config)# router eigrp 100
R1(config-router)# eigrp router-id 192.168.1.1
------------------------------------------------------------------------------------------------
R2(config)# router eigrp EIGRP-NAMED
R2(config-router)# address-family ipv4 unicast autonomous-system 100
R2(config-router-af)# eigrp router-id 192.168.2.2
虽然某些网络拓扑必须将网段宣告到EIGRP中,但是又要防止邻居与该网段上的其他路由器建立邻接关系。例如,在园区拓扑结构中宣告接入层网络时就可能遇到这种情况。在这种情况下,需要将EIGRP接口设置为被动状态。被动EIGRP接口不会发出或处理EIGRP Hello消息,从而能够避免EIGRP在该接口上建立邻接关系。
如果要将EIGRP接口设置为被动接口,可以在传统配置模式的EIGRP进程下通过命令passive-interface interface-id进行设置。另一种方式是通过命令passive-interface default将所有接口都默认配置为被动接口,再通过命令no passive-interface interface-id允许指定接口处理EIGRP数据包,从而改变全局被动接口的默认配置。
例2-9将R1的Gi0/2接口设置为被动状态,同时给出了另一种配置选项,将所有接口都设置为被动状态,但是将Gi0/1接口设置为非被动状态。
例2-9 传统配置模式下的被动EIGRP接口配置
R1# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)# router eigrp 100
R1(config-router)# passive-interface gi0/2
------------------------------------------------------------------------------------------------
R1(config)# router eigrp 100
R1(config-router)# passive-interface default
04:22:52.031: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 10.12.1.2 (GigabitEthernet0/1) is down: interface passive
R1(config-router)# no passive-interface gi0/1
*May 10 04:22:56.179: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 10.12.1.2 (GigabitEt-hernet0/1) is up: new adjacency
如果采用命名配置模式,就可以通过af-interface default在所有EIGRP接口上都配置passive-interface,或者在af-interface interface-id子模式下将特定接口设置为被动状态。例2-10通过两种配置策略将Gi0/2接口设置为被动状态,同时将Gi0/1接口设置为主动状态。
例2-10 命名配置模式下的被动EIGRP接口配置
R2# configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)# router eigrp EIGRP-NAMED
R2(config-router)# address-family ipv4 unicast autonomous-system 100
R2(config-router-af)# af-interface gi0/2
R2(config-router-af-interface)# passive-interface
R2(config-router-af-interface)# exit-af-interface
------------------------------------------------------------------------------------------------
R2(config)# router eigrp EIGRP-NAMED
R2(config-router)# address-family ipv4 unicast autonomous-system 100
R2(config-router-af)# af-interface default
R2(config-router-af-interface)# passive-interface
04:28:30.366: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 10.12.1.1
(GigabitEthernet0/1) is down: interface passiveex
R2(config-router-af-interface)# exit-af-interface
R2(config-router-af)# af-interface gi0/1
R2(config-router-af-interface)# no passive-interface
R2(config-router-af-interface)# exit-af-interface
*May 10 04:28:40.219: %DUAL-5-NBRCHANGE: EIGRP-IPv4 100: Neighbor 10.12.1.1
(GigabitEthernet0/1) is up: new adjacency
例2-11通过命名配置模式在af-interface default或af-interface interface-id下进行被动接口的配置(passive-interface或no passive-interface)。
例2-11 查看命名配置模式的EIGRP接口设置
R2# show run | section router eigrp
router eigrp EIGRP-NAMED
!
address-family ipv4 unicast autonomous-system 100
!
af-interface default
passive-interface
exit-af-interface
!
af-interface GigabitEthernet0/1
no passive-interface
exit-af-interface
!
topology base
exit-af-topology
network 0.0.0.0
exit-address-family
虽然启用了被动接口,但被动接口并不会出现在命令show ip eigrp interfaces的输出结果中。不过,被动接口的直连网络仍然安装到了EIGRP拓扑表中,从而宣告给了邻居。
与例2-5相比,例2-12的输出结果并没有出现R1的Gi0/2接口。
例2-12 被动接口不见了
R1# 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
Gi0/1 1 0/0 0/0 9 0/0 50 0
为了更快地排查被动接口及相关配置故障,可以通过命令show ip protocols显示所有路由协议的各种有用信息。对于EIGRP来说,该命令将显示EIGRP进程标识符、ASN、用于路径计算的K值、RID、邻居、AD设置以及所有被动接口等信息。
例2-13给出了R1和R2在传统配置模式及命名配置模式下的show ip protocols命令输出结果。
例2-13 show ip protocols命令输出结果
R1# show ip protocols
! Output omitted for brevity
Routing Protocol is "eigrp 100"
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(100)
Metric weight K1=1, K2=0, K3=1, K4=0, K5=0
Soft SIA disabled
NSF-aware route hold timer is 240
Router-ID: 192.168.1.1
Topology : 0 (base)
Active Timer: 3 min
Distance: internal 90 external 170
Maximum path: 4
Maximum hopcount 100
Maximum metric variance 1
Automatic Summarization: disabled
Maximum path: 4
Routing for Networks:
10.11.11.1/32
10.12.1.1/32
192.168.1.1/32
Passive Interface(s):
GigabitEthernet0/2
Loopback0
Routing Information Sources:
Gateway Distance Last Update
10.12.1.2 90 00:21:35
Distance: internal 90 external 170
------------------------------------------------------------------------------------------------
R2# show ip protocols
! Output omitted for brevity
Routing Protocol is "eigrp 100"
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 VR(EIGRP-NAMED) Address-Family Protocol for AS(100)
Metric weight K1=1, K2=0, K3=1, K4=0, K5=0 K6=0
Metric rib-scale 128
Metric version 64bit
Soft SIA disabled
NSF-aware route hold timer is 240
Router-ID: 192.168.2.2
Topology : 0 (base)
Active Timer: 3 min
Distance: internal 90 external 170
Maximum path: 4
Maximum hopcount 100
Maximum metric variance 1
Total Prefix Count: 5
Total Redist Count: 0
Automatic Summarization: disabled
Maximum path: 4
Routing for Networks:
0.0.0.0
Passive Interface(s):
GigabitEthernet0/2
Loopback0
Routing Information Sources:
Gateway Distance Last Update
10.12.1.1 90 00:24:26
Distance: internal 90 external 170
认证机制可以确保仅授权路由器才有资格成为EIGRP邻居。某些人可能会在网络中增添路由器,从而意外或恶意引入无效路由,此时就可以通过认证机制来防范这种情况。所有EIGRP数据包都包含预先计算好的哈希密码,接收端路由器收到数据包之后对哈希密码进行解密,如果哈希密码与数据包不匹配,那么路由器就会丢弃该数据包。
EIGRP使用MD5(Message Digest 5,消息摘要5)和密钥链功能加密密码,哈希由密钥号和密码组成。EIGRP认证机制仅加密密码,而不加密整个EIGRP数据包。
注:
密钥链功能可以将密码配置为在特定时间内有效,从而能够根据预配置时间更改密码。不过,将密钥序列限定为特定时间的内容已经超出了本书写作范围,更多详细信息可以参考思科官网。
配置EIGRP认证机制时,首先需要创建一个密钥链,然后在接口上启用EIGRP认证机制。接下来将详细介绍EIGRP认证机制的配置步骤。
密钥链的创建步骤如下。
步骤1 通过命令key chain key-chain-name创建密钥链。
步骤2 通过命令key key-number标识密钥序列,其中,key-number的取值范围是0~2,147,483,647。
步骤3 通过命令key-string password指定预共享密码。
注:
请注意,不要在密码后面使用空格,因为空格也会被用于哈希计算。
使用传统配置模式时,需要在接口子模式下为接口启用认证机制。也就是说,在接口子模式下配置以下命令:
ip authentication key-chain eigrp as-number key-chain-name
ip authentication mode eigrp as-number md5
命名配置模式需要在EIGRP接口子模式下(af-interface default或af-interface interface-id下)启用认证机制。命名配置模式支持MD5或HMAC-SHA-256(Hashed Message Authentication Code-Secure Hash Algorithm-256,哈希消息认证码-安全哈希算法-256)认证。MD5认证需要使用以下命令:
authentication key-chain eigrp key-chain-name
authentication mode md5
HMAC-SHA-256认证需要使用命令authentication mode hmacsha-256 password。
例2-14给出了R1采用EIGRP传统配置模式以及R2采用命名配置模式进行MD5认证配置的示例。需要记住的是,哈希值的计算需要用到密钥序列号和密钥字符串(两个节点必须完全匹配)。
例2-14 配置EIGRP认证机制
R1(config)# key chain EIGRPKEY
R1(config-keychain)# key 2
R1(config-keychain-key)# key-string CISCO
R1(config)# interface gi0/1
R1(config-if)# ip authentication mode eigrp 100 md5
R1(config-if)# ip authentication key-chain eigrp 100 EIGRPKEY
------------------------------------------------------------------------------------------------
R2(config)# key chain EIGRPKEY
R2(config-keychain)# key 2
R2(config-keychain-key)# key-string CISCO
R2(config-keychain-key)# router eigrp EIGRP-NAMED
R2(config-router)# address-family ipv4 unicast autonomous-system 100
R2(config-router-af)# af-interface default
R2(config-router-af-interface)# authentication mode md5
R2(config-router-af-interface)# authentication key-chain EIGRPKEY
可以通过命令show key chain验证密钥链。从例2-15可以看出,每个密钥序列都提供了生存期和密码信息。
例2-15 验证密钥链
R1# show key chain
Key-chain EIGRPKEY:
key 2 -- text "CISCO"
accept lifetime (always valid) - (always valid) [valid now]
send lifetime (always valid) - (always valid) [valid now]
查看EIGRP接口的详细信息可以验证特定接口的EIGRP认证,例2-16给出了EIGRP接口的详细信息。
例2-16 验证EIGRP认证
R1# show ip eigrp interface 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
Gi0/1 0 0/0 0/0 0 0/0 50 0
Hello-interval is 5, Hold-time is 15
Split-horizon is enabled
Next xmit serial <none>
Packetized sent/expedited: 10/1
Hello's sent/expedited: 673/12
Un/reliable mcasts: 0/9 Un/reliable ucasts: 6/19
Mcast exceptions: 0 CR packets: 0 ACKs suppressed: 0
Retransmissions sent: 16 Out-of-sequence rcvd: 1
Topology-ids on interface - 0
Authentication mode is md5, key-chain is "EIGRPKEY"
度量计算对于所有路由协议来说都是至关重要的组成部分,EIGRP采用多种参数来计算路径度量。虽然默认采用带宽和时延来计算路径度量,但是也可以包含接口负载以及可靠性等参数。图2-6给出了EIGRP传统度量计算公式。
图2-6 EIGRP传统度量计算公式
EIGRP通过K值来定义度量计算公式将要使用哪些参数来计算度量以及这些参数的影响程度。一种常见误解是K值与带宽、负载、时延或可靠性等参数直接相关,这是不准确的,例如,K1和K2引用的都是BW(BandWidth,带宽)。
BW指的是路径上速率最低的链路,最大支持10Gbit/s链路(107),可以通过接口上配置的接口带宽来采集链路速率。时延指的是路径上的总时延,以 10μs 为单位。
EIGRP度量计算公式基于IGRP度量计算公式,区别在于将计算结果乘256,从而将度量从24比特调整为32比特。因此,EIGRP传统度量计算公式如图2-7所示。
图2-7 EIGRP传统度量计算公式
在默认情况下,K1和K3取值为1,K2、K4和K5取值为0。将这些默认K值代入上面的度量计算公式之后,可以得到简化后的度量计算公式(见图2-8)。
EIGRP更新包携带了与每个前缀相关联的路径属性。EIGRP的路径属性包括跳数、累积时延、最小带宽链路速率以及RD。路径上的每一跳都会更新这些路径属性,从而允许每台路由器都能独立识别最短路径。
图2-8 简化后的EIGRP传统度量计算公式
图2-9显示了在自治系统内部传播的前缀为10.1.1.0/24的EIGRP更新包信息。请注意每个EIGRP更新包中的跳数增加、最小带宽减少、总时延增加以及RD变化情况。
图2-9 EIGRP路径属性传播
表2-7列出了常见网络接口类型、链路速率、时延及EIGRP度量信息。
表2-7 传统度量的默认EIGRP接口度量
接口类型 |
链路速率/(kbit/s) |
时延 |
度量 |
---|---|---|---|
串行接口 |
64 |
20,000μs |
40,512,000 |
T1 |
1544 |
20,000μs |
2,170,031 |
以太网 |
10,000 |
1000μs |
281,600 |
快速以太网 |
100,000 |
100μs |
28,160 |
千兆以太网 |
1,000,000 |
10μs |
2816 |
万兆以太网 |
10,000,000 |
10μs |
512 |
接下来以图2-2中的示例拓扑结构为例,按照图2-10中的度量计算公式来计算R1和R2到达网络10.4.4.0/24的度量。这两台路由器的链路速率均为1Gbit/s,总时延均为30μs(链路10.4.4.0/24的时延为10μs,链路10.34.1.0/24的时延为10μs,链路10.13.1.0/24的时延为10μs)。
图2-10 取默认K值时的EIGRP传统度量计算公式
如果无法确定EIGRP度量,就可以通过命令show ip eigrp topology network/prefix- length直接从EIGRP拓扑表查询计算公式的相关参数。
例2-17显示了R1关于网络10.4.4.0/24的拓扑表信息。可以看出,输出结果包括后继路由、可行后继路由以及该前缀的EIGRP状态,每条路径都包含了最小带宽、总时延、接口可靠性、负载以及跳数等EIGRP属性。
例2-17 特定前缀的EIGRP拓扑表信息
R1# show ip eigrp topology 10.4.4.0/24
! Output omitted for brevity
EIGRP-IPv4 Topology Entry for AS(100)/ID(10.14.1.1) for 10.4.4.0/24
State is Passive, Query origin flag is 1, 1 Successor(s), FD is 3328
Descriptor Blocks:
10.13.1.3 (GigabitEthernet0/1), from 10.13.1.3, Send flag is 0x0
Composite metric is (3328/3072), route is Internal
Vector metric:
Minimum bandwidth is 1000000 Kbit
Total delay is 30 microseconds
Reliability is 252/255
Load is 1/255
Minimum MTU is 1500
Hop count is 2
Originating router is 10.34.1.4
10.14.1.4 (GigabitEthernet0/2), from 10.14.1.4, Send flag is 0x0
Composite metric is (5376/2816), route is Internal
Vector metric:
Minimum bandwidth is 1000000 Kbit
Total delay is 110 microseconds
Reliability is 255/255
Load is 1/255
Minimum MTU is 1500
Hop count is 1
Originating router is 10.34.1.4
最初的EIGRP规范以10μs和KB/s为单位度量时延,难以满足高速接口的度量需求。例如,表2-7中的千兆以太网和万兆以太网接口的时延完全相同。
例2-18提供了一些常见LAN接口速率的度量计算结果。可以看出,11Gbit/s接口和20Gbit/s接口没有任何区别,虽然这两个接口的带宽速率不同,但计算出来的度量却都是256。
例2-18 常见LAN接口速率的度量计算结果
GigabitEthernet:
Scaled Bandwidth = 10,000,000 / 1,000,000
Scaled Delay = 10 / 10
Composite Metric = 10 + 1 * 256 = 2816
------------------------------------------------------------------------------------------------
10 GigabitEthernet:
Scaled Bandwidth = 10,000,000 / 10,000,000
Scaled Delay = 10 / 10
Composite Metric = 1 + 1 * 256 = 512
------------------------------------------------------------------------------------------------
11 GigabitEthernet:
Scaled Bandwidth = 10,000,000 / 11,000,000
Scaled Delay = 10 / 10
Composite Metric = 0 + 1 * 256 = 256
------------------------------------------------------------------------------------------------
20 GigabitEthernet:
Scaled Bandwidth = 10,000,000 / 20,000,000
Scaled Delay = 10 / 10
Composite Metric = 0 + 1 * 256 = 256
EIGRP 支持另一种被称为宽度量(Wide Metrics)的度量计算方式,宽度量解决了大容量接口的扩展性问题。
图2-11给出了EIGRP宽度量计算公式。请注意,该计算公式引入了一个额外K值(K6),可以度量抖动、能量或其他扩展属性。
图2-11 EIGRP宽度量计算公式
与EIGRP传统度量乘256以适应IGRP相似,EIGRP宽度量也要乘65,535以适应高速链路的需求,这样就能最大支持每秒655TB(65,535×107)的接口速率。时延指的是总接口时延,但此时以ps(10−12)为单位而不是以μs(10−6)为单位。考虑了时延和扩展性变换之后,图2-12给出了EIGRP宽度量计算公式。
图2-12 EIGRP宽度量计算公式
接口时延因路由器的不同而有所不同,具体取决于以下逻辑。
● 如果明确设置了接口时延,那么时延值的单位将被转换为ps。设置接口时延时,始终以10μs为单位并乘107将值的单位转换为ps。
● 如果明确设置了接口带宽,就需要使用传统默认时延(转换为ps)配置接口时延。确定接口时延时,不考虑配置带宽。如果配置了时延,就忽略本步骤。
● 如果接口支持1Gbit/s或更低速率,且不包含带宽或时延配置,那么接口时延就是传统的默认时延(转换为ps)。
● 如果接口支持1Gbit/s以上的速率,且不包含带宽或时延配置,那么接口时延的计算方式为1013/接口带宽。
EIGRP传统度量仅支持EIGRP传统配置模式,EIGRP宽度量仅支持EIGRP命名配置模式。可以通过命令show ip protocols显示路由器使用的度量类型。如果存在K6度量,就表明路由器正在使用宽度量。
例2-19验证了R1和R2的EIGRP度量类型。可以看出,R1没有K6度量,表明使用的是EIGRP传统度量;R2拥有K6度量,表明使用的是EIGRP宽度量。
例2-19 验证EIGRP度量类型
R1# show ip protocols | include AS|K
EIGRP-IPv4 Protocol for AS(100)
Metric weight K1=1, K2=0, K3=1, K4=0, K5=0
------------------------------------------------------------------------------------------------
R2# show ip protocols | include AS|K
EIGRP-IPv4 VR(EIGRP-NAMED) Address-Family Protocol for AS(100)
Metric weight K1=1, K2=0, K3=1, K4=0, K5=0 K6=0
EIGRP宽度量在设计之初就支持后向兼容性。EIGRP宽度量将K1和K3设置为1,将K2、K4、K5、K6设置为0之后,就实现了后向兼容性,因为此时的K值度量与传统度量完全匹配。只要K1~K5相同且不设置K6,就允许使用这两种度量类型的路由器之间建立邻接关系。
与路由器建立对等连接时,EIGRP可以检测出路由器使用的是传统度量,从而将度量计算公式调整为图2-13所示公式。
图2-13 度量计算公式换算
如果路由穿越了同时部署了传统度量和宽度量的网络设备,那么这种度量转换就会导致路由明细度的下降。最终结果就是,通过宽度量对等体学到的路径始终优于通过传统度量学到的路径。混合使用传统度量和宽度量的设备可能会出现次优路由选择问题,因而最好让所有设备都使用相同的度量类型。
如果不记得表2-7列出的时延值,就可以通过show interface interface-id命令查询这些时延值,该命令可以显示EIGRP接口时延(以μs为单位,位于DLY字段之后)。例2-20提供了验证EIGRP接口时延时R1和R2的输出结果。可以看出,两个接口的时延均为10μs。
例2-20 验证EIGRP接口时延
R1# show interfaces gigabitEthernet 0/1 | i DLY
MTU 1500 bytes, BW 1000000 Kbit/sec, DLY 10 usec,
------------------------------------------------------------------------------------------------
R2# show interfaces gigabitEthernet 0/1 | i DLY
MTU 1500 bytes, BW 1000000 Kbit/sec, DLY 10 usec,
EIGRP以逐个接口的方式设置时延,从而能够控制穿越特定路由器接口的流量模式。可以在接口下通过命令delay tens-of-microseconds配置接口时延。
例2-21将R1的接口时延修改为100μs,从而将R1与R2之间的链路时延增加到1000μs。为了确保路由的一致性,还需要修改R2的Gi0/1接口时延,修改之后还可以验证时延变更情况。
例2-21 修改接口时延
R1# configure terminal
R1(config)# interface gi0/1
R1(config-if)# delay 100
R1(config-if)# do show interface Gigabit0/1 | i DLY
MTU 1500 bytes, BW 1000000 Kbit/sec, DLY 1000 usec,
注:
虽然通过接口参数命令bandwidth bandwidth修改带宽对度量计算公式能够产生相似的影响,但修改带宽会影响其他路由协议(如OSPF),而修改接口时延仅影响EIGRP。
如果默认度量计算公式无法满足需求,那么也可以自定义路径度量计算公式。可以在EIGRP进程下通过命令metric weights TOS K1 K2 K3 K4 K5 [K6]设置路径度量计算公式中的K值,其中,TOS始终为0,K6仅用于命名配置模式。
为了确保EIGRP自治系统内路由逻辑的一致性,EIGRP邻居的K值必须完全匹配才能建立邻接关系并交换路由。K值包含在EIGRP Hello包中,可以通过show ip protocols命令查看K值。从例2-13可以看出,两台路由器使用的都是默认K值,R1采用的是传统度量,R2采用的是宽度量。
EIGRP允许将多条后继路由(拥有相同度量)安装到RIB中,在RIB中为同一前缀安装多条路径称为ECMP(Equal-Cost MultiPathing,等价多路径)路由。截至本书写作之时,默认最多支持4条ECMP路由。可以在EIGRP进程下(传统配置模式)或拓扑结构子模式下(命名配置模式)通过命令maximum-paths maximum-paths修改默认的ECMP设置。
例2-22修改了R1和R2的EIGRP最大路径数(分别采用了传统配置模式和命名配置模式)。
例2-22 修改EIGRP最大路径数
R1# show run | section router eigrp
router eigrp 100
maximum-paths 6
network 0.0.0.0
------------------------------------------------------------------------------------------------
R2# show run | section router eigrp
router eigrp EIGRP-NAMED
!
address-family ipv4 unicast autonomous-system 100
!
topology base
maximum-paths 6
exit-af-topology
network 0.0.0.0
eigrp router-id 192.168.2.2
exit-address-family
EIGRP支持非等价负载均衡,允许将后继路由和可行后继路由都安装到EIGRP RIB中。如果要使用EIGRP的非等价负载均衡,就需要调整EIGRP的方差倍数(Variance Multiplier)。EIGRP的方差值是路由的FD值乘EIGRP的方差倍数。如果可行后继路由的FD值小于EIGRP方差值,就可以将该可行后继路由安装到RIB中。EIGRP可以安装多条FD值小于EIGRP的方差倍数的路由,直至达到前面所说的最大允许的ECMP路由条数为止。
将可行后继路由的FD值除以后继路由FD值即可得到方差倍数。方差倍数是一个整数,必须将结果取整。
根据图2-2所示的拓扑结构以及图2-3所示的EIGRP拓扑表输出结果,可以计算出最小EIGRP方差倍数,从而可以将R1到R4的直连路径安装到RIB中。后继路由的FD值为3328,可行后继路由的FD值为5376,计算得到的方差倍数约为1.6,四舍五入为最接近的整数之后,即可得到EIGRP方差倍数2(见图2-14)。
图2-14 EIGRP方差倍数计算公式
可以在EIGRP进程(传统配置模式)下或拓扑结构子模式(命名配置模式)下通过命令variance multiplier配置方差倍数。
例2-23给出了两种配置模式下的配置示例。
例2-23 配置EIGRP方差倍数
R1 (Classic Configuration)
router eigrp 100
variance 2
network 0.0.0.0
------------------------------------------------------------------------------------------------
R1 (Named Mode Configuration)
router eigrp EIGRP-NAMED
!
address-family ipv4 unicast autonomous-system 100
!
topology base
variance 2
exit-af-topology
network 0.0.0.0
exit-address-family
例2-24确认两条路径均已安装到了RIB中。请注意,这两条路径的度量值不同,其中一条路径的度量值为3328,另一条路径的度量值为5376。可以通过命令show ip route network(如第二个输出结果)查看流量负载均衡比例,例2-24中以高亮方式显示了负载均衡的流量共享情况。
例2-24 验证非等价负载均衡
R1# show ip route eigrp | begin Gateway
Gateway of last resort is not set
10.0.0.0/8 is variably subnetted, 10 subnets, 2 masks
D 10.4.4.0/24 [90/5376] via 10.14.1.4, 00:00:03, GigabitEthernet0/2
[90/3328] via 10.13.1.3, 00:00:03, GigabitEthernet0/1
------------------------------------------------------------------------------------------------
R1# show ip route 10.4.4.0
Routing entry for 10.4.4.0/24
Known via "eigrp 100", distance 90, metric 3328, type internal
Redistributing via eigrp 100
Last update from 10.13.1.3 on GigabitEthernet0/1, 00:00:35 ago
Routing Descriptor Blocks:
* 10.14.1.4, from 10.14.1.4, 00:00:35 ago, via GigabitEthernet0/2
Route metric is 5376, traffic share count is 149
Total delay is 110 microseconds, minimum bandwidth is 1000000 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 1
10.13.1.3, from 10.13.1.3, 00:00:35 ago, via GigabitEthernet0/1
Route metric is 3328, traffic share count is 240
Total delay is 30 microseconds, minimum bandwidth is 1000000 Kbit
Reliability 254/255, minimum MTU 1500 bytes
Loading 1/255, Hops 2
本书提供多种备考手段:此处的练习题以及Pearson Test Prep软件中的模拟考试题。与实际试题相比,下面问题的难度更高,因为它们都是开放式问题。通过这种难度更高的问题,读者可以更好地测试知识掌握程度,以确保完全掌握本章基本概念和主要内容。下面的问题都可以在附录中找到参考答案。
请复习本章涉及的所有重要主题,这些内容都用“考试要点”图标做了标记,表2-8列出了这些考试要点及其描述。
表2-8 考试要点
考试要点 |
描述 |
---|---|
段落 |
EIGRP的关键术语 |
段落 |
拓扑表 |
表2-3 |
EIGRP数据包类型 |
段落 |
建立EIGRP邻居关系 |
段落 |
EIGRP传统配置模式 |
段落 |
EIGRP命名配置模式 |
段落 |
被动接口 |
段落 |
认证 |
段落 |
路径度量计算 |
段落 |
EIGRP路径属性传播 |
图2-11 |
EIGRP宽度量计算公式 |
段落 |
自定义K值 |
段落 |
非等价负载均衡 |
请对本章中的下列关键术语进行定义。
自治系统(AS)、后继路由、后继路由器、可行距离、报告距离、可行性条件、可行后继路由、拓扑表、EIGRP传统配置模式、EIGRP命名配置模式、被动接口、K值、宽度量、方差值。
以下列出本章用到的各种重要的配置和验证命令,虽然不需要记忆每条命令的完整语法格式,但是应该记住这些命令所需的基本关键字。
为了检查你对这些命令的记忆情况,请用一张纸遮住表 2-9 的右侧,通过表格左侧的描述内容,看一看是否能记起这些命令。
表2-9 命令参考
任务 |
命令语法 |
---|---|
在传统配置模式下初始化EIGRP |
router eigrp as-number network network mask |
在命名配置模式下初始化EIGRP |
router eigrp process-name address-family {ipv4| ipv6} {unicast | vrf vrf-name} autonomous-system as-number network network mask |
定义EIGRP路由器ID |
eigrp router-id router-id |
阻止启用了EIGRP的接口建立邻居邻接关系 |
传统配置模式:(EIGRP进程)passive-interface interface-id命名配置模式:af-interface {default | interface-id}passive-interface |
为EIGRP MD5认证配置密钥链 |
key chain key-chain-name key key-number key-string password |
为EIGRP接口配置MD5认证机制 |
传统配置模式:(EIGRP进程)ip authentication key-chain eigrp as-number key-chain-name ip authentication mode eigrp as-number md5命名配置模式:af-interface {default | interface-id}authentication key-chain eigrp key-chain-name authentication mode md5 |
为EIGRP命名配置模式接口配置SHA认证机制 |
命名配置模式:af-interface {default | interface-id}authentication mode hmac-sha-256 password |
修改接口时延 |
delay tens-of-microseconds |
修改EIGRP的K值 |
metric weights TOS K1 K2 K3 K4 K5 [K6] |
修改允许安装到RIB中的默认EIGRP最大路径数 |
maximum-paths maximum-paths |
为非等价负载均衡修改EIGRP方差倍数 |
variance multiplier |
显示启用了EIGRP的接口 |
show ip eigrp interface [{interface-id [detail] | detail}] |
显示EIGRP拓扑表 |
show ip eigrp topology [all-links] |
显示已配置的EIGRP密钥链和密码 |
show key chain |
显示路由器配置的IP路由协议信息 |
show ip protocols |
由于ENARSI 300-410认证考试重点考查考生作为网络专家的实际动手能力,因而必须掌握与本章主题相关的配置、验证及故障排查命令。