CCIE路由和交换认证考试指南(第5版) (第2卷)

978-7-115-42264-4
作者: 【美】那比克 科查理安(Narbik Kocharians) 特里 文森(Terry Vinson)
译者: 夏俊杰
编辑: 傅道坤
分类: CCIE

图书目录:

详情

本书是Cisco最新发布的CCIE路由和交换400-101笔试的官方认证考试指南,涵盖了与CCIE路由交换笔试相关的IP BGP路由、QoS、广域网、IP多播、网络安全以及MPLS等技术。本书主要面向备考CCIE路由和交换笔试的考生,但本书内容实用性很强,有助于提高大家日常工作的效率,保证网络的高效运行,因而也非常适合从事企业网及复杂网络设计及运维的工程技术人员参考。

图书摘要

版权信息

书名:CCIE路由和交换认证考试指南(第5版) (第2卷)

ISBN:978-7-115-42264-4

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

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

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

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

• 著     [美] Narbik Kocharians, CCIE #12410

         Terry Vinson, CCIE #35347

  译    夏俊杰

  责任编辑 傅道坤

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

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

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

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

  反盗版热线:(010)81055315


CCIE Routing and Switching v5.0 Official Cert Guide, Volume 2, Fifth Edition (ISBN: 9781587144912)

Copyright © 2015 Pearson Education, Inc.

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

All rights reserved.

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

版权所有,侵权必究。


本书是根据Cisco最新发布的CCIE路由和交换400-101考试纲要编写的认证考试指南,涵盖了与CCIE路由和交换笔试相关的IP BGP路由、QoS、广域网、IP多播、网络安全以及MPLS等技术,为广大备考人员提供了翔实的学习资料。为了帮助广大读者更好地深入掌握各章所学的知识,作者在每章开头均安排了“我已经知道了吗?”测试题,以帮助读者更好地评估知识能力并确定如何分配有限的学习时间;在主要章节中间,作者提供了大量具有极佳连贯性的配置示例,便于读者掌握认证考试中可能遇到的各种复杂场景;在每章结束前的“备考任务”中总结了本章的考试要点以及各种有用的IOS配置和验证命令,便于读者随时参考和复习。此外,为帮助读者进行考前模拟,配套光盘还提供了测试工具和模拟测验题。

本书主要面向备考CCIE路由和交换笔试的考生,但本书相关内容实用性很强,有助于提高大家日常工作的效率,保证网络的高效运行,因而也非常适合从事企业网及复杂网络设计及运维的工程技术人员参考。


Narbik Kocharians,CCIE #12410(包括路由和交换、安全、SP)取得了三项CCIE认证,拥有超过32年的IT工作经验,曾经设计、部署并支撑了大量企业网。Narbik是Micronics培训公司(www.Micronicstraining.com)的总裁,负责讲授CCIE R&S和SP课程。

Terry Vinson,CCIE #35347(包括路由和交换、数据中心)是一名经验丰富的讲师,拥有超过25年的授课经验以及技术课程和培训教材的编写经验。Terry不但讲授和开发培训课程,而且还为北佛吉尼亚/华盛顿特区的大企业提供技术咨询服务。Terry精通Cisco路由和交换技术以及最新的数据中心技术,包括Nexus交换技术、统一计算技术以及存储区域网络(SAN)技术。Terry目前在Micronics培训公司负责讲授CCIE R&S以及数据中心课程,闲暇时喜欢航海及游戏设计。


David Burns在路由和交换、网络安全以及移动领域拥有丰富的经验和知识,目前是Cisco高级系统工程经理,领导的工程团队负责为美国有线电视/MSO以及内容服务提供商提供服务。Dave于2008年7月进入Cisco,是Femtocell、数据中心、MTSO以及网络安全架构等多个领域的资深系统工程师,为美国的SP移动部门提供服务。David在进入Cisco之前曾经在一家大型的美国有线电视公司工作,是一名高级网络和安全设计工程师。在进入Cisco之前的十多年行业工作中,David曾经从事过SP维护、SP建设、SP架构、企业IT以及美军智能通信建设等多种工作。目前David拥有多项销售及行业/Cisco技术认证,包括CISSP、CCSP、CCDP以及两个初级认证。David最近刚刚通过CCIE安全笔试,目前正在准备CCIE安全实验室考试。David热衷于网络技术(特别是网络安全)的知识传播与共享,曾经在Cisco Live上做过Femtocell(IP移动性)和IPS(安全)的专题演讲。David获得了位于佐治亚州的南方州立理工大学电信工程技术专业的理学学士学位,目前是计算机及电气工程技术学院工业咨询委员会的委员。David还获得了凤凰城大学的工商管理硕士学位。

Sean Wilkins是SR-W咨询公司一名极富经验的网络顾问,从20世纪90年代就进入IT领域,长期与Cisco、Lucent、Verion、AT&T以及其他私营企业进行合作。Sean目前拥有包括Cisco(CCNP/CCDP)、Microsoft(MCSE)以及CompTIA(A+和Network+)在内的多项认证,还获得过信息技术专业的理学硕士学位(专注于网络架构与设计)、组织管理专业的理学硕士学位、网络安全专业的硕士证书、计算机网络专业理学学士学位以及计算机信息系统应用科学的肆业证书。除了作为网络顾问,Sean大部分时间都在为多家公司从事技术写作和编撰工作,相关作品可以查阅网站www.infodispersion.com。


谨将本书献给我的妻子Janet,感谢她给我的挚爱、鼓励以及一如既往地支持。同时还献给我的父亲,感谢他教给我的至理名言。

——Narbik Kocharians

谨将本书献给我的父亲,感谢他在生活中教会了我很多东西,包括我一直记忆犹新的事情:“永不放弃自己的梦想,只要永不放弃,努力与勤奋就会始终陪伴在你身边”。 我要把我所有的爱、尊敬与钦佩都奉献给你。

——Terry Vinson


首先感谢上帝给了我写作、教学以及做自己真正喜欢的工作的机会,其次感谢我的家庭,特别是我年芳29的妻子Janet,感谢她一直以来给我的鼓励与帮助。她一直负责与学生沟通并处理所有与课程安排相关的工作,才使得我能够专心教学。最后感谢我的孩子Chris、Patrick、Alexandra以及最小的宝贝Daniel,感谢你们表现出的非凡耐心。

特别要感谢Brett Bartow先生,在我截稿日期一变再变的情况下能够始终保持足够的耐心。毫无疑问,技术编辑和审稿人的工作也极其出色,在此表示衷心的感谢。最后,感谢我所有的学生们,感谢你们的激励,也感谢你们能够阅读本书。

——Narbik Kocharians

非常荣幸有机会能够合作编写本书的新版本,感谢Narbik给了我这个写作机会以及多年来给予的支持与指导。没有Narbrik就没有我的今天。此外,感谢Cisco Press 的优秀团队,感谢他们在过去几个月中表现出的非凡冷静与理解。尤其要感谢Brett Bartow,感谢他几乎无限的耐心(不过我已经快要磨光了他的所有耐心)。同时还要感谢David Burns和Sean Wilkins,感谢他们提供的大量有益建议和对工作的热情,让我能够始终不偏离轨道。最后要重点感谢Cisco Press的朋友Christopher Cleveland,感谢他在我写作过程中坚持不懈地推动与支持。

衷心感谢我的妻子Sheila,感谢她使我的生命变得与众不同,让我每天能够不断努力,竭力成为一名更优秀的人、更杰出的工程师以及更棒的教师。没有她,就没有我如今挚爱的生活。

最后要感谢我的学生以及Micronics培训公司,感谢你们给我机会每天都去做我喜欢做的事情,感谢你们的所有问题、耐心及热忱的学习欲望。正是有了你们,才使得这个行业有别于世界上的其他任何行业。

——Terry Vinson


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


CCIE(Cisco Certified Internetwork Expert,思科认证互联网专家)是网络认证领域最具挑战性也最具声望的认证之一,获得了无数赞誉和奖项,是技术界公认最难获得的认证之一。CCIE认证能够帮助大家打开专业领域之门,得到更高的工作报酬和与众不同的简历。

Cisco目前提供了多种CCIE认证,本书涵盖了CCIE路由和交换认证笔试5.0版本考试大纲的所有内容。下面列出了截至本书出版之时Cisco提供的所有CCIE认证,大家可以通过www.cisco.com/go/ccie查阅最新的CCIE认证信息,以下认证以其在网页上的顺序为序:

每项CCDE和CCIE认证都必须通过笔试和一天的实验室考试,笔试的目的是测试大家对优秀设计实践所必需的技术理论、协议及配置概念的理解和掌握程度,实验室考试的目的是测试大家对真实设备的配置和排障能力。

参加CCIE路由和交换笔试最直接也是最明显的理由是,这是获得CCIE路由和交换认证的第一步,只有通过了CCIUE路由和交换笔试,才能安排后面的CCIE实验考试。也就是说,如果希望获得CCIE路由和交换认证的所有好处,那么就必须首先通过CCIE路由和交换笔试。

获得CCIE认证的好处不胜枚举,可能有:

参加CCIE路由和交换笔试的另一个重要原因就是对自己的初级、中级及高级Cisco认证进行再认证,有关Cisco再认证的具体需求可能会发生变化,具体需求请参阅www.cisco.com/go/certifications。

截至本书写作之时,CCIE路由和交换笔试由隶属于Pearson VUE(www.vue.com/cisco)的监考机构负责,需要在2小时内完成大约100道多项选择题。所有的模拟题都不是实际笔试的考试题。

与大多数考试一样,每个人都希望知道实际的考试情况,Cisco在CCIE路由和交换笔试大纲中提供了相关考试主题的通用指南,最新版本请参阅www.cisco.com/go/ccie。

虽然Cisco会经常调整CCIE笔试和实验室考试的大纲,但很少更改考试编号,不过这次发布的CCIE路由和交换笔试大纲5.0版本却更改了考试编号,4.0版本的考试编号为350-001,5.0版本的考试编号为400-101。

为了帮助读者更好地练习并熟练掌握CCIE路由和交换笔试的主题内容,本书在配套光盘中提供了大量测试题,很好地反映了5.0版本考试大纲的要求。应该说这些主题需要用到本书提到的所有知识,提供这些测试题库的原因是希望为广大读者提供更多的学习和练习机会,以更好地掌握这些主题内容。

这些测试题都在模拟考试测试软件的题库中,大家可以进行完整的模拟测试,也可以选做特定类型的测试题。

本节将简要介绍本书的主要内容、主要目标以及阅读本书时的常见注意事项。

本书主要包括6个部分,除了书中提到的这些章节之外,第7部分提供了每章开头的测试题的答案。

本书每个部分的主要内容如下。

本书每个章节的编排都尽力帮助大家更好地利用时间,具有如下特点。


本章主要讨论以下主题:

本章讨论的内容可能是唯一一个对CCIE路由和交换笔试与实验室考试都非常重要的主题——BGP-4(Border Gateway Protocol version 4,边界网关协议版本4)。本章主要讨论BGP实现其基本任务的操作方式:

1.构建邻居关系;

2.从其他路由信息源将路由注入BGP;

3.与其他路由器交换路由;

4.将路由安装到IP路由表中。

虽然这些BGP主题都与IGP很相似(两者关系密切),但在具体细节上还有许多差异。

本章将重点讨论BGP完成路由协议这一核心职责的操作方式。

表1-1列出了本章的基本主题以及与之相应的测试题。

表1-1 “我已经知道了吗?”基本主题与测试题对照表

基本主题

测试题

构建BGP邻居关系

1~3

构建BGP表

4~8

构建IP路由表

9~12

得分

为了提高测试评价效果,请务必严格评分。参考答案请参见附录A。

1.在发送BGP更新消息之前,邻居必须稳定地处于下面哪种邻居状态?

  a.激活(Active)

  b.空闲(Idle)

  c.连接(Connected)

  d.建立(Established)

2.BGP邻居在完成邻居关系建立进程之前必须检查一些参数,下面哪一项不在检查之列?

  a.邻居的路由器ID与其他路由器不重复

  b.其中一台路由器的neighbor命令与另一台路由器更新消息的源IP地址相匹配

  c.如果是eBGP,那么neighbor命令指向直连网络中的IP地址

  d.其中一台路由器的neighbor remote-as命令与另一台路由器的router bgp命令引用的是同一个ASN(Autonomous System Number,自治系统号)(假设未使用联邦特性)

3.假设某组BGP路由器(某些拥有iBGP连接,某些拥有eBGP连接)都在各自的neighbor命令中使用环回接口的IP地址来引用对方,那么下面有关这些对等体配置的描述,错误的有哪些?

  a.为了建立对等体,iBGP对等体需要应用neighbor ip-address ibgp-multihop命令

  b.为了建立对等体,eBGP对等体需要应用neighbor ip-address ebgp-multihop命令

  c.不能将eBGP和iBGP对等体放在同一个对等体组中

  d.对于eBGP对等体来说,路由器的BGP路由器ID必须等于eBGP邻居的neighbor命令中列出的IP地址

4.假设某路由器的IP路由表中有20.0.0.0/8、20.1.0.0/16和20.1.2.0/24的路由,且该路由器的BGP配置了no auto-summary命令,那么在使用BGP network命令将这些路由注入到BGP中时,下面哪一项描述是正确的?

  a.network 20.0.0.0命令可以将这3条路由均添加到BGP表中

  b.network 20.0.0.0 mask 255.0.0.0命令可以将这3条路由均添加到BGP表中

  c.network 20.0.0.0 mask 255.0.0.0命令可以将20.1.0.0/16和20.1.2.0/24添加到BGP表中

  d.network 20.0.0.0命令可以将20.0.0.0/8添加到BGP表中

5.假设某路由器利用redistribute eigrp 1 route-map fred命令将EIGRP路由重分发到BGP中,且该路由器的BGP配置中包含了no auto-summary命令,那么下面哪一项描述是正确的?

  a.route-map fred可以重分发IP路由表中学自EIGRP的路由

  b.虽然route-map fred可以重分发IP路由表中的直连路由,但是要求这些接口必须与EIGRP 1的network命令相匹配

  c.route-map fred可以重分发EIGRP拓扑结构表中的后继路由,但这些路由不在IP路由表中,这是因为IP路由表中存在学自其他路由协议的AD(Administrative Distance,管理距离)值较小的路由

  d.虽然route-map fred可以重分发IP路由表中学自EIGRP的路由,但是要求这些路由必须至少有一个可行后继路由

6.假设R1通过BGP从R3学到了去往9.1.0.0/16的最佳路由,R1通过一条使用子网8.1.1.4/30的点对点串行链路与R2建立了邻居连接,并且R1配置了auto-summary命令,那么下面有关R1向R2宣告哪些路由的描述,哪一项是正确的?

  a.R1仅向R2宣告9.0.0.0/8,而不宣告9.1.0.0/16

  b.如果配置了BGP子命令aggregate-address 9.0.0.0 255.0.0.0,那么R1仅向R2宣告9.0.0.0/8,而不宣告9.1.0.0/16

  c.如果配置了BGP子命令network 9.0.0.0 mask 255.0.0.0,那么R1仅向R2宣告9.0.0.0/8,而不宣告9.1.0.0/16

  d.以上均不正确

7.下面有关BGP路由器能够向其邻居宣告哪些路由的描述,哪一项是错误的(假设不使用联盟或路由反射器)?

  a.如果要将某条路由宣告给eBGP对等体,那么就要求该路由不能是从iBGP对等体学到的路由

  b.如果要将某条路由宣告给iBGP对等体,那么就要求该路由不能是从eBGP对等体学到的路由

  c.NEXT_HOP IP地址必须响应ping命令

  d.如果邻居路由器的AS位于AS_PATH中,那么就不向该邻居宣告路由

  e.被宣告路由必须在show ip bgp命令的输出结果中显示为valid

