Citrix ADC

配置 BGP

Citrix ADC 设备支持 BGP(RFC 4271)。Citrix ADC 上的 BGP 功能包括:

  • Citrix ADC 向 BGP 对等方公布路由。
  • Citrix ADC 将主机路由注入到虚拟 IP 地址 (VIP),具体取决于底层虚拟服务器的运行状况。
  • 在 HA 配置中进行故障转移后,Citrix ADC 会生成用于在辅助节点上运行 BGP 的配置文件。
  • 该协议支持 IPv6 路由交换。
  • 边界网关协议中的 As-Override 支持

启用 BGP 后,您需要配置 BGP 路由的通告。要进行故障排除,您可以限制 BGP 传播。您可以显示 BGP 设置来验证配置。

IPv6 BGP 的先决条件

在开始配置 IPv6 BGP 之前,请执行以下操作:

  • 确保你了解 IPv6 BGP 协议。
  • 启用 IPv6 功能。

启用和禁用 BGP

要启用或禁用 BGP,必须使用 CLI 或 GUI。启用 BGP 后,Citrix ADC 设备将启动 BGP 进程。禁用 BGP 后,设备将停止 BGP 进程。

要使用 CLI 启用或禁用 BGP 路由,请执行以下操作:

在命令提示符下,键入以下命令之一:

  • 启用 ns 功能 BGP

  • 禁用 ns 功能 BGP

要使用 GUI 启用或禁用 BGP 路由,请执行以下操作:

  1. 导航到系统 > 设置,在模式和功能组中,单击更改高级功能。
  2. 选择或清除 BGP 路由选项。

宣传 IPv4 路线

您可以将 Citrix ADC 设备配置为向 VIP 通告主机路由和向下游网络通告路由。

要使用 VTYSH 命令行将 BGP 配置为通告 IPv4 路由,请执行以下操作:

在命令提示符下,按所示顺序键入以下命令:

命令 说明
VTYSH 显示 VTYSH 命令提示符。
配置终端 进入全局配置模式。
路由器 BGP < ASnumber> BGP 自治系统。< ASnumber>是必填参数。可能的值:1 到 4,294,967,295。
Neighbor < IPv4 address> remote-as < as-number> 使用指定自治系统中邻居的链路本地 IPv4 地址更新 IPv4 邻居表。
地址系列 ipv4 进入地址族配置模式。
邻居 < IPv4 address> 激活 使用链接本地地址在对等节点和本地节点之间交换 IPv4 路由器系列的前缀。
重新分发内核 重新分发内核路由。
重新分发静态 重新分配静态路由。

示例:


>VTYSH
NS# configure terminal
NS(config)# router BGP 5
NS(config-router)# Neighbor 10.102.29.170 remote-as 100
NS(config-router)# Address-family ipv4
NS(config-router-af)# Neighbor 10.102.29.170 activate
NS(config-router)# redistribute kernel
NS(config-router)# redistribute static
<!--NeedCopy-->

IPv6 BGP 的先决条件

在开始配置 IPv6 BGP 之前,请执行以下操作:

  • 确保你了解 IPv6 BGP 协议。
  • 启用 IPv6 功能。

通告 IPv6 BGP 路由

边界网关协议 (BGP) 使上游路由器能够在两台独立 Citrix ADC 设备上托管的两个相同虚拟服务器之间进行负载平衡流量。路由广告使上游路由器能够跟踪位于 Citrix ADC 后面的网络实体。

要使用 VTYSH 命令行将 BGP 配置为通告 IPv6 路由,请执行以下操作:

在命令提示符下,按所示顺序键入以下命令:

命令 说明
VTYSH 显示 VTYSH 命令提示符。
配置终端 进入全局配置模式。
路由器 BGP < ASnumber> BGP 自治系统。< ASnumber>是必填参数。可能的值:1 到 4,294,967,295。
Neighbor < IPv6 address> remote-as < as-number> 使用指定自治系统中邻居的链路本地 IPv6 地址更新 IPv6 邻居表。
地址系列 ipv6 进入地址族配置模式。
Neighbor < IPv6 address> activate 使用链接本地地址在对等节点和本地节点之间交换 IPv6 路由器系列的前缀。
重新分发内核 重新分发内核路由。
重新分发静态 重新分配静态路由。

示例:


>VTYSH
NS# configure terminal
NS(config)# router BGP 5
NS(config-router)# Neighbor a1bc::102 remote-as 100
NS(config-router)# Address-family ipv6
NS(config-router-af)# Neighbor a1bc::102 activate
NS(config-router)# redistribute kernel
NS(config-router)# redistribute static
<!--NeedCopy-->

