četvrtak, 26. svibnja 2011.

TR-069 cpe provisioning

TR-069 is technical specification specified by Broadband Forum. Telecoms and ISP's are using it mainly for service auto-provisioning and cpe management, altough it is intended, according to Broadband forum, to do status and performance monitoring and diagnostics.

How does it work

CPE discovers Auto Configuration Server (ACS) and contacts it. CPE can learn about ACS through DHCP option 43, or it can have preconfigured ACS URL. Next, during exchange of SOAP messages, server sets cpe's parameters, and thus is doing cpe configuration, or tells cpe to download configuration file.   Data model for residential gateways is defined in TR-098 document and voip section for voip enabled cpe's in TR-104 document.

Zero touch TR-069 provisioning example

In the example below are http / soap messages captured on the wire. In the example are shown SetParameterValues and GetParameterValues methods. These methods, beside Download file method (which is used for configuration download and firmware upgrade), are methods you will probably use most.

CPE initiates connection by sending Inform message. Connection is initiated first time it connects to access network, on power-up or reset, every PeriodicInformInterval, on connection request, when Active Notification parameters are changed by an external cause, when ACS URL changes, whenever download or upload completes (please consult TR-069 standard for complete list of events).

This is how Inform message looks like:


POST /cwmpWeb/CPEMgt HTTP/1.1
Content-Type: text/xml; charset=ISO-8859-1
Host: 10.10.10.11
User-Agent: Thomson_cwmp-engine/r6.2.35.0
SOAPAction:
Transfer-Encoding: chunked
Authorization: Basic MDAxNDdGLUNQMDYxMUpUTE5XOg==


<soapenv:Envelope soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="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">
 <soapenv:Header>
<cwmp:ID soapenv:mustUnderstand="1">0_THOM_TR69_ID</cwmp:ID>
 </soapenv:Header>
 <soapenv:Body>
<cwmp:Inform>
<DeviceId>
 <Manufacturer>THOMSON</Manufacturer>
 <OUI>00147F</OUI>
 <ProductClass>SpeedTouch 780</ProductClass>
 <SerialNumber>CP0611JTLNW</SerialNumber>
</DeviceId>
<Event soap:arrayType="cwmp:EventStruct[04]">
<EventStruct>
 <EventCode>0 BOOTSTRAP</EventCode>
 <CommandKey></CommandKey>
</EventStruct>
<EventStruct>
 <EventCode>1 BOOT</EventCode>
 <CommandKey></CommandKey>
</EventStruct>
<EventStruct>
 <EventCode>2 PERIODIC</EventCode>
 <CommandKey></CommandKey>
</EventStruct>
<EventStruct>
 <EventCode>4 VALUE CHANGE</EventCode>
 <CommandKey></CommandKey>
</EventStruct>
</Event>
<MaxEnvelopes>2</MaxEnvelopes>
<CurrentTime>1970-01-01T00:01:09Z</CurrentTime>
<RetryCount>05</RetryCount>
<ParameterList soap:arrayType="cwmp:ParameterValueStruct[12]">
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceSummary</Name>
 <Value xsi:type="xsd:string">
InternetGatewayDevice:1.1[] (Baseline:1, EthernetLAN:1, ADSLWAN:1, Bridging:1, Time:1, WiFiLAN:1)</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.SpecVersion</Name>
 <Value xsi:type="xsd:string">1.1</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.HardwareVersion</Name>
 <Value xsi:type="xsd:string">BANT-R</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.SoftwareVersion</Name>
 <Value xsi:type="xsd:string">6.2.35.0</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.ProvisioningCode</Name>
 <Value xsi:type="xsd:string"></Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Name</Name>
 <Value xsi:type="xsd:string">MyCompanyName</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Version</Name>
 <Value xsi:type="xsd:string"></Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Date</Name>
 <Value xsi:type="xsd:dateTime">0000-00-00T00:00:00</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Description</Name>
 <Value xsi:type="xsd:string">MyCompanyName</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.ManagementServer.ConnectionRequestURL</Name>
 <Value xsi:type="xsd:string">http://10.127.129.205:51005/</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.ManagementServer.ParameterKey</Name>
 <Value xsi:type="xsd:string"></Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ExternalIPAddress</Name>
 <Value xsi:type="xsd:string">10.127.129.205</Value>
</ParameterValueStruct>
</ParameterList>
</cwmp:Inform>
 </soapenv:Body>
</soapenv:Envelope>

