ADC

配置 Diameter 负载平衡

Diameter 协议是下一代身份验证、授权和会计 (AAA) 信令协议,主要用于笔记本电脑和手机等移动设备。它是一种对等协议,而不是大多数其他协议使用的传统客户端-服务器模型。但是,在大多数 Diameter 部署中,客户端会发出请求,服务器会响应请求。

当 Diameter 消息交换时,Diameter 服务器通常比 Diameter 客户端执行更多的处理。随着控制平面信号量的增加,Diameter 服务器成为瓶颈。因此,Diameter 消息必须负载平衡到多个服务器。执行 Diameter 消息负载平衡的虚拟服务器具有以下优势:

  • Diameter 服务器上的负载更轻,这意味着对最终用户的响应时间更快。
  • 服务器运行状况监视和更好的故障转移功能。
  • 在服务器添加方面更好的可扩展性,而无需更改客户端配置。
  • 高可用性。
  • SSL-Diameter 卸载。

下图显示了 Citrix ADC 部署中的 Diameter 系统:

diameter-system

Diameter 系统具有以下组件:

  • Diameter 客户端。除了基本协议外,还支持 Diameter 客户端应用程序。Diameter 客户端通常在网络边缘的设备中实现,并为该网络提供访问控制服务。Diameter 客户端的典型示例是网络访问服务器 (NAS) 和移动 IP 外部代理 (FA)。
  • Diameter 代理。提供中继、代理、重定向或转换服务。Citrix ADC 设备(配置了 Diameter 负载平衡虚拟服务器)扮演 Diameter 代理的角色。
  • Diameter 服务器。处理特定领域的身份验证、授权和记帐请求。除了基本协议之外,Diameter 服务器还必须支持 Diameter 服务器应用程序。

在典型的 Diameter 拓扑中,当最终用户设备(如移动电话)需要服务时,它会向 Diameter 客户端发送请求。每个 Diameter 客户端与 Diameter 基本协议 RFC 6733 指定的 Diameter 服务器建立单个连接(TCP 连接-SCTP 不受支持)。连接寿命长,两个 Diameter 节点(客户端和服务器)之间的所有消息都通过此连接进行交换。Citrix ADC 使用基于消息的负载平衡。

示例:

移动服务提供商使用 Diameter 进行计费系统。当订阅者使用预付数字时,Diameter 客户端会反复向服务器发送请求以检查可用余额。Diameter 协议在客户端和服务器之间建立连接,并通过该连接交换所有请求。基于连接的负载平衡是毫无意义的,因为只有一个连接。但是,随着连接上有大量消息,基于消息的负载平衡加快了对预付费移动用户计费的过程。

Diameter 负载均衡的工作原理

断开对等请求 (DPR) 表示对等方关闭连接的意图以及关闭连接的原因。同行回复 DPA(TCP 始终提供成功的 DPA)。

  • 当设备从客户端接收 DPR 时,它将 DPR 广播到所有服务器,并立即用 DPA 回复客户端。服务器使用 DPPA 进行回复,但设备忽略它们。客户端发送 FIN,设备将其广播到所有服务器。
  • 当设备从服务器接收 DPR 时,它将单独使用 DPA 回复该服务器,并且不会从重用池中删除该服务器。当服务器发送 FIN 时,设备会使用 FIN/ACK 进行回复,并从重用池中删除连接。
  • 如果设备从客户端收到 FIN,它会向客户端发送 FIN/ACK,广播 FIN,并立即从重用池中删除服务器连接。
  • 如果设备从服务器接收 FIN,则会发送 FIN/ACK 并将其从重用池中删除。此服务器的任何新消息都会在新连接上发送。

负载平衡 Diameter 流量

当客户端向 Citrix ADC 设备发送请求时,设备会解析该请求,然后根据持久 AVP 将其负载平衡到 Diameter 服务器。设备已将客户端标识公告到服务器,因此它不添加路由条目,因为服务器直接从客户端收到消息。

服务器启动的请求不像客户端请求那么频繁。服务器启动的请求与客户端启动的请求类似,但以下情况除外:

  • 由于消息是从多个服务器接收的,因此设备通过向每个转发的请求消息添加一个唯一的跳跃 (HBYH) 编号来维护事务状态。当消息响应到达时(具有相同的 HBYH 号码),设备会将此 HBYH 号码转换为请求到达时在服务器上收到的 HBYH 号码。
  • Citrix ADC 设备通过放置其标识来添加路由条目,因为客户端将该设备视为中继代理。

注意:如果“直径”消息跨越多个数据包,设备将这些数据包累积在不完整的头队列中,并在积累完整消息时将它们转发到服务器。同样,如果单个数据包包含多条 Diameter 消息,则设备将分割数据包并将消息转发到由负载平衡虚拟服务器确定的服务器。