验证 BGP 配置

您可以使用 VTYSH 显示 BGP 设置。

使用 VTYSH 命令行查看 BGP 设置

在命令提示符下,键入:

VTYSH
You are now in the VTYSH command prompt. An output similar to the following appears:
NS170#
At the VTYSH command prompt, type:
NS170# sh ip BGP
NS170# sh BGP
NS170# sh ip BGP neighbors
NS170# sh ip BGP summary
NS170# sh ip BGP route-map <map-tag>
<!--NeedCopy-->

边界网关协议中的 As-Override 支持

作为 BGP 环路防护功能的一部分,如果路由器在自治系统 (AS) 路径中收到包含路由器的自治系统编号 (ASN) 的 BGP 数据包,则路由器会丢弃该数据包。假设数据包来自路由器,并且已经到达了它的发源地。

如果企业有多个具有相同 ASN 的站点,则 BGP 环路防护会导致具有相同 ASN 的站点不会被另一个 ASN 链接。当另一个站点收到路由更新(BGP 数据包)时,它们将被丢弃。

为了解决此问题,Citrix ADC 的 ZeBOS BGP 路由模块中添加了 BGP AS 覆盖功能。

在为对等设备启用 AS 覆盖的情况下,当 Citrix ADC 设备收到要转发到对等设备的 BGP 数据包,并且该数据包的 ASN 与对等设备的 ASN 匹配时,设备将在转发数据包之前用自己的 ASN 编号替换 BGP 数据包的 ASN。

您可以使用 VTYSH 命令行为特定邻居或一组邻居(对等组)启用 AS 覆盖。

要使用 VTYSH 命令行为 IPv4 邻居配置 BGP AS 覆盖,请执行以下操作:

命令 说明
配置终端 进入全局配置模式。
router BGP < ASnumber> BGP 自治系统。< ASnumber>是必填参数。
Neighbor < IPv4 address> remote-as < as-number> 使用指定自治系统中邻居的 IPv4 地址更新 IPv4 BGP 邻居表。
Neighbor <IPv4 address> as-override 为指定的邻居启用 BGP 作为覆盖。
    > VTYSH NS# configure terminal
    NS(config)# router BGP 200
    NS(config-router)# Neighbor 192.0.2.100 remote-as 100
    NS(config-router)# Neighbor 10.102.29.100 as-override
<!--NeedCopy-->

要使用 VTYSH 命令行为 IPv4 BGP 对等组配置 BGP AS 覆盖,请执行以下操作:

命令 说明
configure terminal 进入全局配置模式。
router BGP < ASnumber> BGP 自治系统。< ASnumber>是必填参数。
Neighbor <peer group name> peer-group 创建 BGP 对等组。
Neighbot <IPv4 address> peer-group <peer group name> 将邻居关联到指定的对等组。
Neighbor <peer group name> remote-as < as-number> 使用指定自治系统中邻居的 IPv4 地址更新 IPv4 BGP 邻居表。
Neighbor <peer group name> as-override 为与指定对等组关联的所有邻居启用 BGP 作为覆盖。
    > VTYSH NS# configure terminal
    NS(config)# router BGP 200
    NS(config-router)# neighbor external-peers-1 peer-group
    NS(config-router)# neighbor 192.0.2.101 peer-group external-peers-1
    NS(config-router)# neighbor 192.0.2.102 peer-group external-peers-1
    NS(config-router)# neighbor 192.0.2.103 peer-group external-peers-1
    NS(config-router)# Neighbor external-peers-1 remote-as 100
    NS(config-router)# Neighbor external-peers-1 as-override
<!--NeedCopy-->

要使用 VTYSH 命令行为 IPv6 邻居配置 BGP AS 覆盖,请执行以下操作:

命令 说明
configure terminal 进入全局配置模式。
router BGP < ASnumber> BGP 自治系统。< ASnumber>是必填参数。
Neighbor < IPv6 address> remote-as < as-number> 使用指定自治系统中邻居的 IPv4 地址更新 IPv4 BGP 邻居表。
Neighbor <IPv6 address> as-override 为指定的邻居启用 BGP 作为覆盖。
地址系列 ipv6 进入地址族配置模式。
Neighbor < IPv6 address> activate 使用链接本地地址在指定邻居和 Citrix ADC 之间交换 IPv6 路由器系列的前缀。
Neighbor <IPv6 address> as-override 为指定的邻居启用 BGP 作为覆盖。
    > VTYSH NS# configure terminal
    NS(config)# router BGP 200
    NS(config-router)# Neighbor a1bc::102 remote-as 100
    NS(config-router)# Neighbor a1bc::102 as-override
    NS(config-router)# Address-family ipv6
    NS(config-router-af)# Neighbor a1bc::102 activate
    NS(config-router)# Neighbor a1bc::102 as-override
