BGP 高级路由

本附录概述 SonicWALL 的边界网关协议 (BGP) 实施、BGP 的运行方式,以及如何针对您的网络配置 BGP。

本附录包含以下章节:

BGP 概述

注意

配置 BGP

验证 BGP 配置

IPv6 BGP

BGP 术语

BGP 概述

以下章节提供 BGP 概述:

什么是 BGP?

后台信息

自治系统

BGP 拓扑结构的类型

为什么使用 BGP?

BGP 的工作方式

什么是 BGP?

BGP 用于在自治系统 (AS) 之间交流路由信息的大型路由协议。这些自治系统是定义明确、单独管理的网络域。BGP 支持允许 SonicWALL 安全设备替代网络自治系统使用的传统 BGP 路由器。BGP 的当前 SonicWALL 实施最适用于“单提供商/单宿主”环境,在这种环境下,网络使用一个 ISP 作为互联网提供商,且与该提供商采用单一连接。SonicWALL BGP 还可以支持“单提供商/单宿主”环境,其中,网络使用单个 ISP,但具有连至提供商的少量单独路由。BGP 在 SonicOS GUI 的网络 > 路由页面上启用,然后再通过 SonicOS 命令行接口 (CLI) 进行完全配置。

 

 

下表显示 BGP 授权要求。

平台

需要附加许可证

NSA 2600

SonicOS 扩展版

NSA 3600

SonicOS 扩展 01-SSC-7091

NSA 4600

无,已包含 BGP

NSA 5600

无,已包含 BGP

NSA 6600

无,已包含 BGP

SM 9200

无,已包含 BGP

SM 9400

无,已包含 BGP

SM 9600

无,已包含 BGP

购买 SonicOS 扩展许可证后,NSA 2600 和 NSA 3600 支持 BGP。可以在 www.mysonicwall.com 购买许可证。

后台信息

路由协议不仅是通过网络传输的数据包,还包含各路由器和路由器组用于发现、组织和交流网络拓扑结构的所有机制。路由协议使用取决于指定的各协议参与者的分布式算法,且在网络域内的路由器随着网络节点更改状态而动态变化时尤为有用。

路由协议通常与两个数据库交互:

路由信息库 (RIB) - 用于存储路由协议本身所需的全部路由信息。

转发信息库 (FIB) - 用于实际的数据包转发。

从 RIB 选择的最佳路由用于填充 FIB。RIB 和 FIB 都随着各路由协议接收路由更新或设备的连接变更而动态变化。

有两个基本路由协议类:

内部网关协议 (IGP) - 内部网关协议是用于在 AS 内部的网络内进行路由通信的路由协议。有两代 IGP。第一代由距离向量协议组成。第二代由链接状态协议组成。距离向量协议相对简单,但在扩展到大量路由器时会出现问题。链接状态协议更为复杂,也具有更好的扩展能力。现有的距离向量协议有内部网关路由协议 (IGRP)、增强内部网关路由协议 (EIGRP)、路由信息协议 (RIP) 和 RIPv2 (增强版 RIP)。IGRP 和 EIGRP 是专有的 Cisco 协议。目前使用的链接状态协议有开放最短路径优先 (OSPF) 和较少使用的中间系统到中间系统 (IS-IS) 协议。

SonicOS 支持 OSPFv2 和 RIPv1/v2 协议,这是两个最常用的路由内部网关协议,允许客户在其 IGP 网络中使用我们的产品,并避免配备单独的传统路由器产生附加成本。

外部网关协议 (EGP) - 标准的普适型外部网关协议是 BGP(更准确地说是 BGP4)。BGP 是用于在称为自治系统 (AS) 的定义明确网络域之间进行路由信息和策略通信的大型路由协议。自治系统是独立于其他自治系统的单独管理网络域。BGP 用于在自治系统之间传输路由和路由策略。ISP 通常使用 BGP 与其客户及其他 ISP 传输路由和路由策略。

每个自治系统都被分配了 16 位编号。和 IP 地址一样,AS 编号也可以是公用或私有的。公用 AS 编号是有限的资源,会基于很多因素的考虑提供。有多重托管至两个或多个 ISP 的大型网络的 ISP 客户通常具备公用 AS,较小型客户则具备由其 ISP 提供商管理的私有 AS。

随着我们的产品为支持企业级需求而不断发展,有些客户可能想要将我们的产品应用于 AS 以替代传统的 BGP 路由器。

自治系统

每个自治系统都被分配了 16 位编号。和 IP 地址一样,AS 编号也可以是公用或私有的。公用 AS 编号是有限的资源,会基于很多因素的考虑提供。有多重托管至两个或多个 ISP 的大型网络的 ISP 客户通常具备公用 AS,较小型客户则具备由其 ISP 提供商管理的私有 AS。

BGP 拓扑结构的类型

BGP 是很灵活、复杂的路由协议。因此,BGP 路由器可融入多种拓扑结构设置中,例如互联网核心路由器、中间 ISP 路由器、ISP 客户前端设备 (CPE) 或小型私有 BGP 网络中的路由器。不同拓扑结构所需的 BGP 路由数相差悬殊,核心路由器需要大于 300,000 个 BGP 路由,而使用单一 ISP 和为 AS 之外的所有目标使用默认路由则不需要 BGP 路由。ISP 客户通常被要求从其边缘路由器 (CPE) 至 ISP 运行 BGP,而不论他们从 ISP 接收的路由数。这允许 ISP 客户控制使用哪些网络向外界发布。人们通常担心客户发布一个自己并不拥有的网络或网络组,会有黑洞互联网流量通过这些网络。实际上,ISP 提供商小心地过滤来自客户的无效发布(BGP 的优势之一),所以以上担心并无必要。

有三种规模的 BGP 网络:

单提供商/单宿主 - 网络从单一 ISP(单一提供商)接收单一路由(单宿主)。ISP 客户从其 ISP 接收的路由数取决于其 AS 的性质。仅使用一个 ISP 作为互联网提供商并且该提供商只有单一连接(单提供商/单宿主)的 ISP 客户无需接收任何路由,目标在 AS 以外的所有流量将被转到其 ISP。这些客户仍可以将其网络内的部分或全部内容发布给 ISP。

单提供商/多宿主 - 网络从单一 ISP(单一提供商)接收多个路由(多宿主)。使用单个 ISP,但与其 ISP 有多个连接的 ISP 客户只能在各 ISP 网关接收默认路由 (0.0.0.0/0)。如果某 ISP 连接断开,从断开的 CPE 路由器向内部路由器发送的默认路由将被撤回,互联网流量则流向连至 ISP 的 CPE 路由器。客户的内部网络也将在各 CPE 路由器网关发布至 ISP,并在与客户的特定连接断开时允许 ISP 使用替代路径。

多提供商/多宿主 - 使用多个 ISP,且各 ISP 有一个或多个单独网关路由器的 ISP 客户。在这种情况下,客户的 AS 必须是公用 AS,也可能是中转 AS 或非中转 AS。中转 AS 接收和转发来自 ISP 的流量,该流量去往可通过其他 ISP 连接的网络(流量的目的地不在客户的 AS 内)。非中转 AS 应该只接收去往 AS 的流量,所有其他流量均被丢弃。中转 AS 中的 BGP 路由器通常接收各 ISP 的完整 BGP 路由表的一大部分(在大多数情况下是全部)。

为什么使用 BGP?

• 即使您并非处在互联网上的大型网络中,BGP 也可以作为多宿主、负载均衡和冗余用例的标准:

单提供商/单宿主 - 不常用于 BGP,但仍可用于将网络发布到 ISP。单宿主网络不符合用于 RIR 中公用 AS 的条件。

单提供商/多宿主 - 按照 RFC2270 使用单一私有 AS(64512 至 65535)的建议,经常被选用,可以发挥 BGP 的优势,同时保存公用 ASN。

多提供商/多宿主 - 高度冗余,通常用于各 ISP 的专用路由器。需要公用 ASN。大内存占用

• 路由汇总实现可扩展性。

BGP 的工作方式

BGP 使用 TCP 端口 179 进行通信。BGP 被视为一种路径向量协议,包含目的地的端对端路径描述。BGP 邻居可以是内部 (iBGP) 或外部 (eBGP) 的:

iBGP - 邻居位于相同 AS 内。

eBGP - 邻居位于不同 AS 中。

路径在标记为各种路径属性的更新消息中发布。AS_PATH 和 NEXT_HOP 是描述 BGP 更新消息中路由路径的两个最重要属性。

AS_PATH:表示路由通信往来的 AS。在下例中,AS_PATH 来自 AS 7675,去往 AS 12345。对于内部 BGP,AS_PATH 为源和目标指定相同的 AS。

