TR-069第一期第六修正版-17

3.7 会话过程Session Procedures

所有会话必须以来自CPE的包含Inform消息的初始HTTP POST开始。这用于启动事务集,并传达CPE在消息编码方面的限制。在会话期间,Inform消息不得多次出现(由于HTTP身份验证过程中接收到HTTP“401 Unauthorized”状态代码,或由于HTTP重定向过程中接收到HTTP 3xx状态代码,因此可能需要重新传输通知请求,不在此限制之列)。
当ACS和CPE都没有更多的请求要发送,并且ACS或CPE都没有响应时,会话停止。此时,CPE必须关闭连接。
CWMP端点与其关联的ACS之间一次只能存在一个会话。

注意-会话仅在一方有消息要向另一方向传输时才会持续。特定的信息交换完成后,会话及其关联的TCP连接不会保持打开状态。

3.7.1 CPE 操作

3.7.1.1 初始化会话

CPE将根据第3.2.1节中列出的条件启动与ACS的会话。一旦成功建立到ACS的连接,CPE通过向ACS发送初始Inform请求来发起会话。这是向ACS指示CPE的当前状态,并且CPE准备好接受来自ACS的请求。
支持CWMP版本1.4(或更高版本)的CPE将在每个通知请求(在SOAP支持的CWMPVersions标头中)中包含一个逗号分隔的列表,列出其支持的所有CWMP版本号。

  • 如果CMWP版本1.4(或更新版本)CPE在InformResponse中接收到一个UseCWMPVersion标头,其中包含CPE在SupportedCWMPVersions标头中发送的版本,则CPE必须使用UseCWMPVersion中返回的CWMP版本。
  • 如果CWMP版本1.4(或更新版本)的CPE在InformResponse中收到一个UseCWMPVersion头,其中包含一个CPE在SupportedCWMPVersions头中没有发送的版本,则CPE必须通过关闭TCP连接中止会话启动。
  • 如果CPE没有收到UseCWMPVersion,但此CPE支持任何CWMP版本,则CPE必须从ACS返回的InformResponse中的CWMP命名空间推断CWMP版本。表6给出了CPE的CWMP名称空间和CWMP版本之间的映射。

表6 - CPE的CWMP名称空间和CWMP版本之间的映射。

CWMP Namespace CWMP Version
urn:dslforum-org:cwmp-1-0 1.0
urn:dslforum-org:cwmp-1-1 1.1
urn:dslforum-org:cwmp-1-2 1.2 (CPE无法推断1.3)

对于CWMP会话的剩余部分,CPE不得使用任何与CPE选择的CWMP版本不兼容的功能。
当且仅当CPE接收到成功的信息响应时,CPE必须判定会话已经成功启动。
从会话启动到会话终止,CPE必须确保通过CWMP访问的所有参数的事务完整性。在会话过程中,CPE的所有可配置参数必须在ACS看来是仅由ACS修改的一致集。
在整个会话期间,CPE必须屏蔽ACS,使其看不到其他实体对参数进行的任何更新。这包括可配置参数的值以及是否存在可配置参数和对象。CPE实现这种事务完整性的方法是一个局部问题。

CPE必须采取所有必要的步骤来确保会话的事务完整性。
例如,在特殊情况下,为满足CWMP会话建立要求,CPE可能需要终止LAN端管理会话,。

3.7.1.2 传入请求

在会话中(在会话成功启动后,但没有像3.7.1.4中描述的那样终止会话之前),当接收到来自ACS的SOAP请求时,CPE必须在发送给ACS的下一个HTTP POST中响应该请求。

3.7.1.3 发出请求

在会话中(同上),如果CPE有一个或多个请求需要发送给ACS,CPE必须发送这些请求中的一个,但必须足下面的条件:

1). 从ACS收到的上一个HTTP response中没有包含Soap请求。

2). ACS的HoldRequests字段值为false(参考3.4.7节)。当且仅当最近从ACS收到的HTTP响应包含以下内容之一时,才满足此条件:

  • HoldRequests设置为false值的SOAP信封。
  • 没有HoldRequests标头的SOAP信封。
  • 没有SOAP信封(一个空的HTTP响应)。