与会话断开连接

断开对等请求 (DPR) 表示对等方关闭连接的意图以及关闭连接的原因。同行回复 DPA(TCP 始终提供成功的 DPA)。

  • Citrix ADC 设备从客户端接收 DPR 时,它会将 DPR 广播到所有服务器,并立即使用 DPA 回复客户端。服务器使用 DPPA 进行回复,但设备忽略它们。客户端发送 FIN,设备将其广播到所有服务器。
  • 当设备从服务器接收 DPR 时,它将单独使用 DPA 回复该服务器,并且不会从重用池中删除该服务器。当服务器发送 FIN 时,设备会使用 FIN/ACK 进行回复,并从重用池中删除连接。
  • 如果设备从客户端收到 FIN,它会向客户端发送 FIN/ACK,广播 FIN,并立即从重用池中删除服务器连接。
  • 如果设备从服务器接收 FIN,则会发送 FIN/ACK 并将其从重用池中删除。此服务器的任何新消息都会在新连接上发送。

为 Diameter 流量配置负载平衡

要将 Citrix ADC 设备配置为负载平衡 Diameter 流量,必须先在设备上设置 Diameter 参数,然后添加 Diameter 监视器、添加 Diameter 服务、将服务绑定到监视器、添加 Diameter 负载平衡虚拟服务器以及将服务绑定到虚拟服务器。

使用命令行界面为 Diameter 流量配置负载平衡

配置 Diameter 参数。

set ns diameter -identity <string> -realm <string> -serverClosePropagation <YES|NO>
<!--NeedCopy-->

示例:

set ns diameter -identity mydomain.org -realm org -serverClosePropagation YES
<!--NeedCopy-->

添加 Diameter 监视器。

add lb monitor <monitorName> DIAMETER -originHost <string> -originRealm <string>
<!--NeedCopy-->

示例:

add lb monitor diameter_mon DIAMETER -originHost mydomain.org -originRealm org
<!--NeedCopy-->

创建 Diameter 服务。

add service <name> <IP> DIAMETER <port>
<!--NeedCopy-->

示例:

add service diameter_svc0 10.102.82.86 DIAMETER 3868

add service diameter_svc1 10.102.82.87 DIAMETER 3868

add service diameter_svc2 10.102.82.88 DIAMETER 3868

add service diameter_svc3 10.102.82.89 DIAMETER 3868
<!--NeedCopy-->

将 Diameter 服务绑定到 Diameter 监视器。

bind service <name>@ monitorName <monitorName>
<!--NeedCopy-->

示例:

bind service diameter_svc0 -monitorName diameter_mon

bind service diameter_svc1 -monitorName diameter_mon

bind service diameter_svc2 -monitorName diameter_mon

bind service diameter_svc3 -monitorName diameter_mon
<!--NeedCopy-->

添加具有 Diameter 持久性的 Diameter 负载平衡虚拟服务器。

add lb vserver <name> DIAMETER <IPAddress> <port> -persistenceType DIAMETER -persistAVPno <positive_integer>
<!--NeedCopy-->

示例:

add lb vserver diameter_vs DIAMETER 10.102.112.152 3868 -persistenceType DIAMETER -persistAVPno 263
<!--NeedCopy-->

将 Diameter 服务绑定到 Diameter 负载平衡虚拟服务器。

bind lb vserver <name> <serviceName>
<!--NeedCopy-->

示例:

bind lb vserver diameter_vs diameter_svc0

bind lb vserver diameter_vs diameter_svc1

bind lb vserver diameter_vs diameter_svc2

bind lb vserver diameter_vs diameter_svc3
<!--NeedCopy-->

保存配置。

save ns config
<!--NeedCopy-->

注意:您还可以使用 SSL_DEXE 服务类型配置通过 SSL 对直径流量的负载平衡。

使用配置实用程序为 Diameter 流量配置负载均衡

  1. 导航到“系统”>“设置”>“更改直径参数”并设置直径参数。
  2. 导航到“流量管理”>“负载平衡”>“虚拟服务器”,然后创建“直径”类型的负载平衡虚拟服务器。
  3. 创建 Diameter 类型的服务。
  4. 创建 Diameter 类型的显示器。在“特殊参数”中,设置源主机和源领域。
  5. 将监视器绑定到服务,并将服务绑定到 Diameter 虚拟服务器。
  6. 在高级设置中,单击 持久性,指定直径,然后输入持久性 AVP 编号。
  7. 点击 保存,然后点击 完成
配置 Diameter 负载平衡