NEXT_HOP:表示路径前往的下一路由器的 IP 地址。穿过 AS 边界发布的路径继承了边界路由器的 NEXT_HOP 地址。BGP 依赖内部路由协议连通 NEXT_HOP 地址。

BGP 有限状态机

用于定义 BGP 的 RFC 1771 描述了 BGP 与以下状态机相关的工作。下图后面的表格提供了有关各种状态的附加信息。

图 81:1 BGP 有限状态机

Appendix_B_BGP00272.jpg

 

状态

说明

闲置

在建立新 BGP 会话或重置现有会话后,等待“启动”事件。在发生错误时,恢复到“闲置”状态。在“启动”事件后,BGP 启动,重置连接重试计时器,启动 TCP 传输连接和监听连接

连接

TCP 层连接后,变换为“已发送开启消息”状态,然后发送“开启”消息。如果没有 TCP,变换为“活动”。如果连接重试计时器过期,重置计时器,并启动传输连接。否则,变换为“闲置”状态。

活动

尝试与对等项建立 TCP 连接。如连接成功,变换为“已发送开启消息”状态,然后发送“开启”消息。如果连接尝试过期,重新启动计时器,然后恢复到“连接”状态。还会活动监听其他对等项的连接。在发生其他事件时,返回到“闲置”状态。

活动状态不稳表示有 TCP 传输问题,例如 TCP 重新传输或未连接对等项。

已发送开启消息

等待来自对等项的“开启”消息。验证接收情况。如验证失败,发送“通知”并进入“闲置”状态。如验证成功,发送“保持活动”并重置保持活动计时器。协商保持时间,较小值取胜。如较小值为零,保持计时器和保持活动计时器不会重启。

已确认开启消息

等待“保持活动”或“通知”。如果收到“保持活动”消息,则变换为“已建立”状态。如果收到“更新”或“保持活动”消息,重启保持计时器(除非协商保持时间为零)。如果收到“通知”,则变换为“闲置”状态。

发送定期“保持活动”消息。如果 TCP 层断开,则变换为“闲置”状态。如果发生错误,则发送含错误代码的“通知”,并变换为“闲置”状态。

已建立

会话开启,与对等项交换更新信息。如果收到“通知”,则变换为“闲置”状态。检查更新信息有无错误。发生错误时,会发送“通知”,并变换为“闲置”状态。保持时间过期时,断开 TCP。

BGP 消息

BGP 通信包含以下几个消息:

开启 - 在建立 TCP 会话后,BGP 对等项之间的第一条消息。包含建立对等会话的必需信息,例如 ASN、保持时间以及多产品扩展和路由刷新等功能。

更新 - 这些消息包含路径信息,例如路由宣布或撤回。

保持连接 - 有关保持 TCP 层活动和发布活动连接的定期消息。

通知 - 有关终止 BGP 会话的请求。包含错误代码“cease”的非致命性问题通知。子代码提供更多详细信息:

子代码

说明

1 - 已达到的最大前缀数

已超过配置的“邻居最大前缀”值

2 - 管理关闭

会话出于管理目的被关闭

3 - 对等项未配置

对等配置已被移除

4 - 管理重置

会话出于管理目的被重置

5 - 连接被拒绝

BGP 会话的拒绝(有时是临时的)

6 - 其他配置变更

会话出于某种原因被管理重置

路由刷新 - 用于对等项重新发送其路由的请求。

BGP 属性

BGP 更新消息可以包含以下属性:

代码

1

ORIGIN

2

AS_PATH

3

NEXT_HOP

4

MULTI_EXIT_DISC

5

LOCAL_PREF

6

ATOMIC_AGGREGATE

7

AGGREGATOR

8

COMMUNITY

9

ORIGINATOR_ID

10

CLUSTER_LIST

11

DPA

12

ADVERTISER(历史记录)

13

RCID_PATH / CLUSTER_ID(历史记录)

14

MP_REACH_NLRI

15

MP_UNREACH_NLRI

16

EXTENDED COMMUNITIES

17

AS4_PATH

18

AS4_AGGREGATOR

19

SAFI 特定属性 (SSA)(已弃用)

20

连接器属性(已弃用)

21

AS_PATHLIMIT(已弃用)

22

PMSI_TUNNEL

23

隧道封装属性

24

流量工程

25

IPv6 地址特定扩展团体

26

AIGP(临时 - 2011 年 2 月 23 日过期)

27-254

未分配

255

保留用于开发

有关 BGP 属性的更多信息,请参见:http://www.iana.org/assignments/bgp-parameters/bgp-parameters.xml

注意

规模 - 目前,SonicOS 支持 512 至 2,048 个基于策略的路由 (PBR)。这对于完全甚或部分路由表是不够的。RIB 中存在的路由数可能大于 PBR(是 FIB)中安装的数目。当通过路由协议收到多个竞争路由时,会发生这种情况。在 RIB 包含去往特定网络目标的多个竞争路由时,只有一个路由可被选择安装到 FIB 中。

目前,我们的实施最适合于单提供商/单宿主客户。如果从 ISP 收到默认路由,或者客户收到很少量的 ISP 特定路由,单提供商/多宿主也很适用。第二种情况允许内部路由器采用最优路径到达 AS 外部的目标,但仍处于 ISP 网络域内(这被称为部分路由)。

负载均衡 - 目前 SonicOS 或 Zebos 中没有多路径支持(“最多路径”功能)。这样就阻止了负载均衡,且不拆分网络。

环回 - 目前没有环回接口支持。

NAT - BGP 适用于路由。但不能与 NAT 良好共存。

VPN 更新 - 目前无法通过 VPN 进行 BGP 更新。

异步路径 - 状态防火墙目前不处理异步路径,尤其对于穿越多个防火墙的情况。

配置 BGP

以下章节描述如何配置 SonicOS 的 BGP 高级路由:

BGP 的 IPSec 配置

基本 BGP 配置

BGP 路径选择过程

AS_PATH 预置

多出口标识 (MED)

BGP 团体

同步和自动汇总

防止意外中转 AS

使用多宿主 BGP 进行负载分担

BGP 的 IPSec 配置

BGP 传输数据包畅通无阻。因此为了增强安全性,Dell SonicWALL 推荐配置 IPSec 隧道用于 BGP 会话。IPSec 隧道和 BGP 的配置彼此独立。IPSec 隧道完全在 SonicOS GUI 的 VPN 配置部分进行配置,而 BGP 在网络 > 路由页面启用,然后在 SonicOS 命令行接口进行配置。在配置通过 IPSec 的 BGP 时,首先配置 IPSec 隧道,然后在配置 BGP 之前验证通过隧道的连接是否有效。

以下过程显示 SonicWALL 和远程 BGP 对等项之间的 IPSec 配置示例,其中,SonicWALL 配置为 X0 网络上的 192.168.168.75/24,远程对等项配置为 X0 网络上的 192.168.168.35/24。

1. 浏览至 VPN > 设置页面,然后单击“VPN 策略”下方的添加按钮。显示“VPN 策略”窗口。

BGP_IPsec_general.jpg

 

2. 在策略类型下拉菜单,确保选中站对站

注 通过 IPSec 的 BGP 必须使用站对站 VPN 隧道。隧道接口将不适用于 BGP。

3. 选择需要的验证方法。本例使用使用共享密钥的 IKE

4. 输入 VPN 策略的名称

5. 在 IPsec 主要网关名称或者地址字段,输入远程对等的 IP 地址(本例中是 192.168.168.35)。

6. 在 IPsec 次要网关名称或者地址字段,输入 0.0.0.0。

7. 输入共享密钥,然后确认。

8. 在本地 IKE ID 字段,输入 SonicWALL 的 IP 地址(本例中是 192.168.168.75)。

9. 在对等 IKE ID 字段,输入远程对等的 IP 地址 (192.168.168.35)。

10. 单击网络选项卡。

对于本地网络,在从列表中选择本地网络下拉菜单选择 X0 IP

12. 对于远程网络,在从列表中选择目标网络下拉菜单中选择远程对等 IP 地址,本例中是
192.168.168.35。如果远程 IP 地址未列出,则选择创建新地址对象创建 IP 地址的地址对象。

13. 单击建议选项卡。您可以使用默认的 IPSec 协议或根据需要自定义。

14. 单击高级选项卡。

15. 选中启用 Keep Alive 复选框。

16. 单击确定

防火墙的 VPN 策略现在已配置。现在,完成远程对等项的相应 IPSec 配置。完成时,返回到 VPN > 设置页面,然后选中 VPN 策略的启用复选框以启动 IPSec 隧道。

使用 SonicWall 上的 ping 诊断功能 ping BGP 对等 IP 地址,并使用 Wireshark 确保请求和响应封装在 ESP 数据包中。

