Though every TR-069 session is initiated by the CPE endpoint, sometimes it’s necessary for the ACS to request that the CPE contact it immediately. To do this, TR-069 defines a Connection Request mechanism in CWMP, which allows the ACS to stimulate the CPE to begin a session.
The most basic Connection Request is a simple HTTP GET on a URL defined by the CPE, defined in the ConnectionRequestURL parameter of the ManagementServer object in the CPE data model. This parameter is included in every Inform the CPE makes, to ensure that the ACS knows the URL.
This HTTP GET is authenticated by the CPE using a username and password specific to the ACS. Usually, the ACS will set this username and password after a CPE contacts it for the first time. These are defined in the ConnectionRequestUsername and ConnectionRequestPassword parameters in the ManagementServer object.
Once the HTTP GET is authenticated, the CPE sends an HTTP Response with a 200 OK or 204 “No Content” status code. This tells the ACS that the CPE received and understood the request. The response needs to happen immediately, and before any session triggered by the request occurs.
If the CPE receives more than one ConnectionRequest before the first session occurs, it must still respond to them, but only begin one Session as a result.
If CPE is already in a Session with the ACS when it receives a ConnectionRequest, it can’t terminate that Session prematurely. Instead, it can send a 503 “Service Unavailable” status code, or wait for the current session to finish before starting the requested Session.
When it’s ready, CPE starts the new session within 30 seconds of receiving the Connection Request, and includes the “6 CONNECTION REQUEST” event code in its Inform call. The session then proceeds as normal.
There’s one caveat to ConnectionRequests - they require that the CPE can be reached by the ACS over HTTP. For endpoints that may reside behind a Gateway, this is not the case, thanks to Network Address Translation or Firewall rules. To get around this, TR-069 Annex K defines a way to perform [Connection Requests over XMPP]().
Develop your solution even faster with the industry standard in automated, expert testing.