8.假设在R1上通过不同方法将不同的路由注入到BGP中,然后再通过iBGP将这些路由宣告给R2。R2利用aggregate-address summary-only命令汇总这些路由后,再通过eBGP将汇总路由宣告给R3。那么下面有关这些路由的ORIGIN路径属性的描述,哪一项是正确的?

  a.在R1上利用network命令注入的路由的ORIGIN值为IGP

  b.在R1上利用redistribute ospf命令注入的路由的ORIGIN值为IGP

  c.在R1上利用redistribute命令注入的路由的ORIGIN值为IGP

  d.在R1上利用redistribute static命令注入的路由的ORIGIN值为incomplete(不完全的)

  e.如果没有使用as-set选项,在R2上创建的汇总路由的ORIGIN值为IGP

9.下面有关BGP同步的描述,哪一项是正确的?

  a.启用了BGP同步之后,对于从iBGP学到的路由来说,仅当从eBGP也学到了该相同前缀,路由器才能将该路由添加到IP路由表中

  b.启用了BGP同步之后,路由器不能将从iBGP学到的路由认为是去往该前缀的“最佳”路由,除非其NEXT_HOP IP地址与IP路由表中的某条IGP路由相匹配

  c.如果位于单个AS中的路由器创建了全网状的BGP对等连接或者与通过eBGP学习前缀的路由器之间创建了星型对等连接,那么就可以安全地禁用BGP同步机制

  d.以上均不正确

10.下面有关BGP联盟的描述哪一项是正确的?

  a.对于neighbor ebgp-multihop命令来说,如果是非邻接的邻居IP地址,那么联盟eBGP连接的操作行为与普通(非联盟)eBGP连接相似

  b.通过iBGP学到的路由将通过联盟eBGP连接进行宣告

  c.位于联盟子AS内的iBGP对等体之间不需要全网状连接

  d.以上均不正确

11.R1与ASN 1中的R2、R3、R4及R5建立了BGP对等连接,并且在该AS内没有其他对等连接。R1是路由反射器,仅为R2和R3提供服务。每台路由器都有自己的eBGP连接,并通过eBGP连接学到了以下路由:R1学到了1.0.0.0/8,R2学到了2.0.0.0/8,R3学到了3.0.0.0/8,R4学到了4.0.0.0/8,R5学到了5.0.0.0/8。那么下面有关这些路由传播方式的描述,哪一项是正确的?

  a.R1将NLRI 1.0.0.0/8转发给其他所有路由器

  b.R2将NLRI 2.0.0.0/8发送给R1,R1仅转发给R3

  c.R3将NLRI 3.0.0.0/8发送给R1,R1转发给R2、R 4和R5

  d.R4将NLRI 4.0.0.0/8发送给R1,但R1不将该路由信息转发给R2或R3

  e.R5将NLRI 5.0.0.0/8发送给R1,R1将该路由反射给R2和R3,但是不反射给R4

12.R1位于联盟ASN 65001中,R2和R3位于联盟ASN 65023中,R1与R2对等,R2与R3对等,并且eBGP对等体知道这3台路由器均位于AS 1中。那么下面有关这些路由器的配置描述,哪一项是正确的?

  a.这3台路由器均配置了router bgp 1命令

  b.R2和R3都需要配置BGP子命令bgp confederation peers 65001

  c.R1需要配置BGP子命令bgp confederation identifier 1

  d.R2和R3都需要配置BGP子命令bgp confederation identifier 65023

与IGP(Interior Gateway Protocols,内部网关协议)相似,BGP也要为路由器交换拓扑结构信息,从而最终学到一组IP前缀的最佳路由。但是与IGP不同的是,BGP并不使用度量在一组去往相同目的地的可选路由中选择最佳路由,而是使用多种BGP PA(Path Attribute,路径属性)以及一套复杂的路径决策进程,在去往相同子网的多条可能路由中选择最佳路由。

如果没有特意设置和配置其他PA,那么BGP将使用BGP AS_PATH(Autonomous System Path,自治系统路径)PA作为其默认度量机制。BGP通常使用PA来描述路由的特征,因而本章将详细介绍各种BGP PA。AS_PATH属性列出的是由一系列ASN(Autonomous System Number,自治系统号)定义的路径,数据包必须穿越这些路径才能到达指定前缀(如图1-1所示)。

图1-1 BGP AS_PATH与路径矢量逻辑

图1-1是一个非常典型的示例,显示了BGP利用路径矢量逻辑来选择路由的方式。图中的R1学到了两条去往9.0.0.0/8的AS_PATH:一条通过ASN 2-3;另一条通过ASN 5-4-3。如果所有路由器都没有使用任何路由策略来影响其他PA,进而影响BGP的最佳路由选择,那么R1将会选择最短的AS_PATH,对于本例来说就是AS_PATH 2-3。事实上,此时BGP将AS_PATH作为矢量,矢量的长度(即路由中ASN的数量)决定了最佳路由选择。对于BGP来说,虽然术语路由指的仍然是传统意义上的逐跳IP路由,但术语路径指的却是去往指定目的地的一系列自治系统。

本章的组织方式与常见的IGP章节相似,首先讨论邻居关系,然后解释BGP与其邻居交换路由信息的方式,最后讨论BGP根据BGP拓扑结构表将IP路由安装到路由器的IP路由表中的方式。

BGP邻居之间需要构建TCP连接,并通过TCP连接发送BGP消息,特别是通过TCP连接发送包含路由信息的BGP更新(Update)消息。每台路由器都要显式配置邻居的IP地址,目的是通过这些定义来告诉邻居路由器将与哪个IP地址建立TCP连接。如果路由器收到了从非BGP邻居的源IP地址发送的TCP连接请求(BGP端口179),那么就会拒绝该请求。

建立了TCP连接之后,BGP就开始发送BGP打开(Open)消息。交换了一对BGP 打开消息之后,邻居就可以进入建立(established)状态,该状态是两个活跃BGP对等体所处的一种稳定状态,此时就可以交换BGP更新消息了。

本节将详细介绍BGP邻居建立过程中涉及的协议及配置信息,如果大家已经熟悉了这部分内容,那么就可以直接查看表1-2列出的一些关键知识点。

表1-2 BGP邻居汇总表

BGP特性 特性描述及取值
TCP端口 179
设置保持激活(Keepalive)间隔和保持时间(使用路由器子命令bgp timers keepalive holdtime,或者为每个邻居逐一配置neighbor timers命令) 默认值分别为60秒和180秒,定义的时间值可以介于保持激活与处于静默状态(意味着邻居已经失效)的时间值之间
什么情况下邻居会成为iBGP(internal BGP,内部BGP)对等体 邻居处于相同AS内
什么情况下邻居会成为eBGP(external BGP,外部BGP)对等体 邻居处于不同AS内
如何确定BGP的RID(Router ID,路由器ID) 按照如下顺序:
bgp router-id 命令;
BGP进程启动时处于up/up状态的环回接口的最大IP地址
BGP进程启动时处于up/up状态的其他接口的最大IP地址
如何确定到达邻居的源IP地址 利用neighbor update-source命令进行定义,或者默认为到达邻居的路由使用出接口的IP地址
如何确定到达邻居的目的IP地址 利用neighbor命令显式定义
自动汇总* 默认关闭,可以通过路由器子命令auto-summary启用该特性
邻居认证 仅支持MD5,使用neighbor password命令

*从Cisco IOS Software Release 12.3开始,Cisco将IOS默认的BGP自动汇总特性更改为禁用状态

BGP路由器将每个邻居均视为iBGP对等体或eBGP对等体,由于每台BGP路由器都位于单个AS中,因而相应的邻居关系要么是与相同AS中的路由器建立的(iBGP邻居),要么是与其他AS中的路由器建立的(eBGP邻居)。这两种邻居关系的建立方式并无多大区别,但不同类型的邻居(iBGP或eBGP)在BGP更新进程以及向路由表添加路由的方式上存在较大差别。

iBGP对等体通常使用环回接口IP地址来建立BGP对等关系,从而获得更高的可用性。对于单个AS来说,其物理拓扑结构通常在每对路由器之间最少包含两条路由。如果BGP对等体使用接口IP地址来建立TCP连接,那么在该接口出现故障后,虽然两台路由器之间可能还有一条路由,但是低层的BGP TCP连接已经中断。只要两个BGP对等体之间拥有一条以上的路由,且通过这些路由均能到达对端路由器,那么使用环回接口IP地址建立对等关系将是最佳选择。

下面将通过一些案例来解释BGP邻居的配置方式以及相应的协议信息。首先来看例1-1,该例显示了一些基本的BGP配置信息,AS 123中的R1、R2及R3是iBGP对等体(如图1-2所示),本例配置了如下功能特性:

图1-2 BGP邻居配置示意图

例1-1 基本的iBGP邻居配置

! R1 Config—R1 correctly sets its update-source to 1.1.1.1 for both R2 and R3,
! in order to match the R2 and R3 neighbor commands. The first three highlighted
! commands below were not typed, but added automatically as defaults by IOS 12.3
! in fact, IOS 12.3 docs imply that the defaults of sync and auto-summary at
! IOS 12.2 has changed to no sync and no auto-summary as of IOS 12.3. Also, R1
! knows that neighbors 2.2.2.2 and 3.3.3.3 are iBGP because their remote-as values
! match R1’s router BGP command.
interface Loopback1
 ip address 1.1.1.1 255.255.255.255
!
router bgp 123
 no synchronization
 bgp router-id 111.111.111.111
 bgp log-neighbor-changes
 neighbor 2.2.2.2 remote-as 123
 neighbor 2.2.2.2 update-source Loopback1
 neighbor 3.3.3.3 remote-as 123
 neighbor 3.3.3.3 password secret-pw
 neighbor 3.3.3.3 update-source Loopback1
 no auto-summary
! R3 Config—R3 uses a peer group called "my-as" for combining commands related
! to R1 and R2. Note that not all parameters must be in the peer group: R3-R2 does
! not use authentication, but R3-R1 does, so the neighbor password command was
! not placed inside the peer group, but instead on a neighbor 1.1.1.1 command.
interface Loopback1
 ip address 3.3.3.3 255.255.255.255
!
router bgp 123
 no synchronization
 bgp log-neighbor-changes
 neighbor my-as peer-group
 neighbor my-as remote-as 123
 neighbor my-as update-source Loopback1
 neighbor 1.1.1.1 peer-group my-as
 neighbor 1.1.1.1 password secret-pw
 neighbor 2.2.2.2 peer-group my-as
 no auto-summary
! Next, R1 has two established peers, but the fact that the status is "established"
! is implied by not having the state listed on the right side of the output, under
! the heading State/PfxRcd. Once established, that column lists the number of
! prefixes learned via BGP Updates received from each peer. Note also R1’s
! configured RID, and the fact that it is not used as the update source.
R1# show ip bgp summary
BGP router identifier 111.111.111.111 , local AS number 123
BGP table version is 1, main routing table version 1
Neighbor  V   AS   MsgRcvd    MsgSent  TblVer   InQ   OutQ  Up/Down     State/PfxRcd
2.2.2.2   4  123        59        59        0    0       0  00:56:52          0
3.3.3.3   4  123        64        64        0    0       0  00:11:14          0

例1-1给出了一些非常重要的功能特性。首先,该配置并没有显式地将对等体定义为iBGP对等体或eBGP对等体,而是由每台路由器检查自己的ASN(定义在router bgp命令中),并与neighbor remote-as命令中列出的邻居ASN进行比较,如果匹配,那么就是iBGP对等体,否则就是eBGP对等体。

例1-1中的R3显示了利用peer-group命令建立对等体组以减少配置命令的配置方式。请注意,不能在BGP对等体组中设置任何新的BGP配置,只能简单地将这些BGP邻居配置组合为一个组,然后利用neighbor peer-group命令将该组设置应用到邻居上。此外,BGP会为对等体组构建一套更新消息,并将路由策略应用到整个对等体组上(而不是每次仅用于一台路由器),因而能够大大减轻BGP的处理压力及内存开销。

eBGP对等体之间的物理拓扑结构通常都是单链路,主要原因在于该连接是不同自治系统中的不同企业之间的连接,因而eBGP对等关系可以简单地使用接口IP地址来实现冗余性,这是因为链路失效后,TCP连接也将中断(因为此时的对等体之间已经没有IP路由了)。例如,图1-2中的R1-R6 eBGP对等关系使用的就是neighbor命令中定义的接口IP地址。

如果两个eBGP对等体之间拥有冗余连接,那么eBGP neighbor命令就应该使用环回IP地址以充分利用冗余连接。例如,R3和R4之间拥有两条并行链路,如果在neighbor命令中使用环回地址,那么即使这两条链路中有一条出现了故障,TCP连接仍然能够保持正常运行。例1-2给出了图1-2所示网络的额外配置信息,即在R3与R4之间使用环回接口地址,而在R1与R6之间使用接口地址。

例1-2 基本的eBGP邻居配置

! R1 Config -This example shows only commands added since Example 1-1 .
router bgp 123
 neighbor 172.16.16.6 remote-as 678
! R1 does not have a neighbor 172.16.16.6 update-source command configured. R1
! uses its s0/0/0.6 IP address, 172.16.16.1, because R1’s route to 172.16.16.6
! uses s0/0/0.6 as the outgoing interface, as seen below.
R1# show ip route 172.16.16.6
Routing entry for 172.16.16.0/24
  Known via "connected", distance 0, metric 0 (connected, via interface)
  Routing Descriptor Blocks:
  * directly connected, via Serial0/0/0.6
     Route metric is 0, traffic share count is 1
R1# show ip int brief | include 0/0/0.6
Serial0/0/0.6               172.16.16.1                    YES manual up           up
! R3 Config—Because R3 refers to R4’s loopback (4.4.4.4), and R4 is an eBGP
! peer, R3 and R4 have added the neighbor ebgp-multihop command to set TTL to 2.
! R3’s update source must be identified as its loopback in order to match
! R4’s neighbor 3.3.3.3 commands.
router bgp 123
 neighbor 4.4.4.4 remote-as 45
 neighbor 4.4.4.4 update-source loopback1
 neighbor 4.4.4.4 ebgp-multihop 2
! R3 now has three working neighbors. Also note the three TCP connections, one for
! each BGP peer. Note that because R3 is listed using a dynamic port number, and
! R4 as using port 179, R3 actually initiated the TCP connection to R4.
R3# show ip bgp summary
BGP router identifier 3.3.3.3, local AS number 123
BGP table version is 1, main routing table version 1
Neighbor  V   AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
1.1.1.1   4  123     247      247       0     0    0  03:14:49         0
2.2.2.2   4  123     263      263       0     0    0  03:15:07         0
4.4.4.4   4  45       17       17       0     0    0  00:00:11         0
R3# show tcp brief
TCB       Local Address      Foreign Address        (state)
649DD08C 3.3.3.3.179         2.2.2.2.43521          ESTAB
649DD550 3.3.3.3.179         1.1.1.1.27222          ESTAB
647D928C 3.3.3.3.21449       4.4.4.4.179            ESTAB

从例1-2可以看出,eBGP配置与iBGP配置之间存在一些细微差别。首先,与route bgp命令不同,neighbor remote-as命令引用的是不同的AS,因而意味着对等体是eBGP对等体。其次,R3必须配置neighbor 4.4.4.4 ebgp-multihop 2命令(R4的命令相似),否则将无法建立对等连接。对于eBGP连接来说,Cisco IOS默认将IP包的TTL字段设置为数值1,其依据是假定使用接口IP地址建立对等连接(如例1-2中的R1-R6所示)。对于本例来说,如果R3没有使用多跳特性,那么就会以TTL 1向R4发送数据包,R4收到数据包之后(此时TTL为1),会将数据包路由到自己的环回接口,该过程会将TTL递减至0,导致R4丢弃该数据包。因此,即使路由器仅在一跳之外,也要将环回接口视为位于路由器的另一端,需要额外的跳数。