注 如本例中的配置,传送的流量不会经过用于 BGP 的 IPSEC 隧道。该流量的发送和接收畅通无阻,这正符合预期的行为,因为目标是保障 BGP 的安全性,而不是所有传送的网络流量。

有关配置 IPSec 的更多详细信息,请参见《SonicOS 管理员指南》中的 VPN 章节。

基本 BGP 配置

要在 SonicWALL 安全设备配置 BGP,请执行以下任务:

1. 在 SonicOS GUI,浏览至网络 > 路由页面。

2. 在路由模式下拉菜单,选择高级路由

3. 在 BGP 下拉菜单中,选择已启用(使用 CLI 配置)

在通过 GIU 启用 BGP 后,BGP 配置的具体设置使用 SonicOS 命令行接口 (CLI) 执行。有关如何连接至 SonicOS CLI 的详细信息,请参见《SonicOS 命令行接口指南》,链接:
http://www.sonicwall.com/us/support/230_3623.html

4. 通过控制台界面登录 SonicOS CLI。

5. 通过输入 configure 命令进入配置模式。

6. 通过输入 route ars-bgp 命令进入 BGP CLI。现在,您可以看到以下提示:

ZebOS version 7.7.0 IPIRouter 7/2009

ARS BGP>

 

7. 现在,您在 BGP 非配置模式中。输入 ? 查看非配置命令的列表。

8. 输入 show running-config 查看当前的 BGP 运行配置。

9. 要进入 BGP 配置模式,输入 configure terminal 命令。输入 ? 查看配置命令的列表。

10. 在完成配置后,输入 write file 命令。如果该单元是“高可用性”对或群集的一部分,配置更改将自动传达至一个或多个其他单元。

BGP 路径选择过程

以下属性可用于配置 BGP 路径选择过程。

属性

说明

权重

首选向邻居学习的路由具有最高权重值。仅适用于本地路由器。

本地首选项

为管理目的首选向邻居学习的路由。与整个 AS 共享。

网络聚合路径

首选在本地来源于网络聚合地址命令的路径。

AS_PATH

首选具有最短 AS_PATH 的路径。

来源

首选具有最低来源类型的路径(如“更新”消息中发布):IGP < EGP < 不完整。

多出口标识 (MED)

对于去往来源 AS 的路径的邻居提供路径首选项信息。

最近

首选最近收到的路径。

路由器 ID

首选来自具有最小路由器 ID 的路由器的路径。

权重

权重命令按地址家族向学习自邻居的所有路由分配权重值。如相同前缀向多个同等项学习,则首选具有最高权重高的路由。权重仅适用于本地路由器。

使用 set weight 命令分配的权重替代使用上述命令分配的权重。

如为对等组设置权重,则对等组中的所有成员都具有相同的权重。该命令还可用于向特定的对等组成员分配不同的权重。

下例显示权重配置:

router bgp 12345

neighbor 12.34.5.237 remote-as 12345

neighbor 12.34.5.237 weight 60

 

router bgp 12345

neighbor group1 peer-group

neighbor 12.34.5.237 peer-group group1

neighbor 67.78.9.237 peer-group group1

neighbor group1 weight 60

本地首选项

“本地首选项”属性用于表示设备路由表中各外部路由的首选程度。“本地首选项”属性包含在发送至相同 AS 中设备的所有更新消息中。“本地首选项”不与外部 AS 交流。下图是显示本地首选项如何影响相邻 AS 之间的路由的拓扑结构示例。

图 81:2 BGP 本地首选项拓扑结构

Appendix_B_BGP00273.jpg

 

以下 BGP 配置在 SNWL1 和 SNWL2 中输入。SNWL2 中的较高本地首选值致使 SNWL2 成为 AS 12345(SonicWALL AS)向外部 AS 发布的首选路由。

SNWL1 配置

SNWL2 配置

x0 = 12.34.5.228

x1 = 172.16.228.45

------------------

router bgp 12345

neighbor 172.16.228.228 remote-as 7675

neighbor 12.34.5.237 remote-as 12345

bgp default local-preference 150

x0 = 12.34.5.237

x1 = 10.1.1.2

------------------

router bgp 12345

neighbor 10.1.1.1 remote-as 8888

neighbor 12.34.5.228 remote-as 12345

bgp default local-preference 200

使用路由映射的本地首选项

路由映射类似于访问控制列表。其中包含一系列用于确定设备如何处理路由的允许和/或拒绝语句。路由映射应用于入站流量,而不是出站流量。下图显示使用路由映射配置本地首选项的拓扑结构示例。

图 81:3 使用路由映射的 BGP 本地首选项拓扑结构

Appendix_B_BGP00274.jpg

 

以下 BGP 配置在 SNWL1 和 SNWL2 中输入。

SNWL1 配置

SNWL2 配置

x1 = 172.16.228.45

 

 

------------------

router bgp 12345

neighbor 172.16.228.228 remote-as 7675

neighbor 12.34.5.237 remote-as 12345

bgp default local-preference 150

x0 = 12.34.5.237

x1 = 10.1.1.2

x4 = 10.4.4.1

------------------

router bgp 12345

neighbor 10.1.1.1 remote-as 9999

neighbor 10.1.1.1 route-map rmap1 in

neighbor 12.34.5.237 remote-as 12345

....

ip as-path access-list 100 permit ^8888$

...

route-map rmap1 permit 10

match as-path 100

set local-preference 200

 

route-map rmap1 permit 20

set local-preference 150

在 SNWL2 (rmap1) 配置的路由映射应用于来自邻居 10.1.1.1 的入站路由。有两个允许条件:

route-map rmap1 permit 10:该允许条件匹配经配置允许来自 AS 8888 流量的访问列表 100,并将来自 AS 8888 的路由设为本地首选值 200。

route-map rmap1 permit 10:该允许条件将不匹配访问列表 100 的所有其他流量(即来自 8888 以外的其他 AS 的流量)设为本地首选值 150。

AS_PATH 预置

AS_Path 预置是在路径更新开始时添加附加 AS 编号的一项操作。这会使该路由的路径更长,从而降低其首选性。

AS_Path 预置可应用于出站或入站路径。如果受邻居超控,则 AS_Path 预置可能不起作用。

出站路径配置

入站路径配置

router bgp 12345

bgp router-id 10.50.165.233

network 12.34.5.0/24

neighbor 10.50.165.228 remote-as 7675

neighbor 10.50.165.228 route-map long out

!

route-map long permit 10

set as-path prepend 12345 12345

router bgp 7675

bgp router-id 10.50.165.228

network 7.6.7.0/24

neighbor 10.50.165.233 remote-as 12345

neighbor 10.50.165.233 route-map prepend in

!

route-map prepend permit 10

set as-path prepend 12345 12345

 

本配置将使路由安装到邻近的 10.50.165.233,AS_Path Prepended 为 12345 12345。这可以通过输入 show ip bgp 命令查看。

ARS BGP>show ip bgp

BGP table version is 98, local router ID is 10.50.165.228

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, l - labeled

S Stale

Origin codes: i - IGP, e - EGP, ?- incomplete

 

Network Next Hop Metric LocPrf Weight Path

*> 12.34.5.0/24 10.50.165.233 0 0 12345 12345 12345 i

*> 7.6.7.0/24 0.0.0.0 100 32768 i

 

Total number of prefixes 2

多出口标识 (MED)

set metric 命令可用于路由映射中设置路径的优先性:

router bgp 7675

network 7.6.7.0/24

neighbor 10.50.165.233 remote-as 12345

neighbor 10.50.165.233 route-map highmetric out

!

route-map highmetric permit 10

set metric 300

 

多出口标识 (MED) 是可用于影响路径优先性的可选属性。这是非传递性的,表示在单个设备上配置,不会在更新消息中发布给邻居。在这部分,我们考虑使用 bgp always-compare-medbgp deterministic-med 命令。

bgp always-compare-med 命令

bgp always-compare-med 命令允许比较来自不同 AS 的路径的 MED 值以选择路径。首选具有较低 MED 的路径。

例如,考虑 BGP 表中的以下路由,always-compare-med 命令被启用:

Route1: as-path 7675, med 300

Route2: as-path 200, med 200

Route3: as-path 7675, med 250

 

路由 2 将成为被选中的路径,因为它具有最低的 MED。

如果 always-compare-med 命令被禁用,在比较路由 1 和路由 2 时就不会考虑 MED,因为它们具有不同的 AS 路径。仅比较路由 1 和路由 3 的 MED。

bgp deterministic-med 命令

选择的路由也受 bgp deterministic-med 命令影响,该命令在选择相同自治系统中不同对等项发布的路由时会比较 MED。

bgp deterministic-med 命令被启用时,来自相同 AS 的路由被群组,将比较各组的最佳路由。如果显示 BGP 表:

Route1: as-path 200, med 300, internal

Route2: as-path 400, med 200, internal

