ORAN专题系列-20:5G O-RAN 通过TR-069协议实现一体化小基站的自动配置和安装

Table of Contents

前言:

第一章 为什么需要TR069协议?

第二章 什么是TR069协议?

第三章 TR069网络架构

第四章 TR069协议栈

第五章 TR069自动配置的消息交互流程

第六章 TR-069与O-RAN NMS的关系


前言:

TR069原本是 CPE(客户前置设备) 和 ACS(自动配置服务器)之间通信的协议。通过此协议,能够实现CPE自动开通与即插即用。

一体化的小基站本质上是一种能够提供LTE/5G无线接入的CPE,特别是部署在企业网或公网中的小基站。传统的通过网管配置基站的方式越来越不适应O-RAN白盒化小基站的需求,即插即用对于一体化白盒小基站越来越重要。


Table of Contents

前言:

第一章 为什么需要TR069协议?

第二章 什么是TR069协议?

第三章 TR069网络架构

第四章 TR069协议栈

第五章 TR069自动配置的消息交互流程

第六章 TR-069与O-RAN NMS的关系



第一章 为什么需要TR069协议?

在N年前,随着VoIP、IPTV等越来越多IP终端设备的普及(尤其在家庭中的普及),大量设备的配置和维护变得越来越困难,大大提高了网络产品运营商的成本,传统的基于SNMP的网管系统面对众多的终端设备时显得力不从心,限制了宽带接入市场的发展速度和规模。于是TR069因运而生,TR069CPE(客户前置设备) 和 ACS(自动配置服务器)之间通信的协议,通过此协议,CPE设备能够实现自动开通与即插即用。

一体化的小基站本质上是一种能够提供LTE/5G无线接入的CPE,特别是部署在企业网或公网中的小基站。传统的通过网管配置基站的方式越来越不适应O-RAN白盒化小基站的需求,即插即用对于一体化白盒小基站越来越重要。

即插即用,在LTE小基站时代,就有这样的功能,但不同的厂家,有不同的实现方案,没有统一的标准。

对于O-RAN白盒化小基站, 要支持即插即用,TR069开放标准是一个不错的选择,虽然,目前还没有看到到其已经成为O-RAN标准,但中国移动已经已经建议,国内的O-RAN白盒化小基站需要支持TR069。


第二章 什么是TR069协议?

TR069, 全称“Technical Report 069”是由DSL Forum(一个非盈利性的全球行业联盟,致力于发展宽带网络范,

其成员包括通讯、设备、计算机、网络和服务提供商等行业的领先厂商,现已更名为“Broadband Forum”)修订一

份技术规范,该规范是应用层的管理协议,命名为“CPE广域网管理协议(CPE WAN Management Protocol)”。

TR069定义了一套全新的网管体系结构,包括管理模型,交互接口及基本的管理参数,能够有效地实施对家庭网络设

备的管理。


第三章 TR069网络架构

在上述架构中,包括两个最主要的网元:(1)自动配置服务器(ACS)和(2) 网关设备CPE.

(1)自动配置服务器(ACS):负责给用户终端设备(CPE)提供配置数据的路径,完成配置数据自动化下载和设备的自动化初始化。

(2)网关设备(CPE):CPE,英文全称为Customer Premise Equipment,直译:客户前置设备,实际是一种接收移动信号并以无线WIFI信号转发出来的移动信号接入设备,它也是一种将高速4G或者5G信号转换成WiFi信号的设备,可支持同时上网的移动终端数量也较多。CPE可大量应用于农村,城镇,医院,单位,工厂,小区等无线网络接入,能节省铺设有线网络的费用。

(3)终端设备(Managed xxx Device)通过CPE连接到网络中,享受网络提供的服务。

(4)北向接口:ACS与运营商的其他网管系统、业务管理系统、计费系统(OSS/BSS)之间的接口称为北向接口。

(5)南向接口:ACS与CPE之间的接口称为南向接口,TR069协议主要定义南向接口的标准。


第四章 TR069协议栈

CPE/ACS Management Application
RPC Methods
SOAP
HTTP
SSL/TLS
TCP/IP

从下到上的协议封装如下:

(1)TCP/IP:非安全传输控制协议

(2)SSL/TLS:安全传输控制协议

(3)HTTP:一种简单的、面向TCP连接的、基于客户/服务器模式、请求-响应的、超文本传输协议。

因此,TCP/IP、SSL/TLS、HTTP都是传输协议,用于在互联网的不同设备之间传输“数据”!

