瞻博网络 BNG CUPS 工作原理
本节介绍瞻博网络的运维方式,以及运行瞻瞻博网络 BNG CUPS 必须进行的配置。
运维概述
TR-459 带 CUPS 的多服务分解 BNG。参考架构、部署模型、接口和协议规格 (TR-459) 文档由宽带论坛创建,用于定义分解式 BNG 架构。TR-459 规范中的图 1 显示了功能块在控制平面和用户平面上的放置。
之间的功能分离
控制平面功能的组合称为分解 BNG 的控制平面。同样,用户平面特定功能的组合称为分解 BNG 的用户平面。
控制平面和用户平面之间存在三种类型的接口:
-
管理接口 (Mi) — 可选地用于集中管理 BNG CUPS 控制器上的 BNG 用户平面。
-
控制数据包重定向接口 (CPRi) — 用于在 BNG CUPS 控制器和 BNG 用户平面之间定向和交换控制协议(DHCP、DHCPv6、PPPoE、PPP、L2TP 等)流量,以协商用户会话。
-
状态控制接口 (SCi):
-
用于在 BNG CUPS 控制器与 BNG 用户平面之间建立关联。
-
用于在每个订阅者会话的 BNG 用户平面上对流量检测和转发规则及订阅者状态进行编程。
-
用于向 BNG CUPS 控制器报告会话统计数据。
-
控制平面和用户平面功能以及接口构成了 TR-459 标准提出的分解式 BNG 架构。有关详细信息,请参阅 TR-459 带 CUPS 的多服务分解 BNG。宽带论坛提供的参考架构、部署模型、接口和协议规格 文档。
瞻博网络 BNG CUPS 控制器
BNG CUPS 控制器是在 Kubernetes 环境中运行的容器化应用。Kubernetes 是一个容器编排环境,它提供基础架构来支持应用和硬件弹性、自动化、应用监控、应用升级和回滚以及服务发现。
BNG CUPS 控制器包含以下微服务:
- 控制平面实例 — 订阅者管理控制平面的实例。控制平面实例管理各种访问模型(例如 DHCP、PPPoE 和 L2TP)的会话状态。它还提供 AAA 服务、IP 地址分配服务,并维护与其 BNG 用户平面的 SCi 和 CPRi 接口。控制平面实例还可以与动态池前缀源(地址池管理器(远程)或本地预留)交互,以维护地址分配的地址源。控制平面实例将会话状态记录到状态缓存 Pod。如果控制平面实例 Pod 重新启动,它将从状态缓存中恢复其状态。
-
状态缓存 — 一种持久内存缓存,用于存储控制平面实例生成的用户会话和其他状态信息。状态缓存 Pod 在运行控制平面实例的节点以外的群集节点上运行。如果状态缓存 Pod 重新启动,它将从控制平面实例恢复其状态。
BNG CUPS 控制器组件通过 syslog 协议生成日志消息。您可以使用宽带边缘事件收集和可视化 (BBE ECAV) 应用程序来收集和记录日志消息。
支持的堆叠模型
-
瞻博网络 BNG CUPS 支持以下堆叠模型:
-
DHCP 服务器单堆栈
-
DHCPv6 服务器单堆栈
-
DHCP 服务器,单会话,双堆栈
-
DHCP 中继单堆栈
-
DHCPv6 中继单堆栈
-
DHCP 中继,单会话,双堆栈
-
PPPoE 单堆栈(IP 或 IPv6)
-
PPPoE 双堆栈
-
L2TP LAC
-
动态 VLAN(用于 DHCP 和 PPPoE)
-
支持的扩展和拓扑要求
单个 BNG CUPS 控制器支持以下数量的用户和 BNG 用户平面:
-
一个 BNG CUPS 控制器最多可支持 512K 个用户。
-
一个 BNG CUPS 控制器最多可支持 32 个 BNG 用户平面。
BNG CUPS 控制器在 Kubernetes 环境中运行。
Kubernetes 环境需要以下设备:-
控制平面节点(必须至少有三个)
-
工作节点(必须至少有三个)
注意:有关系统要求,请参阅 BNG CUPS 控制器安装要求。
配置 BNG CUPS 控制器
BNG CUPS 控制器配置由以下配置组组成:
bbe-bng-director— 包含控制器范围的配置项,如 BNG 用户平面定义、控制平面实例定义、BNG 用户平面分配、订阅者和负载平衡组定义。bbe-cpi-0— 包含大部分订阅者管理配置,包括:-
动态配置文件
-
服务等级分类器
-
重写规则
-
流量控制配置文件
-
调度程序和调度器图
-
防火墙过滤器和监管器
-
接入和接入配置文件级别的身份验证、授权和核算 (AAA) 服务
-
图 2 显示了配置组层次结构。
配置 bbe-bng-director 组
配置组包含bbe-bng-director节bng-controller。您应该在节中bng-controller配置最少的 bng-controller-name、 user-planes和 control-plane-instances 设置。
请参阅以下 bbe-bng-director 组配置示例:
groups {
bbe-bng-director {
bng-controller {
bng-controller-name new-england;
user-planes {
billerica {
transport {
198.20.33.4;
}
dynamic-address-pools {
partition middlesex;
v6-na-partition v6-na-partition;
v6-dp-partition v6-dp-partition;
}
user-plane-profile up-std;
}
canton {
transport {
198.20.48.7;
}
dynamic-address-pools {
partition middlesex;
v6-na-partition v6-na-partition;
v6-dp-partition v6-dp-partition;
}
user-plane-profile up-std;
}
}
control-plane-instances {
cpi-boston {
control-plane-config-group bbe-cpi-0;
user-plane [billerica canton];
}
}
}
}
}
在上述示例中,定义了两个 BNG 用户平面(billerica 和 canton)。作为 BNG 用户平面配置的一部分,BNG 用户平面的联系人 IP 地址将在节中 transport 配置。动态地址池分区配置在节 dynamic-address-pools 下。此外, user-plane-profile还定义了 ,用于定义 BNG 用户平面的接口和功能,也将定义并分配给每个 BNG 用户平面。
配置在 user-plane-profile 通用配置组中(例如 bbe-cpi-0)。因此,当将 BNG 用户平面配置或分配给控制平面实例时,必须在为 control-plane-config-group 控制平面实例分配的通用配置组中定义其用户平面配置文件。
提供 bng-controller-name 控制器的名称(控制平面实例和关联微服务的集合)。
在控制平面实例配置过程中,您将配置以下内容:
-
控制平面实例名称 - 控制平面实例名称必须与您在 BNG CUPS 控制器初始设置中进行配置期间
cpi add分配给控制平面实例 Pod 的控制平面实例名称匹配(请参阅 瞻博网络 BNG CUPS 安装)。 -
用于订阅者管理配置的配置组的名称(例如)。
bbe-cpi-0 -
分配给控制平面实例的 BNG 用户平面列表。
配置 bbe-cpi-0 组
订阅者管理的通用配置配置在通用配置组中。最多可定义五个常用配置组。通用配置组的名称是固定的。名称必须是以下内容之一: bbe-cpi-0、 bbe-cpi-1、 bbe-cpi-2、 bbe-cpi-3或 bbe-cpi-4。
请参阅以下 bbe-cpi-0 组配置示例(为简单起见,该示例仅进行了部分阐述):
[edit]
groups bbe-cpi-0 {
system {
services {
dhcp-local-server {
dhcpv4 {
group dhcp-v4-client {
dynamic-profile dhcp-client-demux;
interface-tag access001;
}
}
}
}
}
access-profile acc001;
access {
address-pool-manager {
inet 198.19.224.134;
port 20557;
local-reserve {
partition v6-na-partition {
family {
inet6 {
prefix 173:162:1::/96;
}
}
}
partition v6-dp-partition {
family {
inet6 {
prefix 3000::/8;
}
}
}
}
}
radius-server {/* not elaborated */}
profile acc001 {/* not elaborated */}
address-assignment {
domain-profile v4pool {
family {
inet {
preferred-prefix-length 24;
excluded-address last-octet 255;
dhcp-gateway-address-last-octet 1;
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;
}
}
}
}
domain-profile naPool {
family {
inet6 {
partition-type non-temporary-address;
preferred-prefix-length 120;
allocation-length 128;
install-discard-routes {
tag 55;
backup-tag 66;
}
}
}
}
}
}
user-plane-profiles {
up-std {
interfaces xe-1/1/0 {
interface-tag access001;
auto-configure {
stacked-vlan-ranges {
dynamic-profile dhcp-server-demux {
accept [ dhcp-v4 dhcp-v6 ];
ranges {
any,any;
}
}
}
remove-when-no-subscribers;
}
}
}
}
dynamic-profiles {
dhcp-client-demux {/* not elaborated */}
}
}
在此通用组配置中,接口 dhcp-local-server group 按其标记的名称引用接口。接口标记在配置中 user-plane-profile 定义。这样可以将相同的 DHCP 服务器组配置用于分配给同一接口标记的所有 BNG 用户平面逻辑端口。
用户平面配置文件是一个模板,用于 BNG 用户平面的接口配置和其他配置,例如合法拦截、强制门户内容交付、资源监控器等。假设您的大多数 BNG 用户平面都具有类似的配置。用户平面配置文件可让您避免经常重复 BNG 用户平面配置。DHCP 本地服务器可以通过标记名称(而不是标记 up:billerica:xe-1/1/0名称)来通用地表示 BNG 用户平面的接口。标记名称和 BNG 用户平面上下文(由 BNG CUPS 基础架构提供)的组合足以识别 DHCP 本地服务器组件的接口。这也允许配置避免为要分配给 DHCP 本地服务器组的每个 BNG 用户平面指定每个逻辑端口的接口。可以将相同的接口标记分配给每个逻辑接口,并在 DHCP 本地服务器组中引用一次。
通用组配置还包括地址池管理器 (APM) 的配置。在这种情况下,远程 APM 实例用于 IPv4 分区,并为本地 IPv6 分区定义本地保留,用于为 IPv6 非临时地址和委托前缀获取前缀。应用 bbe-cpi-0 组配置
完成 bbe-cpi-0 组配置后,您必须应用配置才能使其生效。
请参阅以下 bbe-cpi-0 组配置应用示例:
[edit]
groups {
bbe-bng-director {}
bbe-cpi-0 {}
}
apply-groups [ bbe-bng-director bbe-cpi-0 ];
保护 BNG CUPS 接口
BNG CUPS 控制器与地址池管理器 (APM)、BNG 用户平面和观察者(仅限多个地理部署,请参阅将 瞻博网络 BNG CUPS 与多个地理冗余配合使用)的接口通过 TLS(基于 TCP 的接口)或 DTLS(基于 UDP 的接口)进行保护。
密钥和证书
要使用传输级别安全性 (TLS) 或数据报传输级别安全性 (DTLS) 保护接口,必须提供以下信息:
- 私钥 — 密钥用于促进会话密钥的交换和对会话数据进行加密。
- 证书颁发机构 (证书颁发机构) 证书 - 根证书(根证书颁发机构)用于对证书或公钥进行签名。根证书还用于验证对等方的证书。
- 证书 - 已签名的公钥,其中包含有关证书持有者和证书本身的元数据。
使用各种可用工具(例如 openssl)生成密钥和证书。证书可以是自签名的,也可以是由外部证书颁发机构签名的。请务必使用您提供的根证书(根 CA)对 BNG CUPS 控制器及其外部对等方(APM、BNG 用户平面等)之间使用的证书颁发机构进行身份验证。
为 BNG CUPS 控制器指定密钥和证书
要在 BNG CUPS 控制器中配置密钥和证书,必须将密钥和证书提供给 BNG CUPS 控制器的微服务。在 BNG CUPS 控制器安装的 设置 步骤中,密钥和证书通过文件引用传递。
在 设置 步骤中,系统会提示您输入以下密钥和证书引用。
如果 jnpr-bng-controller 命名空间中存在 Kubernetes 密钥,则系统不会提示您输入相应的文件引用。
APM TLS secret name (remove) > K8sSecretName APM certificate (default: ) > BNGControllerCertificateFile APM private key (default: ) > BNGControllerKeyFile APM root certificate (default: ) > BNGControllerRootCertificateFile BBE observer connection TLS secret name (remove) > K8sSecretName BBE observer connection certificate (default: ) > BNGControllerCertificateFile BBE observer connection private key (default: ) > BNGControllerKeyFile BBE observer connection root certificate (default: ) > BNGControllerRootCertificateFile DTLS secret name (remove) > K8sSecretName DTLS certificate (default: ) > BNGControllerCertificateFile DTLS private key (default: ) > BNGControllerKeyFile DTLS root certificate (default: ) > BNGControllerRootCertificateFile
您可以对所有三个接口(APM、BNG 用户平面和观察者)使用同一组密钥和证书。
在 BNG CUPS 控制器中配置密钥和证书
在 BNG CUPS 控制器安装过程的 设置 步骤中指定密钥和证书后,即可在 BNG CUPS 控制器的 /config 目录路径下进行配置。
APMi 密钥和证书
APMi 密钥和证书作为 ca.crt (BNGControllerRootCertificateFile)、tls.crt (BNGControllerCertificateFile) 和 tls.key (BNGControllerKeyFile) 文件挂载在 /config/apmi 中。要使用 TLS 保护 BNG 控制器与 APM 的接口,请使用全限定路径名称创建以下配置:
[edit access address-pool-manager]
secrets {
ca-cert apmi/ca.crt;
certificate apmi/tls.crt;
key tls.key;
}
SCi 和 CPRi 密钥和证书
SCi 和 CPRi 密钥和证书作为 ca.crt (BNGControllerRootCertificateFile)、dtls.crt (BNGControllerCertificateFile) 和 dtls.key (BNGControllerKeyFile) 文件挂载在 /config/dtls 位置。要使用 DTLS 保护 BNG 用户平面(SCi 和 CPRi)的接口,请使用相对于 /config 的文件路径名执行以下配置:
[edit groups bbe-bng-director]
bng-controller {
user-planes {
bng-user-plane-name {
transport {
security-profile security-profile-name;
}
}
}
security-profiles {
security-profile-name {
ca-cert-file-name dtls/ca.crt;
cert-file-name dtls/dtls.crt;
key-file-name dtls/dtls.key;
}
}
}
在 BNG 用户平面中配置密钥和证书
密钥和证书文件必须复制到 BNG 用户平面文件系统中的 /config 目录中。将密钥和证书文件传输到 BNG 用户平面文件系统中的非易失性目录后,为 SCi 和 CPRi 接口配置 DTLS 密钥和证书。使用相对于 /config 的文件路径名执行以下配置:
例如文件路径名,如果DTLS密钥存储在 /config/up/mx2009-a.key中,则密钥将配置为: key-file-name up/mx2009-a.key。
[edit system services subscriber-management mode user-plane]
security-profiles {
security-profile-name {
ca-cert-file-name file-path-to-root-ca;
cert-file-name file-path-to-cert;
key-file-name file-path-to-key;
}
}
transport {
security-profile security-profile-name;
}
配置 BNG 用户平面
BNG 用户平面负责应用由 BNG CUPS 控制器发起的用户会话状态,并充当用户流量的转发平面。此外,它还负责将控制协议数据包重定向到 BNG CUPS 控制器,以协商和配置用户会话。
用于用户管理的 BNG 用户平面配置更为简单,因为大多数用于用户管理的配置都是在 BNG CUPS 控制器上完成的。
请参阅以下 BNG 用户平面配置示例:
configuration-database {
max-db-size 419430400;
}
subscriber-management {
enable;
mode {
user-plane {
user-plane-name billerica;
transport {
inet 198.19.20.33;
}
control-plane {
bng-controller-name new-england;
}
}
}
}
此外,您还需要对 BNG 用户平面 州执行类似的配置。
user-plane模式配置在节下subscriber-management执行。BNG 用户平面用于与 BNG CUPS 控制器通信的 IP 地址定义在节下transport。BNG 用户平面已分配到并将接受关联的 BNG CUPS 控制器名称在节control-plane下定义。
BNG 用户平面配置的其余部分应侧重于其他系统配置(例如,接口、遥测、路由、DDoS 保护、资源监控等)。
完成您的 BNG CUPS 控制器部署
完成 BNG CUPS 控制器安装过程后(请参阅 瞻博网络 BNG CUPS 安装指南),当前只有状态缓存服务在运行。您可以通过运行命令来 dbng status 验证这一点。
$ dbng status --context context-name scache 1/1 0
要完成 BNG CUPS 控制器的部署,您必须创建一个控制平面实例。在配置组中 bbe-bng-director 配置控制平面实例之前,需要执行此作。您可以使用命令 cpi-add 创建控制平面实例。
$ sudo -E dbng cpi add –context context-name --version 23.4R2 cpi-boston
这将创建控制平面实例 Pod。您可以再次运行该dbng status命令以验证是否已创建控制平面实例。在此示例中,您可以看到已创建。cpi-boston
$ dbng status --context context-name MICROSERVICE PODS RESTARTS cpi-boston 1/1 0 scache 1/1 0 Storage: Healthy
分配给控制平面实例的名称必须与您在控制平面实例的组配置中使用的 bbe-bng-director 名称匹配。控制平面实例创建完毕后,您可以进入 CLI,继续配置 BNG CUPS 控制器。
$ dbng cli –context context-name root@cpi-boston>
BNG CUPS 控制器和 BNG 用户平面协议作
现在,配置完 BNG 用户平面(billerica 和 canton)并分配了控制平面实例 (cpi-boston),BNG CUPS 控制器和 BNG 用户平面通过状态控制接口发出信令,形成了一个分解的 BNG 系统。信令由 PFCP 消息交换组成,用于在 BNG CUPS 控制器与分配给它的每个 BNG 用户平面之间建立关联。在用户会话协商和信令继续之前,信令还包括额外的 PFCP 消息交换。
下图显示了 BNG CUPS 控制器与每个分配的 BNG 用户平面之间的初始 PFCP 消息交换。
在下面的步骤 4 中,BNG 用户平面发起将控制协议数据包(例如,PPPoE、PADI、DHCP DISCOVER、DHCPv6、SOLICIT)转发到 BNG CUPS 控制器之前,初始 PFCP 交换分三个基本步骤进行。
分配给 BNG CUPS 控制器的每个 BNG 用户平面都要执行以下步骤。
-
BNG CUPS 控制器发起对 BNG 用户平面的心跳请求。BNG 用户平面响应心跳请求,并向 BNG CUPS 控制器发起自己的心跳请求。
BNG CUPS 控制器通过关联设置请求发起与 BNG 用户平面的关联。BNG 用户平面不会启动 PFCP 关联,而是等待 BNG CUPS 控制器的联系。如果请求来自配置
bng-controller-name的 ,BNG 用户平面将使用 PFCP 关联设置响应进行响应。然后,将与 BNG 用户平面形成 BNG CUPS 控制器关联。根据配置的时间间隔,在 BNG CUPS 控制器和 BNG 用户平面之间定期双向发送心跳消息。建议 BNG CUPS 控制器和 BNG 用户平面使用相同的间隔并重试配置。
您可以从 BNG CUPS 控制器执行该
show health user-plane命令,以确认与每个分配的 BNG 用户平面成功关联。user@host> show health user-plane Name Address CPi State Health Up-time Active/Backup-sess billerica 198.20.33.4 cpi-boston connected healthy 00:03:07 0/0 canton 198.20.48.7 cpi-boston connected healthy 00:00:18 0/0
BNG CUPS 控制器发起会话建立请求交换以配置以下 CPRi 隧道:
- 默认 CPRi,用于允许将控制数据包从 BNG 用户平面转发到 BNG CUPS 控制器,以启动用户会话协商。
- 如果在 BNG CUPS 控制器配置中分配给 BNG 用户平面的用户平面配置文件指定了为自动感知的 VLAN 配置的接口,则会为为自动感知的 VLAN 配置的每个接口创建一个逻辑端口 CPRi。系统会为每个接口发起会话建立请求,并包括接口部分中的
auto-configure逻辑端口名称和 VLAN 范围。逻辑端口 CPRi 用于支持延迟会话创建,从而支持 BNG 用户平面与 BNG CUPS 控制器之间交换控制协议数据包,以协商用户会话。
此步骤由三个子步骤组成。子步骤可以按任意顺序发生,但预计在执行用户会话协商之前发生:
BNG 用户平面发起一个或多个节点级网络实例报告。报告显示每个配置的网络实例及其初始连接状态(已连接或隔离)。此作是根据 TR-459 执行的。
BNG 用户平面发起一个或多个节点级逻辑端口报告。报告显示每个面向接入的逻辑端口及其初始转发容量。此作是根据 TR-459 执行的。
BNG CUPS 控制器发起一个或多个关联更新请求交换,以创建一个或多个已调配的用户组。BNG 用户平面分配的逻辑端口包含在用户组创建消息中。
BNG CUPS 控制器通过默认端口或逻辑端口 CPRi 从 BNG 用户平面接收控制协议数据包。根据 BNG 用户平面与 BNG CUPS 控制器之间的控制数据包交换,用户会话协商开始,从而导致 BNG CUPS 控制器发起会话建立请求,以创建用户会话 CPRi。
请注意以下几点:
在从 BNG CUPS 控制器收到针对逻辑端口的节点级用户组创建请求之前,BNG 用户平面不会将从面向接入的逻辑端口传入的接收控制协议数据包转发到 BNG CUPS 控制器。
BNG CUPS 控制器会丢弃到达 CPRi 的已接收控制数据包,直到从 BNG 用户平面收到用于创建或修改逻辑端口相应用户组的关联更新响应。