配置 BGP
NetScaler 设备支持 BGP (RFC 4271)。NetScaler 上的 BGP 功能包括:
- NetScaler 向 BGP 对等方公布路由。
- NetScaler 将主机路由注入到虚拟 IP 地址 (VIP),具体取决于底层虚拟服务器的运行状况。
- 在 HA 配置中进行故障转移后,NetScaler 会生成用于在辅助节点上运行 BGP 的配置文件。
- 该协议支持 IPv6 路由交换。
- 边界网关协议中的 As-Override 支持
启用 BGP 后,您需要配置 BGP 路由的通告。要进行故障排除,您可以限制 BGP 传播。您可以显示 BGP 设置来验证配置。
启用和禁用 BGP
要启用或禁用 BGP,必须使用 CLI 或 GUI。启用 BGP 后,NetScaler 设备将启动 BGP 进程。禁用 BGP 后,设备将停止 BGP 进程。
要使用 CLI 启用或禁用 BGP 路由,请执行以下操作:
在命令提示符下,键入以下命令之一:
-
启用 ns 功能 BGP
-
禁用 ns 功能 BGP
要使用 GUI 启用或禁用 BGP 路由,请执行以下操作:
- 导航到系统 > 设置,在模式和功能组中,单击更改高级功能。
- 选择或清除 BGP 路由选项。
宣传 IPv4 路线
您可以将 NetScaler 设备配置为向 VIP 通告主机路由和向下游网络通告路由。
要使用 VTYSH 命令行将 BGP 配置为通告 IPv4 路由,请执行以下操作:
在命令提示符下,按所示顺序键入以下命令:
命令 | 说明 |
---|---|
VTYSH | 显示 VTYSH 命令提示符。 |
配置终端 | 进入全局配置模式。 |
router BGP < ASnumber> | BGP 自治系统。< ASnumber>是必填参数。可能的值:1 到 4,294,967,295。 |
Neighbor < IPv4 address> remote-as < as-number> | 使用指定自治系统中邻居的链路本地 IPv4 地址更新 IPv4 BGP 邻居表。 |
Address-family 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 路由
边界网关协议 (BGP) 使上游路由器能够在两台独立 NetScaler 设备上托管的两个相同虚拟服务器之间进行负载平衡流量。路由广告使上游路由器能够跟踪位于 NetScaler 后面的网络实体。
IPv6 BGP 的先决条件
在开始配置 IPv6 BGP 之前,请执行以下操作:
- 确保您了解 IPv6 BGP 协议。
- 启用 IPv6 功能。
配置步骤
要使用 VTYSH 命令行将 BGP 配置为通告 IPv6 路由,请执行以下操作:
在命令提示符下,按所示顺序键入以下命令:
命令 | 说明 |
---|---|
VTYSH | 显示 VTYSH 命令提示符。 |
配置终端 | 进入全局配置模式。 |
router BGP < ASnumber> | BGP 自治系统。< ASnumber>是必填参数。可能的值:1 到 4,294,967,295。 |
Neighbor < IPv6 address> remote-as < as-number> | 使用指定自治系统中邻居的链路本地 IPv6 地址更新 IPv6 BGP 邻居表。 |
Address-family 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 数据包)时,它们将被丢弃。
为了解决此问题,NetScaler 的 ZebOS BGP 路由模块中添加了 BGP AS 覆盖功能。
在为对等设备启用 AS 覆盖的情况下,当 NetScaler 设备收到要转发到对等设备的 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 |
为指定的邻居启用 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 覆盖,请执行以下操作:
命令 | 说明 |
---|---|
配置终端 | 进入全局配置模式。 |
router BGP < ASnumber> | BGP 自治系统。< ASnumber>是必填参数。 |
Neighbor |
创建 BGP 对等组。 |
Neighbot |
将邻居关联到指定的对等组。 |
Neighbor |
使用指定自治系统中邻居的 IPv4 地址更新 IPv4 BGP 邻居表。 |
Neighbor |
为与指定对等组关联的所有邻居启用 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 覆盖,请执行以下操作:
命令 | 说明 |
---|---|
配置终端 | 进入全局配置模式。 |
router BGP < ASnumber> | BGP 自治系统。< ASnumber>是必填参数。 |
Neighbor < IPv6 address> remote-as < as-number> | 使用指定自治系统中邻居的 IPv4 地址更新 IPv4 BGP 邻居表。 |
Neighbor |
为指定的邻居启用 BGP 作为覆盖。 |
Address-family ipv6 | 进入地址族配置模式。 |
Neighbor < IPv6 address> activate | 使用链接本地地址在指定邻居和 NetScaler 之间交换 IPv6 路由器系列的前缀。 |
Neighbor |
为指定的邻居启用 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 覆盖,请执行以下操作:
命令 | 说明 |
---|---|
配置终端 | 进入全局配置模式。 |
router BGP < ASnumber> | BGP 自治系统。< ASnumber>是必填参数。 |
Neighbor |
创建 BGP 对等组。 |
Neighbor |
将邻居与指定的对等组关联。 |
Neighbor |
使用指定自治系统中邻居的 IPv4 地址更新 IPv4 BGP 邻居表。 |
Neighbor |
为与指定对等组关联的所有邻居启用 BGP 作为覆盖。 |
Address-family ipv6 | 进入地址族配置模式。 |
Neighbor |
使用链接本地地址在指定对等组的邻居与 NetScaler 之间交换 IPv6 路由器系列的前缀。 |
Neighbor |
为与指定对等组关联的所有邻居启用 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 命令提示符。 |
配置终端 | NS# configure terminal | 进入全局配置模式。 |
router-id |
NS(config)# router-id 1.1.1.1 | NetScaler 设备的路由器标识符。此标识符为所有动态路由协议设置。必须在高可用性设置中的另一个节点上指定相同的标识符,才能正常重启才能正常工作。 |
router bgp |
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 | 指定处于帮助程序模式的 NetScaler 设备保留用于重新启动邻居路由器的过时路由的时间(以秒为单位)。默认值为 360 秒。 |
neighbor |
NS(config-router)# neighbor 192.0.2.30 remote-as 2 | 与指定的邻居路由器设备建立 BGP 对等关系。 |
neighbor |
NS(config-router)# neighbor 192.0.2.30 capability graceful-restart | 启用与指定邻居的正常重启。 |
重新分发内核 | NS(config-router)# redistribute kernel | 重新分发内核路由。 |
为 IPv6 BGP 配置正常重启
要使用 VTYSH 命令行为 IPv6 BGP 配置正常重启,请在命令提示符下键入以下命令,按所示顺序:
命令 | 示例 | 命令描述 |
---|---|---|
VTYSH | VTYSH | 进入 VTYSH 命令提示符。 |
配置终端 | NS# configure terminal | 进入全局配置模式。 |
router-id |
NS(config)# router-id 1.1.1.1 | 为 NetScaler 设备设置路由器标识符。此标识符为所有动态路由协议设置。必须在高可用性设置的另一个节点中指定相同的 ID,才能正常重启才能正常工作。 |
router bgp |
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 | 指定处于帮助程序模式的 NetScaler 设备保留用于重新启动邻居路由器的过时路由的时间(以秒为单位)。默认值为 360 秒。 |
neighbor |
NS(config-router)# neighbor 2001:db8::10 remote-as 2 | 与指定的邻居路由器设备建立 BGP 对等关系。 |
address-family ipv6 | NS(config-router)#address-family ipv6 | 进入地址族配置模式。 |
neighbor |
NS(config-router-af)#neighbor 2001:db8::10 activate | 允许与指定的邻居路由器设备交换地址族路由。 |
neighbor |
NS(config-router-af)#neighbor 2001:db8::10 capability graceful-restart | 使用指定的邻居路由器设备启用正常重启。 |
重新分发内核 | NS(config-router-af)#redistribute kernel | 重新分发内核路由。 |
exit-address-family | NS(config-router-af)#exit-address-family | 退出地址族配置模式。 |
为 IPv4 BGP 配置 MD5 身份验证
NetScaler 设备支持边界网关协议 (BGP) 的 MD5 身份验证。启用身份验证后,仅当身份验证成功时,NetScaler 设备与其对等设备之间交换的属于 BGP 的任何 TCP 段都将被验证和接受。要使身份验证成功,必须为两个对等体配置相同的 MD5 密码。如果身份验证失败,则不会建立 BGP 邻居关系。NetScaler 设备中对 BGP 的 MD5 身份验证支持符合 RFC 2385。
开始之前的准备工作
在开始配置 BGP MD5 身份验证之前,请考虑以下几点:
- 确保您了解 RFC 2385 中描述的 BGP MD5 身份验证的不同组成部分。
- NetScaler 管理分区不支持 BGP MD5 身份验证。
- IPv6 BGP 配置不支持 BGP MD5 身份验证。
- NetScaler 群集配置以及高可用性配置支持 BGP MD5 身份验证。
- 由于 FreeBSD 中存在以下问题,Citrix 建议在第 2 层高可用性配置中为 BGP 会话设置较低的保持活动和保持时间值(例如 5 和 15),并为 BGP 会话配置正常重启。否则,启用 MD5 身份验证后,BGP 可能需要更长的时间才能在故障转移后重新建立与邻居的连接。
配置步骤
要使用 VTYSH 命令行为 IPv4 BGP 配置 MD5 身份验证,请在命令提示符下键入以下命令,按所示顺序:
命令 | 说明 |
---|---|
vtysh | 显示 VTYSH 命令提示符。 |
配置终端 | 进入全局配置模式。 |
**router bgp |
进入 BGP 协议的配置模式。 |
**neighbor |
使用指定自治系统中邻居的 IPv4 地址更新 IPv4 BGP 表。 |
neighbor < neighbour IPv4 address > password < password in double quotes> | 使用指定的 MD5 密码为指定的邻居配置 MD5 身份验证。要使 MD5 身份验证成功,必须在 NetScaler 设备和邻居设备上配置相同的 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-->
配置 asplain 和 asdot 格式的 4 字节 BGP ASN
NetScaler 设备支持以 RFC 5396 中定义的 asplain 或 asdot 格式配置和显示 4 字节 BGP 自治系统编号 (ASN)。
-
asplain。十进制值表示法,其中 2 字节和 4 字节 ASN 均以十进制值表示。例如, 65527 是 2 字节 ASN ,234567 是 4 字节的 ASN。
-
asdot 自治系统点表示法,其中 2 字节 ASN 用十进制值表示(与 asplain 相同),4 字节 ASN 用点表示法表示。例如,65527 是 2 字节 ASN,3.37959 是 4 字节的 ASN。(3.37959 是 234567 十进制数的 asdot 格式)。
asplain 和 asdot 格式的 BGP ASN 配置示例
默认情况下,NetScaler 设备以普通格式显示 BGP ASN,但您可以配置为以 asdot 格式显示。您可以使用 asplain 或 asdot 格式配置本地和远程 BGP ASN。
下面列出了 asplain 和 asdot 格式的 BGP ASN 配置的一些示例:
-
以普通格式显示 BGP AS 编号。默认情况下,NetScaler 设备以普通格式显示 BGP AS 编号。
ns#conf t ns(config)# router bgp 196908 ns(config-router)# end ns# ns# sh run router bgp ! router bgp 196908 ! <!--NeedCopy-->
-
以 asdot 格式显示 BGP AS 编号。运行 bgp
asnotation-dot
命令以显示 asdot 格式的 BGP AS 编号。ns#conf t ns(config)#router bgp 196908 ns(config-router)#bgp asnotation-dot ns(config-router)#end ns# ns#sh run router bgp ! router bgp 3.300 bgp asnotation-dot ! <!--NeedCopy-->
-
以 asdot 格式配置和显示 BGP AS 编号。运行
bgp asnotation-dot
命令以显示 asdot 格式的 BGP AS 编号。ns# conf t ns(config)# router bgp 3.300 ns(config-router)# bgp asnotation-dot ns# ns# sh run router bgp ! router bgp 3.300 bgp asnotation-dot ! <!--NeedCopy-->
-
将 BGP AS 编号从 asdot 格式重新显示为普通格式。运行 bgp
no asnotation-dot
命令将 BGP AS 编号显示回普通格式。ns#conf t ns(config)#router bgp 3.300 ns(config-router)#no bgp asnotation-dot ns(config-router)#end ns# ns#sh run router bgp ! router bgp 196908 ! <!--NeedCopy-->
-
以 asdot 格式配置和显示远程 as-number。运行
bgp asnotation-dot
命令。在示例配置中,远程 as-number 80000 配置为 asdot 格式 1.14464。ns# conf t ns(config)# router bgp 3.300 ns(config-router)# bgp asnotation-dot ns(config-router)# neighbor 192.168.1.2 remote-as 1.14464 ns(config-router)#end ns# ns# ns#sh run router bgp ! router bgp 3.300 bgp asnotation-dot neighbor 192.168.1.2 remote-as 1.14464 ! ns# <!--NeedCopy-->
-
将 BGP 本地和远程 AS 编号从 asdot 格式恢复为 asplain 格式。运行 bgp
no asnotation-dot
命令。ns#conf t ns(config)#router bgp 3.300 ns(config-router)#no bgp asnotation-dot ns(config-router)#end ns# ns#sh run router bgp ! router bgp 196908 neighbor 192.168.1.2 remote-as 80000 ! ns# <!--NeedCopy-->
注意:
BGP 对等组也可以使用相同的 asplain 或 asdot 配置,而不是为单个 BGP 邻居进行配置。