(4)SOAP(Simple Object Accrss Protocol,简单对象访问协议):是一种简单的基于XML的协议,可以使应用程序在分散或分布式的环境中,通过HTTP传输协议,来交换基于对象模型文本信息。

因此,SOAP协议本身也是一种传输协议,需要传输的信息被封装在所谓的“对象”中。

 ACS与CPE之间进行消息,就是通过HTTP协议进行传输,并把消息内容封装在SOAP协议以及SOAP协议的对象中,SOAP是由SOAP head和SOAP body两部分组成。

SOAP报文实例

(5)RPC Methods:这是TR069协议自有定义一部分,它定义了CPE与ACS之间,通过TR069协议,实现远程操作的方法(即所谓的远程过程调用RPC)

这些方法,用于自动配置服务器(ACS)对CPE进行配置和管理,如:设置CPE参数、获取CPE参数、硬件升级、重启设备等;

常见的自动配置服务器(ACS)对CPE进行配置和管理的方法有:

当然,CPE也可以请求ACS执行某种远程操作,这些方法有:

(6)CPE/ACS Management Application:CPE/ACS之间交互的应用层消息


第五章 TR069自动配置的消息交互流程

0. 设备启动。

1. 根据预先配置的ACS(自动配置服务器)地址,与ACS建立安全的HTTP连接

2. CPE给ACS发出一个Inform,上报自身的设备信息

设备信息包括:

参数名称 参数说明
DeviceID 数据结构标识CPE
Event 标识此次Inform发起的原因
MaxEnvelopes HTTP Response可携带SOAP信封数
CurrentTime CPE当前的时间
RetryCount 这次Session最大的重复连接次数
ParameterList 这次Inform所需携带的参数

消息体案例:

POST /service.tr069 HTTP/1.1
Host: 183.62.12.23:8012
User-Agent: cwmp
Content-Type: text/xml; charset=utf-8
Connection: keep-alive
Content-Length: 1730

<SOAP-ENV:Envelope 
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
 xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:cwmp="urn:dslforum-org:cwmp-1-0">
  <SOAP-ENV:Header>
    <cwmp:ID SOAP-ENV:mustUnderstand="1">946684824</cwmp:ID>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <!-- inform方法任何时刻要建立与ACS的连接,都必须调用Inform方法-->
    <!-- 来初始化一个传输序列,向ACS服务器上报一些事件,具体事件就携带在EventCode -->
    <cwmp:Inform>
    <!-- 设备描述信息 -->
      <DeviceId>
        <!-- 设备厂商 -->
        <Manufacturer>star-net</Manufacturer>
        <!-- 设备制造商的唯一标示 -->
        <OUI>00D0F8</OUI>
        <!-- 设备类型 -->
        <ProductClass>SVP3000_V5_SIP_CN</ProductClass>
        <!-- 设备序列号 -->
        <SerialNumber>00100400RJ0100100000001AA9800003</SerialNumber>
      </DeviceId>
      <!-- 引起此次会话建立的具体事件 -->
      <Event SOAP-ENC:arrayType="cwmp:EventStruct[1]">
        <EventStruct>
          <!-- 上报BOOT事件,也就是告诉ACS要发起CWMP连接了 -->
          <!-- 1 boot表明发起会话的原因是设备上电(首次启动或者其他原因引起的设备重启) -->
          <EventCode>1 BOOT</EventCode>
          <CommandKey></CommandKey>
        </EventStruct>
      </Event>
      <!-- 接收响应的允许SOAP信包数目,0表示无限制 -->
      <MaxEnvelopes>1</MaxEnvelopes>
      <!-- cpe当前的时间 -->
      <CurrentTime>2000-01-01T08:00:23</CurrentTime>
      <!-- 完成inform调用前尝试的次数每次加1 -->
      <RetryCount>0</RetryCount>
      <!-- CPE设备参数列表-->
      <ParameterList SOAP-ENC:arrayType="cwmp:ParameterValueStruct[6]">
        <ParameterValueStruct>
          <!-- 设备描述信息 -->
          <Name>Device.DeviceSummary</Name>
          <Value>Device:1.0[](Baseline:1), VoiceService:1.0[1](Baseline:1)</Value>
        </ParameterValueStruct>
        <ParameterValueStruct>
        <!-- 设备的硬件版本信息 -->
          <Name>Device.DeviceInfo.HardwareVersion</Name>
          <Value>5.0</Value>
        </ParameterValueStruct>
        <ParameterValueStruct>
          <!-- 设备的软件版本信息 -->
          <Name>Device.DeviceInfo.SoftwareVersion</Name>
          <Value>AIM1.3.10.8</Value>
        </ParameterValueStruct>
        <ParameterValueStruct>
          <!-- 请求URL(设备联系地址) -->
          <Name>Device.ManagementServer.ConnectionRequestURL</Name>
          <Value>http://192.168.99.17:7547/</Value>
        </ParameterValueStruct>
        <ParameterValueStruct>
          <!-- 对某些方法的调用会导致该值的该改变如 Scheduled Inform、reboot、download、upload方法 --> 
          <!-- 除此以外的调用该值均为空,此消息中设备只调用了 inform方法,故该值应该置为空 -->
          <Name>Device.ManagementServer.ParameterKey</Name>
          <Value></Value>
        </ParameterValueStruct>
        <ParameterValueStruct>
          <!-- 设备ip地址 -->
          <Name>Device.LAN.IPAddress</Name>
          <Value>192.168.99.17</Value>
        </ParameterValueStruct>
      </ParameterList>
    </cwmp:Inform>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

