在瞻博网络 BNG CUPS 中使用动态地址池
瞻博网络 BNG CUPS 内的 BNG 用户平面高可用性基于用户组。每个用户组跟踪自己的一组用户前缀,以便成功将所有会话状态(包括池前缀路由)切换到备用 BNG 用户平面。因此,系统会为用户组分配一组自己的池前缀。使用动态前缀源,而不是为每个用户组预先调配一组池。
BNG CUPS 控制器中使用的动态前缀源包括:
- 地址池管理器 (APM) — APM 是一个云原生应用程序,它维护一组前缀分区,可以从中分配子前缀以用作池前缀。APM 通过 APMi(一种基于 gRPC 的协议)与 BNG CUPS 控制器的 CPi 通信。目前,APM 仅服务于 IPv4 前缀。
- 本地预留 — 本地预留是一组 BNG CUPS 控制器配置的前缀分区,子前缀可从中分配用作池前缀。本地预留同时为 IPv4 和 IPv6 前缀提供服务。当 APMi 断开连接时,本地预留还可以充当 APM 的备份前缀源。目前,IPv6 前缀必须使用本地预留来分配 IPv6 非临时地址、委托前缀和路由器播发前缀。
作为 BNG CUPS 控制器配置 BNG 用户平面的一部分,该 dynamic-address-pools 节定义从中分配池前缀和从中回收的源分区名称。
以下是四种类型的分区:
-
partition—IPv4 分区名称
-
v6-dp-partition—IPv6 委托前缀分区名称
-
v6-na-partition—IPv6 非临时地址分区名称
-
v6-ra-partition—IPv6 路由播发分区名称
本地储备
本地预留区是一组 BNG CUPS 控制器配置的分区。分区可以是 IPv4 或 IPv6。本地备用分区配置在节下 access address-pool-manager 。请参见以下示例:
access {
address-pool-manager {
inet 198.19.224.134;
port 20557;
auto-recovery drain-delay 120;
apportion-delay 60;
local-reserve {
partition middlesex {
family {
inet {
prefix 192.168.192.0/20;
}
}
}
partition v6-na-partition {
family {
inet6 {
prefix 173:162:1::/96;
}
}
}
partition v6-dp-partition {
family {
inet6 {
prefix 3000::/8;
}
}
}
}
}
IPv4 分区(本例中为 middlesex )是 APM 配置中同名分区的备份分区。在这种情况下, local-reserve 分区有一个专用地址前缀。如果与 APM 的连接丢失,则在 APMi 连接在配置的分配延迟时间内关闭后,与已将 middlesex 指定为其 IPv4 分区的 BNG 用户平面关联的用户组将从本地储备分配专用前缀。一旦 APM 分配的公共池前缀用尽,订阅者组中的传入订阅者将从源自本地储备的私有池前缀中分配地址。
订阅者使用私人地址的访问可能受到限制,但他们将能够登录网络。恢复 APMi 连接后,最好将分配私有地址的订阅者重新寻址为来自 APM 源池的公共地址。在配置的自动恢复清空延迟期后,BNG CUPS 控制器会在从本地预备区分配的池上启用活动清空。当订阅者重新连接时,APM 会分配额外的公共池前缀,并为订阅者分配公共地址并重新获得全部服务。
还有两个 IPv6 分区配置为本地预留的一部分。这些分区分别为非临时地址分配 IPv6 池前缀,为 IPv6 订阅者分配前缀委托地址。由于 APM 不支持 IPv6 分区,因此本地预留是为 IPv6 订阅者提供服务的用户组获取动态地址池的唯一选择。
地址池管理器
APM 是一个单独的云原生应用程序,可以与 BNG CUPS 控制器部署在同一个 Kubernetes 群集中,也可以完全部署在不同的群集中。APM 可以为许多 BNG CUPS 控制器控制平面实例或集成 BNG 寻找 IPv4 分区。
请参阅以下 APM 配置示例:
apm {
inet-pool {
partition middlesex {
prefix 192.32.0.0/16 {
max-prefix-length 24;
}
}
}
entity-match cpi-massachusetts {
pool-domain-profile domainTemplate;
}
pool-domain-profile domainTemplate {
monitoring {
apportion-threshold 200;
reclaim-threshold 457;
}
auto-reclamation {
active always;
}
}
}
在 APM 配置中, 分区 middlesex 有一个公共 IPv4 前缀,从中分配和回收池前缀。
该entity-match节标识 APM 将接受来自的连接的 CPI。在这种情况下,只有 systemID 为 cpi-massachusetts 的 CPi 才被允许连接。CPI 对 domainTemplate 定义pool-domain-profile的已创建池域使用分配和回收设置。
以下示例显示了使用 APM 作为动态前缀源所需的相应 BNG 控制器配置元素:
groups {
bbe-cpi-0 {
access {
address-pool-manager {
inet 198.19.224.134;
port 20557;
}
address-assignment {
domain-profile v4FramedPoolName {
family {
inet {
preferred-prefix-length 24;
excluded-address-last-octet 255;
}
}
}
}
}
}
}
在节 address-pool-manager 中,该 inet 语句包含 APM 使用的外部 IP 地址。这可以通过使用 apm ip 实用程序脚本命令进行检索(参见 APM 用户指南)。APM 监听的默认端口为 20557。控制平面实例用于向 APM 标识自己的系统标识符是 control-plane-instance 名称(例如, cpi-massachusetts)。APM 的配置中必须具有相应的 实体匹配 条目。
在 地址分配 部分中, 域配置文件 必须与在用户身份验证阶段提供的名称匹配 FramedPool ,并包括从前缀源(APM 或本地保留区)请求池前缀的首选前缀长度,以及用于分配动态池的任何地址排除项。
域创建、分配和回收
组中 bbe-cpi-0 BNG CUPS 控制器部分access address-assignment下配置的 domain-profile 语句与address-pool在用户登录的身份验证阶段返回的 or FramedPool 属性一致。域配置文件定义要从分区分配的前缀的大小、任何地址排除项,以及是否为每个池前缀安装丢弃路由。
请参阅以下 domain-profile 配置示例:
domain-profile v4pool {
family {
inet {
preferred-prefix-length 24;
excluded-address last-octet 255;
install-discard-routes {
tag 77;
backup-tag 88;
}
}
}
}
domain-profile dpPool {
family {
inet6 {
partition-type delegated-prefix;
preferred-prefix-length 48;
allocation-length 56;
install-discard-routes {
tag 77;
backup-tag 88;
}
}
}
}
当用户登录网络时,系统会从成功的身份验证阶段返回一个 FramedPool 属性。如果配置中的 匹配 a,CPi FramedPool domain-profile 将检查是否已为关联的订阅者组创建了域。如果不存在域,CPi 将与分区源(APM 或本地储备区)协调,通过连接名称、订阅者组名称和关联的路由实例的 FramedPool 值来创建域名。