Route3: as-path 400, med 250, external

 

BGP 将具有包含路由 1 的群组和包含路由 2 和路由 3 (相同 AS)的第二个群组。

将比较各组的最佳路由。路由 1 是其所在组的最佳路由,因为它是来自 AS 200 的唯一路由。

路由 1 与 AS 400 群组中的最佳项路由 2 (最低 MED)进行比较。

由于两个路由并非来自相同 AS,在比较中不会考虑 MED。外部 BGP 路由优于内部 BGP 路由,因此路由 3 成为最佳路由。

BGP 团体

团体是共享相同的属性,且可以使用传递性 BGP 团体属性配置的前缀群组。前缀可以具有多个团体属性。路由器可以具备一个、多个或所有属性。BGP 团体可以视为一种标记形式。下面是 BGP 团体配置的示例。

router bgp 12345

bgp router-id 10.50.165.233

network 12.34.5.0/24

network 23.45.6.0/24

neighbor 10.50.165.228 remote-as 7675

neighbor 10.50.165.228 send-community

neighbor 10.50.165.228 route-map comm out

!

access-list 105 permit 12.34.5.0/24

access-list 110 permit 23.45.6.0/24

!

route-map comm permit 10

match ip address 105

set community 7675:300

!

route-map comm permit 20

match ip address 110

set community 7675:500

!

router bgp 7675

bgp router-id 10.50.165.228

network 7.6.7.0/24

neighbor 10.50.165.233 remote-as 12345

neighbor 10.50.165.233 route-map shape in

!

ip community-list 1 permit 7675:300

ip community-list 2 permit 7675:500

!

route-map shape permit 10

match community 1

set local preference 120

 

route-map shape permit 20

match community 2

set local preference 130

同步和自动汇总

同步设置控制路由器是否根据学习自 iBGP 邻居的路由在 IGP 中的存在情况发布这些路由。同步启用时,BGP 将仅发布可通过 OSPF 或 RIP(相对于 BGP 的外部网关协议)连接的路由。同步是发生 BGP 路由发布问题的常见原因。

自动总结设置控制是否按类别发布路由。自动总结是发生 BGP 配置问题的另一个常见原因。

默认情况下,自动总结和同步在 Zebos 中被禁用。

防止意外中转 AS

正如之前所述,AS 对等项既可以是中转对等项(允许从外部 AS 到另一 AS 的流量),也可以是非中转对等项(要求所有流量来自或终止于相应的 AS)。中转对等项显著扩大了路由表。通常,您不想将 SonicWALL 安全设备配置为中转对等项。

图 81:4 中转对等项与非中转对等项

Appendix_B_BGP00275.jpg

 

为了防止您的设备意外成为中转对等项,您要配置入站和出站过滤器,例如:

出站过滤器

仅允许来自本地 AS 的路由输出:

ip as-path access-list 1 permit ^$

 

router bgp 12345

bgp router-id 10.50.165.233

network 12.34.5.0/24

neighbor 10.50.165.228 remote-as 7675

neighbor 10.50.165.228 filter-list 1 out

neighbor 172.1.1.2 remote-as 9999

neighbor 10.50.165.228 filter list 1 out

 

仅允许拥有的前缀输出:

ip prefix-list myPrefixes seq 5 permit 12.34.5.0/24

ip prefix-list myPrefixes seq 10 permit 23.45.6.0/24

 

router bgp 12345

bgp router-id 10.50.165.233

network 12.34.5.0/24

network 23.45.6.0/24

neighbor 10.50.165.228 remote-as 7675

neighbor 172.1.1.2 remote-as 9999

neighbor 10.50.165.228 prefix-list myPrefixes out

neighbor 172.1.1.2 prefix-list myPrefixes out

入站过滤器

丢弃所有拥有的和私有的入站前缀

ip prefix-list unwantedPrefixes seq 5 deny 12.34.5.0/24 le 32

ip prefix-list unwantedPrefixes seq 10 deny 23.45.6.0/24 le 32

ip prefix-list unwantedPrefixes seq 20 deny 10.0.0.0/8 le 32

ip prefix-list unwantedPrefixes seq 21 deny 172.16.0.0/12 le 32

ip prefix-list unwantedPrefixes seq 22 deny 192.168.0.0/16 le 32

ip prefix-list unwantedPrefixes seq 30 permit 0.0.0.0/0 le 32

 

router bgp 12345

bgp router-id 10.50.165.233

network 12.34.5.0/24

network 23.45.6.0/24

neighbor 10.50.165.228 remote-as 7675

neighbor 172.1.1.2 remote-as 9999

neighbor 10.50.165.228 prefix-list unwantedPrefixes in

neighbor 172.1.1.2 prefix-list unwantedPrefixes in

使用多宿主 BGP 进行负载分担

以下拓扑结构显示 SonicWALL 安全设备使用多宿主 BGP 网络在两个 ISP 之间分担负载的示例。

图 81:5

Appendix_B_BGP00276.jpg

用于负载分担拓扑结构的多宿主 BGP

SonicWALL 安全设备的配置如下:

router bgp 12345

bgp router-id 10.50.165.233

network 12.34.5.0/24

neighbor 10.50.165.228 remote-as 7675

neighbor 10.50.165.228 route-map ISP1 out

neighbor 172.1.1.2 remote-as 9999

neighbor 10.50.165.228 route-map ISP2 out

!

route-map ISP1 permit 10

match ip address 1

set weight 100

 

route-map ISP1 permit 20

match ip address 2

 

route-map ISP2 permit 10

match ip address 1

route-map ISP2 permit 20

match ip address 2

set weight 100

access-list 1 permit 12.34.5.0/25

access-list 2 deny 12.34.5.0/25

access-list 2 permit any

验证 BGP 配置

以下章节描述验证 BGP 配置的方法:

查看 BGP 路由

配置 BGP 日志

查看 BGP 路由

下图显示基本 BGP 拓扑结构,其中,SonicWALL 安全设备配置为可使 BGP 连接至位于两个不同 AS 的两个路由器。

图 81:6 BGP 拓扑结构

Appendix_B_BGP00277.jpg

 

该网络的 FIB 中的路由可以在 SonicOS GUI 中或通过使用 CLI 查看。

在 GUI 中查看 FIB 路由

在 SonicOS GUI,通过单击网络 > 路由页面顶部“路由模式”下拉菜单旁边的 BGP 状态按钮查看 BGP 配置的摘要。“BGP 状态”窗口显示 show ip bgp summary show ip bgp neighbor 命令的输出。

FIB 中的 BGP 路由也可以在 SonicOS GUI 的网络 > 路由页面的“路由策略”表中查看。

在 CLI 中查看 FIB 路由

要查看 CLI 中的 FIB 路由,执行以下命令:

SonicWALL> configure

(config[SonicWALL])> route ars-nsm

 

ZebOS version 7.7.0 IPIRouter 7/2009

ARS NSM>show ip route

Codes:K - kernel, C - connected, S - static, R - RIP, B - BGP

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, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area

* - candidate default

 

B 7.6.7.0/24 [20/0] via 10.50.165.228, X1, 05:08:31

B 199.199.0/16 [20/0] via 10.50.165.237, X1, 05:08:31

C 10.50.165.192/26 is directly connected, X1

C 127.0.0.0/8 is directly connected, lo0

C 12.34.5.0/24 is directly connected, X0

查看 CLI 中的 RIB 路由

要在 CLI 中查看 RIB 路由,输入 show ip bgp 命令:

ARS BGP>show ip bgp

BGP table version is 98, local router ID is 10.50.165.233

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, l - labeled

S Stale

Origin codes: i - IGP, e - EGP, ?- incomplete

 

Network Next Hop Metric LocPrf Weight Path

*> 7.6.7.0/24 10.50.165.228 0 0 7675 i

*> 12.34.5.0/24 0.0.0.0 100 32768 i

*> 199.199.0.0/16 10.50.165.228 0 0 7675 9999 i

 

Total number of prefixes 3

注 最后一个路由是通过 AS7675 学习并去往 AS9999 的路径。

配置 BGP 日志

SonicWALL BGP 提供用于显示 BGP 流量相关日志事件的全面调试命令选择。可以在 CLI 使用调试 bgp 命令加上以下关键字配置 BGP 日志:

BGP 调试关键字

说明

全部

启用所有 BGP 调试。

衰减

启用 BGP 衰减的调试。

事件

启用 BGP 事件的调试。

过滤器

启用 BGP 过滤器的调试。

fsm

启用 BGP 有限状态机 (FSM) 的调试。

保持活动

启用 BGP 保持活动的调试。

nht

启用 NHT 消息的调试。

nsm

启用 NSM 消息的调试。

更新

启用入站/出站 BGP 更新的调试。