3. ACS会返回给一个Inform response作为确认

消息体案例:

HTTP/1.1 200 OK
Date: Tue, 02 Aug 2011 03:20:53 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: SerialNumber=00100400RJ0100100000001AA9800003; path=/
Cache-Control: private
Content-Type: text/xml;charset=UTF-8
Content-Length: 522

<!-- 对设备端inform消息的响应即接受连接请求 -->
<soap:Envelope 
 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
 xmlns:cwmp="urn:dslforum-org:cwmp-1-0" 
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
  <soap:Header>
    <cwmp:ID soap:mustUnderstand="1">946684824</cwmp:ID>
    <cwmp:HoldRequests soap:mustUnderstand="1">0</cwmp:HoldRequests>
  </soap:Header>
  <soap:Body>
    <!-- ACS接受设备端(cpe)端的inform请求(即创建cwmp连接的请求) -->
    <cwmp:InformResponse>
      <MaxEnvelopes>1</MaxEnvelopes>
    </cwmp:InformResponse>
  </soap:Body>
</soap:Envelope>

4. Content-Length=0:发送空消息,表明无数据上报

消息体案例:

POST /service.tr069 HTTP/1.1
Host: 183.62.12.23:8012  
User-Agent: cwmp
Content-Type: text/xml; charset=utf-8
Connection: keep-alive
Cookie: SerialNumber=00100400RJ0100100000001AA9800003;path=/
Content-Length: 0

<!-- Host: ACS(自动配置服务器)地址 -->
<!-- Cookie: 设置在设备的序列号-->
<!-- Content-Length: 消息内容长度为0代表空消息-->

5. 终端的合法性验证

ACS根据空消息中携带的序列号对设备进行合法性验证,若验证通过则进行后续操作,若不通过则下发消息提示设备非法。

6.  GetParameterValues:请求终端的账号验证

消息体案例:

HTTP/1.1 200 OK
Date: Tue, 02 Aug 2011 03:20:53 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: SerialNumber=00100400RJ0100100000001AA9800003; path=/
Cache-Control: private
Content-Type: text/xml;charset=UTF-8
Content-Length: 658

<soap:Envelope
 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:cwmp="urn:dslforum-org:cwmp-1-0" 
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
  <soap:Header>
    <cwmp:ID soap:mustUnderstand="1">1</cwmp:ID>
    <cwmp:HoldRequests soap:mustUnderstand="1">0</cwmp:HoldRequests>
  </soap:Header>
  <soap:Body>
    <!-- 请求的方法为GetParameterValues,获取设备端的参数信息 -->
    <cwmp:GetParameterValues>
      <ParameterNamesSOAP-ENC:arrayType="xsd:string[2]">
        <!-- 获取设备TR069网管用户名 -->
        <string>Device.ManagementServer.Username</string>
        <!-- 获取设备TR069网管密码 -->
        <string>Device.ManagementServer.Password</string>
      </ParameterNames>
    </cwmp:GetParameterValues>
  </soap:Body>
</soap:Envelope>

7. GetParameterValuesResponse:回复终端的账号信息

消息体案例:

HTTP/1.1
Host: 183.62.12.23:8012
User-Agent: cwmp
Content-Type: text/xml; charset=utf-8
Connection: keep-alive
Cookie: SerialNumber=00100400RJ0100100000001AA9800003;path=/
Content-Length: 828
SOAPAction: ""

