Connection Keep-Alive for CPE behind NAT

Hi,

some of our customers CPEs access our ACS through NAT. What’s more, most don’t support STUN. Therefore we are unable to properly interact with the CPE in a customer support session.

A solution that came to our minds is that a support agent could tick a box on the CPE page so that the next time the CPE sends its inform request the connection is kept alive rather than closed following the information exchange. Afterwards, the support agent could interact with the CPE through this connection.

Have we overlooked something or do you think this is possible?

Thanks a lot and Kind regards,

Fredrik

The connection is automatically closed at the end of every inform session. No way for either side to force it to remain open in any meaningful way.

Hi Zaid,

thank you very much for your response. Sadly I don’t understand your point about automatic connection closure. In this inform dialog it seems like the connection is forcefully closed by the server:

event: incoming HTTP request
timestamp: 2022-04-05T08:47:11.068Z
remoteAddress: "::ffff:20.79.187.160"
deviceId: 202BC1-BM632w-000000
connection: 2022-04-05T08:47:11.068Z
localPort: 7547
method: POST
url: /
headers: 
  content-length: "2075"
  content-type: text/xml; charset="utf-8"
  authorization: Basic OEtBOFdBMTE1MTEwMDA0Mzo=
  cookie: session=6d600599ce7c8507
  host: acs.filiago.de:7547
  connection: keep-alive
body: >-
  <?xml version="1.0" encoding="UTF-8"?>

  <soap-env:Envelope xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/"
  xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"
  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">fhnbzeas</cwmp:ID></soap-env:Header><soap-env:Body><cwmp:Inform><DeviceId><Manufacturer>Huawei
  Technologies Co.,
  Ltd.</Manufacturer><OUI>202BC1</OUI><ProductClass>BM632w</ProductClass><SerialNumber>000000</SerialNumber></DeviceId><Event
  soap-enc:arrayType="cwmp:EventStruct[1]"><EventStruct><EventCode>2
  PERIODIC</EventCode><CommandKey/></EventStruct></Event><MaxEnvelopes>1</MaxEnvelopes><CurrentTime>2022-04-05T08:47:11.053Z</CurrentTime><RetryCount>0</RetryCount><ParameterList
  soap-enc:arrayType="cwmp:ParameterValueStruct[16]"><ParameterValueStruct><Name>InternetGatewayDevice.DeviceInfo.SpecVersion</Name><Value
  xsi:type="xsd:string">1.0</Value></ParameterValueStruct><ParameterValueStruct><Name>InternetGatewayDevice.DeviceInfo.HardwareVersion</Name><Value
  xsi:type="xsd:string">00040501</Value></ParameterValueStruct><ParameterValueStruct><Name>InternetGatewayDevice.DeviceInfo.SoftwareVersion</Name><Value
  xsi:type="xsd:string">V100R001IRQC56B017</Value></ParameterValueStruct><ParameterValueStruct><Name>InternetGatewayDevice.DeviceInfo.ProvisioningCode</Name><Value
  xsi:type="xsd:string"/></ParameterValueStruct><ParameterValueStruct><Name>InternetGatewayDevice.ManagementServer.ParameterKey</Name><Value
  xsi:type="xsd:string"/></ParameterValueStruct><ParameterValueStruct><Name>InternetGatewayDevice.ManagementServer.ConnectionRequestURL</Name><Value
  xsi:type="xsd:string">http://192.168.112.3:44505/</Value></ParameterValueStruct><ParameterValueStruct><Name>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ExternalIPAddress</Name><Value
  xsi:type="xsd:string">172.3.89.139</Value></ParameterValueStruct></ParameterList></cwmp:Inform></soap-env:Body></soap-env:Envelope>
---
event: outgoing HTTP response
timestamp: 2022-04-05T08:47:11.069Z
remoteAddress: "::ffff:20.79.187.160"
deviceId: 202BC1-BM632w-000000
connection: 2022-04-05T08:47:11.068Z
statusCode: 200
headers: 
  content-length: 528
  server: GenieACS/1.2.8+20220123125718
  soapserver: GenieACS/1.2.8+20220123125718
  content-type: text/xml; charset="utf-8"
  set-cookie: session=10def2951e2a424b
body: >-
  <?xml version="1.0" encoding="UTF-8"?>

  <soap-env:Envelope xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/"
  xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"
  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">fhnbzeas</cwmp:ID></soap-env:Header><soap-env:Body><cwmp:InformResponse><MaxEnvelopes>1</MaxEnvelopes></cwmp:InformResponse></soap-env:Body></soap-env:Envelope>
---
event: incoming HTTP request
timestamp: 2022-04-05T08:47:11.070Z
remoteAddress: "::ffff:20.79.187.160"
deviceId: 202BC1-BM632w-000000
connection: 2022-04-05T08:47:11.068Z
localPort: 7547
method: POST
url: /
headers: 
  content-length: "0"
  content-type: text/xml; charset="utf-8"
  authorization: Basic OEtBOFdBMTE1MTEwMDA0Mzo=
  cookie: session=10def2951e2a424b
  host: acs.filiago.de:7547
  connection: keep-alive
body: ""
---
event: outgoing HTTP response
timestamp: 2022-04-05T08:47:11.074Z
remoteAddress: "::ffff:20.79.187.160"
deviceId: 202BC1-BM632w-000000
connection: 2022-04-05T08:47:11.068Z
statusCode: 204
headers: 
  content-length: 0
  server: GenieACS/1.2.8+20220123125718
  soapserver: GenieACS/1.2.8+20220123125718
  connection: close
body: ""

Couldn’t the connection header in the last HTTP response be changed to keep-alive?
Alternatively, couldn’t we send arbitrary messages over the connection to keep it alive?

We’re aware that implementing such changes would require significant effort and would therefore like to iterate on this before starting to implement them, so thanks a lot for your time and support!

Fredrik