要禁用 BGP 调试,输入“no”形式的命令。例如,要禁用事件调试,输入 no debug events 命令。

BGP 日志消息也可以在 SonicOS GUI 的日志 > 视图页面查看。BGP 消息作为日志消息中高级路由类别的一部分显示。

以上消息显示对出站 RIB 的更新被拒绝,因为更新的来源路由器未直接连接到设备。

要允许未直接连接的 BGP 对等项,请使用 ebgp-multihop 关键字与 neighbor 命令。例如:

neighbor 10.50.165.228 ebgp-multihop

IPv6 BGP

IPv6 边界网关协议 (BGP) 在自治系统 (AS) 之间交流 IPv6 路由信息。具备 IPv6 BGP 支持的 Dell SonicWALL 安全设备可以替代网络自治系统使用的传统 BGP 路由器。

IPv6 BGP 在网络 > 路由页面启用,但必须在 SonicOS 命令行接口 (CLI) 进行配置。

以下限制适用于 SonicOS 6.2:

• 仅 NSA 平台上支持 IPv6 BGP。

• IPv6 BGP 取决于 IPv6 功能和 ZebOS (Zebra OS)。

• IPv6 BGP 中不支持 MPLS/VPN 和组播。

配置多个自治系统

如果自治系统 (AS) 具有多个 BGP 路由器,AS 可以用于其他 AS 的转换服务。BGP 在不同 AS 的路由器之间运行时使用外部 (eBGP)。BGP 在相同 AS 的路由器之间运行时使用内部 (eBGP)。

在下图中,AS 200 是 AS 100 和 AS 300 的转换 AS。

ebgp_ibgp_AS_diagram.jpg

 

要如上图所示配置多个 AS,请配置路由器 RTA、RTB 和 RTC,如下所示:

在 RTA:

router bgp 100

neighbor 129.213.1.1 remote−as 200

 

address-family ipv6

redistribute connected

neighbor 129.213.1.1 activate

在 RTB:

router bgp 200

neighbor 129.213.1.2 remote−as 100

neighbor 175.220.1.2 remote−as 200

 

address-family ipv6

redistribute connected

neighbor 129.213.1.2 activate

neighbor 175.220.1.2 activate

在 RTC:

router bgp 200

neighbor 175.220.212.1 remote−as 200

 

address-family ipv6

neighbor 175.220.212.1 activate

neighbor 175.220.212.1 activate

 

配置基本 BGP over IPv6

可以配置 IPv6 BGP 对等路由器以通过 IPv6 地址族或 IPv4 地址族传输 IPv4 或 IPv6 路由信息。

AS6501_AS6502.jpg

 

 

要配置基本 BGP over IPv6,请配置路由器 R1 和 R2,如下所示:

在 R1:

router bgp 6501

bgp router−id 1.1.1.1

neighbor 2011:11:11:11::2 remote−as 6502

 

address−family ipv6

neighbor 2011:11:11:11::2 activate

exit−address−family

在 R2:

router bgp 6502

bgp router−id 2.2.2.2

neighbor 2011:11:11:11::1 remote−as 6501

 

address−family ipv6

network 1010::1/128

network 2020::1/128

neighbor 2011:11:11:11::1 activate

 

配置 EBGP Multihop

EBGP Multihop 用于在两个未直接相连的外部对等机之间建立相邻连接。Multihop 仅可用于 eBGP,不适用于 iBGP。如果防火墙具有无直接连接的外部邻居,您可以使用 ebgp−multihop 命令建立邻居连接。

要配置 EBGP Multihop,请配置路由器 R1 和 R2,如下所示:

在 R1:

router bgp 6501

bgp router−id 1.1.1.1

neighbor 2011:11:11:11::2 remote−as 6502

neighbor 2011:11:11:11::2 ebgp−multihop

 

address−family ipv6

neighbor 2011:11:11:11::2 activate

exit−address−family

 

在 R2:

router bgp 6502

bgp router−id 2.2.2.2

neighbor 2011:11:11:11::1 remote−as 6501

neighbor 2011:11:11:11::1 ebgp−multihop

 

address−family ipv6

network 1010::1/128

network 2020::1/128

neighbor 2011:11:11:11::1 activate

配置 IPv6 BGP 出站路由过滤器

IPv6 BGP 出站路由过滤器 (ORF) 可用于通过滤除来源处的多余路由更新来最大限度减少在对等路由器之间发送的 BGP 更新数。

要配置 IPv6 BGP 出站路由过滤器 (ORF),请配置路由器 R1 和 R2,如下所示:

在 R1:

router bgp 6501

bgp router−id 1.1.1.1

neighbor 2011:11:11:11::2 remote−as 6502

 

address−family ipv6

redistribute connected

neighbor 2011:11:11:11::2 activate

neighbor 2011:11:11:11::2 prefix-list pref1 in

neighbor 2011:11:11:11::2 prefix-list pref2 out

exit−address−family

 

ipv6 prefix-list pref1 seq 10 deny 1010::1/128

ipv6 prefix-list pref1 seq 20 permit any

ipv6 prefix-list pref2 seq 10 deny 1111::1/128

ipv6 prefix-list pref2 seq 20 permit any

在 R2:

router bgp 6502

bgp router−id 2.2.2.2

neighbor 2011:11:11:11::1 remote−as 6501

 

address−family ipv6

redistribute connected

neighbor 2011:11:11:11::1 activate

 

要检查 R1 和 R2 上的路由,请使用 show bgp ipv6 unicast 命令。
R1 上的路由应具有 IPv6 地址 1010::1/128。
R2 上的路由应具有 IPv6 地址 1111::1/128。

在 R1:

R1> show bgp ipv6 unicast

在 R2:

R2> show bgp ipv6 unicast

 

 

配置 IPv6 BGP 分布列表

IPv6 BGP 分布列表可用于通过滤除来源处的多余路由更新来最大限度减少在对等路由器之间发送的 BGP 更新数。

要配置基本 IPv6 BGP 分布列表,请配置路由器 R1 和 R2,如下所示:

在 R1:

router bgp 6501

bgp router−id 1.1.1.1

neighbor 2011:11:11:11::2 remote−as 6502

 

address−family ipv6

redistribute connected

neighbor 2011:11:11:11::2 activate

neighbor 2011:11:11:11::2 distribute-list acl1 in

neighbor 2011:11:11:11::2 distribute-list acl2 out

exit−address−family

 

ipv6 access-list acl1 deny 1010::1/128

ipv6 access-list acl1 permit any

ipv6 access-list acl2 deny 1111::1/128

ipv6 access-list acl2 permit any

在 R2:

router bgp 6502

bgp router−id 2.2.2.2

neighbor 2011:11:11:11::1 remote−as 6501

 

address−family ipv6

redistribute connected

neighbor 2011:11:11:11::1 activate

 

要检查 R1 和 R2 上的路由,请使用 show bgp ipv6 unicast 命令。
R1 上的路由应具有 IPv6 地址 1010::1/128。
R2 上的路由应具有 IPv6 地址 1111::1/128。

在 R1:

R1> show bgp ipv6 unicast

在 R2:

R2> show bgp ipv6 unicast

 

IPv6 BGP 路由映射

IPv6 BGP 路由映射可用于通过滤除来源处的多余路由更新来最大限度减少在对等路由器之间发送的 BGP 更新数。

要配置基本 IPv6 BGP 路由映射,请配置路由器 R1 和 R2,如下所示:

在 R1:

router bgp 6501

bgp router−id 1.1.1.1

neighbor 2011:11:11:11::2 remote−as 6502

 

address−family ipv6

redistribute connected

neighbor 2011:11:11:11::2 activate

neighbor 2011:11:11:11::2 route-map map1 in

neighbor 2011:11:11:11::2 route-map map2 out

exit−address−family

 

ipv6 access-list acl1 deny 1010::1/128

ipv6 access-list acl1 permit any

ipv6 access-list acl2 deny 1111::1/128

ipv6 access-list acl2 permit any

!

route-map map1 permit 1 match ipv6 address acl1

!

route-map map2 permit 1 match ipv6 address acl2

!

在 R2:

router bgp 6502

bgp router−id 2.2.2.2

neighbor 2011:11:11:11::1 remote−as 6501

 

address−family ipv6

redistribute connected

neighbor 2011:11:11:11::1 activate

 

要检查 R1 和 R2 上的路由,请使用 show bgp ipv6 unicast 命令。

在 R1:

R1> show bgp ipv6 unicast

 

R1 上的路由应具有 IPv6 地址 1010::1/128。

在 R2:

R2> show bgp ipv6 unicast

 

R2 上的路由应具有 IPv6 地址 1111::1/128。

 

配置 AS 正则表达式

您可以配置可被匹配并用于拒绝或允许来自 AS 的地址的正则表达式。