<SOAP-ENV:Envelope
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:cwmp="urn:dslforum-org:cwmp-1-0">
  <SOAP-ENV:Header>
    <cwmp:ID SOAP-ENV:mustUnderstand="1">1</cwmp:ID>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <!-- 将账号信息作为ACS请求的响应消息 -->
    <cwmp:GetParameterValuesResponse>      
      <ParameterList xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="cwmp:ParameterValueStruct[2]">
        <ParameterValueStruct>
          <!-- 设置在设备上的网管用户名 -->
          <Name>Device.ManagementServer.Username</Name>
          <!-- 用户名的具体值 -->
          <Value>66661160</Value>
        </ParameterValueStruct>
        <ParameterValueStruct>
          <!-- 设置在设备上的网管密码 -->
          <Name>Device.ManagementServer.Password</Name>
          <!-- 密码的具体值 -->
          <Value>66661160</Value>
        </ParameterValueStruct>
      </ParameterList>
    </cwmp:GetParameterValuesResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

8. 对终端的账号进行个验证(ACS与账号服务器通信)

9. Download:账号合法,许可CPE下载配置文件,并提供配置数据文件的URL地址

消息体案例:

HTTP/1.1 200 OK
Date: Tue, 02 Aug 2011 03:21:04 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: SerialNumber=00100400RJ0100100000001AA9800003; path=/
Cache-Control: private
Content-Type: text/xml;charset=UTF-8
Content-Length: 856

<soap:Envelope
 xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:cwmp="urn:dslforum-org:cwmp-1-0"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
  <soap:Header>
    <cwmp:ID soap:mustUnderstand="1">1</cwmp:ID>
    <cwmp:HoldRequests soap:mustUnderstand="1">0</cwmp:HoldRequests>
  </soap:Header>
  <soap:Body>
    <cwmp:Download>
      <CommandKey>M Download</CommandKey>
      <!-- 文件类型 配置文件-->
      <FileType>3 Vendor Configuration File</FileType>
      <!-- 配置文件的URL地址,设备端从该地址获取配置文件并自动载入设备 -->
      <URL>http://183.62.12.23:8012/Config.aspx?ID=00100400RJ0100100000001AA9800003</URL>
      <Description></Description>
      <Username></Username>
      <Password></Password>
      <FileSize>0</FileSize>
      <TargetFileName>ConfigFile.xml</TargetFileName>
      <DelaySeconds>0</DelaySeconds>
      <SuccessURL></SuccessURL>
      <FailureURL></FailureURL>
    </cwmp:Download>
  </soap:Body>
</soap:Envelope>

10. 从指定的文件服务器上下载配置文件

11. DownloadResponse:回复下载配置文件的状态(成功)

消息体案例:

POST /service.tr069 HTTP/1.1
Host: 183.62.12.23:8012
User-Agent: cwmp
Content-Type: text/xml; charset=utf-8
Connection: keep-alive
Cookie: SerialNumber=00100400RJ0100100000001AA9800003;path=/
Content-Length: 484
SOAPAction: ""

<SOAP-ENV:Envelope
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:cwmp="urn:dslforum-org:cwmp-1-0">
  <SOAP-ENV:Header>
    <cwmp:ID SOAP-ENV:mustUnderstand="1">1</cwmp:ID>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <!-- 通过该消息告知ACS服务器设备成功获取配置文件 -->
    <cwmp:DownloadResponse>
      <!-- 成功下载的状态码 -->
      <Status>1</Status>
    </cwmp:DownloadResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

12. 是否升级下载的配置文件,由终端自己决定

13. Content-Length=0: 发送空消息,表明无数据传输

消息体案例:

HTTP/1.1 200 OK
Date: Tue, 02 Aug 2011 03:21:05 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Set-Cookie: SerialNumber=00100400RJ0100100000001AA9800003; path=/
Cache-Control: private
Content-Length: 0 

<!-- Content-Length: 消息内容长度为0代表空消息 -->

备注:

从上述流程,可以看出,流程是由中断通过inform消息上报自己的device id触发的,但整个流程的控制,是有ACS服务器完成的,终端都是被动的响应ACS服务器的请求。


第六章 TR-069与O-RAN NMS的关系

TR-069并非是无线接入网的NMS系统,它是NMS系统的一小部分,仅限于终端即插即用时,通过该协议实现自动配置与初始化。

猜你喜欢

转载自blog.csdn.net/HiWangWenBing/article/details/108452198