IPv4 流量的基于策略的路由 (PBR)

配置 PBRs 涉及以下任务:

  • 创建一个 PBR。
  • 应用 PBRs。
  • (可选)禁用或启用 PBR。
  • (可选)重新编号 PBR 的优先级。

创建或修改 PBR

不能创建两个具有相同参数的 PBRs。如果您尝试创建一个副本,则会显示一条错误消息。

您可以配置 PBR 的优先级。优先级(整数值)定义 Citrix ADC 设备评估 PBRs 的顺序。当您在未指定优先级的情况下创建 PBR 时,Citrix ADC 会自动分配一个为 10 倍的优先级。

如果数据包与 PBR 定义的条件匹配,Citrix ADC 将执行操作。如果数据包与 PBR 定义的条件不匹配,Citrix ADC 将该数据包与 PBR 进行比较,具有下一个最高优先级。

您可以将所选数据包配置为将 PBR 发送到链路负载平衡虚拟服务器,而不是将所选数据包发送到下一跃点路由器。如果下一个跃点链接失败,此配置可以提供备份。

考虑下面的例子。在 Citrix ADC 上配置了两个 PBRs(p1 和 p2),并自动分配优先级 20 和 30。您需要添加第三个 PBR p3,以便立即在第一个 PBR p1 之后进行评估。新的 PBR (p3) 的优先权必须在 20 到 30 之间。在这种情况下,您可以将优先级指定为 25。

CLI 过程

要使用 CLI 创建 PBR,请执行以下操作:

在命令提示窗口中,键入:

  • add ns pbr <name> <action> [-srcIP [<operator>] <srcIPVal>] [-srcPort [<operator>] <srcPortVal>] [-destIP [<operator>] <destIPVal>] [-destPort [<operator>] <destPortVal>] [-nextHop <nextHopVal>] [-srcMac <mac_addr>] [-protocol <protocol> |-protocolNumber <positive_integer>] [-vlan <positive_integer>] [-interface <interface_name>] [-priority <positive_integer>] [-msr ( ENABLED | DISABLED ) [-monitor <string>]] [-state ( ENABLED | DISABLED )]
  • show ns pbr

示例:

> add ns pbr pbr1  allow -srcip 10.102.37.252 -destip 10.10.10.2 -nexthop 10.102.29.77
 Done

要使用 CLI 修改 PBR 的优先级,请执行以下操作:

在命令提示符下,键入以下命令以修改优先级并验证配置:

  • set ns pbr <name> [-action ( ALLOW | DENY )] [-srcIP [<operator>] <srcIPVal>] [-srcPort [<operator>] <srcPortVal>] [-destIP [<operator>] <destIPVal>] [-destPort [<operator>] <destPortVal>] [-nextHop <nextHopVal>] [-srcMac <mac_addr>] [-protocol <protocol> | -protocolNumber <positive_integer>] [-vlan <positive_integer>] [-interface <interface_name>] [-priority <positive_integer>] [-msr ( ENABLED | DISABLED ) [-monitor <string>]] [-state ( ENABLED | DISABLED )]
  • show ns pbr [<name>]

示例:

> set ns pbr pbr1 -priority 23
 Done

要使用 CLI 删除一个或所有 PBRs,请执行以下操作:

在命令提示窗口中,键入以下命令之一:

  • rm ns pbr <name>
  • clear ns pbrs

示例:

> rm ns pbr pbr1
 Done

> clear ns PBRs
 Done

GUI 程序

要使用 GUI 创建 PBR,请执行以下操作:

导航到“系统”>“网络”>“PBRs”选项卡上,添加新的 PBR 或编辑现有的 PBR。

要使用 GUI 删除一个或所有 PBRs:

导航到“系统”>“网络”>“PBRs”选项卡上,删除 PBR。

应用 PBR

您必须应用 PBR 才能激活它。以下过程重新应用您尚未禁用的所有 PBRs。PBRs 构成内存树(查找表)。例如,如果创建 10 个 PBRs (p1-p10),然后创建另一个 PBR (p11) 并应用它,则所有 PBRs (p1-p11) 都是最新应用的,并创建一个新的查找表。如果会话具有与其相关的拒绝 PBR,则会话将被销毁。

您必须在对任何 PBR 进行的每次修改后应用此过程。例如,您必须在禁用 PBR 后执行此过程。

注意: 在 Citrix ADC 设备上创建的 PBRs 在应用之前不起作用。

要使用 CLI 应用 PBR,请执行以下操作:

在命令提示窗口中,键入:

apply ns PBRs

要使用 GUI 应用 PBR:

  1. 导航到“系统”>“网络”>“PBRs”。
  2. 在 PBRs 选项卡上,选择 PBR,在操作列表中选择应用。

启用或禁用 PBRs

默认情况下,PBRs 处于启用状态。这意味着应用 PBRs 时,Citrix ADC 设备会自动将传入数据包与配置的 PBRs 进行比较。如果查找表中不需要 PBR,但需要将其保留在配置中,则必须在应用 PBRs 之前禁用该 PBR。应用 PBRs 后,Citrix ADC 不会将传入数据包与已禁用的 PBRs 进行比较。

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

在命令提示窗口中,键入以下命令之一:

  • enable ns pbr <name>
  • disable ns pbr <name>

示例:

> enable ns PBR pbr1
 Done
> show ns PBR pbr1
1)      Name: pbr1
        Action: ALLOW                          Hits: 0
        srcIP = 10.102.37.252
        destIP = 10.10.10.2
        srcMac:                                Protocol:
        Vlan:                                  Interface:
        Active Status: ENABLED                 Applied Status: APPLIED
        Priority: 10
        NextHop: 10.102.29.77

 Done