与IGP相似,在其他路由器成为邻居(进入BGP建立状态)之前,BGP也要执行一些必要的检查操作,此时大多数设置都比较直观,唯一容易出错的地方就是IP地址问题。下面列出了BGP构建邻居关系时需要执行的一些检查操作。

1.路由器必须收到一条TCP连接请求,且路由器必须在BGP neighbor命令中能够发现该请求的源地址。

2.路由器的ASN(位于router bgp asn命令中)必须与邻居路由器在其neighbor remote-as asn命令中引用的ASN相匹配(联盟配置无此要求)。

3.两台路由器的BGP RID必须相同。

4.如果配置了认证机制,那么还必须通过MD5认证。

图1-3给出了上述检查操作中前3项的检查过程,R3向R1发起BGP TCP连接请求,带圆圈的数字1、2、3分别对应于上述检查操作中的前3项。请注意,R1在第2步检查操作中使用的neighbor命令是R1在第1步中确定的。

注:R3的环回IP地址是3.3.3.3
图1-3 检查BGP邻居参数

图1-3中的R3以其更新源IP地址(3.3.3.3)为数据包的源地址发起了一条TCP连接请求,第一项检查操作发生在R1收到第一个数据包的时候,需要查看数据包的源IP地址(3.3.3.3),发现该地址位于neighbor命令中。第二项检查是R1将R3宣称的ASN(位于R3的BGP打开消息中)与R1的neighbor命令(在第1步中确定的)进行对比。第三项检查的目的是确定BGP RID的唯一性,利用BGP打开消息来宣告发送端的BGP RID。

虽然第1步检查操作看起来很直观,但有趣的是,即使反向检查操作通不过,也能建立邻居关系。例如,即使R1没有配置neighbor 3.3.3.3 update-source 1.1.1.1命令,图1-3所示的进程也能正常运行。也就是说,只要两台路由器的更新源IP地址中有一个位于对端路由器的neighbor命令中,就能建立邻居关系。例1-1和例1-2显示了这两台路由器正确的更新源地址,这种情况当然没问题,只要其中一个正确就可以建立邻居关系。

BGP利用保持激活定时器来定义路由器发送保持激活消息的频率,利用保持定时器(Hold timer)来定义路由器在重置邻居连接之前等待接收保持激活消息的时间。打开消息包含了每台路由器宣称的保持激活定时器,如果不匹配,那么每台路由器都将为这两个定时器使用较小值。参数设置不匹配不会妨碍路由器成为邻居。

BGP邻居的期望状态是建立状态,此状态下的路由器已经建立了TCP连接,交换了打开消息,而且参数检查也全部通过,此时可以利用更新消息交换拓扑结构信息。表1-3列出了可能的BGP邻居状态及相应的状态特性。请注意,如果IP地址不匹配,那么邻居将进入Active(激活)状态。

表1-3 BGP邻居状态

状态

侦听TCP

发起TCP

TCP Up?

发送打开消息?

收到打开消息?

邻居Up?

空闲(Idle)

连接(Connect)

激活(Active)

打开发送(Opensent)

打开确认(Openconfirm)

建立(Established)

1.BGP消息类型

BGP使用4种基本消息,表1-4列出了这些消息类型并给出了相应的描述信息。

表1-4 BGP消息类型

消息

作用

打开(Open)

用于建立邻居关系并交换基本参数

保持激活(Keepalive)

用于维护邻居关系。如果在协商好的保持定时器间隔内未收到保持激活消息,那么BGP就会关闭邻居连接(可以利用子命令bgp timers keepalive holdtime或BGP子命令neighbor [ ip-addresspeer-groupname ] timers keepalive holdtime配置这些定时器)

更新(Update)

用于交换路由信息(详见下一节内容)

通告(Notification)

BGP出现差错时使用,发送该消息后将会重置邻居关系

2.主动重置BGP对等连接

例1-3显示了利用neighbor shutdown命令重置邻居连接的方式,同时给出了各种BGP邻居状态。本例中的路由器R1和R6来自图1-2,相应的配置信息见例1-2。

例1-3 邻居状态示例

! R1 shuts down R6’s peer connection. debug ip bgp shows moving to a down state,
! which shows as "Idle (Admin)" under show ip bgp summary .
R1# debug ip bgp
BGP debugging is on for address family: BGP IPv4
R1# conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)# router bgp 123
R1(config-router)# neigh 172.16.16.6 shutdown
R1#
*Mar 4 21:01:45.946: BGP: 172.16.16.6 went from Established to Idle
*Mar 4 21:01:45.946: %BGP-5-ADJCHANGE: neighbor 172.16.16.6 Down Admin. shutdown
*Mar 4 21:01:45.946: BGP: 172.16.16.6 closing
R1# show ip bgp summary | include 172.16.16.6
172.16.16.6    4     678     353     353     0  0  0  00:00:06 Idle (Admin)
! Next, the no neighbor shutdown command reverses the admin state. The various
! debug messages (with some omitted) list the various states. Also note that the
! final message is the one log message in this example that occurs due to the
! default configuration of bgp log-neighbor-changes . The rest are the result of
! a debug ip bgp command.
R1# conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)# router bgp 123
R1(config-router)# no neigh 172.16.16.6 shutdown
*Mar 4 21:02:16.958: BGP: 172.16.16.6 went from Idle to Active
*Mar 4 21:02:16.958: BGP: 172.16.16.6 open active , delay 15571ms
*Mar 4 21:02:29.378: BGP: 172.16.16.6 went from Idle to Connect
*Mar 4 21:02:29.382: BGP: 172.16.16.6 rcv message type 1, length (excl. header) 26
*Mar 4 21:02:29.382: BGP: 172.16.16.6 rcv OPEN , version 4, holdtime 180 seconds
*Mar 4 21:02:29.382: BGP: 172.16.16.6 went from Connect to OpenSent
*Mar 4 21:02:29.382: BGP: 172.16.16.6 sending OPEN , version 4, my as: 123 ,
  holdtime 180 seconds
*Mar 4 21:02:29.382: BGP: 172.16.16.6 rcv OPEN w/ OPTION parameter len: 16
BGP: 172.16.16.6 rcvd OPEN w/ remote AS 678
*Mar 4 21:02:29.382: BGP: 172.16.16.6 went from OpenSent to OpenConfirm
*Mar 4 21:02:29.382: BGP: 172.16.16.6 send message type 1, length (incl. header)
  45
*Mar 4 21:02:29.394: BGP: 172.16.16.6 went from OpenConfirm to Established
*Mar 4 21:02:29.398: %BGP-5-ADJCHANGE: neighbor 10.16.16.6 Up

neighbor shutdown命令相似,EXEC命令clear ip bgp *也能重置所有BGP邻居,该命令可以重置邻居连接、关闭与该邻居之间的TCP连接并删除BGP表中学自该邻居的所有表项。本章还会在后面显示clear命令的其他使用方式,包括同时清除多个邻居的方式。

注:


利用软重配(soft reconfiguration)特性,clear命令可以在不完全重置邻居的情况下实现路由策略的变更操作。有关软重配特性的详细信息,请参见第2章的“软重配”一节。

1.3 构建BGP表

BGP拓扑结构表(topology table)也称为BGP RIB(Routing Information Base,路由信息库),负责维护BGP学到的NLRI(Network Layer Reachability Information,网络层可达性信息)以及相关联的PA信息。其中,NLRI就是普通的IP前缀与前缀长度。本节主要讨论BGP将NLRI注入到路由器BGP表中的处理过程,以及路由器将相关联的PA及NLRI宣告给邻居的方式。

注:


从技术上来说,BGP并不宣告路由,而是宣告PA以及一组共享相同PA值的NLRI。但大多数人都简单地将NLRI称为BGP前缀或BGP路由,本书将同时使用这三种术语。不过,由于BGP表中的BGP路由与IP路由表中的IP路由存在一定的区别,因而为了区分这两种表,本书将严格使用BGP表或IP路由表。

1.3.1 将路由/前缀注入BGP表

毫无疑问,BGP路由器也使用与IGP相同的方法将表项添加到本地BGP表中:利用network命令,通过邻居发送来的更新消息学习拓扑结构信息,或者从其他路由协议进行重分发。接下来将详细解释本地BGP路由器通过各种方法(除了从BGP邻居学习路由之外)向其BGP表添加路由的操作方式。

1.BGP network命令

本节以及下一节假设已经配置了BGP no auto-summary命令,请注意,对于Cisco IOS Software Release 12.3 Mainline来说,no auto-summary命令是默认配置,而早期版本则默认使用auto-summary命令。本章后面的“auto-summary对于redistribute以及network命令的影响”一节将详细讨论auto-summary命令对network命令及redistribute命令的影响。

BGP network路由器子命令与IGP使用的network命令完全不同,BGP network命令的作用是指示路由器的BGP进程完成以下操作:

在路由器的当前IP路由表中查找与network命令中的参数完全匹配的路由,如果存在这样的IP路由,那么就将等价的NLRI注入到本地BGP表中。

按照这种逻辑,可以将IP路由表取出的直连路由、静态路由或IGP路由放到BGP表中,并在今后进行宣告。如果路由器从IP路由表中删除了特定路由,那么BGP也要从BGP表中删除相应的NLRI,并向邻居通告该路由已经被撤销。

请注意,如果配置或默认使用了no auto-summary命令,那么IP路由必须完全匹配。

表1-5列出了BGP network命令的一些关键特性,该命令的语法形式如下:

network { network-number [ mask network-mask ]} [ route-map map-tag ]

表1-5 BGP network命令的关键特性

特性

含义

不配置掩码

假定使用默认的有类掩码

配置no auto-summary命令后的匹配逻辑

IP路由必须同时匹配前缀和前缀长度(掩码)

配置auto-summary命令后的匹配逻辑

如果network命令列出的是有类网络,那么只要存在有类子网就匹配

将BGP路由的NEXT_HOP添加到BGP表中*

使用IP路由的下一跳

通过network命令注入BGP进程的最大数量

受限于NVRAM和RAM

network 命令中的route-map选项的作用

过滤路由并控制PA(包括NEXT_HOP*)

*NEXT_HOP是一种BGP PA,表示下一跳IP地址,应该使用该下一跳IP地址到达NLRI

例1-4给出了图1-4中R5的network命令示例(由于R5的BGP邻居已经关闭,因而BGP表仅显示了由network命令在R5上创建的BGP表项),可以看出R5利用两条network命令将21.0.0.0/8和22.1.1.0/24添加到了BGP表中。

例1-4 通过network命令将路由安装到BGP表中

! On R5, the network commands specifically match prefixes 21.0.0.0/8 and
! 22.1.1.0/24. The omission of the mask on the first command implies the associated
! classful mask of 255.0.0.0, as the IP address listed (21.0.0.0) is a class A
! address.
router bgp 45
 no synchronization
 bgp log-neighbor-changes
network 21.0.0.0
network 22.1.1.0 mask 255.255.255.0
! The neighbor commands are not shown, as they are not pertinent to the topics
! covered in this example.
! Next, the two routes matched by the network commands are indeed in the IP
! routing table. Note that the route to 21.0.0.0/8 is a connected route, and the
! route to 22.1.1.0/24 is a static route.
R5# show ip route | incl 21 | 22
C   21.0.0.0/8 is directly connected, Loopback20
    22.0.0.0 /24 is subnetted, 1 subnets
S       22.1.1.0 [1/0] via 10.1.5.9
! Below, the prefixes have been added to the BGP table. Note that the NEXT_HOP
! PA has been set to 0.0.0.0 for the route (21.0.0.0/8) that was taken from a
! connected route, with the NEXT_HOP for 22.1.1.0/24 matching the IP route.
R5# show ip bgp
BGP table version is 38, local router ID is 5.5.5.5
Status codes: s suppressed, d damped, h history, * valid, > best , i - internal,
               r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? – incomplete

   Network         Next Hop        Metric LocPrf Weight Path
*> 21.0.0.0        0.0.0.0               0          32768 i
*> 22.1.1.0/24    10.1.5.9               0          32768  i

图1-4 BGP网络示意图(带IP地址)

2.从IGP、静态路由或直连路由重分发路由

BGP子命令redistribute可以重分发静态路由、直连路由以及IGP学到的路由,本节将讨论这些BGP重分发操作的一些细微差别。

由于BGP不使用度量计算的概念,不为去往特定前缀的每条可选路由计算度量,而是使用逐步递进的路径决策进程,通过检查各种PA来确定最佳路由,因而将路由重分发到BGP中时不需要考虑度量的设置问题。不过,路由器可能需要为重分发功能应用路由映射以控制PA,从而影响BGP的路径决策进程。如果为注入BGP的路由分配了度量,那么BGP会将该度量值分配给BGP MED(Multi-Exit Discriminator,多出口鉴别符)PA(通常也将该PA称为度量)。

注:


虽然这并不是BGP的独有特性,但需要记住的是,从IGP重分发路由会从路由表中提取两类路由:通过路由协议学到的路由以及该路由协议与network命令相匹配的直连路由。

例1-5中的R6(如图1-4所示)通过路由重分发操作从EIGRP进程6(由例1-5中的router eigrp 6命令进行配置)安装其BGP表,并且重分发了一条静态路由,R6上的EIGRP仅为网络30~39学习路由。本例的主要目标如下:

例1-5给出了意外重分发额外路由(由EIGRP network命令所匹配的网络10.0.0.0的直连子网)的错误情况。为了解决这个问题,本例在后面增加了一个路由映射。

例1-5 通过重分发操作安装BGP表

! R6 redistributes EIGRP 6 routes and static routes below, setting the metric on
! redistributed static routes to 9. Note that EIGRP 6 matches subnets 10.1.68.0/24
! and 10.1.69.0/24 with its network command.
router bgp 678
redistribute static metric 9
redistribute eigrp 6
!
router eigrp 6
 network 10.0.0.0
!
ip route 34.0.0.0 255.255.255.0 null0
! Commands unrelated to populating the local BGP table are omitted.
! R6 has met the goal of injecting 31 and 32 from EIGRP, and 34 from static.
! It also accidentally picked up two subnets of 10.0.0.0/8 because EIGRP’s network
! 10.0.0.0 command matched these connected subnets.
R6# show ip bgp
BGP table version is 1, local router ID is 6.6.6.6
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
   Network            Next Hop              Metric LocPrf Weight Path
*> 10.1.68.0/24       0.0.0.0                     0            32768 ?
*> 10.1.69.0/24       0.0.0.0                     0            32768 ?
*> 31.0.0.0           10.1.69.9              156160            32768 ?
*> 32.1.1.0/24        10.1.69.9              156160            32768 ?
*> 34.0.0.0/24        0.0.0.0                     9            32768 ?
! Below, note the metrics for the two EIGRP routes. The show ip bgp command output
! above shows how BGP assigned the MED (metric) that same value.
R6# show ip route eigrp
    32.0.0.0/24 is subnetted, 1 subnets
D       32.1.1.0 [90/ 156160 ] via 10.1.69.9, 00:12:17, FastEthernet0/0
D   31.0.0.0/8 [90/156160] via 10.1.69.9, 00:12:17, FastEthernet0/0
! Below, the redistribute eigrp command has been changed to the following, using
! a route map to only allow routes in networks in the 30s.
redist eigrp 6 route-map just-30-something
! The route map and ACLs used for the filtering are shown next. As a result, the
! two subnets of 10.0.0.0/8 will not be redistributed into the BGP table.
R6# show route-map
route-map just-30-something , permit, sequence 10
  Match clauses:
   ip address (access-lists): permit-30-39
  Set clauses:
Policy routing matches: 0 packets, 0 bytes
R6# show access-list
Standard IP access list permit-30-39
    10 permit 32.0.0.0, wildcard bits 7.255.255.255 (1538 matches)
    20 permit 30.0.0.0, wildcard bits 1.255.255.255 (1130 matches)

此外请注意,每条路由的NEXT_HOP PA要么与重分发路由的下一跳相匹配,要么就是0.0.0.0(对于直连路由以及指向Null0的路由来说)。