<!--NeedCopy-->

要使用 VTYSH 命令行为 IPv6 对等组配置 BGP AS 覆盖,请执行以下操作:

命令 说明
configure terminal 进入全局配置模式。
router BGP < ASnumber> BGP 自治系统。< ASnumber>是必填参数。
Neighbor <peer group name> peer-group 创建 BGP 对等组。
Neighbor <IPv6 address> peer-group <peer group name> 将邻居与指定的对等组关联。
Neighbor <peer group name> remote-as < as-number> 使用指定自治系统中邻居的 IPv4 地址更新 IPv4 BGP 邻居表。
Neighbor <peer group name> as-override 为与指定对等组关联的所有邻居启用 BGP 作为覆盖。
地址系列 ipv6 进入地址族配置模式。
Neighbor <peer group name> activate 使用链接本地地址在指定对等组的邻居与 Citrix ADC 之间交换 IPv6 路由器系列的前缀。
Neighbor <peer group name> as-override 为与指定对等组关联的所有邻居启用 BGP 作为覆盖。
    > VTYSH NS# configure terminal
    NS(config)# router BGP 200
    NS(config-router)# neighbor external-peers-2 peer-group
    NS(config-router)# neighbor 2001::1 peer-group external-peers-2
    NS(config-router)# neighbor 2001::2 peer-group external-peers-2
    NS(config-router)# Neighbor external-peers-2 remote-as 100
    NS(config-router)# Neighbor external-peers-2 as-override
    NS(config-router)# Address-family ipv6
    NS(config-router-af)# Neighbor external-peers-2 activate
    NS(config-router)# Neighbor external-peers-2 as-override
<!--NeedCopy-->

正常重启

在配置路由协议的非 INC 高可用性 (HA) 设置中,在故障转移之后,路由协议将被收敛,并了解新主节点与相邻邻路由器之间的路由。路线学习需要一些时间才能完成。在此期间,数据包的转发会延迟,网络性能可能会中断,数据包可能会丢弃。

正常重启允许在故障转移期间进行 HA 设置,以指示其相邻的路由器不要从其路由数据库中删除旧主节点的学习路由。使用旧主节点的路由信息,新的主节点和相邻的路由器会立即开始转发数据包,而不会影响网络性能。

注意:

INC 模式下的高可用性设置不支持正常重启。

为 BGP 配置正常重启

要使用 VTYSH 命令行为 BGP 配置正常重启,请在命令提示符下键入以下命令,按所示顺序:

命令 示例 命令描述
VTYSH VTYSH 进入 VTYSH 命令提示符。
configure terminal NS# configure terminal 进入全局配置模式。
router-id <ID> NS(config)# router-id 1.1.1.1 Citrix ADC 设备的路由器标识符。此标识符为所有动态路由协议设置。必须在高可用性设置中的另一个节点上指定相同的标识符,才能正常重启才能正常工作。
router bgp <AS-number> NS(config)# router bgp 5 进入 BGP 配置模式。
bgp graceful-restart NS(config)# bgp graceful-restart 在 BGP 路由过程中启用正常重启。
bgp graceful-restart restart-time <1-1800> NS(config-router)# bgp graceful-restart restart-time 170 指定故障转移后帮助路由器等待来自新主节点的 TCP 连接的宽限期(以秒为单位)。在这段时间内,帮助路由器会保留路由。
bgp graceful-restart stalepath-time <1-1800> NS(config-router)# bgp graceful-restart stalepath-time 180 指定处于帮助程序模式的 Citrix ADC 设备保留用于重新启动邻居路由器的过时路由的时间(以秒为单位)。默认值为 360 秒。
neighbor <IPv4 address of the peer router> remote-as <AS-number> NS(config-router)# neighbor 192.0.2.30 remote-as 2 与指定的邻居路由器设备建立 BGP 对等关系。
neighbor <IPv4 address of the peer router> capability graceful-restart NS(config-router)# neighbor 192.0.2.30 capability graceful-restart 启用与指定邻居的正常重启。
重新分发内核 NS(config-router)# redistribute kernel 重新分发内核路由。

为 IPv6 BGP 配置正常重启

要使用 VTYSH 命令行为 IPv6 BGP 配置正常重启,请在命令提示符下键入以下命令,按所示顺序:

命令 示例 命令描述
VTYSH VTYSH 进入 VTYSH 命令提示符。
configure terminal NS# configure terminal 进入全局配置模式。
router-id <id> NS(config)# router-id 1.1.1.1 为 Citrix ADC 设备设置路由器标识符。此标识符为所有动态路由协议设置。必须在高可用性设置的另一个节点中指定相同的 ID,才能正常重启才能正常工作。
router bgp <AS-number> NS(config)# router bgp 5 进入 BGP 协议的配置模式。
bgp graceful-restart NS(config)# bgp graceful-restart 在 BGP 路由过程中启用正常重启。
bgp graceful-restart restart-time <1-1800> NS(config-router)# bgp graceful-restart restart-time 170 指定故障转移后帮助路由器等待来自新主节点的 TCP 连接的宽限期(以秒为单位)。在这段时间内,帮助路由器会保留路由。默认值为 360 秒。
bgp graceful-restart stalepath-time <1-1800> NS(config-router)# bgp graceful-restart stalepath-time 180 指定处于帮助程序模式的 Citrix ADC 设备保留用于重新启动邻居路由器的过时路由的时间(以秒为单位)。默认值为 360 秒。
neighbor <IPv6 address> remote-as <AS-number> NS(config-router)# neighbor 2001:db8::10 remote-as 2 与指定的邻居路由器设备建立 BGP 对等关系。
address-family ipv6 NS(config-router)#address-family ipv6 进入地址族配置模式。
neighbor <IPv6 address of the neighbor> activate NS(config-router-af)#neighbor 2001:db8::10 activate 允许与指定的邻居路由器设备交换地址族路由。
neighbor <IPv6 address of the neighbor> capability graceful-restart NS(config-router-af)#neighbor 2001:db8::10 capability graceful-restart 使用指定的邻居路由器设备启用正常重启。
redistribute kernel NS(config-router-af)#redistribute kernel 重新分发内核路由。
exit-address-family NS(config-router-af)#exit-address-family 退出地址族配置模式。

为 IPv4 BGP 配置 MD5 身份验证

Citrix ADC 设备支持边界网关协议 (BGP) 的 MD5 身份验证。启用身份验证后,仅当身份验证成功时,Citrix ADC 设备与其对等设备之间交换的属于 BGP 的任何 TCP 段都将被验证和接受。要使身份验证成功,必须为两个对等体配置相同的 MD5 密码。如果身份验证失败,则不会建立 BGP 邻居关系。Citrix ADC 设备中对 BGP 的 MD5 身份验证支持符合 RFC 2385。

开始之前的准备工作

在开始配置 BGP MD5 身份验证之前,请考虑以下几点:

  • 确保您了解 RFC 2385 中描述的 BGP MD5 身份验证的不同组成部分。
  • Citrix ADC 管理分区不支持 BGP MD5 身份验证。
  • IPv6 BGP 配置不支持 BGP MD5 身份验证。
  • Citrix ADC 群集配置以及高可用性配置支持 BGP MD5 身份验证。
  • 由于 FreeBSD 中存在以下问题,Citrix 建议在第 2 层高可用性配置中为 BGP 会话设置较低的保持活动和保持时间值(例如 5 和 15),并为 BGP 会话配置正常重启。否则,启用 MD5 身份验证后,BGP 可能需要更长的时间才能在故障转移后重新建立与邻居的连接。

为 IPv4 BGP 配置 MD5 身份验证

要使用 VTYSH 命令行为 IPv4 BGP 配置 MD5 身份验证,请在命令提示符下键入以下命令,按所示顺序:

命令 说明
vtysh 显示 VTYSH 命令提示符。
configure terminal 进入全局配置模式。
router bgp <AS-number> 进入 BGP 协议的配置模式。<AS-number>是 BGP 自治系统编号,是必填参数。
neighbor <neighbour IPv4 address> remote-as < AS-number > 使用指定自治系统中邻居的 IPv4 地址更新 IPv4 BGP 表。
neighbor < neighbour IPv4 address > password < password in double quotes> 使用指定的 MD5 密码为指定的邻居配置 MD5 身份验证。要使 MD5 身份验证成功,必须在 Citrix ADC 设备和邻居设备上配置相同的 MD5 密码。
> vtysh

ns# configure terminal

ns(config)#router bgp 5

ns(config-router)#neighbor 20.20.20.138 remote-as 1

ns(config-router)#neighbor 20.20.20.138 password “secret”

ns(config-router)#redistribute kernel

ns(config-router)#exit

<!--NeedCopy-->