Let's stop here for a while to explain Inform message. Inform message itself is consistsed of 5 arguments:
  • DeviceId: list of parameters that uniquely define cpe. Parameters are Manufacturer, ProductClass, OUI and SerialNumber. Manufacturer is self-explanatory parameter. OUI are 6 digits of MAC address OUI. SerialNumber is parameter that uniquely defines cpe, no devices with the same serial number may exist. For ProductClass many vendors put generic values like CPE or IAD. Although guys from Broadband forum expect that this value will be CPE or STB, in my opinion this is wrong. Thomson engineers have smartly put here 'SpeedTouch 780' - it's model name, and I think that is exactly what should be found here. Why?
    ModelName parameter is even defined in TR-098 data model, so why we should put model name into ProductClass. Only these four parameters are defined in DeviceId structure of Inform message. Imagine that cpe vendor has 3 models, one voip cpe with wlan, one cpe without voip, and the third without voip functionality and without wlan. ACS recognizes CPE by reading DeviceId structure in Inform message, and if all models from the same vendor have common, generic ProductClass value like 'CPE' (Manufacturer and OUI parameters are common by it's nature), ACS will not be able to recognize model type, and will not know if it can set voip or wlan data. Much more, it can not know about firmware image it will download on device.
  • Event: structure indicating what event caused transaction session to be established. Here device sent EventCode '0 BOOTSTRAP' code which means that device is contacting ACS for the first time. Also device sent additional EventCodes: '1 BOOT' because device was booting after factory reset, 2 PERIODIC which is sent whenever PeriodicInforInterval expires and '4 VALUE CHANGE' because value ManagementServer.URL was changed (device has just learned about ACS server URL via DHCP option 43).
  • MaxEnvelopes: standard says this value must be '1'. Anyway, it is not relevant to our discussion.
  • CurrentTime: also not relevant in this discussion.
  • RetryCount: Number of prior times an attempt was made to retry this session. I don't know about any practical significance of this parameter.
  • ParameterList: standard specifies list of parameters which MUST be included in every Inform message. Parameters that are required on every Inform are listed in TR-098 standard in table 3. There are 8 of them, and we see in example below that Thomson has sent 12 parameters. Parameters VendorConfigFile.1.Name, VendorConfigFile.1.Version, VendorConfigFile.1.Date and VendorConfigFile.1.Desription are surplus.

Every time it receives valid Inform message, server sends Inform response:


HTTP/1.1 200 OK
Cache-Control: no-cache="set-cookie"
Date: Wed, 04 May 2011 17:12:46 GMT
Content-Length: 545
Content-Type: text/xml; charset=ISO-8859-1
Set-Cookie: JSESSIONID=f2xtNBJT1nwCvKpG2B22hyYpT9V0p2WLsnW1bbQm6wCbBWJ75TfZ!-2130266351; path=/
X-Powered-By: Servlet/2.4 JSP/2.0


<soapenv:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cwmp="urn:dslforum-org:cwmp-1-0" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
        <cwmp:ID soapenv:mustUnderstand="1">0_THOM_TR69_ID</cwmp:ID>
    </soapenv:Header>
    <soapenv:Body>
        <cwmp:InformResponse>
            <MaxEnvelopes>1</MaxEnvelopes>
        </cwmp:InformResponse>
    </soapenv:Body>
</soapenv:Envelope>

CPE message:Empty POST:


POST /cwmpWeb/CPEMgt HTTP/1.1
Content-Type: text/xml; charset=ISO-8859-1
Host: 10.10.10.11
User-Agent: Thomson_cwmp-engine/r6.2.35.0
Cookie: $Version="0"; JSESSIONID=f2xtNBJT1nwCvKpG2B22hyYpT9V0p2WLsnW1bbQm6wCbBWJ75TfZ!-2130266351;$Path=/
Transfer-Encoding: chunked
Authorization: Basic MDAxNDdGLUNQMDYxMUpUTE5XOg==


Server performs SetParameterValues method. Server sets connection request authentication credentials, enables periodic inform and sets periodic inform interval to 60 seconds. CPE returns status 0 which means that all parameters are validated and applied.


HTTP/1.1 200 OK
Date: Wed, 04 May 2011 17:12:57 GMT
Content-Length: 1655
Content-Type: text/xml; charset=ISO-8859-1
X-Powered-By: Servlet/2.4 JSP/2.0


<soapenv:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cwmp="urn:dslforum-org:cwmp-1-0" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
        <cwmp:ID soapenv:mustUnderstand="1">null0</cwmp:ID>
    </soapenv:Header>
    <soapenv:Body>
        <cwmp:SetParameterValues>
            <ParameterList soap:arrayType="cwmp:ParameterValueStruct[4]">
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.ManagementServer.PeriodicInformEnable</Name>
                    <Value xsi:type="xsd:boolean">1</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.ManagementServer.ConnectionRequestUsername</Name>
                    <Value xsi:type="xsd:string">00147F-SpeedTouch780-CP0611JTLNW</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.ManagementServer.ConnectionRequestPassword</Name>
                    <Value xsi:type="xsd:string">98ff55fb377bf724c625f60dec448646</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.ManagementServer.PeriodicInformInterval</Name>
                    <Value xsi:type="xsd:unsignedInt">60</Value>
                </ParameterValueStruct>
            </ParameterList>
            <ParameterKey>null</ParameterKey>
        </cwmp:SetParameterValues>
    </soapenv:Body>
</soapenv:Envelope>


POST /cwmpWeb/CPEMgt HTTP/1.1
Content-Type: text/xml; charset=ISO-8859-1
Host: 10.10.10.11
User-Agent: Thomson_cwmp-engine/r6.2.35.0
Cookie: $Version="0"; JSESSIONID=f2xtNBJT1nwCvKpG2B22hyYpT9V0p2WLsnW1bbQm6wCbBWJ75TfZ!-2130266351;$Path=/
SOAPAction:
Transfer-Encoding: chunked
Authorization: Basic MDAxNDdGLUNQMDYxMUpUTE5XOg==


<soapenv:Envelope soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="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">
 <soapenv:Header>
<cwmp:ID soapenv:mustUnderstand="1">null0</cwmp:ID>
 </soapenv:Header>
 <soapenv:Body>
  <cwmp:SetParameterValuesResponse>
   <Status>0</Status>
  </cwmp:SetParameterValuesResponse>
 </soapenv:Body>
</soapenv:Envelope>


Server message: server performs GetParameterValues method. It retrieves MAC addr of default connection interface and CPE responds with value of requested object.


HTTP/1.1 200 OK
Date: Wed, 04 May 2011 17:12:57 GMT
Content-Length: 709
Content-Type: text/xml; charset=ISO-8859-1
X-Powered-By: Servlet/2.4 JSP/2.0


<soapenv:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cwmp="urn:dslforum-org:cwmp-1-0" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
        <cwmp:ID soapenv:mustUnderstand="1">null1</cwmp:ID>
    </soapenv:Header>
    <soapenv:Body>
        <cwmp:GetParameterValues>
            <ParameterNames soap:arrayType="xsd:string[1]">
                <string>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.MACAddress</string>
            </ParameterNames>
        </cwmp:GetParameterValues>
    </soapenv:Body>
</soapenv:Envelope>


POST /cwmpWeb/CPEMgt HTTP/1.1
Content-Type: text/xml; charset=ISO-8859-1
Host: 10.10.10.11
User-Agent: Thomson_cwmp-engine/r6.2.35.0
Cookie: $Version="0"; JSESSIONID=f2xtNBJT1nwCvKpG2B22hyYpT9V0p2WLsnW1bbQm6wCbBWJ75TfZ!-2130266351;$Path=/
SOAPAction:
Transfer-Encoding: chunked
Authorization: Basic MDAxNDdGLUNQMDYxMUpUTE5XOg==


<soapenv:Envelope soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="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">
 <soapenv:Header>
<cwmp:ID soapenv:mustUnderstand="1">null1</cwmp:ID>
 </soapenv:Header>
 <soapenv:Body>
  <cwmp:GetParameterValuesResponse>
   <ParameterList soap:arrayType="cwmp:ParameterValueStruct[01]">
    <ParameterValueStruct>
     <Name>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.MACAddress</Name>
     <Value>00:14:7F:29:51:1D</Value>
    </ParameterValueStruct>
   </ParameterList>
  </cwmp:GetParameterValuesResponse>
 </soapenv:Body>
</soapenv:Envelope>


Session is being closed.


HTTP/1.1 204 No Content
Date: Wed, 04 May 2011 17:12:58 GMT
Content-Length: 0
Content-Type: text/xml; charset=ISO-8859-1
X-Powered-By: Servlet/2.4 JSP/2.0
POST /cwmpWeb/CPEMgt HTTP/1.1
Content-Type: text/xml; charset=ISO-8859-1
Host: 10.10.10.11
User-Agent: Thomson_cwmp-engine/r6.2.35.0
Cookie: $Version="0"; JSESSIONID=f2xtNBJT1nwCvKpG2B22hyYpT9V0p2WLsnW1bbQm6wCbBWJ75TfZ!-2130266351;$Path=/
Transfer-Encoding: chunked
Authorization: Basic MDAxNDdGLUNQMDYxMUpUTE5XOg==


HTTP/1.1 204 No Content
Cache-Control: no-cache="set-cookie"
Date: Wed, 04 May 2011 17:12:58 GMT
Content-Length: 0
Content-Type: text/xml; charset=ISO-8859-1
Set-Cookie: JSESSIONID=RfmtNBJhq41csjhQVL1vpGNYnQTTsQ7xjSwRjYb9vp1pGpbGRQFG!-2130266351; path=/
X-Powered-By: Servlet/2.4 JSP/2.0


Server initiated connection: server sends Connection request by sending HTTP GET method to http://10.127.129.205:51005. This is URL which CPE advertised in Inform message.
GET / HTTP/1.1
User-Agent: Jakarta Commons-HttpClient/3.0-rc3
Host: 10.127.129.205:51005
HTTP/1.1 200 OK
Connection: close
Content-Length: 0

I want to stop here to comment this. Attentive reader may notice that server didn't set authentication data in HTTP header, although just a few seconds ago did set connection request authentication credentials (take a look one more time if you missed it). What is strange here is that cpe didn't respond with the '401 Unauthorized' http status code. The answer is simple: this is because this cpe is configured with connection request authentication set to none:
{Administrator}=>cwmp config
State                              : enabled
Mode                               : full
Max Envelopes                      : 2
Session Timeout                    : 60
No Ip Timeout                      : 180
Connection Request Port            : 51005
Periodic Inform                    : enabled
Periodic Inform Interval           : 60 s
Connection Request                 : enabled
Connection Request UserName        : 00147F-SpeedTouch780-CP0611JTLNW
Connection Request PassWord        : 98ff55fb377bf724c625f60dec448646
Connection Request Path            :
Connection Request Authentication  : none
Qos class                          : 12
Boot delay range between 0 and     : 120 s
If not so, cpe would respond with '401 Unathorized', and server would have to send new connection request with authentication data in http header.



Because server asked connection request, cpe sends Inform message. Event code of value "6 CONNECTION REQUEST" in Inform message indicates the reason why cpe sent this Inform message.


POST /cwmpWeb/CPEMgt HTTP/1.1
Content-Type: text/xml; charset=ISO-8859-1
Host: 10.10.10.11
User-Agent: Thomson_cwmp-engine/r6.2.35.0
SOAPAction:
Transfer-Encoding: chunked
Authorization: Basic MDAxNDdGLUNQMDYxMUpUTE5XOg==


<soapenv:Envelope soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="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">
 <soapenv:Header>
<cwmp:ID soapenv:mustUnderstand="1">1_THOM_TR69_ID</cwmp:ID>
 </soapenv:Header>
 <soapenv:Body>
<cwmp:Inform>
<DeviceId>
 <Manufacturer>THOMSON</Manufacturer>
 <OUI>00147F</OUI>
 <ProductClass>SpeedTouch 780</ProductClass>
 <SerialNumber>CP0611JTLNW</SerialNumber>
</DeviceId>
<Event soap:arrayType="cwmp:EventStruct[01]">
<EventStruct>
 <EventCode>6 CONNECTION REQUEST</EventCode>
 <CommandKey></CommandKey>
</EventStruct>
</Event>
<MaxEnvelopes>2</MaxEnvelopes>
<CurrentTime>1970-01-01T00:01:25Z</CurrentTime>
<RetryCount>00</RetryCount>
<ParameterList soap:arrayType="cwmp:ParameterValueStruct[12]">
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceSummary</Name>
 <Value xsi:type="xsd:string">InternetGatewayDevice:1.1[] (Baseline:1, EthernetLAN:1, ADSLWAN:1, Bridging:1, Time:1, WiFiLAN:1)</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.SpecVersion</Name>
 <Value xsi:type="xsd:string">1.1</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.HardwareVersion</Name>
 <Value xsi:type="xsd:string">BANT-R</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.SoftwareVersion</Name>
 <Value xsi:type="xsd:string">6.2.35.0</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.ProvisioningCode</Name>
 <Value xsi:type="xsd:string"></Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Name</Name>
 <Value xsi:type="xsd:string">SomeName</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Version</Name>
 <Value xsi:type="xsd:string"></Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Date</Name>
 <Value xsi:type="xsd:dateTime">0000-00-00T00:00:00</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Description</Name>
 <Value xsi:type="xsd:string">SomeName</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.ManagementServer.ConnectionRequestURL</Name>
 <Value xsi:type="xsd:string">http://10.127.129.205:51005/</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.ManagementServer.ParameterKey</Name>
 <Value xsi:type="xsd:string"></Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ExternalIPAddress</Name>
 <Value xsi:type="xsd:string">10.127.129.205</Value>
</ParameterValueStruct>
</ParameterList>
</cwmp:Inform>
 </soapenv:Body>
</soapenv:Envelope>



HTTP/1.1 200 OK
Cache-Control: no-cache="set-cookie"
Date: Wed, 04 May 2011 17:13:02 GMT
Content-Length: 545
Content-Type: text/xml; charset=ISO-8859-1
Set-Cookie: JSESSIONID=kBbxNBJpy2CFkGZYGnQD3Rky1yrS7hqkqTBnMpwTLKgYgtxYykkR!-2130266351; path=/
X-Powered-By: Servlet/2.4 JSP/2.0


<soapenv:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cwmp="urn:dslforum-org:cwmp-1-0" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
        <cwmp:ID soapenv:mustUnderstand="1">1_THOM_TR69_ID</cwmp:ID>
    </soapenv:Header>
    <soapenv:Body>
        <cwmp:InformResponse>
            <MaxEnvelopes>1</MaxEnvelopes>
        </cwmp:InformResponse>
    </soapenv:Body>
</soapenv:Envelope>



POST /cwmpWeb/CPEMgt HTTP/1.1
Content-Type: text/xml; charset=ISO-8859-1
Host: 10.10.10.11
User-Agent: Thomson_cwmp-engine/r6.2.35.0
Cookie: $Version="0"; JSESSIONID=kBbxNBJpy2CFkGZYGnQD3Rky1yrS7hqkqTBnMpwTLKgYgtxYykkR!-2130266351;$Path=/
Transfer-Encoding: chunked
Authorization: Basic MDAxNDdGLUNQMDYxMUpUTE5XOg==

Server is setting new ACS URL. Setting new ACS URL action during activation process is specific to ACS server implementation of Motive. Before sending Inform to new URL, CPE must send SetParameterValues response to the old ACS URL and server then closes the session.


HTTP/1.1 200 OK
Date: Wed, 04 May 2011 17:13:07 GMT
Content-Length: 1411
Content-Type: text/xml; charset=ISO-8859-1
X-Powered-By: Servlet/2.4 JSP/2.0


<soapenv:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cwmp="urn:dslforum-org:cwmp-1-0" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
        <cwmp:ID soapenv:mustUnderstand="1">1031422410</cwmp:ID>
    </soapenv:Header>
    <soapenv:Body>
        <cwmp:SetParameterValues>
            <ParameterList soap:arrayType="cwmp:ParameterValueStruct[3]">
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.ManagementServer.URL</Name>
                    <Value xsi:type="xsd:string">http://10.10.10.11:7003/cwmpWeb/CPEMgt</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.ManagementServer.Username</Name>
                    <Value xsi:type="xsd:string">00147F-SpeedTouch780-CP0611JTLNW</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.ManagementServer.Password</Name>
                    <Value xsi:type="xsd:string">ab1b4a26cbe3ac747acbeecdd772d40f</Value>
                </ParameterValueStruct>
            </ParameterList>
            <ParameterKey>103142241</ParameterKey>
        </cwmp:SetParameterValues>
    </soapenv:Body>
</soapenv:Envelope>
POST /cwmpWeb/CPEMgt HTTP/1.1
Content-Type: text/xml; charset=ISO-8859-1
Host: 10.10.10.11
User-Agent: Thomson_cwmp-engine/r6.2.35.0
Cookie: $Version="0"; JSESSIONID=kBbxNBJpy2CFkGZYGnQD3Rky1yrS7hqkqTBnMpwTLKgYgtxYykkR!-2130266351;$Path=/
SOAPAction:
Transfer-Encoding: chunked
Authorization: Basic MDAxNDdGLUNQMDYxMUpUTE5XOg==


<soapenv:Envelope soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="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">
 <soapenv:Header>
<cwmp:ID soapenv:mustUnderstand="1">1031422410</cwmp:ID>
 </soapenv:Header>
 <soapenv:Body>
  <cwmp:SetParameterValuesResponse>
   <Status>0</Status>
  </cwmp:SetParameterValuesResponse>
 </soapenv:Body>
</soapenv:Envelope>
HTTP/1.1 204 No Content
Date: Wed, 04 May 2011 17:13:07 GMT
Content-Length: 0
Content-Type: text/xml; charset=ISO-8859-1
X-Powered-By: Servlet/2.4 JSP/2.0
POST /cwmpWeb/CPEMgt HTTP/1.1
Content-Type: text/xml; charset=ISO-8859-1
Host: 10.10.10.11
User-Agent: Thomson_cwmp-engine/r6.2.35.0
Cookie: $Version="0"; JSESSIONID=kBbxNBJpy2CFkGZYGnQD3Rky1yrS7hqkqTBnMpwTLKgYgtxYykkR!-2130266351;$Path=/
Transfer-Encoding: chunked
Authorization: Basic MDAxNDdGLUNQMDYxMUpUTE5XOg==


HTTP/1.1 204 No Content
Cache-Control: no-cache="set-cookie"
Date: Wed, 04 May 2011 17:13:07 GMT
Content-Length: 0
Content-Type: text/xml; charset=ISO-8859-1
Set-Cookie: JSESSIONID=WvTPNBJD1gvpvQFW10bbQ1zpZYkhtQLwrQv7gJghwQKzwvRxDn54!-2130266351; path=/
X-Powered-By: Servlet/2.4 JSP/2.0

CPE message: Inform message with Event code "0 BOOTSTRAP", because it contacts (new) ACS for the first time.


POST /cwmpWeb/CPEMgt HTTP/1.1
Content-Type: text/xml; charset=ISO-8859-1
Host: 10.10.10.11
User-Agent: Thomson_cwmp-engine/r6.2.35.0
SOAPAction:
Transfer-Encoding: chunked
Authorization: Basic MDAxNDdGLVNwZWVkVG91Y2g3ODAtQ1AwNjExSlRMTlc6YWIxYjRhMjZjYmUzYWM3NDdhY2JlZWNkZDc3MmQ0MGY=


<soapenv:Envelope soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="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">
 <soapenv:Header>
<cwmp:ID soapenv:mustUnderstand="1">2_THOM_TR69_ID</cwmp:ID>
 </soapenv:Header>
 <soapenv:Body>
<cwmp:Inform>
<DeviceId>
 <Manufacturer>THOMSON</Manufacturer>
 <OUI>00147F</OUI>
 <ProductClass>SpeedTouch 780</ProductClass>
 <SerialNumber>CP0611JTLNW</SerialNumber>
</DeviceId>
<Event soap:arrayType="cwmp:EventStruct[01]">
<EventStruct>
 <EventCode>0 BOOTSTRAP</EventCode>
 <CommandKey></CommandKey>
</EventStruct>
</Event>
<MaxEnvelopes>2</MaxEnvelopes>
<CurrentTime>1970-01-01T00:01:46Z</CurrentTime>
<RetryCount>00</RetryCount>
<ParameterList soap:arrayType="cwmp:ParameterValueStruct[12]">
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceSummary</Name>
 <Value xsi:type="xsd:string">InternetGatewayDevice:1.1[] (Baseline:1, EthernetLAN:1, ADSLWAN:1, Bridging:1, Time:1, WiFiLAN:1)</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.SpecVersion</Name>
 <Value xsi:type="xsd:string">1.1</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.HardwareVersion</Name>
 <Value xsi:type="xsd:string">BANT-R</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.SoftwareVersion</Name>
 <Value xsi:type="xsd:string">6.2.35.0</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.ProvisioningCode</Name>
 <Value xsi:type="xsd:string"></Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Name</Name>
 <Value xsi:type="xsd:string">SomeName</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Version</Name>
 <Value xsi:type="xsd:string"></Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Date</Name>
 <Value xsi:type="xsd:dateTime">0000-00-00T00:00:00</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Description</Name>
 <Value xsi:type="xsd:string">SomeName</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.ManagementServer.ConnectionRequestURL</Name>
 <Value xsi:type="xsd:string">http://10.127.129.205:51005/</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.ManagementServer.ParameterKey</Name>
 <Value xsi:type="xsd:string"></Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ExternalIPAddress</Name>
 <Value xsi:type="xsd:string">10.127.129.205</Value>
</ParameterValueStruct>
</ParameterList>
</cwmp:Inform>
 </soapenv:Body>
</soapenv:Envelope>
I must again draw attention to this and all Inform messages in this post, more precisely on ParameterKey value. According to standard, ParameterKey value must be equal to ParameterKey argument of most recent SetParameterValues, AddObject or DeleteObject method call from ACS. Specifically, in the Inform message above, ParameterKey value must be set to 103142241. Thomson CPE leaves that parameter empty, which is obviously a bug in TR-069 client implementation.
Inform response ...
HTTP/1.1 200 OK
Cache-Control: no-cache="set-cookie"
Date: Wed, 04 May 2011 17:13:24 GMT
Content-Length: 545
Content-Type: text/xml; charset=ISO-8859-1
Set-Cookie: JSESSIONID=h2pnNBJJq1hhh1BpT8cJVzmCFW553vQw7HHTXYJMNspGhTQQJh1M!1164162625; path=/
X-Powered-By: Servlet/2.4 JSP/2.0


<soapenv:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cwmp="urn:dslforum-org:cwmp-1-0" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
        <cwmp:ID soapenv:mustUnderstand="1">2_THOM_TR69_ID</cwmp:ID>
    </soapenv:Header>
    <soapenv:Body>
        <cwmp:InformResponse>
            <MaxEnvelopes>1</MaxEnvelopes>
        </cwmp:InformResponse>
    </soapenv:Body>
</soapenv:Envelope>
POST /cwmpWeb/CPEMgt HTTP/1.1
Content-Type: text/xml; charset=ISO-8859-1
Host: 10.10.10.11
User-Agent: Thomson_cwmp-engine/r6.2.35.0
Cookie: $Version="0"; JSESSIONID=h2pnNBJJq1hhh1BpT8cJVzmCFW553vQw7HHTXYJMNspGhTQQJh1M!1164162625;$Path=/
Transfer-Encoding: chunked
Authorization: Basic MDAxNDdGLVNwZWVkVG91Y2g3ODAtQ1AwNjExSlRMTlc6YWIxYjRhMjZjYmUzYWM3NDdhY2JlZWNkZDc3MmQ0MGY=

ACS asks for Connection request. With Connection request option, we speed up provisioning, because we don't have to wait for 60 seconds for cpe to send Inform message. Some poor CPE TR-069 client implementations will be affected by too many connection requests and could be prevented from operating properly, but this is another topic.


GET / HTTP/1.1
User-Agent: Jakarta Commons-HttpClient/3.0-rc3
Host: 10.127.129.205:51005
HTTP/1.1 200 OK
Connection: close
Content-Length: 0

CPE message: Inform upon connection request


POST /cwmpWeb/CPEMgt HTTP/1.1
Content-Type: text/xml; charset=ISO-8859-1
Host: 10.10.10.11
User-Agent: Thomson_cwmp-engine/r6.2.35.0
SOAPAction:
Transfer-Encoding: chunked
Authorization: Basic MDAxNDdGLVNwZWVkVG91Y2g3ODAtQ1AwNjExSlRMTlc6YWIxYjRhMjZjYmUzYWM3NDdhY2JlZWNkZDc3MmQ0MGY=


<soapenv:Envelope soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="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">
 <soapenv:Header>
<cwmp:ID soapenv:mustUnderstand="1">3_THOM_TR69_ID</cwmp:ID>
 </soapenv:Header>
 <soapenv:Body>
<cwmp:Inform>
<DeviceId>
 <Manufacturer>THOMSON</Manufacturer>
 <OUI>00147F</OUI>
 <ProductClass>SpeedTouch 780</ProductClass>
 <SerialNumber>CP0611JTLNW</SerialNumber>
</DeviceId>
<Event soap:arrayType="cwmp:EventStruct[01]">
<EventStruct>
 <EventCode>6 CONNECTION REQUEST</EventCode>
 <CommandKey></CommandKey>
</EventStruct>
</Event>
<MaxEnvelopes>2</MaxEnvelopes>
<CurrentTime>1970-01-01T00:01:54Z</CurrentTime>
<RetryCount>00</RetryCount>
<ParameterList soap:arrayType="cwmp:ParameterValueStruct[12]">
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceSummary</Name>
 <Value xsi:type="xsd:string">InternetGatewayDevice:1.1[] (Baseline:1, EthernetLAN:1, ADSLWAN:1, Bridging:1, Time:1, WiFiLAN:1)</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.SpecVersion</Name>
 <Value xsi:type="xsd:string">1.1</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.HardwareVersion</Name>
 <Value xsi:type="xsd:string">BANT-R</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.SoftwareVersion</Name>
 <Value xsi:type="xsd:string">6.2.35.0</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.ProvisioningCode</Name>
 <Value xsi:type="xsd:string"></Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Name</Name>
 <Value xsi:type="xsd:string"></Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Version</Name>
 <Value xsi:type="xsd:string"></Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Date</Name>
 <Value xsi:type="xsd:dateTime">0000-00-00T00:00:00</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Description</Name>
 <Value xsi:type="xsd:string">SomeName</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.ManagementServer.ConnectionRequestURL</Name>
 <Value xsi:type="xsd:string">http://10.127.129.205:51005/</Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.ManagementServer.ParameterKey</Name>
 <Value xsi:type="xsd:string"></Value>
</ParameterValueStruct>
<ParameterValueStruct>
 <Name>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ExternalIPAddress</Name>
 <Value xsi:type="xsd:string">10.127.129.205</Value>
</ParameterValueStruct>
</ParameterList>
</cwmp:Inform>
 </soapenv:Body>
</soapenv:Envelope>
HTTP/1.1 200 OK
Cache-Control: no-cache="set-cookie"
Date: Wed, 04 May 2011 17:13:31 GMT
Content-Length: 545
Content-Type: text/xml; charset=ISO-8859-1
Set-Cookie: JSESSIONID=TXY9NBJbVZBv7cFK1Mfs24rtF55mMq1rbKYKL6Dst2xy9Q0h5Q9t!1164162625; path=/
X-Powered-By: Servlet/2.4 JSP/2.0


<soapenv:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cwmp="urn:dslforum-org:cwmp-1-0" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
        <cwmp:ID soapenv:mustUnderstand="1">3_THOM_TR69_ID</cwmp:ID>
    </soapenv:Header>
    <soapenv:Body>
        <cwmp:InformResponse>
            <MaxEnvelopes>1</MaxEnvelopes>
        </cwmp:InformResponse>
    </soapenv:Body>
</soapenv:Envelope>


POST /cwmpWeb/CPEMgt HTTP/1.1
Content-Type: text/xml; charset=ISO-8859-1
Host: 10.10.10.11
User-Agent: Thomson_cwmp-engine/r6.2.35.0
Cookie: $Version="0"; JSESSIONID=TXY9NBJbVZBv7cFK1Mfs24rtF55mMq1rbKYKL6Dst2xy9Q0h5Q9t!1164162625;$Path=/
Transfer-Encoding: chunked
Authorization: Basic MDAxNDdGLVNwZWVkVG91Y2g3ODAtQ1AwNjExSlRMTlc6YWIxYjRhMjZjYmUzYWM3NDdhY2JlZWNkZDc3MmQ0MGY=


And finally the real thing: setting pppoe data and response.


HTTP/1.1 200 OK
Date: Wed, 04 May 2011 17:14:48 GMT
Content-Length: 1180
Content-Type: text/xml; charset=ISO-8859-1
X-Powered-By: Servlet/2.4 JSP/2.0


<soapenv:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cwmp="urn:dslforum-org:cwmp-1-0" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
        <cwmp:ID soapenv:mustUnderstand="1">1031422441</cwmp:ID>
    </soapenv:Header>
    <soapenv:Body>
        <cwmp:SetParameterValues>
            <ParameterList soap:arrayType="cwmp:ParameterValueStruct[2]">
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.4.WANPPPConnection.1.Username</Name>
                    <Value xsi:type="xsd:string">user_tom</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.4.WANPPPConnection.1.Password</Name>
<Value xsi:type="xsd:string">Pw123</Value>
                </ParameterValueStruct>
            </ParameterList>
            <ParameterKey>103142244</ParameterKey>
        </cwmp:SetParameterValues>
    </soapenv:Body>
</soapenv:Envelope>
POST /cwmpWeb/CPEMgt HTTP/1.1
Content-Type: text/xml; charset=ISO-8859-1
Host: 10.10.10.11
User-Agent: Thomson_cwmp-engine/r6.2.35.0
Cookie: $Version="0"; JSESSIONID=jXyfNBJJn4KJMrcdfQyG6pqDktYv1bk32n5RDvv1ZrGh7xjn9S5f!1164162625;$Path=/
SOAPAction:
Transfer-Encoding: chunked
Authorization: Basic MDAxNDdGLVNwZWVkVG91Y2g3ODAtQ1AwNjExSlRMTlc6YWIxYjRhMjZjYmUzYWM3NDdhY2JlZWNkZDc3MmQ0MGY=


<soapenv:Envelope soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="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">
 <soapenv:Header>
<cwmp:ID soapenv:mustUnderstand="1">1031422441</cwmp:ID>
 </soapenv:Header>
 <soapenv:Body>
  <cwmp:SetParameterValuesResponse>
   <Status>1</Status>
  </cwmp:SetParameterValuesResponse>
 </soapenv:Body>
</soapenv:Envelope>

Ofcourse, PeriodicInformInterval should be set to reasonable value, otherwise it will overload our ACS server.


HTTP/1.1 200 OK
Date: Wed, 04 May 2011 17:14:56 GMT
Content-Length: 1134
Content-Type: text/xml; charset=ISO-8859-1
X-Powered-By: Servlet/2.4 JSP/2.0


<soapenv:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cwmp="urn:dslforum-org:cwmp-1-0" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
        <cwmp:ID soapenv:mustUnderstand="1">1031422452</cwmp:ID>
    </soapenv:Header>
    <soapenv:Body>
        <cwmp:SetParameterValues>
            <ParameterList soap:arrayType="cwmp:ParameterValueStruct[2]">
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.ManagementServer.PeriodicInformEnable</Name>
                    <Value xsi:type="xsd:boolean">0</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.ManagementServer.PeriodicInformInterval</Name>
                    <Value xsi:type="xsd:unsignedInt">86400</Value>
                </ParameterValueStruct>
            </ParameterList>
            <ParameterKey>103142245</ParameterKey>
        </cwmp:SetParameterValues>
    </soapenv:Body>
</soapenv:Envelope>
POST /cwmpWeb/CPEMgt HTTP/1.1
Content-Type: text/xml; charset=ISO-8859-1
Host: 10.10.10.11
User-Agent: Thomson_cwmp-engine/r6.2.35.0
Cookie: $Version="0"; JSESSIONID=jXyfNBJJn4KJMrcdfQyG6pqDktYv1bk32n5RDvv1ZrGh7xjn9S5f!1164162625;$Path=/
SOAPAction:
Transfer-Encoding: chunked
Authorization: Basic MDAxNDdGLVNwZWVkVG91Y2g3ODAtQ1AwNjExSlRMTlc6YWIxYjRhMjZjYmUzYWM3NDdhY2JlZWNkZDc3MmQ0MGY=


<soapenv:Envelope soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="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">
 <soapenv:Header>
<cwmp:ID soapenv:mustUnderstand="1">1031422452</cwmp:ID>
 </soapenv:Header>
 <soapenv:Body>
  <cwmp:SetParameterValuesResponse>
   <Status>0</Status>
  </cwmp:SetParameterValuesResponse>
 </soapenv:Body>
</soapenv:Envelope>


And this is how it looks like when trying to set non-existing parameters. CPE returns code 9003.


HTTP/1.1 200 OK
Date: Wed, 04 May 2011 17:14:57 GMT
Content-Length: 1180
Content-Type: text/xml; charset=ISO-8859-1
X-Powered-By: Servlet/2.4 JSP/2.0


<soapenv:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:cwmp="urn:dslforum-org:cwmp-1-0" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Header>
        <cwmp:ID soapenv:mustUnderstand="1">1031422463</cwmp:ID>
    </soapenv:Header>
    <soapenv:Body>
        <cwmp:SetParameterValues>
            <ParameterList soap:arrayType="cwmp:ParameterValueStruct[2]">
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.3.WANPPPConnection.1.Password</Name>
                    <Value xsi:type="xsd:string">pw123</Value>
                </ParameterValueStruct>
                <ParameterValueStruct>
                    <Name>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.3.WANPPPConnection.1.Username</Name>
                    <Value xsi:type="xsd:string">myusername</Value>
                </ParameterValueStruct>
            </ParameterList>
            <ParameterKey>103142246</ParameterKey>
        </cwmp:SetParameterValues>
    </soapenv:Body>
</soapenv:Envelope>
POST /cwmpWeb/CPEMgt HTTP/1.1
Content-Type: text/xml; charset=ISO-8859-1
Host: 10.10.10.11
User-Agent: Thomson_cwmp-engine/r6.2.35.0
Cookie: $Version="0"; JSESSIONID=jXyfNBJJn4KJMrcdfQyG6pqDktYv1bk32n5RDvv1ZrGh7xjn9S5f!1164162625;$Path=/
SOAPAction:
Transfer-Encoding: chunked
Authorization: Basic MDAxNDdGLVNwZWVkVG91Y2g3ODAtQ1AwNjExSlRMTlc6YWIxYjRhMjZjYmUzYWM3NDdhY2JlZWNkZDc3MmQ0MGY=


<soapenv:Envelope soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="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">
 <soapenv:Header>
<cwmp:ID soapenv:mustUnderstand="1">1031422463</cwmp:ID>
 </soapenv:Header>
 <soapenv:Body>
   <soapenv:Fault>
    <faultcode>Client</faultcode>
    <faultstring>CWMP fault</faultstring>
    <detail>
     <cwmp:Fault>
      <FaultCode>9003</FaultCode>
      <FaultString>Invalid arguments</FaultString>
      <SetParameterValuesFault>
       <ParameterName>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.3.WANPPPConnection.1.Password</ParameterName>
       <FaultCode>9003</FaultCode>
       <FaultString>Invalid arguments</FaultString>
      </SetParameterValuesFault>
      <SetParameterValuesFault>
       <ParameterName>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.3.WANPPPConnection.1.Username</ParameterName>
       <FaultCode>9003</FaultCode>
       <FaultString>Invalid arguments</FaultString>
      </SetParameterValuesFault>
     </cwmp:Fault>
    </detail>
   </soapenv:Fault>
 </soapenv:Body>
</soapenv:Envelope>


HTTP/1.1 204 No Content
Date: Wed, 04 May 2011 17:14:57 GMT
Content-Length: 0
Content-Type: text/xml; charset=ISO-8859-1
X-Powered-By: Servlet/2.4 JSP/2.0
POST /cwmpWeb/CPEMgt HTTP/1.1
Content-Type: text/xml; charset=ISO-8859-1
Host: 10.10.10.11
User-Agent: Thomson_cwmp-engine/r6.2.35.0
Cookie: $Version="0"; JSESSIONID=jXyfNBJJn4KJMrcdfQyG6pqDktYv1bk32n5RDvv1ZrGh7xjn9S5f!1164162625;$Path=/
Transfer-Encoding: chunked
Authorization: Basic MDAxNDdGLVNwZWVkVG91Y2g3ODAtQ1AwNjExSlRMTlc6YWIxYjRhMjZjYmUzYWM3NDdhY2JlZWNkZDc3MmQ0MGY=
HTTP/1.1 204 No Content
Cache-Control: no-cache="set-cookie"
Date: Wed, 04 May 2011 17:14:57 GMT
Content-Length: 0
Content-Type: text/xml; charset=ISO-8859-1
Set-Cookie: JSESSIONID=wFfBNBJRgxBvy2kkFPBVNyLv5JG2GCv4833Q11QvhJQBnnTMyj1v!1164162625; path=/
X-Powered-By: Servlet/2.4 JSP/2.0

Broj komentara: 8:

  1. Thank you for the information, it is very useful in understanding the type of message communication between a CPE and an ACS.
    I am implementing a TR69 client stack, and I have a question regarding the behaviour of the CPE during a session.
    Consider the scenario:
    - An Inform RPC is created with the event code '6 CONNECTION REQUEST' and communication with the ACS is established
    - Now a parameter in the CPE, for which notification is required has changed
    - Should this notification be sent within the same HTTP session, (or)
    Should we close the current session, create a new one and send an Inform RPC with the event code as '4 VALUE CHANGE'

    OdgovoriIzbriši
    Odgovori
    1. Open a new session and send Inform with "4 VALUE CHANGE" code.

      Izbriši
  2. thank you!! is there any other blog or website that explains some implementation details of the TR69 protocol, other than the broadband forum spec?

    OdgovoriIzbriši
  3. The broadband spec states for session retrial that "The CPE MUST continue to retry a failed Session until it is successfully terminated".
    What is the definition of "successfully terminated" when the session itself has failed?

    OdgovoriIzbriši
  4. Is it possible for a CPE to support multiple data models? It does not seem likely but is it a possibility? e.g. a DSLAM with VoIP support

    OdgovoriIzbriši
  5. Hi!
    I have one question about Periodic Inform Interval and Connection request. Does Periodic Inform Interval resets after we start Connection request session. Fox example:
    -Periodic Interval is set to 5h
    -We start new session by connection request 1h after last Periodic Inform
    Device should now start periodic session after 4h, or it will be reset to new 5h, so it will start new session 6h after last periodic session?

    OdgovoriIzbriši