3.auto-summary对于redistribute以及network命令的影响

与IGP相同,BGP auto-summary命令也会创建一条有类汇总路由(只要该汇总路由的任意子网存在)。但是与IGP不同的是,BGP auto-summary路由器子命令仅汇总该路由器通过重分发操作注入的路由,BGP auto-summary命令并不查询拓扑结构中的有类网络边界,也不查询BGP表中的已有路由,而仅在路由器上查询通过redistribute命令和network命令注入的路由。

对于通过redistribute命令或network命令注入的路由来说,两者的处理方式有所不同,这两条命令的处理方式如下。

虽然上述定义很清晰,但是仍然有必要强调以下几点:首先,对于重分发来说,auto-summary命令会导致重分发进程仅将有类网络注入本地BGP表中,而不会注入子网;但是对于network命令来说,即使配置了auto-summary命令,根据本章前面所说的处理方式,仍然会注入子网。除此以外,如果network命令与有类网络号相匹配,那么只要IP路由表中存在该有类网络的至少一个子网,BGP就会注入该有类网络。

例1-6给出了auto-summary命令的影响情况(本例以图1-2中的R5为例),步骤如下。

第1步:通过redistribute命令将10.15.0.0/16注入到BGP中。

第2步:配置自动汇总,清除BGP,此时BGP表中仅剩下10.0.0.0/8。

第3步:禁用自动汇总和重分发。

第4步:配置network 10.0.0.0network 10.12.0.0 mask 255.254.0.0以及network 10.14.0.0 mask 255.255.0.0命令。由于这3条命令中只有最后一条命令与当前路由精确匹配,因而仅将该路由注入到BGP中。

第5步:启用自动汇总,从而注入10.0.0.0/8以及最初的10.14.0.0/16。

例1-6 自动汇总对路由表的影响

! R5 has shut down all neighbor connections, so the output of show ip bgp only
! shows routes injected on R5.
! Step 1 is below. Only 10.15.0.0/16 is injected by the current configuration. Note
! that the unrelated lines of output have been removed, and route-map only15 only
! matches 10.15.0.0/16.
R5# show run | be router bgp
router bgp 5
 no synchronization
redistribute connected route-map only15
no auto-summary
! Below, note the absence of 10.0.0.0/8 as a route, and the presence of
! 10.15.0.0/16,
! as well as the rest of the routes used in the upcoming steps.
R5# show ip route 10.0.0.0
Routing entry for 10.0.0.0/8, 4 known subnets
  Attached (4 connections)
  Redistributing via eigrp 99, bgp 5
  Advertised by bgp 5 route-map only15
C        10.14.0.0/16 is directly connected, Loopback10
C        10.15.0.0/16 is directly connected, Loopback10
C        10.12.0.0/16 is directly connected, Loopback10
C        10.13.0.0/16 is directly connected, Loopback10
! Only 10.15.0.0/16 is injected into BGP.
R5# show ip bgp
BGP table version is 2, local router ID is 5.5.5.5
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

    Network        Next Hop      Metric LocPrf Weight Path
*> 10.15.0.0/16  0.0.0.0             0           32768 ?
! Next, step 2, where auto-summary is enabled. Now, 10.15.0.0/16 is no longer
! injected into BGP, but classful 10.0.0.0/8 is.
R5# conf t
Enter configuration commands, one per line. End with CNTL/Z.
R5(config)# router bgp 5
R5(config-router)# auto-summary
R5(config-router)# ^Z
R5# clear ip bgp *
R5# show ip bgp
BGP table version is 2, local router ID is 5.5.5.5
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? – incomplete

  Network           Next Hop         Metric LocPrf   Weight Path
*> 10.0.0.0         0.0.0.0                0            32768 ?
! Now, at step 3, no auto-summary disables automatic summarization, redistribution is
! disabled, and at step 4, the network commands are added. Note that 10.12.0.0/15 is
! not injected, as there is no exact match, nor is 10.0.0.0/8, as there is no exact
! match. However, 10.14.0.0/16 is injected due to the exact match of the prefix and
! prefix length.
R5# conf t
Enter configuration commands, one per line. End with CNTL/Z.
R5(config)# router bgp 5
R5(config-router)# no auto-summary
R5(config-router)# no redist conn route-map only15
R5(config-router)# no redist connected
R5(config-router)# network 10.0.0.0
R5(config-router)# network 10.12.0.0 mask 255.254.0.0
R5(config-router)# network 10.14.0.0 mask 255.255.0.0
R5(config-router)# ^Z
R5# clear ip bgp *
R5# sh ip bgp | begin network
  Network           Next Hop          Metric LocPrf Weight Path
*> 10.14.0.0/16     0.0.0.0                  0            32768 i
! Finally, auto-summary is re-enabled (not shown in the example).
! 10.14.0.0/16 is still an exact match, so it is
! still injected. 10.0.0.0/8 is also injected because of the network 10.0.0.0
! command.
R5# sh ip bgp | begin network
  Network             Next Hop            Metric LocPrf Weight Path
* 10.0.0.0            0.0.0.0                    0           32768 i
* 10.14.0.0/16        0.0.0.0                    0           32768 i

4.手动汇总与AS_PATH路径属性

如前所述,路由器可以通过network命令和路由重分发操作向BGP表添加表项。此外,BGP还支持通过手动路由汇总机制将汇总路由宣告给邻居路由器,使得邻居路由器能够学到其他BGP路由。使用aggregate-address命令的BGP手动汇总与auto-summary完全不同,它可以基于BGP表中的任意路由进行汇总,并创建任意前缀长度的汇总路由,而且并不始终抑制成员子网的宣告(虽然可以这么配置)。

聚合路由必须包含AS_PATH PA(与BGP表中NLRI的要求相似),为了更好地理解该命令的使用方式,需要进一步弄清楚AS_PATH PA。

AS_PATH PA最多包含以下4个组件(称为字段[segment]):

最常用的字段就是AS_SEQ。AS_SEQ的概念与图1-1中的AS_PATH相似,表示路由在宣告过程中经历的所有有序ASN列表。

不过,aggregate-address命令可以创建AS_SEQ必须为空的汇总路由。如果汇总路由的成员子网拥有不同的AS_SEQ值,那么路由器就无法简单地创建AS_SEQ的精确表示,因而使用空AS_SEQ。但这样做可能会引入路由环路,因为路由器收到更新消息后,会使用AS_PATH(特别是AS_SEQ)的内容,这样就可以忽略包含自身ASN的前缀。

如果汇总路由包含空AS_SEQ,那么可以利用AS_PATH的AS_SET字段来解决上述问题。字段AS_SET保存了所有成员子网的AS_SEQ字段中全部ASN的无序列表。

例1-7首先给出了路由器使用空AS_SEQ的汇总路由的示例,然后给出了利用as-set选项创建AS_SET字段的相同汇总路由。

例1-7 路由聚合和as-set选项

! Note that R3’s routes to network 23 all have the same AS_PATH except one new
! prefix, which has an AS_PATH that includes ASN 678. As a result, R3 will
! create a null AS_SEQ for the summary route.
R3# show ip bgp | include 23
*> 23.3.0.0/20     4.4.4.4        0 45 i
*> 23.3.16.0/20    4.4.4.4        0 45 i
*> 23.3.32.0/19    4.4.4.4        0 45 i
*> 23.3.64.0/18    4.4.4.4        0 45 i
*> 23.3.128.0/17   4.4.4.4        0 45 i
*> 23.4.0.0/16     4.4.4.4        0 45 678 i
! The following command is now added to R3’s BGP configuration:
aggregate-address 23.0.0.0 255.0.0.0 summary-only
! Note: R3 will not have a BGP table entry for 23.0.0.0/8; however, R3 will
! advertise this summary to its peers, because at least one component subnet
! exists.
! R1 has learned the prefix, NEXT_HOP 3.3.3.3 (R3’s update source IP address for
! R1), but the AS_PATH is now null because R1 is in the same AS as R3.
! (Had R3-R1 been an eBGP peering, R3 would have prepended its own ASN.)
! Note that the next command is on R1.

R1# sh ip bgp | begin Network
Network           Next Hop         Metric LocPrf Weight Path
*>i21.0.0.0      3.3.3.3                0     100       0  45 i
*> i23.0.0.0     3.3.3.3                0     100       0  i
! Next, R1 displays the AGGREGATOR PA, which identifies R3 (3.3.3.3) and its AS
! (123) as the aggregation point at which information is lost. Also, the phrase
! "atomic-aggregate" refers to the fact that the ATOMIC_AGGREGATE PA has also
! been set; this PA simply states that this NLRI is a summary.
R1# show ip bgp 23.0.0.0
BGP routing table entry for 23.0.0.0/8, version 45
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Flag: 0x800
Advertised to update-groups:
  2
Local, ( aggregated by 123 3.3.3.3 ), (received & used)
  3.3.3.3 (metric 2302976) from 3.3.3.3 (3.3.3.3)
    Origin IGP, metric 0, localpref 100, valid, internal, atomic-aggregate, best
! R6, in AS 678, receives the summary route from R1, but the lack of information
! in the current AS_PATH allows R6 to learn of the route, possibly causing
! a routing loop. (Remember, one of the component subnets, 23.4.0.0/16, came from
! ASN 678.)

R6# sh ip bgp nei 172.16.16.1 received-routes | begin Network
   Network               Next Hop       Metric LocPrf Weight Path
*> 21.0.0.0          172.16.16.1                          0 123 45 i
*> 23.0.0.0          172.16.16.1                          0 123 i
! The R3 configuration is changed as shown next to use the as-set option.

R3# aggregate-address 23.0.0.0 255.0.0.0 summary-only as-set
! R1 now has the AS_SET component of the AS_PATH PA, which includes an unordered
! list of all autonmous systems from all the component subnets’ AS_PATHs on R3.

R1# sh ip bgp | begin Network
   Network         Next Hop     Metric LocPrf Weight Path
*>i21.0.0.0       3.3.3.3      0        100          0 45 i
*> i23.0.0.0      3.3.3.3      0        100          0 { 45,678} i
! R6 does receive the 23.0.0.0 prefix from R1, then checks the AS_SET PA, notices
! its own ASN (678), and ignores the prefix to avoid a loop.

R6# sh ip bgp nei 172.16.16.1 received-routes | begin Network
   Network        Next Hop             Metric LocPrf Weight Path
*> 21.0.0.0      172.16.16.1                       0 123 45 i

注:


AS_PATH还包含AS_CONFED_SEQ和AS_CONFED_SET字段,相关内容请参见后面的“联盟”一节。

aggregate-address命令在创建汇总路由时采取的操作如下。

如例1-7所示,图1-4中的R3汇总了路由23.0.0.0/8,然后R3以AS 123作为AS_SEQ中的唯一AS宣告该汇总路由。由于有些成员子网的AS_PATH为45,而有些成员子网的AS_PATH为678 45,因而R3为聚合路由使用的是空AS_SEQ。该例的后面还显示了as-set选项的作用。

注:


还可以通过其他方法添加汇总路由。首先路由器需要创建一条静态路由(通常以接口null0为目的接口),然后通过network命令匹配相应的前缀/长度以注入汇总路由。请注意,该方法不过滤任何成员子网。

表1-6列出了与aggregate-addressauto-summary以及network命令相关的路由汇总特性。

表1-6 汇总:将汇总路由注入到BGP中

命令

删除成员子网

可以汇总的路由

auto-summary (配合重分发)

全部

仅汇总通过redistribute命令注入该路由器BGP的路由

aggregate-address

全部、一个也不或者单个子网

BGP表中已有的任何前缀

auto-summary (配合network命令)

一个也不

仅汇总通过network命令注入该路由器BGP的路由

5.向BGP添加默认路由

本章讨论的最后一种向BGP表添加路由的方法就是将默认路由注入到BGP中。可以采取以下3种方式将默认路由添加到BGP中:

使用network命令将默认路由注入BGP时,本地路由表中必须存在路由0.0.0.0/0,并且需要配置network 0.0.0.0命令。虽然可以通过各种途径学到默认IP路由,但是如果IP路由表删除了默认路由,那么BGP也要从BGP表删除默认路由。

通过重分发方式注入默认路由需要额外配置一条命令:default-information originate。首先,路由表中必须存在默认路由,例如,创建一条指向null0的默认路由。然后,利用redistribute static命令重分发该静态默认路由。需要注意的是,对于默认路由这种特殊情况来说,Cisco IOS要求配置BGP子命令default-information originate

利用BGP子命令neighbor neighbor-id default-originate[ route-map route-map-name ]将默认路由注入BGP时,不会向本地BGP表添加默认路由,而是向指定邻居宣告默认路由。事实上,该方法默认根本就不检查IP路由表中是否存在默认路由(但是可以检查)。利用route-map选项,被引用的路由映射将检查IP路由表(而不是BGP表)中的表项,如果与路由映射的permit语句相匹配,那么就将该默认路由宣告给邻居。例1-8给出了R1的相关示例,在R1向R3宣告默认路由之前,需要通过route-map check-default来检查默认路由的存在性。

例1-8 利用neighbor default-originate命令向邻居宣告默认路由

! The pertinent parts of the R1 configuration are listed next, with the route map
! matching an IP route to 0.0.0.0/0 with a permit action, enabling the
! advertisement of a default route to neighbor 3.3.3.3 (R3).
router bgp 123
neighbor 3.3.3.3 remote-as 123
neighbor 3.3.3.3 update-source Loopback1
neighbor 3.3.3.3 default-originate route-map check-default
!
ip route 0.0.0.0 0.0.0.0 Null0
!
ip prefix-list def-route seq 5 permit 0.0.0.0/0
!
route-map check-default permit 10
match ip address prefix-list def-route
! R1 indeed has a default route, as seen below.
R1# show ip route | include 0.0.0.0/0
S* 0.0.0.0/0 is directly connected, Null0
! R3 now learns a default route from R1, as seen below.

R3# show ip bgp | begin Network
   Network           Next Hop        Metric LocPrf Weight Path
*> i0.0.0.0          1.1.1.1                   100      0 i

6.ORIGIN路径属性

利用不同的方法将路由注入本地BGP表中时,BGP会分配3种BGP ORIGIN PA代码:IGP、EGP或Incomplete(不完全的)。ORIGIN PA提供了一种一般性的描述信息,说明特定NLRI第一次注入路由器BGP表的方式。show ip bgp命令输出结果的顶部列出了这3种可能取值的说明,而且在每个输出行的最后列出了每条BGP路由的实际ORIGIN代码。表1-7列出了这3种ORIGIN代码的名称、Cisco IOS使用的单字母缩写形式以及为路由分配特定代码的原因。

ORIGIN代码及其含义隐藏了一些与许多人直觉相反的概念。首先,对于从IGP重分发到BGP的路由来说,实际分配的ORIGIN代码是Incomplete。其次,不要将EGP与eBGP相混淆,ORIGIN代码EGP表示外部网关协议,指的是一种非常古老的已被废弃的BGP前身,事实上,如今根本就不应该看到ORIGIN代码EGP。

表1-7 BGP ORIGIN代码

ORIGIN代码

Cisco IOS表示符号

用于通过以下命令注入的路由

IGP

i

networkaggregate-address(在某些场合)以及neighbor default-originate命令

EGP

e

EGP(Exterior Gateway Protocol,外部网关协议),不针对特殊命令

Incomplete

?

redistributeaggregate-address(在某些场合)以及default-information originate命令

对于由aggregate-address命令创建的汇总路由来说,其ORIGIN代码也比较复杂,其规则如下:

注:


BGP ORIGIN PA为BGP表项的来源提供了相应的描述信息,该信息将用于BGP决策进程。

7.向邻居宣告BGP路由