rta_rtr_rtc_diagram.png

 

 

RTB 发布以下这些路由:

• 2004::/64

• 2003::/64

• 2002::/64

 

RTC 发布以下这些路由:

• 5000::/64

• 6666::6/128

• 7777::7/128

 

要检查路由器 RTA 上的路由,请使用 show bgp ipv6 unicast 命令。

在 RTA:

RTA> show bgp ipv6 unicast

 

BGP table version is 4, local router ID is 10.0.1.2

Status codes: s suppressed, d damped, h history, * valid, > best,
i - internal, l - labeled

S Stale

Origin codes: i - IGP, e - EGP, ?- incomplete

Network

Next Hop

Metric

LocPrf

Weight

Path

*> 2002::/64

::ffff:a00:101

0

0

100

i

*> 2003::/64

::ffff:a00:101

0

0

100

i

*> 2004::/64

::ffff:a00:101

0

0

100

i

*> 5000::/64

::ffff:a00:101

0

0

100

400i

*> 6666::6/128

::ffff:a00:101

0

0

100

400

*> 7777::7/128

::ffff:a00:101

0

0

100

400

要配置 RTA 上的 AS 正则表达式并拒绝来源于 AS100 的所有路由:

router bgp 200

neighbor 10.0.1.1 remote-as 100

neighbor 10.0.1.1 update-source X2

neighbor 2004::1 remote-as 100

neighbor 2004::1 update-source X2

!

address-family ipv6

neighbor 10.0.1.1 activate

neighbor 10.0.1.1 filter-list 1 in

neighbor 2004::1 activate

exit-address-family

 

ip as-path access-list 1 deny ^100$

ip as-path access-list 1 permit .*

 

要检查路由器 RTA 上的路由,请使用 show bgp ipv6 unicast 命令。

在 RTA:

RTA> show bgp ipv6 unicast

 

BGP table version is 4, local router ID is 10.0.1.2

Status codes: s suppressed, d damped, h history, * valid, > best,
i - internal, l - labeled

S Stale

Origin codes: i - IGP, e - EGP, ?- incomplete

Network

Next Hop

Metric

LocPrf

Weight

Path

*> 5000::/64

::ffff:a00:101

0

0

100

400i

*> 6666::6/128

::ffff:a00:101

0

0

100

400i

*> 7777::7/128

::ffff:a00:101

0

0

100

400i

Total number of prefixes 3

 

要修改 AS 路径以拒绝学习自 AS100 的所有路由:

在 RTA:

router bgp 200

neighbor 10.0.1.1 remote-as 100

neighbor 10.0.1.1 update-source X2

neighbor 2004::1 remote-as 100

neighbor 2004::1 update-source X2

!

address-family ipv6

neighbor 10.0.1.1 activate

neighbor 10.0.1.1 filter-list 1 in

neighbor 2004::1 activate

exit-address-family

 

ip as-path access-list 1 deny _100_

ip as-path access-list 1 permit .*

 

要检查路由器 RTA 上的路由,请使用 show bgp ipv6 unicast 命令。

在 RTA:

RTA> show bgp ipv6 unicast

 

EBGP 路由选择

路由根据所运行的路由协议的管理距离进行选择。管理距离较短的路由协议较之管理距离较长的路由协议具有更高的优先级。EBGP 的管理距离为 20。OSPF 的管理距离为 110。

本图显示 BGP 路由器使用的三个 AS 和路由协议。

bgp_route_selection.png

 

AS300 中的 RTC 路由器对 AS100 和 AS200 发布路由 1000::/64。
从 RTC (AS300) 至 RTA (AS100) 的路由运行 OSPF。
从 RTC (AS300) 至 RTB (AS200) 的路由运行 eBGP。
从 RTA (AS100) 至 RTB (AS200) 的路由运行 eBGP。

RTA (AS100) 接收来自 OSPF 和 eBGP 的路由 1000::/64 的更新。学习自 eBGP 的路由被选择和添加到 RTA 的路由表,因为 eBGP 的管理距离小于 OSPF 的管理距离。

在 RTA:

router bgp 100

neighbor 3001::1 remote-as 200

!

address-family ipv6

distance bgp 150 150 150

neighbor 3001::1 activate

exit-address-family

在 RTB:

router bgp 200

bgp log-neighbor-changes

neighbor 1001::1 remote-as 300

neighbor 2003::1 remote-as 100

 

address-family ipv6

network 6666::6/128

neighbor 1001::1 activate

neighbor 2003::1 activate

exit-address-family

在 RTC:

router bgp 300

neighbor 3002::1 remote-as 200

!

address-family ipv6 network 1000::/64

neighbor 3002::1 activate

exit-address-family

 

要检查路由器 RTA 上的路由,请使用 show ipv6 route 命令。

RTA> show ipv6 route

 

IPv6 Routing Table

 

Codes:K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - IS-IS, B - BGP

Timers:Uptime

 

B 1000::/64 [20/0] via fe80::204:27ff:fe0c:b006, X1, 00:01:07

C 2003::/64 via ::, X1, 00:30:50

B 6666::6/128 [20/0] via fe80::204:27ff:fe0c:b006, X1, 00:01:07

C fe80::/64 via ::, X1, 00:30:53

 

由于 RTC 与 RTA 直接相连,来自 OSPF 的路由实际优于 BGP 学习的路由。为了确保为路由表选择 RTA 与 RTC 之间的路由,您可以使用 distance 命令将 BGP 路由的默认管理距离更改为长于 OSPF 路由的管理距离。例如:

distance bgp 150 150 150

 

您还可以使用 backdoor neighbor 命令设置 BGP 路由为首选路由。例如:

在 RTA:

router bgp 100

neighbor 3001::1 remote-as 200

!

address-family ipv6

network 1000::/64

backdoor neighbor 3001::1 activate

exit-address-family

 

要检查路由器 RTA 上的路由,请使用 show ipv6 route 命令。

RTA> show ipv6 route

 

IPv6 Routing Table

 

Codes:K - kernel route, C - connected, S - static, R - RIP, O - OSPF, I - IS-IS, B - BGP

Timers:Uptime

 

O 1000::/64 [110/2] via fe80::217:c5ff:feb4:57f2, X4, 00:30:53

C 2003::/64 via ::, X1, 0:31:18

B 6666::6/128 [20/0] via fe80::204:27ff:fe0c:b006, X1, 0:00:03

C fe80::/64 via ::, X1, 0:31:21

IPv6 BGP 同步

IPv6 BGP 同步保持所有 BGP 路由更新为所有可用路由和网络的 IPv6 地址。

在 BGP 同步中,如果 AS (AS100) 从另一个 AS (AS300) 向第三个 AS (AS400) 传输流量,则 BGP 不发布该路由,直至 AS100 中的所有路由器向 IGP 学习该路由。在这种情况中,IGP 是 iBGP。AS100 必须等待至 iBGP 向 AS100 中的所有路由器传播该路由。然后,eBGP 向外部 AS 发布该路由。

在本例中,RTB 通过 iBGP 学习地址 6666::6/128,然后向 RTD 发布地址。

bgp_sync.png

 

注 您可以通过向 RTB 上的 6666::6/128 添加静态路由和确保其他路由可以达到 6666::6/128 让 RTB 认为 IGP 已传播路由信息。

在本例中,RTC (AS2) 向 RTA (AS100) 发布地址 6666::6/128。在 AS100 中,RTA 和 RTB 运行 iBGP,所以 RTB 学习地址 6666::6/128 并可以通过下一个跃点 5.5.5.5 (RTC) 到达。下一个跃点通过 iBGP 传送。但是,要达到下一个跃点 (RTC),RTB 必须通过 RTE 发送流量,但 RTE 不知道 IP 地址 6666::6/128。

如果 RTB 向 RTD (AS400) 发布 6666::6/128,则尝试从 RTD 到达 6666::6/128 的流量必须经过 AS100 中的 RTB 和 RTE。但是由于 RTE 未学习 6666::6/128,所有数据包将在 RTE 被丢弃。

要在 AS100 中配置 RTB 上的 BGP 同步:

在 RTB:

router bgp 100

neighbor 10.103.10.129 remote-as 100

neighbor 3001::1 remote-as 100

neighbor 3001::1 update-source X4

neighbor 5000::1 remote-as 400

neighbor 5000::1 update-source X2

!

address-family ipv6

synchronization

neighbor 10.103.10.129 activate

neighbor 3001::1 activate

neighbor 5000::1 activate

exit-address-family

 

如果您不通过中间 AS 从一个 AS 向另一个 AS 传输流量,可以禁用同步。如果中间 AS 中的所有路由器都运行 BGP,您也可以禁用同步。禁用同步可以在 IGP 中传送较少的路由,并允许 BGP 更快汇合。

要在 AS100 中禁用 RTB 上的 BGP 同步:

在 RTB:

router bgp 100

neighbor 10.103.10.129 remote-as 100

neighbor 3001::1 remote-as 100

neighbor 3001::1 update-source X4

neighbor 5000::1 remote-as 400

neighbor 5000::1 update-source X2

!

address-family ipv6

neighbor 10.103.10.129 activate

neighbor 3001::1 activate

neighbor 5000::1 activate

exit-address-family

 

BGP 路由反射

默认情况下,AS 中的所有 iBGP 路由器必须采用完全网状配置。每个路由器必须配置为每个其他路由器的对等路由器。

通过路由反射,所有 iBGP 无需完全结网。路由反射使 AS 中的各 iBGP 路由器无需与所有其他 iBGP 路由器通信。iBGP 路由器可以被指定为路由反射器,并向多个 iBGP 客户端传送 iBGP 学习的路由。

当路由器被配置为路由反射器,将作为所有其他 iBGP 路由器获取 iBGP 学习的路由的单一点。路由反射器充当服务器,而不是 AS 中的每个其他路由器的对等路由器。所有其他 IBGP 路由器变为路由反射器的客户端。路由器只要有至少一个路由反射器客户端,就成为路由反射器。

bgp_route_reflector.png

 

要在 AS 中配置路由反射:

在 RouterA:

interface Serial0/0

ipv6 address 2011:12:12:12::1/64

ipv6 ospf 10 area 0

 

interface Serial0/1

ipv6 address 2011:13:13:13::1/64

ipv6 ospf 10 area 0

 

router bgp 100

 

bgp router−id 1.1.1.1

no bgp default ipv4−unicast

bgp log−neighbor−changes

neighbor 2011:22:22:22::22 remote−as 100

neighbor 2011:22:22:22::22 update−source Loopback0

neighbor 2011:33:33:33::33 remote−as 100

neighbor 2011:33:33:33::33 update−source Loopback0

!

address−family ipv6

neighbor 2011:22:22:22::22 activate

neighbor 2011:22:22:22::22 route−reflector−client

neighbor 2011:33:33:33::33 activate

neighbor 2011:33:33:33::33 route−reflector−client

exit−address−family

!

ipv6 router ospf 10

router−id 1.1.1.1

 

在 RRClient1:

interface Loopback0

ipv6 address 2011:22:22:22::22/128

ipv6 ospf 10 area 0

!

interface Loopback10

ipv6 address 1010:10:10:10::10/128

 

interface Serial0/0

ipv6 address 2011:12:12:12::2/64

ipv6 ospf 10 area 0

!

router bgp 100

bgp router−id 2.2.2.2

bgp log−neighbor−changes

neighbor 2011:11:11:11::11 remote−as 100

neighbor 2011:11:11:11::11 update−source Loopback0

!

address−family ipv6

neighbor 2011:11:11:11::11 activate

network 1010:10:10:10::10/128

exit−address−family

!

ipv6 router ospf 10

router−id 2.2.2.2

RRClient2:

interface Loopback0

ipv6 address 2011:33:33:33::33/128

ipv6 ospf 10 area 0

!

interface Loopback20

ipv6 address 2020:20:20:20::20/128

!

interface Serial0/0

no ip address

ipv6 address 2011:13:13:13::2/64

ipv6 ospf 10 area 0

!

router bgp 100

bgp router−id 3.3.3.3

bgp log−neighbor−changes

neighbor 2011:11:11:11::11 remote−as 100

neighbor 2011:11:11:11::11 update−source Loopback0

!

address−family ipv6

neighbor 2011:11:11:11::11 activate

network 2020:20:20:20::20/128

exit−address−family

!

ipv6 router ospf 10

router−id 3.3.3.3

log−adjacency−changes

要检查路由,请使用 show bgp ipv6 unicast 命令。

在 RRClient1:

RRClient1> show bgp ipv6 unicast

 

您应该使用路由 2020:20:20:20::20/128。

在 RRClient2:

RRClient2> show bgp ipv6 unicast

 

您应该使用路由 1010:10:10:10::10/128。

 

IPv6 BGP 本地首选

本地首选指定通向某网络的路由作为来自 AS 的网络首选出口路由。具有最高本地首选级别的路由是首选路由。本地首选的默认值是 100,但可以使用 set local-preference 命令更改。

IPv6_BGP_local_preference.jpg

 

要配置 AS 中首选路由的本地首选:

在 R1:

interface Loopback0

ipv6 address 1111:111:111:A::/64 eui−64

ipv6 ospf 10 area 0

 

interface FastEthernet0/0

ipv6 address AB01:CD1:123:A::/64 eui−64

ipv6 ospf 10 area 0

!

interface Serial0/0

ipv6 address AB01:CD1:123:C::/64 eui−64

!

interface FastEthernet0/1

ipv6 address AB01:CD1:123:B::/64 eui−64

ipv6 ospf 10 area 0

!

ipv6 router ospf 10 router−id 1.1.1.1 log−adjacency−changes

redistribute connected route−map CONNECTED

!

route−map CONNECTED permit 10

match interface Serial0/0

!

router bgp 123

bgp router−id 1.1.1.1

neighbor 2222:222:222:A:C602:3FF:FEF0:0 remote−as 123

neighbor 2222:222:222:A:C602:3FF:FEF0:0 update−source Loopback0

neighbor 3333:333:333:A:C603:3FF:FEF0:0 remote−as 123

neighbor 3333:333:333:A:C603:3FF:FEF0:0 update−source Loopback0

neighbor AB01:CD1:123:C:C604:16FF:FE98:0 remote−as 101

neighbor AB01:CD1:123:C:C604:16FF:FE98:0 ebgp−multihop 5

!

address−family ipv6

neighbor 2222:222:222:A:C602:3FF:FEF0:0 activate

neighbor 2222:222:222:A:C602:3FF:FEF0:0 next−hop−self

neighbor 3333:333:333:A:C603:3FF:FEF0:0 activate

neighbor 3333:333:333:A:C603:3FF:FEF0:0 next−hop−self

neighbor AB01:CD1:123:C:C604:16FF:FE98:0 activate exit−address−family

 

在 R2:

interface Loopback0

ipv6 address 2222:222:222:A::/64 eui−64

ipv6 ospf 10 area 0

!

interface FastEthernet0/0

ipv6 address AB01:CD1:123:A::/64 eui−64

ipv6 ospf 10 area 0

!

interface FastEthernet0/1

ipv6 address AB01:CD1:123:D::/64 eui−64

ipv6 ospf 10 area 0

!

ipv6 router ospf 10 router−id 2.2.2.2 log−adjacency−changes

!

router bgp 123

bgp router−id 2.2.2.2

neighbor 1111:111:111:A:C601:3FF:FEF0:0 remote−as 123

neighbor 1111:111:111:A:C601:3FF:FEF0:0 update−source Loopback0

neighbor 3333:333:333:A:C603:3FF:FEF0:0 remote−as 123

neighbor 3333:333:333:A:C603:3FF:FEF0:0 update−source Loopback0

 

address−family ipv6

neighbor 1111:111:111:A:C601:3FF:FEF0:0 activate

neighbor 3333:333:333:A:C603:3FF:FEF0:0 activate

exit−address−family

 

在 R3:

interface Loopback0

ipv6 address 3333:333:333:A::/64 eui−64

ipv6 ospf 10 area 0

!

interface FastEthernet0/0

ipv6 address AB01:CD1:123:B::/64 eui−64

ipv6 ospf 10 area 0

!

interface Serial0/0

ipv6 address AB01:CD1:123:E::/64 eui−64

!

interface FastEthernet0/1

ipv6 address AB01:CD1:123:D::/64 eui−64

ipv6 ospf 10 area 0

!

ipv6 router ospf 10

router−id 3.3.3.3

redistribute connected route−map CONNECTED

!

router bgp 123

no synchronization

bgp router−id 3.3.3.3

neighbor 1111:111:111:A:C601:3FF:FEF0:0 remote−as 123

neighbor 1111:111:111:A:C601:3FF:FEF0:0 update−source Loopback0

neighbor 2222:222:222:A:C602:3FF:FEF0:0 remote−as 123

neighbor 2222:222:222:A:C602:3FF:FEF0:0 update−source Loopback0

neighbor AB01:CD1:123:E:C605:16FF:FE98:0 remote−as 202

neighbor AB01:CD1:123:E:C605:16FF:FE98:0 ebgp−multihop 5

!

address−family ipv6

neighbor 1111:111:111:A:C601:3FF:FEF0:0 activate

neighbor 1111:111:111:A:C601:3FF:FEF0:0 next−hop−self

neighbor 1111:111:111:A:C601:3FF:FEF0:0 route−map LOCAL_PREF out

neighbor 2222:222:222:A:C602:3FF:FEF0:0 activate

