1
TR-69 CPE WAN Management Protocol
3
Key words
ACS: Automatic Configuration Server
CPE: Customer Premises Equipment
CWMP: CPE WAN Management Protocol
RPC: Remote Procedure Call
SNMP: Simple Network Management Protocol
STUN: Simple Traversal of UDP through NAT
TLS: Transport Layer Security
UPnP: Universal Plug and Play
4
Contents
History
TR-69 CPE WAN Management Protocol
TR-98 InternetGatewayDevice Data Model
TR-104 Provisioning Parameters for VoIP CPE
CWMP Related Specifications
CWMP Interoperability
CWMP ACS Servers
Implementation
Deployment
CLI
5
History
DSLHome working group started work on DSL CPE/modem auto-configuration years ago
TR-037 “DSL CPE Auto-Configuration” is an ATM ILMI based auto-configuration of mainly layer2 (ATM PVCs and their encapsulation)
TR-046 “Auto-Configuration Architecture & Framework” specifies the scope for future auto-configuration work
6
History
TR-64 “LAN-Side DSL CPE Configuration Specification” was started because of the need for a standard interface for PC-based (LAN-side) install applications. Based upon the UPnP Device Architecture, extensions where defined to meet the LAN-side CPE configuration requirements.
Differences between TR-64 and UPnP:• Separate root device and namespace (co-exists independent from UPnP)• No support for eventing (GENA)• Digest Authentication per SOAP action• Optional use of SSL/TLS (Secure Socket Layer/Transport Layer Security)
• Transactional semaphores to prevent simultaneous configuration by multiple control points
• Different modeling of some connection models (PPPoE) by LinkType/ConnectionType
• IGD datamodel extensions for DSL CPE management
7
History
TR-69 “CPE WAN Management Protocol” specification started at the same time as TR-64.From the start, the technical approach was controversial and heavily discussed. Cisco proposed an SNMP based solution, where as 2Wire contributed their completely proprietary management protocol.
SNMP was not selected because of • security concerns (SNMPv1 and SNMPv2)• lack for standard MIBs for DSL CPE management• management<>agent role: manager connects to agents, where for scalability
reasons the CPE needed to connect to the server
A proprietary protocol was not acceptable, needs to be standards based
Data model ideally common/aligned between TR-64 and TR-69
8
Contents
History
TR-69 CPE WAN Management Protocol
TR-98 InternetGatewayDevice Data Model
TR-104 Provisioning Parameters for VoIP CPE
CWMP Related Specifications
CWMP Interoperability
CWMP ACS Servers
Implementation
Deployment
CLI
9
What is TR-069
TR-069 is a CPE WAN Management Protocol (CWMP), which was created by the DSL Forum.
It provides the communication between CPE and Auto Configuration Servers (ACS). An ACS can manage a device, trouble shoot, configure, upgrade etc.
TR-069 is currently the de facto standard for activation of the boxes at their first connection to the network.
10
TR-69 CPE WAN Management Protocol
Starting from a base set of management functionality requirements:
• Auto configuration and dynamic service provisioning
• Software/firmware image management
• Status and performance monitoring
• Diagnostics
Together with a requirement for using standard protocols/technology
While aligning the management data model with TR-64
A decision was taken to use get/set Remote Procedure Calls on a data model instead of functional SOAP actions (like UPnP/TR-64; e.g. “AddPortMapping”)
11
CWMP Protocols
TCP/IP: Transmission Control Protocol / Internet Protocol
SSL/TLS: Secure Socket Layer version 3.0; Transport Layer Security version 1.0
HTTP: Hypertext Transport Protocol version 1.1; HTTP POST messages
SOAP: Simple Object Access Protocol version 1.1
XML RPC: Remote procedure call encoded in SOAP. All messages exchanged between the CPE and ACS are RPCs.
12
TR-69: SOAP
The TR-69 SOAP binding on HTTP is not standard.
The CPE sends a SOAP envelope in HTTP request with RPC to server.
Server sends HTTP reply with SOAP envelope containing RPC response
CPE sends a HTTP empty POST request
Server sends HTTP reply with SOAP envelope containing RPC
• Standard client/server roles are reversed as server is sending “requests” (RPCs) within a HTTP reply message
TR-69 is because of this not web services (including WSDL) compatible/compliant and doesn’t work with off-the-shelf SOAP or web server libraries
13
RPC
Remote Procedure Calls (RPC) are methods that allow one program to use the services of another program in a remote machine.
The calling program sends a message and data to the remote program, which is executed, and results are passed back to the calling program.
14
TR-69: RPCs
Required RPC’s
CPE Methods• GetRPCMethods• SetParameterValues• GetParameterValues• GetParameterNames• SetParameterAttributes• GetParameterAttributes• AddObject• DeleteObject• Download• Reboot
Server Methods• GetRPCMethods• Inform• TransferComplete
Optional RPC’s
CPE Methods• Upload• FactoryReset• GetQueuedTransfers• ScheduleInform• SetVoucers• GetOptions
Server Methods• RequestDownload• Kicked
15
TR-69: Management Sessions
The CPE establishes a connection to the server on a number of occasions:
• The first time it is installed/connected
• On startup
• Periodically
• When requested by the server
• Whenever particular parameter values change (via Connection Request)
• When a file transfer is complete (e.g. after firmware upgrade)
• When a diagnostics test is complete
On each connection establishment, the CPE sends the Inform RPC to the server which contains the reason/event for the connection establishment.
The CPE will keep on sending HTTP requests to the server to allow the server to respond with RPCs until both have nothing more to send.
16
TR-69: Example message flow
Example management sessionmessage flow
The CPE is responsible for establishing the session to the server
The CPE keeps sending HTTP POST requests during the session.
The session is closed as soon as both CPE and ACS have indicated they have nothing more to send (response or new RPC)
CPE ACS
Open connection
SSL Initiation
HTTP PostInform Request
HTTP ResponseInformResponse
HTTP Post
HTTP ResponseGetParameterValues Request
HTTP PostGetParameterValuesResponse
HTTP ResponseSetParameterValues Request
HTTP PostSetParameterValuesResponse
HTTP Response
Close connection
17
Contents
History
TR-69 CPE WAN Management Protocol
TR-98 InternetGatewayDevice Data Model
TR-104 Provisioning Parameters for VoIP CPE
CWMP Related Specifications
CWMP Interoperability
CWMP ACS Servers
Implementation
Deployment
CLI
18
TR-98: IGD Data Model
TR-98 Amendment 1 specifies the Internet Gateway Device data model for TR-69 (which specifies the protocol).
The data model is based upon the initial UPnP IGD model with a large number of extensions for DSL gateway provisioning.
It is a hierarchical tree with dot-separated parameter paths, for example:InternetGatewayDevice.DeviceInfo.ModelNameInternetGatewayDevice.DeviceInfo.SoftwareVersionInternetGatewayDevice.ManagementServerInternetGatewayDevice.TimeInternetGatewayDevice.Layer3ForwardingInternetGatewayDevice.Layer2Bridging.Bridge.x.VLANIDInternetGatewayDevice.Layer2Bridging.Filter.x.FilterInterfaceInternetGatewayDevice.LANDevice.x.LANHostConfigManagement.IPInterface.x.IPInterfaceIPAddressInternetGatewayDevice.LANDevice.x.LANEthernetInterfaceConfigInternetGatewayDevice.LANDevice.x.WLANConfigurationInternetGatewayDevice.WANDevice.x.WANConnectionDevice.x.WANIPConnection.x.EnableInternetGatewayDevice.WANDevice.x.WANConnectionDevice.x.WANIPConnection.x.PortMappingInternetGatewayDevice.WANDevice.x.WANConnectionDevice.x.WANPPPConnection.x.EnableInternetGatewayDevice.WANDevice.x.WANConnectionDevice.x.WANPPPConnection.x.UsernameInternetGatewayDevice.WANDevice.x.WANConnectionDevice.x.WANPPPConnection.x.PasswordInternetGatewayDevice.WANDevice.x.WANConnectionDevice.x.WANPPPConnection.x.PortMappingInternetGatewayDevice.Services.VoiceService.x.VoiceProfile.x.SIP.ProxyServerInternetGatewayDevice.Services.VoiceService.x.VoiceProfile.x.Line.x.SIP.URI
The data model can be addressed by full parameter paths or partial paths
19
TR-98: IGD Data Model
The following operations/RPC’s are supported on the datamodel:
• GetParameterNames Retrieve the name of parameters, including object instance numbers
• GetParameterValues Retrieve the values of one or more parameters
• SetParameterValues Set the values of one or more parameters to a specific value
• AddObject Add a new object/entry and return the new unique instance number
• DeleteObject Delete an object from the datamodel
• GetParameterAttributes Retrieve parameter attributes/meta-data: access rights and event subscriptions
• SetParameterAttributes Set parameter attributes: access rights and active/passive event subscriptions
20
Contents
History
TR-69 CPE WAN Management Protocol
TR-98 InternetGatewayDevice Data Model
TR-104 Provisioning Parameters for VoIP CPE
CWMP Related Specifications
CWMP Interoperability
CWMP ACS Servers
Implementation
Deployment
CLI
21
TR-104: Voice Provisioning
TR-104defines provisioning parameters for VoIP CPE as an extension to TR-069.
It is a hierarchical tree with dot-separated parameter paths, for example:InternetGatewayDevice.Services.VoiceService.x.VoiceProfile.x.SIP.ProxyServerInternetGatewayDevice.Services.VoiceService.x.VoiceProfile.x.Line.x.SIP.URIInternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.1.EnableInternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.1.StatusInternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.1.CallStateInternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.1.PhyReferenceListInternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.1.SIP.AuthUserNameInternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.1.SIP.AuthPassword
22
TR-104: Voice Provisioning
23
Contents
History
TR-69 CPE WAN Management Protocol
TR-98 InternetGatewayDevice Data Model
TR-104 Provisioning Parameters for VoIP CPE
CWMP Related Specifications
CWMP Interoperability
CWMP ACS Servers
Implementation
Deployment
CLI
24
CWMP Related Specifications
WT-131, WT132 ACS Northbound
Interface
TR-69 CWMP Am.1TR-98 Am.1IGD Model
TR-111 CWMP for Home Devices
TR-64 LAN CPE Auto-Configuration
WT-135 STB Model
TR-104 VoIP Model
WT-140 Network Storage Model
TR-106 CWMP Enabled Device Model Template
TR-104 VoIP Model
25
CWMP Related Specifications
TR-104 “Provisioning Parameters for VoIP CPE”• Generic VoiceService data model for VoIP provisioning (of IAD or ATA)TR-106 “Data Model Template for TR-069 Enabled Devices”• Base “Device” data model for any (non IGD) TR-69 enabled LAN deviceTR-111 “TR-069 Remote Management of Home Networking Device”• LAN Device <> Gateway association via ID exchange via DHCP option 125• LAN Device connection request through gateway NAT using STUNWT-107 “TR-098 Issue 2 (IGD data model v1.3)”• Extension of IGD model with DHCP Conditional Serving, HPNAv3, MoCA,
802.1X...WT-135 “Data Model for a TR-069 Enabled STB”• Generic IPSTB data modelWT-140 “Data Model for a TR-069 Enabled Network Attached Storage”• Generic NAS data model
26
CWMP Related Specifications
WT-131 “ACS Northbound Interface Requirements ”
• Set of requirements for the ACS northbound interface and integration with the OSS
WT-132 “Definition for ACS Northbound API”
• Specification of web server based ACS server northbound API
WT-142 “Framework For TR-069 enabled PON devices ”
• Specification of applying TR-69 for PON device management
WT-143 “Network Service Provider Initiated Throughput Performance Test”
• Specificaiton of data model for throughput tests (FTP, HTTP, NSLookup...)
27
Contents
History
TR-69 CPE WAN Management Protocol
TR-98 InternetGatewayDevice Data Model
TR-104 Provisioning Parameters for VoIP CPE
CWMP Related Specifications
CWMP Interoperability
CWMP ACS Servers
Implementation
Deployment
CLI
28
CWMP Interoperability
DSL-Forum regularly organizes TR-69 Plugfest test events where all participating CPE devices can test against all participating ACS servers
Thomson participated in previous Plugfest test events.
PD-128 “Interoperability Test Plan for TR-069 Plugfests”
• Document with definition of TR-69 tests and their expected outcome
• Used as plugfest test events as tests to perform
• De-facto reference for TR-69 testing by customers and ACS vendors
Thomson firmware is interoperability tested with and by ACS partners.
29
CWMP Interoperability
Each firmware is interoperability tested with the deployed servers at customers.
Main protocol interoperability problems in the past where due:
• Open HTTP1.1 requirements (e.g. chunked transfer support, number of cookies...)
• Trial and error with new emerging servers
• Unsupported PD-128 test cases (parameter attributes...)
• TR-69 Amendment 1 specification update with new and even changed (e.g. session termination) requirements
Data model “interoperability” problems are occurring due:
• Hundreds of implemented parameters are not all tested
• Focus on customer deployment scenarios, not all combinations of parameters
30
Contents
History
TR-69 CPE WAN Management Protocol
TR-98 InternetGatewayDevice Data Model
TR-104 Provisioning Parameters for VoIP CPE
CWMP Related Specifications
CWMP Interoperability
CWMP ACS Servers
Implementation
Deployment
CLI
31
CWMP ACS Servers
2Wire CMS http://www.2wire.com/?p=84 Bowline DragomanACShttp://www.bowline.de/technology_products.htm Dimarkhttp://www.dimark.com/products.html SupportSoft ServiceGatewayhttp://www.supportsoft.com/solutions/ServiceGateway.asp Motive/Alcatel Home Device Manager (HDM)http://www.motive.com/solutions/homenetworking/homenetworkingproducts.asp Siemens Tango Subscriber Manager (TSM)http://subscriber.communications.siemens.com/software_tools_family_frame.htm Cisco Broadband Access Centre 3.0http://www.cisco.com/en/US/products/sw/netmgtsw/ps529/products_administration_guide_chapter09186a0080725563.html Netopia Broadband Server (NBBS)http://www.netopia.com/software/products/nbbs/index.html FinePoint CPE Device Managerhttp://www.finepoint.com/services-cwmp-tr069.html Friendly Technologies FriendlyTR69 ACS Serverhttp://www.friendly-tech.com/Site/remotemamagment_tr69.htm Axiros CPE Managementhttp://www.axiros.de/mdsl.htm Owera eXtended Automatic Provisioning Systemhttp://www.owera.com/index.php?catid=3&id=3 Jungo Jungo.Nethttp://www.jungo.com/openrg/news/pr061012.html
32
Contents
History
TR-69 CPE WAN Management Protocol
TR-98 InternetGatewayDevice Data Model
TR-104 Provisioning Parameters for VoIP CPE
CWMP Related Specifications
CWMP Interoperability
CWMP ACS Servers
Implementation
Deployment
CLI
33
Implementation: CWMP
CWMP-C
• CWMP Client application communicating with ACS
• Handles firmware and configuration file download
• CWMP state machine On startup, periodic, value change connection to server Handling all ongoing management actions and reporting completion to server
• Data model related RPC’s are transferred to MBUS IGD
• Supports Application based labeling (service manager integration)
CWMP-S
• CWMP Connection Request Server
• Listens for connection requests HTTP authentication On valid connection request, triggers CWMP-C to connect to ACS
34
Implementation: CWMP
CWMP client
HTTP client Library
XML Library
CWMP connection
request serverTLS/SSL
TCP/IP
IGD MBUS
ATOMIC MBUS
certificates
CWMP IGD MBUS clientMaps TR-069 GetParameterNames, Get/SetParameterValues, AddObject, DeleteObject, Get/SetParameterAttributes on IGD MBUS commands
CWMP Atomic MBUS clientMaps TR-069 Download on FileTransfer plugin handling the file download and application
CWMP Atomic MBUS pluginRegisters parameters for it’s own configuration settings (maps to IGD ManagementServer)
Connection Request Atomic MBUS clientRetrieves connection request settings and sets flag when connection requested (evented to CWMP client)
35
Implementation: Data Model
ATOMIC MBUS
Plug-in Interface (function, domain/inet sockets)
Client Interface (function, domain/inet sockets)
EventMgr
IGD MBUS
Plug-in Interface (function, domain/inet sockets)
Client Interface (function, domain/inet sockets)
EventMgr
Import
ExportSecurity Mgr
AccessRight
Config Mgr
ConfigFile
Import
Export
events
cmd/subsc. cmd/subsc. cmd/subsc. cmd/subsc.
Module_1 Module_2 Module_3 Module_4
CWMP-C
IGD/Atomic Mapping Module_5
CWMP-C
events
MBUS
36
Basic Implementation: MBUS
MBUS IGD• TR-98 IGD data model + vendor specific extensions• TR104 Voice Provisioning• TR-69 RPC support
GetParameterNames, GetParameterValues, SetParameterValues, AddObject, DeleteObject, GetParameterAttributes, SetParameterAttributes
MBUS Atomic• Internal data model close to internal modules and current CLI• Superset of data model defined in TR-98 IGD model• Internal management interface for CLI, GUI...
MBUS IGD<>Atomic Mapping• Maps or translates between the IGD and internal (atomic) data models• Operations on IGD model are mapped/translated to operations on atomic
model
37
TR-111 “Applying TR-69 to Remote Management of Home Devices”• Device-Gateway Association
Exchange of ID’s via DHCP so ACS learns the association
• Connection Request via NAT Gateway STUN
Support TR-69 capable home network devices (STB, VoIP, NAS...)
Improved TR-69 Amendment 1 Interoperability• PD-128 Interoperability Test Plan support• M event
M Reboot, M Download Inform events
• Download Delay Postpones a file download with a number of seconds
What’s New
38
ScheduleInform RPC
ScheduleInform allows an ACS to schedule the CPE to report back at the right time
Eliminates the need for the ACS to initiate connection requests to large numbers of devices
Application:
• Firmware upgrades during a maintenance time window
What’s New
39
Forced Inform Notification parametersCustomizable Forced Inform Parameter List
• configurable parameters
Default:InternetGatewayDevice.DeviceSummary
InternetGatewayDevice.DeviceInfo.SpecVersion
InternetGatewayDevice.DeviceInfo.HardwareVersion
InternetGatewayDevice.DeviceInfo.SoftwareVersion
InternetGatewayDevice.DeviceInfo.ProvisioningCode
InternetGatewayDevice.ManagementServer.ConnectionRequestURL
InternetGatewayDevice.ManagementServer.ParameterKey
InternetGatewayDevice.WANDevice.x.WANConnectionDevice.x.WAN*Connection.ExternalIPAddress
What’s New
40
Configurable Amendment 1 Session Termination
NoMoreRequests header
element is deprecated
Session considered terminated
if the CPE has sent an empty
POST before
For Compliance : Configurable
via CLI
• original TR-69
• TR-69 Amendment 1.
What’s New
41
Upgrade delay on detection of service activityPostpones the firmware upgrade
• Detection of (customizable) service activity
Application:
• Postponing firmware upgrade when VoIP calls are ongoing (e.g. up till a maximum of one hour)
• No service interruption for end users
What’s New
42
DataModel extension
• VDSL2 and Ethernet WAN modeling IGD model “WANDevice” support for VDSL2 and Ethernet WAN
• QueueManagement (TR-098) QueueManagement QoS classification and queue mapping
• IPPingDiagnostics IP Ping diagnostics test and completion reporting to ACS
What’s New
43
What’s New
DataModel extension (continued)
• DSL Statistics Additional DSL statistics and error counters
• Layer2Bridging VLAN provisioning (VLAN bridging, tagging...)
• IPPingDiagnostics IP Ping diagnostics test and completion reporting to ACS
• Connection (proprietary) Stats on current TCP/UDP connections ALG provisioning
• ParentalControl (proprietary) URL and Content filtering provisioning Walled Garden / Captive Portal intercept configuration
44
Standards Compliance Summary
TR-69 Amendment 1Partially compliantSession termination needs install base migration scenario ACS
support
TR-98 Amendment 1Partially compliantWANDSLDiagnostics, WANATMF5LoopbackDiagnostics not
supported
TR-104Compliant for SIP, MGCP and H323
TR-111Compliant
WT-107Partially compliantSupport for DHCPConditionalServing and DHCPOption
45
Contents
History
TR-69 CPE WAN Management Protocol
TR-98 InternetGatewayDevice Data Model
TR-104 Provisioning Parameters for VoIP CPE
CWMP Related Specifications
CWMP Interoperability
CWMP ACS Servers
Implementation
Deployment
CLI
46
Deployment
Thomson’s Implementation/Deployment Strategy
• Thomson partners with customers on use cases We have an extended data model No tick-box compliancy of each and every parameter but focus on the use
case enabling ones first
• Thomson works together with service provider and ACS vendor to enable use cases (customer driven) Testing and deploying Assures the right quality and compliancy
Right approach: Service Providers do not roll out all services immediately
47
Deployment - Most important use cases
Autoconfiguration and dynamic service activation
• The initial CPE configuration runs automatically and remotely
Firmware management
• Remote updates of the firmware of the boxes in the field
Status and performance control
• logfile analysis and dynamic messages
• diagnostics
• connectivity and service control
Helpdesk support
48
Insight to the home network of the use:List of active devices, possibility to ping from the modem, …
Notifications allow the ISP to receive a message when some environment variable changes at the customer premise
Remotely enabling of new / extra featurese.g. a user can move to IPTV and TR-069 will reconfigure the modem
to fill the needs
Deployment - Most important use cases
49
Deployment - Example
Zero Touch Provisioning
ISPJoe USER
BroadbandInternet
ACS
DSLAM
password: default
RESPONSE:[email protected]: *&%$£**
Connection established
50
Deployment facts
• Firmware Upgrade• RTEMS <> GoLinux• RTEMS: Single <> Dual memory boards
• DataModel• Disadvantage is that all parameters have to be supported on ACS
and CPE / order of configuration steps is important• Advantage: standard / reading current config and statistics
• STS• Advantage: Is pure CLI cmd’s and can configure everything.• Disadvantage: sts has no knowledge of previous configuration
remove and replace required
51
Contents
History
TR-69 CPE WAN Management Protocol
TR-98 InternetGatewayDevice Data Model
TR-104 Provisioning Parameters for VoIP CPE
CWMP Related Specifications
CWMP Interoperability
CWMP ACS Servers
Implementation
Deployment
CLI
52
CLI – Configuring CWMP
53
CLI – Configuring CWMP
54
CLI – IGD via CLI
Registering the client
{Administrator}=>mbus client register {Administrator}=>
Dumping the values
{Administrator}=>{Administrator}=>mbus client exec cmd getvalues path *.Line
Dumping the Possibilities
{Administrator}=>{Administrator}=>mbus client exec cmd getnames path *.Line
55
Working with CLI
getvalues: retrieve the values of one or more parameters of a specific object.
setvalues: write a value to one or more parameters of an object Rollback for this action is supported at client command level.
getcount: this action returns the number of parameter/value pairs that would be returned if a getvalues is called with the same arguments. This allows you to determine how much memory needs to be allocated to store all parameters or determine the number of objects of a specific type.
addobject: add an object to the data model.
deleteobject: delete an object from the data model.
subscribe: subscribe a client to the MBus event.
unsubscribe: unsubscribe a client from the MBus event.
56