前面主要讨论了BGP将路由注入本地路由器BGP表中的相关工具。BGP路由器可以从本地BGP表中取出路由并将这些路由的子网宣告给BGP邻居。本节将继续分析BGP表,因为BGP路由宣告进程是从BGP表中提取路由并宣告给邻居路由器的(这些路由会被添加到邻居的BGP表中)。此后将在本章最重要的一节“构建IP路由表”中详细讨论BGP将路由安装到IP路由表中的处理规则。

8.BGP更新消息

BGP表拥有了路由、路径及前缀等信息之后,路由器就要将这些信息宣告给邻居路由器,为此路由器需要向邻居发送BGP更新消息。图1-5给出了BGP更新消息的通用格式。

图1-5 BGP更新消息格式

每条更新消息都包含以下3个主要部分。

更新消息的中间部分是一组PA集,更新消息的末尾是共享相同PA集以及PA值的所有前缀(NLRI)。如果路由器需要宣告一组NLRI,而且每个NLRI都至少有一个不同的PA设置,那么就需要为每个NLRI都发送一条独立的更新消息。如果多条路由都共享相同的PA(如特定ISP拥有的前缀),那么就可以在单条更新消息中包含多个NLRI,这样就能大大降低路由器的CPU负荷并减少链路带宽的占用。

9.确定更新消息的内容

路由器根据BGP表的内容构造更新消息的内容,但路由器必须选择将哪些BGP表项的子网宣告给每个邻居,而且每个邻居可能都不一样。表1-8总结了BGP不会将哪些路由包含在发送给每个邻居的路由更新中的相关规则,并在表1-8的后面给出了更为详细的描述信息。

表1-8 BGP不会将哪些路由包含在路由更新中的规则

iBGP和/或eBGP

不从BGP表中提取的路由

两者

非“最佳”路由

两者

与出站BGP过滤器中的deny语句相匹配的路由

iBGP

从iBGP学到的路由*

*如果使用路由反射器或联盟,那么该规则将会有所放松或改变

BGP仅宣告被认为是最佳路由的路由以到达指定子网(NLRI)。如果BGP路由器仅学到一条到达特定前缀的路由,那么路由决策进程将非常简单,但是如果要在去往同一前缀的多条路径中选择最佳路由时,那么BGP将按照冗长的BGP决策进程来确定最佳路由(有关BGP决策进程的详细信息,请参见第2章的“BGP决策进程”一节)。假设所有路由器都没有配置任何影响决策进程的路由策略,那么就可以将BGP决策进程归结为以下4步对比过程。

第1步:选择AS_PATH最短的路由。

第2步:如果AS_PATH长度相同,那么学自eBGP的单条路由将优于一条或多条iBGP路由。

第3步:如果此时仍未选出最佳路由,那么就选择去往NEXT_HOP的IGP度量最小的路由。

第4步:如果IGP度量相同,那么就选择宣告路由器的BGP RID最小的学自iBGP的路由。

除此以外,BGP还会根据NEXT_HOP PA值,将某些路由排除在最佳路由之外。对于最佳路由的候选路由来说,其NEXT_HOP必须以下两者之一:

由于NEXT_HOP PA对于BGP选择到达每个NLRI的最佳路径来说非常重要,因而本节将解释相应的处理规则并给出一些案例。根据将路由宣告给iBGP对等体或eBGP对等体的不同场景,可以将处理规则分为以下两种情况。在默认情况下,如果发送给eBGP对等体,那么就会为每个邻居将NEXT_HOP更改为宣告路由器上的某个IP地址,具体而言,就是更改为与该路由器用作BGP更新消息的源IP地址相同的IP地址。如果发送给iBGP对等体,那么默认操作就是保持NEXT_HOP PA不变。利用表1-9中的命令可以更改这两种默认操作行为。

表1-9 更改NEXT_HOP PA的条件

邻居类型

被宣告路由的默认操作

更改默认操作的命令

iBGP

不改变NEXT_HOP

neighbor...next-hop-self

eBGP

将NEXT_HOP更改为更新消息的源IP地址

neighbor...next-hop - unchanged

请注意,无法通过路由映射来设置NEXT_HOP PA,更改NEXT_HOP PA的唯一方式就是使用表1-9列出的方法。

10.案例:决策进程以及NEXT_HOP对BGP更新消息的影响

本节将通过几个案例说明利用BGP在图1-4所示网络中传播网络31.0.0.0/8的一系列操作过程。R6通过重分发学自R9的EIGRP路由在网络30~39中发起相应的路由(如例1-4所示)。本节将通过这些案例解释不同条件下BGP如何选择更新消息中包含的路由。

第一个案例(如例1-9所示)主要讨论检查R6发送给R1哪些路由、R1收到哪些路由以及R1 BGP表的最终表项的相关命令。第二个案例(如例1-10所示)检查上述相同路由从R1传播给R3的处理情况,包括与R1不更改这些路由的NEXT_HOP PA的默认行为相关的问题。最后一个案例(如例1-11所示)给出了R1使用neighbor3.3.3.3 next-hop-self命令的解决方案,以及对AS 123中的BGP更新消息内容的影响情况。

例1-9 R6利用BGP将网络30-39发送给R1

! R6 has injected the three routes listed below; they were not learned from
! another BGP neighbor. Note all three show up as >, meaning they are the best
! (and only in this case) routes to the destination NLRIs.
R6# show ip bgp
BGP table version is 5, local router ID is 6.6.6.6
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

    Network          Next Hop     Metric LocPrf Weight Path
*> 31.0.0.0         10.1.69.9     156160          32768 ?
*> 32.0.0.0         0.0.0.0                       32768 i
*> 32.1.1.0/24      10.1.69.9     156160          32768 ?
! R6 now lists the routes it advertises to R1—sort of. This command lists R6’s
! BGP table entries that are intended to be sent, but R6 can (and will in this
! case) change the information before advertising to R1. Pay particular attention
! to the Next Hop column, versus upcoming commands on R1. In effect, this command
! shows R6’s current BGP table entries that will be sent to R1, but it shows them
! before R6 makes any changes, including NEXT_HOP.
R6# show ip bgp neighbor 172.16.16.1 advertised-routes
BGP table version is 5, local router ID is 6.6.6.6
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

Network           Next Hop        Metric LocPrf  Weight Path
*> 31.0.0.0      10.1.69.9       156160          32768 ?
*> 32.0.0.0      0.0.0.0                         32768 i
*> 32.1.1.0/24   10.1.69.9       156160          32768 ?
Total number of prefixes 3
! The next command (R1) lists the info in the received BGP update from R6. Note
! that the NEXT_HOP is different; R6 changed the NEXT_HOP before sending the
! update, because it has an eBGP peer connection to R1, and eBGP defaults to set
! NEXT_HOP to itself. As R6 was using 172.16.16.6 as the IP address from which to
! send BGP messages to R1, R6 set NEXT_HOP to that number. Also note that R1 lists
! the neighboring AS (678) in the Path column at the end, signifying the AS_PATH
! for the route.

R1# show ip bgp neighbor 172.16.16.6 received-routes
BGP table version is 7, local router ID is 111.111.111.111
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

Network            Next Hop         Metric LocPrf    Weight Path
*> 31.0.0.0      172.16.16.6         156160              0  678 ?
*> 32.0.0.0      172.16.16.6              0              0 678 i
*> 32.1.1.0/24   172.16.16.6         156160              0 678 ?
Total number of prefixes 3
! The show ip bgp summary command lists the state of the neighbor until the
! neighbor becomes established; at that point, the State/PfxRcd column lists the
! number of NLRIs (prefixes) received (and still valid) from that neighbor.
R1# show ip bgp summary | begin Neighbor
Neighbor      V  AS  MsgRcvd MsgSent   TblVer   InQ OutQ Up/Down State/PfxRcd
2.2.2.2       4  123    55    57      7     0   0 00:52:30     0
3.3.3.3       4  123    57    57      7     0   0 00:52:28     3
172.16.16.6   4  678    53    51      7     0   0 00:48:50     3
! R1 has also learned of these prefixes from R3, as seen below. The routes through
! R6 have one AS in the AS_PATH, and the routes through R3 have two autonmous
! systems, so the routes through R6 are best. Also, the iBGP routes have an "i" for
! "internal" just before the prefix.
R1# show ip bgp
BGP table version is 7, local router ID is 111.111.111.111
Status codes: s suppressed, d damped, h history, * valid, > best , i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop       Metric   LocPrf     Weight  Path
* i31.0.0.0         3.3.3.3            0       100        0 45 678 ?
*>                  172.16.16.6   156160                  0 678 ?
* i 32.0.0.0        3.3.3.3            0       100        0 45 678 i
*>                  172.16.16.6        0                  0 678 i
* i 32.1.1.0/24     3.3.3.3            0       100        0 45 678 ?
*>                  172.16.16.6   156160                  0 678 ?

例1-9解释了查看发送给邻居的更新消息内容的方式(使用show ip bgp neighbor advertised-routes命令),以及查看从邻居接收到的更新消息内容的方式(使用show ip bgp neighbor received-routes命令)。RFC 1771建议将BGP RIB划分为从每个邻居接收到的更新消息以及发送给每个邻居的更新消息。大多数实现情况(包括Cisco IOS)都采用单个RIB,并通过标记来识别发送给每个邻居的表项以及从每个邻居接收到的表项。

注:


为了保证received-routes选项的正常工作,必须在使用该命令的路由器上为对端邻居配置BGP子命令neighbor neighbor-id soft-reconfiguration inbound

虽然携带advertised-routes选项的show ip bgp neighbor命令可以列出将要宣告给指定邻居的BGP表项,但是该命令的输出结果无法显示每条BGP表项的PA变化情况。例如,R6的showip bgp neighbor 172.16.16.1 advertised-routes命令列出的网络31/8的NEXT_HOP为10.1.69.9,后来R6在发送实际的更新消息之前更改了该NEXT_HOP PA,此时的NEXT_HOP为172.16.16.6。

从例1-9的最后可以看出,对于网络30-39中的3个前缀来说,虽然R1知道每个前缀的两条路径(AS_PATH 678和45-678),但每种情况下都只选择AS_PATH最短(经R6)的路径作为最佳路径。请注意,show ip bgp命令输出结果中的“>”表示该路由是R1的最佳路由。接下来的例1-10显示了R3的最佳路由选择结果,这些结果可能会让人大感意外。

例1-10 检查R3的BGP表

! R1 now updates R3 with R1’s "best" routes
R1# show ip bgp neighbor 3.3.3.3 advertised-routes| begin Network
   Network        Next Hop          Metric LocPrf   Weight Path
*> 31.0.0.0   172.16.16.6          156160               0 678 ?
*> 32.0.0.0   172.16.16.6               0               0 678 i
*> 32.1.1.0/24  172.16.16.6        156160               0 678 ?
Total number of prefixes 3
! R3 received the routes, but R3’s best routes to each prefix point back to
! R4 in AS 45, with AS_PATH 45-678, which is a longer path. The route through R1
! cannot be "best" because the NEXT_HOP was sent unchanged by iBGP neighbor R1.

R3# show ip bgp
BGP table version is 7, local router ID is 3.3.3.3
Status codes: s suppressed, d damped, h history, * valid, > best , i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? – incomplete

     Network         Next Hop            Metric LocPrf   Weight Path
*> 31.0.0.0         4.4.4.4                                  0 45 678 ?
* i                 172.16.16.6          156160   100        0 678 ?
*> 32.0.0.0         4.4.4.4                                  0 45 678 i
* i                 172.16.16.6               0   100        0 678 i
*> 32.1.1.0/24      4.4.4.4                                  0 45 678 ?
* i                 172.16.16.6          156160   100        0 678 ?
! Proof that R3 cannot reach the next-hop IP address is shown next.
R3# ping 172.16.16.6

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

例1-10不但列出了show ip bgp命令输出结果中一些不好理解的术语,而且还显示了BGP的重要设计选项。首先,虽然show ip bgp命令输出结果中显示的“*”表示“有效”,但实际上仅表示该路由是候选可用路由,在该路由确实可用并被添加到IP路由表中之前,其NEXT_HOP必须可达。在某些情况下,show ip bgp命令认为“有效”的路由可能并不是可用路由,例1-10给出的就是这样的例子。

为了保证路由确实有效,每条BGP路由的NEXT_HOP都必须可达。在全部采用默认设置的情况下,从iBGP学到的路由的NEXT_HOP IP地址就是最后宣告该路由的eBGP路由器的IP地址。例如,R3经R1去往31.0.0.0/8的路由的NEXT_HOP字段列出的就是R6的IP地址(172.16.16.6)。但不幸的是,R3并没有去往172.16.16.6的路由,因而BGP不会将该路由视为“最佳路由”。

此时可以采取以下两种简单方法来解决上述问题:

第一种解决方案通常很容易实现,这是因为很多eBGP邻居都在它们的neighbor命令中使用接口IP地址,因而NEXT_HOP地址都位于与该AS直连的子网中。例如,R1直连172.16.16.0/24,因而R1可以很简单地将该直连子网宣告到该AS内的IGP中。

请注意,如果为BGP邻居使用环回接口地址,那么该解决方案就可能会出现问题。例如,如果R1被配置为引用R6的环回接口IP地址6.6.6.6,并且该环回接口处于工作状态,那么R1就必须拥有去往6.6.6.6的路由,但R1很可能没有被宣告去往ASN 123中的6.6.6.6的路由。

第二种解决方案是让路由器将NEXT_HOP PA更改为自身的某个IP地址,该地址极有可能已经存在于邻居的IP路由表中,该解决方案对于为eBGP对等体使用环回接口地址来说也同样适用。例1-11给出了本解决方案的配置示例,例中的R1通过neighbor next-hop-self命令将自身(1.1.1.1)宣告为NEXT_HOP。由于R3拥有到达1.1.1.1的路由,克服了“NEXT_HOP不可达问题”,因而R3更改了自己的最佳路由选择。

虽然例1-11主要说明的是iBGP对等体将NEXT_HOP设置为自身的配置方式,但该例也很好地解释了BGP确定何时将路由宣告给iBGP对等体的决策方式。例1-11的处理次序如下(通过相应的命令输出结果可以看出这些事件)。

第1步:本例是例1-10的延续,R1将R6作为下一跳来宣告路由,并且R3无法将这些路由用作最佳路由。

第2步:由于R3的最佳路由是eBGP路由(经R4),因而允许R3将这些路由宣告给R2。

第3步:然后R1更改其配置,使用next-hop-self选项。

第4步:此时R3能够将学自R1的路由用作R3的最佳路由。

第5步:由于此时R3的新最佳路由是iBGP路由,因而R3无法将最佳路由宣告给这些网络。

例1-11 R3将网络30-39宣告给R2,然后R3撤销这些路由

! (Step 1): At this point, R3 still believes its best route to all three prefixes
! in the 30s is through R4; as those are eBGP routes, R3 advertises all three
! routes to iBGP peer R2, as seen next.
R3# show ip bgp neighbor 2.2.2.2 advertised-routes
BGP table version is 7, local router ID is 3.3.3.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

Network          Next Hop         Metric LocPrf Weight Path
*> 31.0.0.0      4.4.4.4                            0 45 678 ?
*> 32.0.0.0      4.4.4.4                            0 45 678 i
*> 32.1.1.0/24   4.4.4.4                            0 45 678 ?
Total number of prefixes 3
! (Step 2) R2 lists the number of prefixes learned from R3 next (3).

R2# show ip bgp summary | begin Neighbor
Neighbor    V   AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
1.1.1.1     4  123    212       210        7   0     0 03:27:59        3
3.3.3.3     4  123    213       211        7   0     0 03:28:00        3
! (Step 3) R1 now changes to use next-hop-self to peer R3.

R1# conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)# router bgp 123
R1(config-router)# neigh 3.3.3.3 next-hop-self
! (Step 4) R3 now lists the routes through R1 as best, because the new
! NEXT_HOP is R1’s update source IP address, 1.1.1.1, which is reachable by R3.

