亚马逊AWS官方博客

新增:AWS Telco Network Builder – 部署和管理电信网络

在一百多年的时间里,电信行业实现了标准化和规范化,并在此过程中发展出了多种方法、技术以及一整套专用词汇(有很多有趣的缩略词)。为了确保给客户提供尽可能出色的语音和数据服务,这个行业需要承袭这样的庞大传承,还要利用新技术。

今天我想向大家介绍一下 AWS Telco Network Builder(TNB)。这项新服务旨在帮助通信服务提供商(CSP)在 AWS 上部署和管理公共和专用电信网络。它使用现有标准、实践和数据格式,因此让通信服务提供商能更容易地利用 AWS 的强大力量、规模与灵活性。

当今的 CSP 通常会将其代码部署到虚拟机。但为了开创未来,他们正在寻求提高灵活性,并且越来越多地使用容器。AWS TNB 旨在参与这一转型,利用 Kubernetes 和 Amazon Elastic Kubernetes Service(EKS)进行打包和部署。

概念和词汇
在深入介绍这项服务之前,我们先看一下该行业特有的一些概念和词汇,这些概念和词汇与 AWS TNB 相关:

欧洲电信标准协会(ETSI– 一个欧洲组织,专门定义适合全球使用的规范。 AWS TNB 支持多种 ETSI 规范,包括 ETSI SOL001 到 ETSI SOL005,以及 ETSI SOL007

通信服务提供商(CSP)– 提供电信服务的组织。

云应用程序的拓扑结构和编排规范(TOSCA)– 一种标准语法,用于描述电信应用程序的服务模板。

网络功能(NF)– 在电信网络中执行特定核心功能或增值功能的软件组件。

虚拟网络功能描述符(VNFD)– 一种规范,用于上线和管理一项网络功能所需的元数据。

云服务存档(CSAR)– 一种 ZIP 压缩文件,其中包含 VNFD、对含有网络功能的容器映像的引用,以及支持和管理网络功能所需的任何其他文件。

网络服务描述符(NSD)– 用于一组网络功能的计算、存储、网络和位置要求规范,以及汇集这些功能以构成电信网络所需的信息。

网络核心 – 网络的核心部分。它使用控制面板和数据面板操作来管理身份验证、授权、数据和策略。

服务编排工具(SO)– 一种外部的高级别网络管理工具。

无线接入网络(RAN)– 为特定地理区域提供无线覆盖的组件(基站、天线等)。

使用 AWS Telco Network Builder(TNB)
我虽然不是通信服务提供商,但仍会尽我所能引导您完成入门体验! 主要步骤如下:

  1. 上传 CSAR,为每个网络功能创建功能包。
  2. 上传网络服务描述符(NSD),为相应网络创建网络包。
  3. 选择并实例化一个 NSD,创建网络。

首先,我打开 AWS TNB 控制台并单击 Get started(开始使用):

最初,我没有网络、没有功能包,也没有网络包:

我的同事给了我示例 CSAR 和 NSD,供我在这篇博客文章中使用(网络功能来自 Free 5G Core):

每个 CSAR 都是一个非常简单的 ZIP 文件,里面有 VNFD 和其他一些内容。例如,Free 5G Core 会话管理功能(smf)的 VNFD 如下所示:

tosca_definitions_version: tnb_simple_yaml_1_0

topology_template:

  node_templates:

    Free5gcSMF:
      type: tosca.nodes.AWS.VNF
      properties:
        descriptor_id: "4b2abab6-c82a-479d-ab87-4ccd516bf141"
        descriptor_version: "1.0.0"
        descriptor_name: "Free5gc SMF 1.0.0"
        provider: "Free5gc"
      requirements:
        helm: HelmImage

    HelmImage:
      type: tosca.nodes.AWS.Artifacts.Helm
      properties:
        implementation: "./free5gc-smf"

VNFD 的最后一部分(HelmImage)指向定义实现的 Kubernetes Helm 图表

我在控制台中点击 Function packages(功能包),再点击 Create function package(创建功能包)。然后上传第一个 CSAR,并单击 Next(下一步):

在检查详细信息后,我点击 Create function package(创建功能包)(每个 VNFD 可以包含一组带有默认值的参数,这些参数可被特定部署专用的值所覆盖):

我对其余九个 CSAR 重复此过程,所有十个功能包都准备就绪,可以使用了:

现在,我已经准备好创建网络包了。网络服务描述符也相当简单,我这里展示一些摘录。首先,NSD 为每个网络功能建立从 descriptor_idnamespace 的映射,以便按名称引用这些功能:

vnfds:
  - descriptor_id: "aa97cf70-59db-4b13-ae1e-0942081cc9ce"
    namespace: "amf"
  - descriptor_id: "86bd1730-427f-480a-a718-8ae9dcf3f531"
    namespace: "ausf"
...

然后它定义输入变量,包括默认值(这让我联想到了 AWS CloudFormation 模板):

  inputs:
    vpc_cidr_block:
      type: String
      description: "CIDR Block for Free5GCVPC"
      default: "10.100.0.0/16"

    eni_subnet_01_cidr_block:
      type: String
      description: "CIDR Block for Free5GCENISubnet01"
      default: "10.100.50.0/24"
...

随后,它使用变量创建到所需 AWS 资源(在本例中为 VPC 和子网)的映射:

   Free5GCVPC:
      type: tosca.nodes.AWS.Networking.VPC
      properties:
        cidr_block: { get_input: vpc_cidr_block }
        dns_support: true

    Free5GCENISubnet01:
      type: tosca.nodes.AWS.Networking.Subnet
      properties:
        type: "PUBLIC"
        availability_zone: { get_input: subnet_01_az }
        cidr_block: { get_input: eni_subnet_01_cidr_block }
      requirements:
        route_table: Free5GCRouteTable
        vpc: Free5GCVPC

随后它会在 VPC 中定义一个 AWS 互联网网关:

    Free5GCIGW:
      type: tosca.nodes.AWS.Networking.InternetGateway
      capabilities:
        routing:
          properties:
            dest_cidr: { get_input: igw_dest_cidr }
      requirements:
        route_table: Free5GCRouteTable
        vpc: Free5GCVPC

最后,它指定将网络功能部署到 EKS 集群;功能会按指定顺序进行部署:

    Free5GCHelmDeploy:
      type: tosca.nodes.AWS.Deployment.VNFDeployment
      requirements:
        cluster: Free5GCEKS
        deployment: Free5GCNRFHelmDeploy
        vnfs:
          - amf.Free5gcAMF
          - ausf.Free5gcAUSF
          - nssf.Free5gcNSSF
          - pcf.Free5gcPCF
          - smf.Free5gcSMF
          - udm.Free5gcUDM
          - udr.Free5gcUDR
          - upf.Free5gcUPF
          - webui.Free5gcWEBUI
      interfaces:
        Hook:
          pre_create: Free5gcSimpleHook

点击 Create network package(创建网络包),选择 NSD,然后点击 Next(下一步)继续。AWS TNB 要求我检查功能包列表和 NSD 参数。检查之后,我点击 Create network package(创建网络包):

这样我的网络包就创建完毕,几秒钟后就能使用了:

现在我准备好创建网络实例了! 选择网络包并从 Actions(操作)菜单中选择 Create network instance(创建网络实例):

我为网络指定名称和描述,然后点击 Next(下一步):

确保选择我需要的网络包,查看要部署的功能包列表,然后点击 Next(下一步):

最后检查一遍,然后点击 Create network instance(创建网络实例):

我选择新网络实例并从 Actions(操作)菜单中选择 Instantiate(实例化):

我检查参数,输入所需的替代项,然后点击 Instantiate network(实例化网络):

AWS Telco Network Builder(TNB)开始实例化我的网络(该服务会在后台创建一个 AWS CloudFormation 模板,使用该模板创建堆栈并执行其他任务,包括 Helm 图表和自定义脚本)。实例化步骤完成后,我的网络就准备就绪了。实例化网络会创建部署,同一个网络可以多次部署(可能要改写一些参数)。我可以一目了然地查看所有部署:

我可以返回仪表板,查看我的网络、功能包、网络包和最近的部署:

AWS TNB 部署深入探究
我们来快速浏览一下我的部署。以下是 AWS TNB 为我设置的内容:

网络 – 一个 Amazon Virtual Private Cloud(Amazon VPC),包含三个子网、一个路由表、一个路由和一个互联网网关。

计算 一个 Amazon Elastic Kubernetes Service(EKS) 集群。

CI/CD – 一个 AWS CodeBuild 项目,每次向集群添加节点时都会触发。

注意事项
关于 AWS Telco Network Builder(TNB),需要注意以下几个要点:

访问 – 除了我上面为您展示的控制台访问方法外,您还可以通过 AWS 命令行界面(AWS CLI)AWS SDK 访问 AWS TNB

部署选项 – 我们即将支持创建覆盖单个 AWS 区域中的多个可用区的网络。随着时间的推移,我们预计还会增加更多部署选项,例如 Local Zones 和 Outposts。

定价 – 定价基于AWS TNB 管理的网络功能数量以及对 AWS TNB API 的调用次数,但每个月在每个 AWS 区域的前 45000 次 API 请求不收费。作为部署的一部分创建的 AWS 资源也需要收取额外费用。如需了解更多信息,请阅读 TNB 定价页面。

入门指南
要了解更多信息并开始使用,请访问 AWS Telco Network Builder(TNB)主页。

Jeff