neighbor 2222:222:222:A:C602:3FF:FEF0:0 next−hop−self

neighbor 2222:222:222:A:C602:3FF:FEF0:0 route−map LOCAL_PREF out

neighbor AB01:CD1:123:E:C605:16FF:FE98:0 activate

exit−address−family

!

ipv6 prefix−list 10 seq 5 permit BC01:BC1:10:A::/64

!

route−map LOCAL_PREF permit 10

match ipv6 address prefix−list 10

set local−preference 500

!

route−map LOCAL_PREF permit 20

!

route−map CONNECTED permit 10

match interface Serial0/0

在 R4:

interface Serial0/0

ipv6 address AB01:CD1:123:C::/64 eui−64

!

interface Loopback10

ipv6 address BC01:BC1:10:A::/64 eui−64

!

interface Loopback11

ipv6 address BC02:BC1:11:A::/64 eui−64

!

interface Loopback12

ipv6 address BC03:BC1:12:A::/64 eui−64

 

router bgp 101

bgp router−id 4.4.4.4

neighbor AB01:CD1:123:C:C601:3FF:FEF0:0 remote−as 123

!

address−family ipv6

neighbor AB01:CD1:123:C:C601:3FF:FEF0:0 activate

network BC01:BC1:10:A::/64 network BC02:BC1:11:A::/64

network BC03:BC1:12:A::/64 exit−address−family

在 R5:

interface Serial0/0

ipv6 address AB01:CD1:123:E::/64 eui−64

clock rate 2000000

!

interface Loopback10

ipv6 address BC01:BC1:10:A::/64 eui−64

!

interface Loopback11

ipv6 address BC02:BC1:11:A::/64 eui−64

!

interface Loopback12

ipv6 address BC03:BC1:12:A::/64 eui−64

!

router bgp 202

bgp router−id 5.5.5.5

neighbor AB01:CD1:123:E:C603:3FF:FEF0:0 remote−as 123

neighbor AB01:CD1:123:E:C603:3FF:FEF0:0 ebgp−multihop 5

!

address−family ipv6

neighbor AB01:CD1:123:E:C603:3FF:FEF0:0 activate

network BC01:BC1:10:A::/64

network BC02:BC1:11:A::/64

network BC03:BC1:12:A::/64

exit−address−family

 

要验证路由,请使用 show bgp ipv6 unicast 命令:

在 R2:

R2> show bgp ipv6 unicast

 

在配置本地首选之前,R2 具有 R1 作为所有习得 IPv6 地址的下一个跃点。在将 R3 上的本地首选配置为 500 后,R2 对前缀 BC01:BC1:10:A::/64 具有不同的首选出口路由。现在,R2 可以通过 R3 的出口路径到达前缀 BC01:BC1:10:A::/64,该路由现被指定为本地首选。

 

BGP 对等组更新策略

BGP 对等组是一组共享相同更新策略的 BGP 邻居。更新策略通常按路由映射、分布列表和过滤器列表设置。

在您定义对等组和向其添加邻居时,分配到该对等组的所有更新策略均应用于对等组的所有邻居。您无需定义各邻居的策略。

对等组的成员继承该对等组的所有配置设置。您可以配置某些成员更改更新策略,但只有在对入站流量设置这些策略时才适用。如果策略应用于出站流量,您就无法配置成员以更改组策略。

ipv6_bgp_peer_groups.jpg

 

要配置 IPv6 BGP 对等组及其更新策略:

在 R3:

router bgp 123

no synchronization

bgp router−id 3.3.3.3

neighbor interalmap peer-group

neighbor interalmap remote-as 123

neighbor 1111:111:111:A:C601:3FF:FEF0:0 peer-group interalmap

neighbor 2222:222:222:A:C602:3FF:FEF0:0 peer-group interalmap

neighbor AB01:CD1:123:E:C605:16FF:FE98:0 remote−as 202

neighbor AB01:CD1:123:E:C605:16FF:FE98:0 ebgp−multihop 5

!

address−family ipv6

neighbor interalmap activate

neighbor interalmap route-map 1 out

neighbor 1111:111:111:A:C601:3FF:FEF0:0 peer-group interalmap

neighbor 2222:222:222:A:C602:3FF:FEF0:0 peer-group interalmap

exit−address−family

!

ipv6 prefix−list 10 seq 5 permit BC01:BC1:10:A::/64

!

route-map 1 permit 10

match ipv6 address prefix-list 1 set tag 333

set metric 273

set local-preference 312

 

要验证是否已配置正确的本地首选路由,请使用 show bgp ipv6 unicast 命令:

在 R3:

R3> show bgp ipv6 unicast

 

验证 IPv6 地址 BC01:BC1:10:A::/64 从 AS100 传递至 R1 和 R2,且度量和本地首选被设为相应的路由映射设置。

 

BGP 联盟

您可以将一个 AS 分为多个 AS,然后将这些 AS 分配到一个 AS 联盟。BGP 联盟的实施缩小了 AS 的 iBGP 网,且联盟仍可以作为单个 AS 向外部对等系统发布路由。

联盟内的每个 AS 运行完全结网的 iBGP,且联盟内的每个 AS 还运行与联盟内其他 AS 的 eBGP 连接。联盟内的这些 eBGP 对等系统像使用 iBGP 一样交换路由信息。这样,联盟保留下一个跃点、度量和本地首选信息。联盟对外部显示为单个 AS。

ipv6_bgp_confederation.png

 

要配置 BGP 联盟:

R1:

router bgp 2000

bgp log-neighbor-changes

bgp confederation identifier 200

bgp confederation peers 1000

neighbor 2003::1 remote-as 1000

!

address-family ipv4

neighbor 2003::1 activate

exit-address-family

!

address-family ipv6

network 3002::/64

network 4000::/64

neighbor 2003::1 activate

exit-address-family

在 R2:

router bgp 1000

bgp confederation identifier 200

neighbor 10.0.1.1 remote-as 1000

!

address-family ipv6

neighbor 10.0.1.1 activate

exit-address-family

 

在 R3:

router bgp 1000

bgp confederation identifier 200

bgp confederation peers 2000

neighbor 10.0.1.2 remote-as 1000

neighbor 3001::1 remote-as 2000

neighbor 5000::1 remote-as 100

neighbor 5000::1 update-source X2

!

address-family ipv6

neighbor 10.0.1.2 activate

neighbor 3001::1 activate

neighbor 5000::1 activate

exit-address-family

 

在 R5:

router bgp 100

bgp router-id 5.5.5.5

bgp log-neighbor-changes

neighbor 2002::1 remote-as 200

!

address-family ipv6

network 6666::6/128

network 7777::7/128

neighbor 2002::1 activate

exit-address-family

 

验证 R1、R2 和 R3 可以学习 R5 发布的该路由:

6666::6/128 和 7777::7/128

 

验证 R2 可以向 R1 学习该路由,即使两者未直接相连:

3002::/64 和 4000::/64

 

注 IPv6 BGP 配置数据和 IPv6 BGP 路由被转储到终止并驻留程序 (TSR) 文件。

IPv6 BGP 使用 ZebOS 调试接口。所有调试交换机的默认设置被关闭。在控制台输入 CLI debug 命令可以打开调试交换机。

BGP 术语

ARD - 自治路由域 - 具有共用管理路由策略的网络/路由器的集合。

AS - 自治系统 - 分配有识别号的 ARD,通常在边界路由器运行 BGP4。

BGP4 - 边界网关协议 4:最普遍的 EGP。

CIDR - 无分类的域间路由,允许通过路由组的高效路由发布。

CPE - 客户前端设备 - 用于在客户网络与 ISP 交互的设备。

EGP - 外部网关协议 - 用于在自治系统之间进行路由信息通信的任何协议(通常是 BGP4)。

完整路由 - 完整的全局 BGP 路由表。

FIB - 转发信息库 - 用于查找出口接口和转发数据包时的下一跃点的现有路由表。

视窗* - 视窗 (LG) 服务器是运行 LG 服务器的组织中路由器的只读视图。通常,可公共访问的视窗服务器由 ISP 或 NOC 运行。

多宿主 - 与一个或多个 ISP 有多个连接的 ISP 客户。

多提供商 - 使用多个 ISP 连接互联网的 ISP 客户。

NSM - 网络服务模块 - 用于聚集接口至 FIB 和 RIB 的 ZebOS 组件。单独的路由协议守护程序与所有 RIB 更新的 NSM 交互。NSM 使用来自 RIB 的最佳路由信息独立更新 FIB。 

部分路由 - 完整 BGP 路由表的子集,通常针对于作为 ISP 域一部分的目标。

RIB - 路由信息库 - NSM 拥有的运行时数据库,用于存储路由协议收集和使用的所有路由信息。