R3# show ip bgp
BGP table version is 10, local router ID is 3.3.3.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network      Next Hop          Metric LocPrf      Weight Path
*  31.0.0.0     4.4.4.4                                    0 45 678 ?
*>i             1.1.1.1            156160      100         0 678 ?
*  32.0.0.0     4.4.4.4                                    0 45 678 i
*>i             1.1.1.1                 0      100         0 678 i
*  32.1.1.0/24  4.4.4.4                                    0 45 678 ?
*>i             1.1.1.1            156160      100         0 678 ?
! (Step 5) First, note above that all three "best" routes are iBGP routes, as noted
! by the "i" immediately before the prefix. R3 only advertises "best" routes, with
! the added requirement that it must not advertise iBGP routes to other iBGP peers.
! As a result, R3 has withdrawn the routes that had formerly been sent to R2.
R3# show ip bgp neighbor 2.2.2.2 advertised-routes

Total number of prefixes 0
! The next command confirms on R2 that it no longer has any prefixes learned from
! R3.
R2# show ip bgp summary | begin Neighbor
Neighbor  V  AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
1.1.1.1   4  123     213   211    7   0   0  03:28:44     3
3.3.3.3   4  123     214   211    7   0   0  03:28:46     0

11.在BGP更新消息中宣告路由的规则小结

BGP路由器在更新消息中发送路由时,需要遵循如下规则。

本节重点讨论的是前两条规则,后两条规则的相关内容不在本书写作范围之内。

1.4 构建IP路由表

到目前为止,本章已经解释了如何构建BGP邻居关系、如何将路由注入到BGP表中以及BGP路由器如何选择将哪些路由宣告给邻居路由器等内容。有些内容与BGP选择去往每个前缀的最佳路由的BGP决策进程有关,在特定路由成为最佳路由之前还必须满足一个附加约束条件,那就是NEXT_HOP必须可达。

本节将解释实现BGP终极目标(向IP路由表添加恰当的路由)的最后一步。虽然简单来说,就是BGP为每个前缀选择已识别的最佳BGP路由并将这些路由添加到IP路由表中,但是该过程需要满足一些约束条件,主要与AD(针对eBGP和iBGP路由)以及BGP同步(仅针对iBGP路由)有关。本节将详细讨论这些约束条件。

1.4.1 将eBGP路由添加到IP列表中

Cisco IOS软件在确定将哪些eBGP路由添加到IP路由表中时的规则很简单,只要满足以下两个条件即可:

在默认情况下,Cisco IOS认为eBGP路由的AD值为20,因而eBGP路由的AD优于(小于)其他动态路由协议的默认AD(EIGRP汇总路由除外,其AD 值为5)。之所以会有这样的默认值,是因为从BGP学到的路由不应该是来自AS内部的前缀。虽然在正常情况下很少将学自eBGP的前缀视为学自IGP的路由,但如果确实如此,那么将默认优选BGP路由。

BGP为eBGP路由、iBGP路由以及本地(本地注入的)路由设置不同的AD,这三类路由的默认AD值分别为20、200和200。利用以下两种方法可以更改默认AD(有关这两种方法的详细内容请参考第9章的AD部分):

对于BGP来说,IP地址及子网掩码指的是为指定邻居配置的neighbor命令中使用的IP地址,而不是该路由的BGP RID或NEXT_HOP。ACL负责检查从邻居接收到的BGP路由,并为所有与该ACL允许语句相匹配的路由分配指定的AD值。

最后,需要对添加到IP路由表中的实际IP路由做进一步解释。该路由包含的前缀、前缀列表以及下一跳IP地址与BGP表列出的完全相同(即使NEXT_HOP PA不是直连网络中的IP地址),因而IP转发进程可能需要执行递归查询。例1-12给出了相应的配置示例,例中的R3拥有三条BGP路由,每条BGP路由的下一跳地址均为1.1.1.1,该地址正是R1的环回接口地址。从图1-4可以看出,R3与R1之间没有公共接口,去往1.1.1.1的路由列出了实际的下一跳IP地址(数据包将被转发到该地址)。

例1-12 R3的下一跳为1.1.1.1的路由,需要递归路由查询

! Packets forwarded to 31.0.0.0/8 match the last route, with next-hop 1.1.1.1; R3
! then finds the route that matches destination 1.1.1.1 (the first route), finding
! the appropriate next-hop IP address and outgoing interface.
R3# show ip route | incl 1.1.1.1
D        1.1.1.1 [90/2809856] via 10.1.23.2 , 04:01:44, Serial0/0/1
B        32.1.1.0/24 [200/156160] via 1.1.1.1, 00:01:00
B        32.0.0.0/8 [200/0] via 1.1.1.1, 00:01:00
B      31.0.0.0/8 [200/156160] via 1.1.1.1 , 00:01:00

1.4.2 后门路由

eBGP路由默认AD值(20)较低对于某些拓扑结构来说可能会产生一定的问题(如图1-6所示),图中的企业1通过eBGP路由到达企业2的网络99.0.0.0,但这两个企业希望使用从OSPF学到的路由经企业间专线进行通信。

图1-6 BGP后门路由的必要性

由于eBGP路由的AD(20)小于OSPF路由的AD(110),因而R1使用其eBGP路由去往99.0.0.0。此时一种解决方式是配置distance命令以减小OSPF路由的AD值,但BGP为此类场景提供了更好的解决方案,即使用network backdoor命令。对于本例来说,如果R1配置了路由器BGP子命令network 99.0.0.0 backdoor,那么将会达到如下效果:

按照该解决方案,如果R1需要使用该私有链路去往企业2,那么就可以为每条前缀都配置network backdoor命令。如果去往每条前缀的OSPF路由都处于正常运行状态,那么R1将优选OSPF路由(AD为110),而不会选择从eBGP学到的经Internet的路由(AD为20)。如果OSPF路由丢失,那么这两个企业仍然能够通过Internet进行通信。

1.4.3 向IP路由表添加iBGP路由

对于Cisco IOS来说,将iBGP路由添加到IP路由表也要满足与eBGP路由相同的两个条件:

此外,对于从iBGP学到的路由来说,IOS还要考虑BGP同步问题。

如果使用no synchronization命令禁用了BGP同步机制,那么将iBGP路由添加到IP表中与将eBGP路由添加到IP列表中的处理方式完全相同。如果启用了BGP同步机制(配置了BGP子命令synchronization),那么就可以避免出现一些IP路由问题。从图1-7可以看出,ASN 678错误地禁用了BGP同步机制,从而产生了路由黑洞。

图1-7 问题:未使用BGP同步机制而产生的路由黑洞

下面列出了图1-7中的BGP处理过程。

第1步:R5通过两条network命令将两条前缀(21.0.0.0/8和22.2.2.0/24)添加到自己的BGP表中。

第2步:R5将这两条前缀宣告给R7,但R7并没有将这些前缀重分发到自己的IGP中。

第3步:R7将这两条前缀宣告给R6。

第4步:由于R6(禁用了BGP同步)认为这些路由是“最佳”路由,因而R6将这些路由添加到自己的IP路由表中。

第5步:R6将这两条前缀宣告给R1。

上述过程出现了两个路由问题(如图中标示的A、B)。首先是路由黑洞问题(标示为A),出现路由黑洞的原因是R8没有去往BGP宣告的这两条前缀的路由,R8没有运行BGP(对于不与eBGP对等体直连的路由器来说很常见),R7也没有将这两条前缀重分发到IGP中,因而R8无法为这些前缀路由数据包。因此,虽然R6(可能还包括AS 123中的路由器)试图通过AS 678来转发去往这两条前缀的数据包,但R8却丢弃了这些数据包(因为路由黑洞)。

第二个路由问题(标示为B)出现在第5步,由于R6向其他AS(AS 123)宣称其能够到达这些前缀,从而进一步加剧了路由黑洞问题。R6认为其BGP表中去往21.0.0.0/8和22.2.2.0/24的路由是最佳路由,因而R6将这些路由宣告给R1。根据拓扑结构以及PA设置情况,R1会将这些路由视为最佳路由,从而将去往这些前缀的数据包发送给AS 678。但是根据前面的示例配置,R1应该将经R3去往AS 45的AS_PATH视为最佳路径。

虽然可以采用多种方案解决上述路由问题,但所有解决方案归根结底都必须让内部路由器(如R8)学到去往这些前缀的路由,从而解决路由黑洞以及宣告这些路由所带来的负面影响。针对这类问题的最原始解决方案是使用BGP同步并将BGP路由重分发到IGP中,不过目前可以提供两种更好的解决方案。

有关这两种解决方案的详细信息将在后面的章节进行讨论。

1.使用BGP同步并重分发路由

理解BGP同步的最好方式是结合希望使用该机制的场景进行分析。顾名思义,BGP同步就是将BGP路由重分发到IGP中,目前的ISP很少使用该方法,主要原因是担心将大量BGP路由注入到IGP中。但是将BGP同步与重分发结合使用,就可以解决与上述路由黑洞相关的故障问题。

理解BGP同步的关键就是必须知道重分发解决的是路由黑洞问题,而BGP同步解决的是将黑洞路由宣告到其他AS中的问题。例如,为了解决上述路由黑洞问题,R7需要将这两条前缀重分发到RIP中(如图1-7所示),此时R8就拥有了去往这些前缀的路由,从而解决了路由黑洞问题。

R6的同步特性处理的是上述路由问题的第二个问题,要求R6在特定条件下才能将这些前缀宣告给其他eBGP对等体(如R1)。BGP同步通过控制BGP表项是否是“最佳”路由来完成其功能。需要记住的是,仅当BGP表中的路由是“最佳”路由时,才能将该路由宣告给BGP对等体。BGP同步机制通过如下方式来确定最佳路由问题:

不将BGP表中的iBGP路由视为“最佳”路由,除非通过IGP学到了完全相同的前缀,并且该前缀目前位于路由表中。

从本质上来说,BGP同步机制为路由器提供了一种了解AS内部非BGP路由器是否有能力将数据包路由到指定前缀的方法。需要注意的是,该路由必须是从IGP学到的路由,因为R6上的静态路由无法为其提供其他路由器(如R8)是否已经学到或未学到该路由的任何提示信息。再次以图1-7为例,R6通过RIP学到这些前缀之后,RIP会将这些路由安装到IP路由表中,此时R6的同步机制就可以将BGP表中从BGP学到的这些相同前缀视为最佳路由的候选路由,如果被选为最佳路由,那么R6就可以将这些BGP路由宣告给R1。

例1-13从R6的角度显示了路由黑洞问题。例中的R6利用BGP子命令no synchronization禁用了BGP同步机制。例1-13的后半部分则显示了R7将BGP路由重分发到IGP之后的R6操作情况(此时R6已经启用了BGP同步机制)。

例1-13 路由黑洞(禁用同步)与解决方案(启用同步)

! R6 has a "best" BGP route to 21.0.0.0/8 through R7 (7.7.7.7), but a trace
! command shows that the packets are discarded by R8 (10.1.68.8).
R6# show ip bgp | begin Network
  Network         Next Hop       Metric LocPrf         Weight Path
* 21.0.0.0       172.16.16.1                           0 123 45 i
*>i              7.7.7.7           0     100           0 45 i
* 22.2.2.0/24    172.16.16.1                           0 123 45 i
*>i              7.7.7.7           0     100           0 45 i
R6# trace 21.1.1.5
Type escape sequence to abort.
Tracing the route to 21.1.1.5

  1 10.1.68.8 20 msec 20 msec 20 msec
  2 10.1.68.8 !H * !H
! R7 is now configured to redistribute BGP into RIP.

R7# conf t
Enter configuration commands, one per line. End with CNTL/Z.
R7(config)# router rip
R7(config-router)# redist bgp 678 metric 3
! Next, R6 switches to use sync, and the BGP process is cleared.

R6# conf t
Enter configuration commands, one per line. End with CNTL/Z.
R6(config)# router bgp 678
R6(config-router)# synchronization
R6(config-router)# ^Z
R6# clear ip bgp *
! R6’s BGP table entries now show "RIB-failure," a status code that can mean
! (as of some 12.2T IOS releases) that the prefix is known via an IGP. 21.0.0.0/8
! is shown to be included as a RIP route in R6’s routing table. Note also that R6
! considers the BGP routes through R7 as the "best" routes; these are still
! advertised to R1.
R6# show ip bgp
BGP table version is 5, local router ID is 6.6.6.6
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

    Network       Next Hop   Metric LocPrf Weight Path
r 21.0.0.0       172.16.16.1               0 123 45 i
r>i              7.7.7.7         0  100    0 45 i
r 22.2.2.0/24    172.16.16.1               0 123 45 i
r>i              7.7.7.7         0  100    0 45 i
R6# show ip route | incl 21.0.0.0
R 21.0.0.0/8 [120/4] via 10.1.68.8, 00:00:15, Serial0/0.8
! R6 considers the routes through R7 as the "best" routes; these are still
! advertised to R1, even though they are in a "RIB-failure" state.
R6# show ip bgp neighbor 172.16.16.1 advertised-routes | begin Network
   Network      Next Hop   Metric LocPrf Weight Path
r>i21.0.0.0     7.7.7.7         0  100     0 45 i
r>i22.2.2.0/24  7.7.7.7         0  100     0 45 i

注:


如果IGP是OSPF,那么BGP同步机制还有一些古怪的要求:如果宣告前缀的路由器的OSPF RID与宣告相同前缀的BGP路由器的RID数值不同,那么同步机制不允许BGP将该路由器视为最佳路由。虽然OSPF与BGP使用相同的优先级及规则来选择自己的RID,但是使用了同步机制之后,对于将BGP重分发到OSPF的路由器来说,最好将其OSPF和BGP的RID显式配置为相同值。

2.禁用同步并在AS内的所有路由器上运行BGP

解决路由黑洞的第二种方法就是简单地利用BGP将所有从BGP学到的前缀都宣告给AS中的所有路由器。这样一来,所有的路由器都能知道这些前缀,从而可以安全地关闭同步机制。但是该解决方案的缺点是需要在所有路由器上都引入BGP,而且要求每对路由器之间都必须建立iBGP邻居连接(如果AS中有N台路由器,那么就需要建立N(N-1)/2条邻居连接)。对于大型自治系统来说,这样做会存在大量对等连接,从而严重影响BGP的性能及收敛时间。

由于BGP不会将iBGP路由(从iBGP对等体学到的路由)宣告给其他iBGP对等体,因而BGP要求在AS内部建立全网状的iBGP对等连接。虽然该要求能够避免路由环路,但是也带来了全网状iBGP对等连接问题(否则只有部分iBGP对等体能够学到所有前缀)。

BGP提供了两种有效工具(联盟和路由反射器)来减少AS内的对等连接数量,同时还能预防路由环路并允许所有路由器都学到所有前缀。下面将逐一介绍这两种工具。

3.联盟

根据RFC 5065的定义,可以将部署BGP联盟(confederation)机制的AS划分为多个联盟子自治系统,并将AS内的每台路由器都划分到其中的一个联盟子自治系统中。位于同一个Sub-AS(Sub-Autonomous System,子自治系统)中的对等体是联盟iBGP对等体(confederation iBGP peers),位于不同Sub-AS中的路由器是联盟eBGP对等体(confederation eBGP peer)。

联盟可以将路由传播给所有路由器,而不需要在整个AS内建立全网状的对等连接。为此,可以在一定程度上将联盟eBGP对等连接视为真正的eBGP对等体。在Sub-AS内部,联盟iBGP对等体之间必须建立全网状连接,因为它们与普通的iBGP对等体操作特性完全相同,即联盟iBGP对等体之间不会相互宣告iBGP路由。联盟eBGP对等体与eBGP对等体相似,因为联盟eBGP对等体可以将从联盟Sub-AS学到的iBGP路由宣告给其他联盟Sub-AS。