注意 - HoldRequests SOAP 标头是 废弃的。所以ACS理应不发送它。但是ACS还是有可能会使用这个标头,所以CPE需要支持它。

3). 本会话之前的任何时段,CPE在收到ACS发送的HoldRequests为false的消息时,都没有回复过空消息。

如果在满足上述标准时,CPE有多个待决请求,除非另有规定,否则由CPE自行决定发送哪一个请求。
在会话中,如果不满足上述任何条件,或者如果CPE没有向ACS发送请求,并且如果来自ACS的最新HTTP响应不包含SOAP请求,则CPE必须发送空HTTP POST。
当最近的HoldRequests为false时,一旦CPE发送了一个空HTTP POST(见第3.4.7节),CPE就不能再为剩余的会话发送任何请求。在这种情况下,如果CPE有额外的请求要发送到ACS,则CPE必须等到后续会话发送这些请求

表7总结了在会话进行期间(同上),CPE必须向ACS发送的内容。
表7–CPE消息传输限制

HoldRequests ACS request outstanding No ACS request outstanding
CPE requests pending false Response Request
CPE requests pending true Response Empty HTTP POST
No CPE requests pending - Response Empty HTTP POST

3.7.1.4会话终止

当满足以下所有条件时,CPE必须终止会话:

1). ACS没有发送CPE的进一步请求。CPE可以根据当且仅当来自ACS的最新HTTP响应是否空判断。

2). CPE没有进一步的请求发送到ACS,并且CPE向ACS发出了一个空的HTTP POST,而HoldRequests为false(这向ACS表明CPE对会话的其余部分没有进一步的请求)。如表7所定义,如果未满足此条件,但CPE没有进一步的请求或响应,则必须发送一个空HTTP POST,然后该POST将满足此条件。

注意 - HoldRequests SOAP 标头是 废弃的。所以ACS理应不发送它。但是ACS还是有可能会使用这个标头,所以CPE需要支持它。

3). CPE已收到来自ACS的所有未完成响应消息。

4). CPE已将之前请求产生的所有未完成响应消息都已经发送给ACS。

CPE还必须考虑如果在至少30秒(具体时间由CPE本地决定)内没有收到来自ACS的HTTP响应,则终止未成功完成的会话。如果CPE未能收到HTTP响应,CPE不可以重发上一个消息(将相应的HTTP请求作为同一会话的一部分重新传输)。
如果CPE接收一个Inform响应消息,响应中包含(除了故障代码为8005“Retry request”之外其他的故障代码的)一个SOAP层报错,CPE必须判定该会话已经终止。

如果CPE从ACS接收HTTP响应消息时,消息中的XML格式异常,SOAP结构无效,或者该SOAP结构中包含不在第3.5节中指定的SOAP故障,或者CPE认为消息违反协议,则CPE必须终止未成功完成的会话。

如果CPE收到来自ACS的HTTP响应,CPE无法处理其故障状态代码(4xx或5xx状态代码),则CPE必须终止未成功完成的会话。请注意,在认证的过程中,CPE可能会接到HTTP响应“401 Unauthorized” ,这是正常认证过程的一部分。但当CPE随后尝试进行认证时,如果所得到的HTTP响应又包含“401 Unauthorized”状态代码,则CPE必须终止未成功完成的会话。

如没有遇到上述的情况,则CPE必须继续进行会话。

如果CPE接收任意一个非Inform 方法的响应消息,响应中包含(除了故障代码为8005“Retry request”之外其他的故障代码的)一个SOAP层报错,CPE必须继续进行会话。不可以因为此报错终止未成功完成的会话。

注意 - 在故障情况下,ACS完全可以自行决定其故障响应是SOAP层故障,会话会继续;还是HTTP层故障,会话会因失败而终止。

如果会话期间交换的一条或多条消息导致CPE需要重新启动以完成请求的操作,则CPE必须等到会话根据上述标准完全终止后,才能执行重新启动。

如果会话意外终止,CPE必须按照第3.2.1.1节的规定重试会话。在这种情况下,CPE可以对其尝试重新建立会话的次数设置本地指定的限制。

Kevin

posted @ 2022-12-12 16:25  Kevin4X  阅读(120)  评论(0编辑  收藏  举报