> disable ns PBR pbr1
Warning: PBR modified, use 'apply pbrs' to commit this operation

> apply pbrs
 Done

> show ns PBR pbr1
1)      Name: pbr1
        Action: ALLOW                          Hits: 0
        srcIP = 10.102.37.252
        destIP = 10.10.10.2
        srcMac:                                Protocol:
        Vlan:                                  Interface:
        Active Status: DISABLED                Applied Status: NOTAPPLIED
        Priority: 10
        NextHop: 10.102.29.77
Done

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

  1. 导航到“系统”>“网络”>“PBRs”。
  2. 在 PBRs 选项卡上,选择 PBR,在“操作”列表中,选择“启用”或“禁用”。

重新编号项目报表

您可以自动重新编号 PBRs,将其优先级设置为 10 的倍数。

要使用 CLI 重新编号项目报告:

在命令提示窗口中,键入:

  • renumber ns pbrs

要通过使用 GUI 重新编号项目报表:

导航到“系统”>“网络”>“PBRs”选项卡上的“操作”列表中,选择“重新编号优先级”。

用例-具有多个跃点的 PBR

考虑在 Citrix ADC 设备 NS1 上配置了两个 PBR1 和 PBR2 的方案。PBR1 将所有传出数据包(源 IP 地址为 10.102.29.30)路由到下一个跃点路由器 R1。PBR2 将所有传出数据包(源 IP 地址为 10.102.29.90)路由到下一个跃点路由器 R2。R3 是连接到 NS1 的另一个跳路由器。

如果路由器 R1 失败,则丢弃与 PBR1 匹配的所有传出数据包。为避免这种情况,您可以在创建或修改 PBR 时在下一跃点字段中指定链路负载平衡 (LLB) 虚拟服务器。多个下一个跃点作为服务绑定到 LLB 虚拟服务器(例如 R1、R2 和 R3)。现在,如果 R1 失败,所有与 PBR1 匹配的数据包将路由到 R2 或 R3,这是由 LB 虚拟服务器上配置的 LB 方法确定的。

如果在以下情况下尝试使用 LLB 虚拟服务器创建 PBR 作为下一跃点,Citrix ADC 设备会引发错误:

  • 使用相同的 LLB 虚拟服务器添加另一个 PBR。
  • 指定不存在的 LLB 虚拟服务器。
  • 指定绑定服务不是下一个跃点的 LLB 虚拟服务器。
  • 指定 LB 方法未设置为以下任一项的 LLB 虚拟服务器:
    • LEASTPACKETS
    • LEASTBANDWIDTH
    • DESTIPHASH
    • SOURCEIPHASH
    • WEIGHTDRR
    • SRCIPDESTIP_HASH
    • LTRM
    • CUSTOM LOAD
  • 指定 LB 持久性类型未设置为以下之一的 LLB 虚拟服务器:
    • DESTIP
    • SOURCEIP
    • SRCDSTIP

下表列出了 Citrix ADC 设备上配置的实体的名称和值:

实体类型 名称 IP 地址
链接负载平衡虚拟服务器 LLB1 不适用
服务(下一个啤酒花) Router1 1.1.1.254
  Router2 2.2.2.254
  Router3 3.3.3.254
PBRs PBR1 不适用
  PBR2 不适用

表 1. 创建实体的示例值

要实现上述配置,您需要:

  1. 创建代表下一跃路由器 R1、R2 和 R3 的服务路由器 1、路由器 2 和路由器 3。
  2. 创建链接负载平衡虚拟服务器 LLB1 并将服务路由器 1、路由器 2 和路由器 3 绑定到它。
  3. 创建 PBR PBR1 和 PBR2,下一跃点字段分别设置为 LLB1 和 2.2.2.254(路由器 R2 的 IP 地址)。

要使用 CLI 创建服务,请执行以下操作:

在命令提示窗口中,键入:

  • add service <name> <IP> <serviceType> <port>
  • show service <name>

示例:

> add service Router1 1.1.1.254 ANY *
 Done
> add service Router2 2.2.2.254 ANY *
 Done
> add service Router3 3.3.3.254 ANY *
 Done

要使用 GUI 创建服务,请执行以下操作:

导航到流量管理 > 负载平衡 > 服务,然后创建服务。

要使用 CLI 创建链接负载平衡虚拟服务器并绑定服务,请执行以下操作:

在命令提示窗口中,键入:

  • add lb vserver <name> <serviceType>
  • bind lb vserver < name> <serviceName>
  • < name>显示磅虚拟服务器

示例:

> add lb vserver LLB1 ANY
 Done
> bind lb vserver LLB1 Router1 Router2 Router3
 Done

使用 GUI 创建链接负载平衡虚拟服务器并绑定服务:

  1. 导航到“流量管理”>“负载平衡”>“虚拟服务器”,然后创建用于链接负载平衡的虚拟服务器。在 协议 字段中指定 任何 。 注意:请确保未选中“ 直接寻址”
  2. 在“服务”选项卡的“活动”列中,选中要绑定到虚拟服务器的服务的复选框。

要使用 CLI 创建 PBR,请执行以下操作:

在命令提示窗口中,键入:

  • add ns pbr <name> <action> [-srcIP [<operator>] <srcIPVal>] [-nextHop <nextHopVal>]
  • show ns pbr

示例:

> add pbr PBR1 ALLOW -srcIP 10.102.29.30 -nextHop LLB1
 Done
> add pbr PBR2 ALLOW -srcIP 10.102.29.90 -nextHop 2.2.2.254
 Done

要使用 GUI 创建 PBR,请执行以下操作:

导航到“系统”>“网络”>“PBRs”选项卡上,添加新的 PBR。