联盟利用AS_PATH PA来防止在联盟AS内部产生环路,联盟内的BGP路由器负责将Sub-AS添加到AS_PATH中并作为AS_PATH字段的一部分,称为AS_CONFED_SEQ(AS_PATH最多包含四个组件[称为字段]:AS_SEQ、AS_SET、AS_CONFED_SEQ以及AS_CONFED_SET。有关AS_SEQ和AS_SET的详细信息可参见前面的“手动汇总与AS_PATH路径属性”一节)。

注:


术语AS与Sub-AS指的是自治系统与子自治系统的概念,ASN与Sub-ASN指的则是实际使用的AS号。

与AS_SEQ和AS_SET能够避免自治系统间环路一样,AS_CONFED_SEQ和AS_CONFED_SET也能避免在联盟自治系统内部出现环路。联盟eBGP对等体在将iBGP路由宣告给其他Sub-AS之前,该路由器必须确保目的Sub-AS不在AS_PATH AS_CONFED_SEQ字段中。以图1-8为例,Sub-ASN 65001中的路由器学到一些路由之后将这些路由宣告给Sub-ASN 65002和65003,然后这两个Sub-ASN中的路由器又将这些路由宣告给对方,但是由于AS_CONFED_SEQ(标注在图中)的缘故,这两个Sub-ASN中的路由器始终不会将这些路由宣告给Sub-ASN 65001中的路由器。

图1-8 联盟中的AS_PATH变化情况

图1-8给出了一个非常详细的联盟AS_PATH案例,图中带圆圈的数字标识的步骤如下。

第1步:R45注入并通过eBGP将路由21.0.0.0/8宣告给AS 123,该路由的AS_PATH为45。

第2步:R3通过自己的两条iBGP连接宣告该前缀,但是根据Sub-AS内部的iBGP规则,R1与R2之间不会相互宣告该前缀。

第3步:Sub-AS 65001中的路由器按照eBGP规则将21.0.0.0/8宣告给它们的联盟eBGP对等体,但是首先要将自己的Sub-ASN添加到AS_PATH的AS_CONFED_SEQ字段中(这部分AS_PATH显示在show ip bgp命令输出结果中的括号内[如图1-8所示])。

第4步:其他两个子自治系统均重复第2步所描述的相同操作。

第5步:R6和R9将各自的ASN添加到AS_CONFED_SEQ中之后,会将该路由宣告给对方。

第6步:R9删除了AS_PATH中的Sub-AS信息之后,通过真正的eBGP连接宣告该前缀。

完成上述步骤之后,ASN 123中的所有路由器都将学到前缀21.0.0.0/8,而且ASN 678(对于本例来说就是R77)也将学到该相同前缀的路由,并且该路由工作正常,不存在路由黑洞问题。从ASN 678的角度来看,它看到的路由实际上就是经ASN 123和45的路由。需要注意的是,Sub-AS 65002和65003中的路由器不会将该前缀宣告回Sub-AS 65001,因为AS 65001已经位于联盟AS_PATH中了。

本例的Sub-AS 65001、65002、65003并不是随便选择的。ASN 64512~65535属于私有ASN,如果不需要将ASN宣告给Internet或其他自治系统,那么就可以使用这些私有ASN。联盟使用了私有ASN之后就可以避免如下问题:假如Sub-AS 65003使用的是ASN 45,由于AS_PATH环路校验会检查整个AS_PATH,因而根本就无法将图1-8中的前缀宣告给Sub-AS 45,也就无法宣告给ASN 678。使用私有ASN就可以避免出现该问题。

联盟的技术要点如下。

4.配置联盟

虽然只要在本章前面介绍过的命令之外增加少量命令即可完成联盟配置工作,但是将网络迁移到联盟机制却非常麻烦,这是因为此时不是在router bgp命令中配置真实的ASN,而是在BGP子命令bgp confederation identifier中配置真实的ASN,因而迁移过程会导致一条或多条路由不可用。表1-10列出了常见的联盟命令及其功能。

表1-10 配置联盟时使用的BGP子命令

功能

命令

定义路由器的Sub-AS

router bgp sub-as

定义真正的AS

bgp confederation identifier asn

将邻居AS标识为其他Sub-AS

bgp confederation peers sub-asn

例1-14给出了图1-9所示拓扑结构的简单配置示例。

图1-9 在ASN 123中利用联盟实现互连网络拓扑结构

在图1-9的互连网络拓扑结构中,R1位于Sub-AS 65001中,R2和R3位于Sub-AS 65023中,例中的R1和R3不是邻居。此时的前缀传播过程如下。

第1步:R3通过eBGP从AS 45(R4)学到前缀21.0.0.0/8。

第2步:R3通过iBGP将该前缀宣告给R2。

第3步:R2通过联盟eBGP将该前缀宣告给R1。

例1-14 AS 123内部的联盟

! R1 Configuration. Note the sub-AS in the router bgp command, and the true AS in
! the bgp confederation identifier command. Also note the neighbor ebgp-multihop
! command for confederation eBGP peer R2, as they are using loopbacks. Also, sync
! is not needed now that the confederation has been created.
router bgp 65001
 no synchronization
 bgp router-id 111.111.111.111
 bgp confederation identifier 123
 bgp confederation peers 65023
 neighbor 2.2.2.2 remote-as 65023
 neighbor 2.2.2.2 ebgp-multihop 2
 neighbor 2.2.2.2 update-source Loopback1
 neighbor 2.2.2.2 next-hop-self
 neighbor 172.16.16.6 remote-as 678

! R2 Configuration. Note the bgp confederation peers 65001 command. Without it,
! R2 would think that neighbor 1.1.1.1 was a true eBGP connection, and remove
! the confederation AS_PATH entries before advertising to R1.

router bgp 65023
 no synchronization
 bgp confederation identifier 123
 bgp confederation peers 65001
 neighbor 1.1.1.1 remote-as 65001
 neighbor 1.1.1.1 ebgp-multihop 2
 neighbor 1.1.1.1 update-source Loopback1
 neighbor 3.3.3.3 remote-as 65023
 neighbor 3.3.3.3 update-source Loopback1

! R3 Configuration. Note that R3 does not need a bgp confederation peers command,
! as it does not have any confederation eBGP peers.
Router bgp 65023
 no synchronization
 bgp log-neighbor-changes
 bgp confederation identifier 123
 neighbor 2.2.2.2 remote-as 65023
 neighbor 2.2.2.2 update-source Loopback1
 neighbor 2.2.2.2 next-hop-self
 neighbor 4.4.4.4 remote-as 45
 neighbor 4.4.4.4 ebgp-multihop 2
 neighbor 4.4.4.4 update-source Loopback1

! R1 has received the 21.0.0.0/8 prefix, with sub-AS 65023 shown in parentheses,
! and true AS 45 shown outside the parentheses. R1 has also learned the same
! prefix via AS 678 and R6. The route through the sub-AS is best because it is the
! shortest AS_PATH; the shortest AS_PATH logic ignores the confederation sub-
! autonomous systems.
R1# show ip bgp | begin Network
   Network          Next Hop       Metric LocPrf Weight Path
*> 21.0.0.0       3.3.3.3            0    100    0 (65023) 45 i
*                 172.16.16.6                    0 678 45 i
*> 22.2.2.0/24    3.3.3.3            0    100    0 (65023) 45 i
*                 172.16.16.6                    0 678 45 i
! R6 shows its received update from R1, showing the removed sub-AS, and the
! inclusion of the true AS, AS 123.

R6# show ip bgp neighbor 172.16.16.1 received-routes | begin Network
   Network          Next Hop                Metric LocPrf Weight Path
r 21.0.0.0        172.16.16.1                      0 123 45 i
r 22.2.2.0/24     172.16.16.1                       0 123 45 i

5.路由反射器

RR(Route Reflector,路由反射器)可以实现与联盟相同的效果:不需要在iBGP对等体之间建立全网状连接,允许AS内的所有iBGP路由器都学到全部iBGP路由,并且能够避免路由环路。利用RR设计iBGP对等连接时,只要在iBGP对等体之间建立部分网状连接,将某些路由器配置为RR服务器,允许这些服务器从它们的客户端学习iBGP路由并将这些路由宣告给其他iBGP对等体。例1-10给出了RR设计方案中的一些关键术语以及核心理念。此时只有RR服务器的操作规则比较特殊,客户端以及非客户端设备都遵循常规的iBGP对等体操作规则。

图1-10给出了前缀11.0.0.0/8在AS中的传播过程,步骤如下。

第1步:R11通过eBGP学到前缀11.0.0.0/8。

第2步:R11使用常规的iBGP规则,向R1发送更新消息。

第3步:R1通过向所有其他客户端发送更新消息来反射路由。

第4步:R1也向所有非客户端路由器反射路由。

第5步:非客户端路由器遵循非RR规则,通过eBGP向R77发送更新消息。

图1-10 使用单个RR以及四个客户端和两个非客户端的基本流程

只有充当RR的路由器才使用修改后的操作规则,其他路由器(包括客户端与非客户端)甚至都不知道RR的存在,而且也不改变操作规则。表1-11列出了RR的操作规则,其操作规则与RR从哪种类型的BGP对等体收到前缀有关。表中列出了可以学习前缀的源端以及RR将前缀信息反射给哪些类型的路由器。

表1-11 向不同类型的邻居反射前缀

学习前缀的位置

将路由宣告给客户端吗?

将路由宣告给非客户端吗?

客户端

非客户端

eBGP

有一种情况RR不会反射路由,即RR从非客户端路由器收到路由后,RR不会将该路由反射给其他非客户端。其原因在于RR与非客户端及eBGP邻居之间的操作规则完全遵从常规的iBGP对等体规则。也就是说,RR不会将学自iBGP的路由反射给其他非客户端iBGP对等体。RR操作规则差异与客户端何时向RR发送前缀或者RR何时决定将前缀反射给客户端有关。

一个(或多个)RR及其客户端可以组成一个RR簇(cluster),采用RR的BGP设计方案允许:

在多簇场景下,每个簇至少要有一个RR必须与其他簇中的至少一个RR建立对等连接。通常在所有的RR之间都应建立直接对等连接,从而在所有的RR之间建立全网状的RR iBGP对等连接。此外,如果有些路由器是非客户端路由器,那么也必须将这些路由器包含在RR的全网状连接中(如图1-11所示)。图中的每台RR不但与其他簇中的RR建立了全网状连接,而且也与非客户端路由器建立了全网状连接。

图1-11 多RR簇场景:RR以及非客户端之间建立全网状连接

对比表1-11和图1-11后可以看出,这种设计方案不但可能存在路由环路,而且可能性非常大。不过,RR可以通过以下工具来有效防止路由环路。

例1-15给出了一个使用RR的简单示例。该设计方案包括两个簇,有两个RR(R9和R2)和两个客户端(R1和R3)。此时的前缀传播过程如下(如图1-12所示)。

图1-12 RR部署方案使用的修改后的AS 123(用于例1-15)

第1步:R3通过eBGP从AS 45(R4)学到前缀21.0.0.0/8。

第2步:R3通过iBGP将该前缀宣告给R2(使用标准规则)。

第3步:R2(RR)从RR客户端收到前缀之后,通过iBGP将该路由反射给R9(对R2来说是非客户端)。

第4步:R9(RR)从非客户端收到iBGP路由之后,将该路由反射给R1(其RR客户端)。

例1-15 AS 123的RR配置:两个RR和两个客户端

! R3 Configuration. The RR client has no overt signs of being a client; the
! process is completely hidden from all routers except RRs. Also, do not forget
! that one of the main motivations for using RRs is to allow sync to be disabled.
router bgp 123
 no synchronization
 neighbor 2.2.2.2 remote-as 123
 neighbor 2.2.2.2 update-source Loopback1
 neighbor 2.2.2.2 next-hop-self
 neighbor 4.4.4.4 remote-as 45
 neighbor 4.4.4.4 ebgp-multihop 255
 neighbor 4.4.4.4 update-source Loopback1

! R2 Configuration. The cluster ID would default to R2’s BGP RID, but it has been
! manually set to "1," which will be listed as "0.0.0.1" in command output. R2
! designates 3.3.3.3 (R3) as a client.
router bgp 123
 no synchronization
 bgp cluster-id 1
 neighbor 3.3.3.3 remote-as 123
 neighbor 3.3.3.3 update-source Loopback1
 neighbor 3.3.3.3 route-reflector-client
 neighbor 9.9.9.9 remote-as 123
 neighbor 9.9.9.9 update-source Loopback1

! R9 Configuration. The configuration is similar to R2, but with a different
! cluster ID.
router bgp 123
 no synchronization
 bgp router-id 9.9.9.9
 bgp cluster-id 2
 neighbor 1.1.1.1 remote-as 123
 neighbor 1.1.1.1 update-source Loopback2
 neighbor 1.1.1.1 route-reflector-client
 neighbor 2.2.2.2 remote-as 123
 neighbor 2.2.2.2 update-source Loopback2
 no auto-summary
! The R1 configuration is omitted, as it contains no specific RR configuration,
! as is the case with all RR clients.
! The 21.0.0.0/8 prefix has been learned by R3, forwarded over iBGP as normal to
! R2. Then, R2 reflected the prefix to its only other peer, R9. The show ip bgp
! 21.0.0.0 command shows the current AS_PATH (45); the iBGP originator of the
! route (3.3.3.3), and the iBGP neighbor from which it was learned ("from
! 2.2.2.2"); and the cluster list, which currently has R2’s cluster (0.0.0.1).
! The next output is from R9.
R9# show ip bgp 21.0.0.0
BGP routing table entry for 21.0.0.0/8, version 3
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Flag: 0x820
  Advertised to update-groups:
     2
  45
   3.3.3.3 (metric 2300416) from 2.2.2.2 (2.2.2.2)
    Origin IGP, metric 0, localpref 100, valid, internal, best
    Originator: 3.3.3.3, Cluster list: 0.0.0.1
! RR R9 reflected the prefix to its client (R1), as seen next. Note the changes
! compared to R9’s output, with iBGP route being learned from R9 ("from 9.9.9.9"),
! and the cluster list now including cluster 0.0.0.2, as added by R9.

R1# sho ip bgp 21.0.0.0
BGP routing table entry for 21.0.0.0/8, version 20
Paths: (1 available, best #1, table Default-IP-Routing-Table)
  Not advertised to any peer
  45
   3.3.3.3 (metric 2302976) from 9.9.9.9 (9.9.9.9)
    Origin IGP, metric 0, localpref 100, valid, internal, best
    Originator: 3.3.3.3, Cluster list: 0.0.0.2, 0.0.0.1

1.5 多协议BGP

接下来需要讨论BGP-4协议的扩展协议。利用该扩展协议,可以在PE(Provider Edge,提供商边缘)设备之间宣告客户VPN(Virtual Private Network,虚拟专用网)路由。这些路由将被注入CE(Customer Edge,客户边缘)设备。可以通过标准的BGP-4、EIGRP、OSPF等多种动态路由协议或静态路由方式学习这些路由。

仅要求在提供商网络中运行MP-BGP(Multiprotocol BGP,多协议BGP)。从本质上来说,每个MP-BGP会话都是一个内部BGP会话,这是因为MP-BGP会话是在属于同一个自治系统的两台路由器之间建立的。

MPLS/VPN体系架构需要运行MP-iBGP,这是因为此时的BGP更新消息需要承载包含IPv4地址在内的多种信息。例如,对于MPLS(Multiprotocol Label Switching,多协议标签交换)三层VPN来说,更新消息必须承载VPN IPv4地址、MPLS标签信息以及扩展或标准BGP团体(Community)属性。

如前所述,上述BGP扩展协议的本质是为BGP提供附加能力,以允许BGP承载IPv4地址以及典型BGP属性之外的更多信息。根据前面讨论的结果,在两个对等体之间建立BGP会话时,需要通过打开消息交换初始的BGP参数(如ASN)。BGP中的打开消息可以交换其他参数,其中就包括能力(Capability)参数。该可选参数的作用是定义对等体可以理解并执行的能力类型,在这些能力当中就有一个多协议扩展能力。该能力是通过多协议扩展应用来交换BGP引入的除标准IPv4地址之外的其他地址。该进程要求创建一些额外的可选属性,以便为管理和注入这些非IPv4地址提供增强功能。

具体而言,MP-BGP引入了两个新的可选非传递属性。

为了更好地理解MP-BGP的操作特性,需要进一步解释这两个非传递属性。

MP_REACH_NLRI可以宣告一组可达前缀及其下一跳信息,而第二个属性MP_UNREACH_NLRI则用于宣告一组不可达目的地。两个BGP发言者交换多协议数据时,必须在能力交换阶段就这些能力达成一致。

PE路由器向其他PE路由器发送MP-iBGP更新时,MP_REACH_NLRI属性会包含一个或多个三元组。表1-12列出了这些三元组所定义的取值情况。

表1-12 MP-BGP属性

作用

命令

地址簇信息

地址簇信息可以标识更新消息中携带的网络层协议

下一跳信息

下一跳信息是去往目的地的路径中下一台路由器的下一跳地址

NLRI

NLRI负责管理多协议路由及下一跳地址的增加或撤销,NLRI前缀必须属于同一种地址簇

1.5.1 多协议BGP的配置

大量的MP-BGP配置场景都可以通过以下步骤及配置命令来完成。MP-BGP的配置过程比前面讨论过的典型BGP配置过程稍显复杂。为了支持跨服务提供商网络的多PE-to-PE会话以及客户可能希望在CE-PE侧协议运行eBGP的需求,MP-BGP的配置过程需要引入更多的复杂性和语法变化。

前面已经讨论了MP-BGP规范定义地址簇的方式以及创建地址簇以允许BGP携带除IPv4之外的其他协议的方式。地址簇可以有多种形式,例如,MPLS/VPN部署方案中的地址簇称为VPN-IPv4地址,比标准的IPv4地址长得多。此外需要注意的是,如果激活了MP-BGP,那么就默认自动承载IPv4单播路由。该操作特性对于某些不希望如此的应用场景来说就是一个潜在问题。例如,如果仅希望在网络基础设施中使用与应用或协议相关的地址(与三层VPN类似),那么就可能会产生问题。为了改变该操作特性,可以禁用IPv4单播前缀的自动宣告功能。例1-16给出了相应的命令语法格式。

例1-16 bgp default ipv4-unicast命令

R1(config)# router bgp 1
R1(config-router)# no bgp default ipv4-unicast

MP-BGP配置过程的第二步就是定义并激活PE路由器之间的BGP会话。该配置命令的语法具有很丰富的多样性,有些仅承载VPN-IPv4路由,有些仅承载IPv4路由,有些则同时承载VPN-IPv4和IPv4路由。BGP会话的类型以及对等会话所承载的路由规范取决于前面讨论过的地址簇。需要注意的是,BGP配置能够将指定路由重分发进/出BGP,通常将该操作特性称为语境路由(context-based routing)。

为了完成上述配置任务,必须为PE路由器上配置的每个VRF(Virtual Routing and Forwarding,虚拟路由和转发)配置一个BGP地址簇,以便在PE路由器之间承载非IPv4路由。初始的BGP配置进程(还未使用地址簇规范的配置部分)就成为默认地址簇,该默认语境就是“承载一切”,可以配置任何非VRF会话或任何IPv4特有会话。在默认地址簇中学到或宣告的任何前缀都要注入到全局路由表中。同样需要注意的是,这些BGP会话的配置方式与前面讨论过的标准BGP会话的配置方式完全相同,唯一的区别就是必须激活这些会话,激活会话可以使用neighbor命令(如例1-17所示)。

例1-17 BGP标准的IPv4配置

R1(config)# router bgp 1
R1(config-router)# neighbor 194.22.15.3 remote-as 1
R1(config-router)# neighbor 194.22.15.3 update-source loopback0
R1(config-router)# neighbor 194.22.15.3 activate

BGP进程利用与协议相关的地址簇来激活承载非IPv4前缀的MP-iBGP会话。通过该配置可以为非IPv4前缀的交换进程创建相应的路由语境。例1-18给出了相应的命令语法形式以及在路由器R1和R2之间配置MP-iBGP会话所需的相关命令。

例1-18 地址簇配置

R1(config)# router bgp 1
R1(config-router)# address-family ?
  ipv4 Address family
  vpnv4 Address family

R1(config-router)# address-family vpnv4
R1(config-router)# neighbor 194.22.15.3 activate

从例1-18可以看出,VPNv4地址簇的配置只需要一条命令,这是因为必须在全局BGP进程中输入BGP neighbor配置命令,从而激活BGP会话以承载非IPv4前缀。

配置VPNv4地址簇时还需要为BGP配置增加一条命令,以支持MP-BGP特定的扩展团体属性。IOS默认自动添加该命令,而且该命令对于指示BGP宣告扩展团体属性来说是必需的。例1-19给出了该命令的语法形式。

例1-19 启用扩展属性的支持能力

R1(config-router)# neighbor 194.22.15.3 send-community ?
  both            Send Standard and Extended Community attributes
  extended Send Extended Community attribute
  standard Send Standard Community attribute
  <cr>

默认行为是仅发送扩展团体属性。如果网络设计要求为这些非IPv4前缀附加标准的团体属性,那么就可以通过neighbor 194.22.15.3 send-communityboth命令来更改该默认行为。

接下来需要通过服务提供商网络宣告这些非IPv4路由。为便于讨论,下面将通过大量VPNv4配置来解释该配置语法。请注意,MP-iBGP通过MP-iBGP会话在PE路由器之间交换路由信息,因而必须在BGP进程下配置路由语境,以告知BGP需要宣告哪些VRF前缀。

可以在BGP进程的地址簇配置下完成上述配置任务,使用address-family命令的IPv4选项(如例1-18所示)。必须在BGP进程下使用各自的地址族配置每个VRF。此外,如果需要通过服务提供商网络宣告前缀,那么就必须将这些前缀重分发到BGP中。

例1-20解释了利用VPNv4地址簇实现上述目标的配置示例。

例1-20 VRF之间的MP-BGP重分发

hostname R1
!
ip vrf VPN_A
  rd 1:100
  route-target export 100:100
  route-target import 100:100
!
ip vrf VPN_B
  rd 1:200
  route-target export 100:200
  route-target import 100:200
!
interface loopback0
  ip address 194.22.15.2 255.255.255.255
!
interface serial0
ip vrf forwarding VPN_A
  ip address 10.2.1.5 255.255.255.252
!
interface serial1
ip vrf forwarding VPN_B
  ip address 195.12.2.5 255.255.255.252
!
router rip
  version 2
!
address-family ipv4 vrf VPN_A
  version 2
  redistribute bgp 1 metric 1
  network 10.0.0.0
  no auto-summary
exit-address-family
!
address-family ipv4 vrf VPN_B
  version 2
  redistribute bgp 1 metric 1
  network 195.12.2.0
  no auto-summary
exit-address-family
!
router bgp 1
  no bgp default ipv4-unicast
  neighbor 194.22.15.3 remote-as 1
  neighbor 194.22.15.3 update-source loopback0
  neighbor 194.22.15.3 activate
  neighbor 194.22.15.1 remote-as 1
  neighbor 194.22.15.1 update-source loopback0
!
address-family ipv4 vrf VPN_A
  redistribute rip metric 1
  no auto-summary
  no synchronization
exit-address-family
!
address-family ipv4 vrf VPN_B
  redistribute rip metric 1
  no auto-summary
  no synchronization
exit-address-family
!
address-family vpnv4
  neighbor 194.22.15.3 activate
  neighbor 194.22.15.3 send-community extended
  neighbor 194.22.15.1 activate
  neighbor 194.22.15.1 send-community extended
exit-address-family

备考任务

表1-13列出了与BGP相关的一些重要RFC。

表1-13 第1章的协议与标准

主题

标准

BGP-4

RFC 4271

BGP Confederations

RFC 5065

BGP Route Reflection

RFC 4456

MD5 Authentication

RFC 2385

表1-14列出了本章提到的所有BGP路径属性及其用途。

表1-14 BGP路径属性

路径属性

描述

特性

AS_PATH

列出指定路由已经宣告过的ASN

周知强制属性

NEXT_HOP

列出用于到达NLRI的下一跳IP地址

周知强制属性

AGGREGATOR

列出创建汇总NLRI的路由器的RID和ASN

可选传递属性

ATOMIC_ AGGREGATE

将汇总NLRI标记为汇总

周知自选属性

ORIGIN

该路径属性值表示注入BGP的路由来自何处:i(IGP)、e(EGP)或(incomplete[不完全的])

周知强制属性

ORIGINATOR_ID

RR利用此路径属性来标识将NLRI注入AS的iBGP邻居的RID

可选非传递属性

CLUSTER_LIST

RR利用此路径属性来列出RR簇ID,以避免环路

可选非传递属性

表1-15列出并解释了在BGP表中安装表项的方法。

表1-15 在BGP表中安装表项的方法总结

方法

描述

network 命令

将路由宣告到BGP中,依赖于所配置的网络/子网在IP路由表中的存在性

重分发

提取IGP路由、静态路由或直连路由,不需要分配度量(MED)

手动汇总

要求至少有一个成员子网位于BGP表中,可选保持所有成员子网、抑制所有子网的宣告或者抑制特定子网的宣告

default-information originate 命令

要求IP路由表中有一条默认路由以及redistribute命令

neighbor default-originate 命令

携带可选的路由映射时,仅当路由映射的允许语句与IP路由表相匹配时才宣告默认路由。不携带路由映射时,默认总是宣告默认路由

表1-16列出了与本章主题相关的一些常用Cisco IOS命令。

表1-16 第1章的命令参考

命令

命令模式及描述

address-family vpnv4

BGP模式;该命令可以创建MP-BGP会话,从而在PE设备之间构建VPNv4会话

aggregate-address address mask [ as-set ] [ summary-only ] [ suppress-map map-name ] [ advertise-map map-name ] [ attribute-map map-name ]

BGP模式;该命令可以汇总BGP路由、抑制所有/部分成员子网或者不抑制成员子网

auto-summary

BGP模式;该命令可以将本地注入的路由自动创建为有类汇总路由

bgp client-to-client reflection

BGP模式;在默认情况下,该命令可以告诉RR服务器将学自客户端的路由反射给其他客户端

bgp cluster-id cluster-id

BGP模式;该命令可以为RR服务器定义一个非默认RR簇ID

bgp confederation identifier as-number

BGP模式;对于联盟来说,该命令可以为整个AS定义一个其他自治系统可以看到的ASN

bgp confederation peers as-number [ ...as-number ]

BGP模式;对于联盟来说,该命令可以标识位于其他联盟子自治系统中的邻居ASN

bgp log-neighbor-changes

BGP模式;在默认情况下,该命令可以告诉BGP为BGP操作中的重要变化创建日志消息

bgp router-id ip-address

BGP模式;该命令可以定义BGP路由器ID

default-information originate

BGP模式;如果要将静态默认路由重分发到BGP中,那么就必须配置该命令

default-metric number

BGP模式;该命令可以为分配给重分发到BGP中的路由设置默认度量,通常默认将每条路由设置成IGP度量

distance bgp external-distance internal-distance local-distance

BGP模式;该命令可以为eBGP、iBGP以及本地注入的BGP路由定义管理距离

neighbor { ip-addresspeer-group-name } default-originate [ route-map map-name ]

BGP模式;该命令可以告诉路由器在发送给邻居的BGP更新消息中增加一条默认路由(在可选的路由映射设置的条件下)

neighbor { ip-addresspeer-group-name } description text

BGP模式;该命令可以在BGP配置中添加描述性的文本说明

neighbor { ip-addresspeer-group-name }
ebgp-multihop
[ ttl ]

BGP模式;对于eBGP对等体来说,该命令可以将发送给对等体的数据包中的TTL设置为大于默认值1

neighbor ip-addresspeer-group-name next-hop-self

BGP模式;该命令可以让IOS将NEXT_HOP PA重置为指定IP地址,该IP地址被用作发送给该邻居的更新消息所使用的源地址

neighbor { ip-addresspeer-group-name } password string

BGP模式;该命令可以定义发送给该邻居的所有BGP消息的MD5哈希函数使用的密钥

neighbor ip-address peer-group peer-group-name

BGP模式;该命令可以将邻居的IP地址关联为对等体组的一部分

neighbor peer-group-name peer-group

BGP模式;该命令可以定义对等体组的名称

neighbor { ip-addresspeer-group-name } remote-as as-number

BGP模式;该命令可以定义邻居的AS

neighbor { ip-addresspeer-group-name } shutdown

BGP模式;该命令可以管理性地关闭邻居,从而中断TCP连接

neighbor [ ip-addresspeer-group-name ] timers keepalive holdtime

BGP模式;该命令可以为邻居设置两个BGP定时器

neighbor { ip-addressipv6-addresspeer-group-name } update-source interface-type interface-number

BGP模式;该命令可以为发送给该邻居的BGP消息定义源IP地址

network { network-number [ mask network-mask ] [ route-map map-tag ]

BGP模式;该命令可以让IOS将已定义的前缀添加到BGP表中(要求该前缀必须位于IP路由表中)

router bgp as-number

全局命令;该命令可以定义ASN并让用户进入BGP模式

synchronization

BGP模式;该命令可以启用BGP同步机制

timers bgp keepalive holdtime

BGP模式;该命令可以为所有邻居定义BGP定时器

show ip bgp [ network ] [ network-mask ] [ longer-prefixes ] [ prefix-list prefix-list-nameroute-map route-map-name ] [ shorter prefixes mask-length ]

EXEC模式;该命令可以列出路由器BGP表的细节信息

show ip bgp injected-paths

EXEC模式;该命令可以列出在本地注入BGP的路由

show ip bgp neighbors [ neighbor-address ] [ received-routesroutesadvertised-routes | { paths regexp } | dampened-routesreceived prefix-filter ]

EXEC模式,该命令可以列出指定邻居收发的路由信息

show ip bgp peer-group [ peer-group-name ] [ summary ]

EXEC模式;该命令可以列出指定对等体组的细节信息

show ip bgp summary

EXEC模式;该命令可以列出每个BGP对等体的基本统计信息

1.6 理解与记忆

与所有的Cisco CCIE笔试一样,CCIE路由和交换笔试也包含了非常广泛的考试主题,因而本节提供了一些有用工具,来帮助大家加深理解并记忆本章所涵盖的考试主题。

1.6.1 凭记忆完成要点表

附录E包含了每章考试要点的摘要空表,请打印附录E并根据本章的表格信息,根据记忆填表,并参考附录F以作检查。

1.6.2 定义关键术语

请写出本章涉及的下列关键术语,然后在术语表中核对正确答案:

路径属性、BGP表、BGP更新消息、建立状态、iBGP、eBGP、EGP、BGP、对等体组、eBGP多跳、自治系统、AS号、AS_PATH、ORIGIN、NLRI、NEXT_HOP、MULTI_EXIT_DISC、LOCAL_PREF、路由黑洞、同步、联盟、路由反射器、联盟标识符、Sub-AS、路由反射器服务器、路由反射器客户端、路由反射器非客户端、联盟AS、联盟eBGP、权重

1.6.3 推荐读物

Routing TCP/IP, Volume II , by Jeff Doyle and Jennifer DeHaven Carrol

Cisco BGP-4 Command and Configuration Handbook , by William R.Parkhurst

Internet Routing Architectures , by Bassam Halabi

Troubleshooting IP Routing Protocols , by Zaheer Aziz, Johnson Liu, Abe Martey, and Faraz Shamim

Cisco BGP支持页面提供了大量有用的参考信息(需要Cisco.com的用户名和密码):www.cisco.com/en/US/partner/tech/tk365/tk80/tsd_technology_support_sub-protocol_home.html


相关图书

CCIE路由和交换认证考试指南(第5版)(第1卷)
CCIE路由和交换认证考试指南(第5版)(第1卷)

相关文章

相关课程