TR069 协议基本流程

[b]关键字:CPE操作 ACS操作[/b]

[u]CPE发起连接的情况:[/u]

[list]
[*] 初始安装时第一次向接入网发起连接。
[*] 上电或重启。
[*] 在每一个通知周期间隔。
[*] 被optional ScheduleInform method 所指示需要如此执行。
[*] 接收到ACS的有效链接请求。
[*] ACS的URL发生改变。
[*] 一个在修改后需要初始化一个Inform的参数变化时。
[*] 不正常终结的会话根据会话重新建立规则发起重建。
[/list]
[b]CPE操作:[/b]

[u]1.会话发起[/u]

和ACS的连接建立成功后,CPE发送Inform请求到ACS来发起会话。指示CPE当前状态,表示已经准备好接收ACS的请求。

收到一个成功的Inform响应,CPE才会认为会话成功建立。

[u]2.接收请求[/u]

在一个会话中,收到来自ACS的SOAP请求,CPE必须在下一个发送给ACS的HTTP响应此请求。

[u]3.发送请求[/u]

在一个已经成功发起的会话中,如果CPE要发送一个或多个请求,必须满足以下条件:

[list]
[*] 最近从ACS收到的HTTP响应不包含SOAP请求。
[*] ACS已经指示HoldRequests为false的SOAP封装包包括(HoldRequests为false、没有HoldRequests头的SOAP封装包、没有SOAP封装的空HTTP响应)
[*] 在当前会话已经运行的这段时间,在ACS已经指示HoldRequests为false后,CPE没有发送一个空HTTP POST。
[/list]
在一个会话中,如果没有满足上面任何一种情况或者CPE没有给ACS的请求,并且ACS最近发送的HTTP响应没有包含一个SOAP请求,则CPE必须发送一个空HTTP POST。

一旦最近的HoldRequests为false,且CPE发送了一个空HTTP POST,CPE必须不能在这个会话的接下来的时间里发送任何更多的请求。只能在接下来的会话中发送。

[u]4.会话终止[/u]

满足一下所有条件,CPE必须终止这个事务会话:

1) ACS没有更多的请求,根据ACS的最近HTTP响应为空判断。

2) CPE没有更多的请求,并已经向ACS发送了一个空HTTP POST,并包括HoldRequests为false。

3) CPE已经从ACS接收了所有的响应消息。

4) CPE已经发送了所有的响应消息给ACS作为已经收到的请求的响应。

如果一个本地规定的不小于30秒的周期内没有收到ACS的HTTP响应,CPE必须认为一个会话被异常终止了。如果CPE接收HTTP响应出错,CPE必须不能在同一个会话中尝试重传这个对应的HTTP请求。

如果CPE在响应一个Inform请求时收到了一个错误码不是“Retry request”
8005的SOAP层错误,CPE必须认为这个会话已经被异常终止了。

如果CPE从ACS收到一个HTTP响应来指示不合法的XML,认为此SOAP结构无效或者这个协议已经受到了侵犯,CPE必须认为这个会话已经被异常终止了。

如果CPE从ACS收到的不是由自己处理的错误状态码的HTTP响应,那么CPE必须认为这个会话已经被异常终止了。

如果没有以上情况,则继续此会话。

[u]5.事件[/u]

事件即指示,CPE必须至少一次的尝试递交每个事件。一旦CPE递交成功了一个事件,就不能再一次发送同样的事件。ACS必须准备多次接收一个事件,因为ACS已经发送了一个响应,但CPE一直收不到。某些事件可以合法的重复发送,即使已经在一起的会话中发送成功(如periodic,value change)。

事件类型分为非累计single和累积multiple两种。如果CPE在“1 BOOT”事件还没提交时就重启了,则没有必要在下一个Inform中包含两个“1 BOOT”。但是在“M Download”还没提交时一个下载完成了,下一个Inform里则包含两个“M Download”事件,因为每一个都关联了一个不同的ACS请求。

single和multiple定义如下:

如果发生了一个single累积行为的事件,这一列事件中下一个Inform中必须只能包含一个此事件码(EventCode)的实例,无论是否有同类型未发送的事件。

如果发生了一个multiple累积行为的事件,这个新的事件码(EventCode)必须包含在事件列表中,不受同一类型的任何没有提交的事件的影响。它必须不能影响那些没有提交的事件。

当一个或多个事件跟同一个根源相关联,所有事件必须包含在一个事件列表中。

[u]6.方法重试行为[/u]

如果对来自CPE的请求的响应,CPE收到一个重试请求(响应代码8005),CPE必须在当前会话的下一个HTTP POST中重新发送一个请求,此行为适用于所有的ACS方法。

如果CPE受到一个非Inform方法和错误码不是8005的响应,CPE必须继续本次会话,且不能尝试重试发送这个方法。

[b]ACS操作[/b]

[u]1.会话发起[/u]

当收到了CPE的初始Inform请求,如果ACS此时希望发起会话,必须响应一个Inform方法。

[u]2.接收请求[/u]

在一个会话中,接收到一个来自CPE的SOAP请求,ACS必须在下一个发送给CPE的HTTP响应中回复这个请求。

如果ACS希望在这个会话的某段时间内阻止CPE发送请求,可以在每个发送给CPE的封装包中设置HoldRequest为true。直到希望允许来自CPE的请求为止。ACS必须允许CPE的请求直到此会话完成(可以通过HoldRequests或发送空HTTP响应实现)

[u]3.发送请求[/u]

在一个会话中,如果ACS有一个或多个请求,并且最近收到的CPE的HTTP POST中没有包含SOAP请求,ACS必须在下一个HTTP响应中发送这些请求中的一个请求。

ACS没有给CPE的请求,并且CPE最近发送的HTTP响应没有包含一个SOAP请求,则ACS必须发送一个空HTTP POST。

[u]4.会话终止[/u]

CPE是对ACS的HTTP连接的操纵方,由CPE来负责连接的发起和终止。

ACS必须在以下条件均成立时才认为此会话终止:

1) CPE已经没有更多的请求。ACS当且仅当中HoldRequests为false时收到CPE的空HTTP POST才能认为满足此条件。

2) ACS没有更多的请求发送,并且最近发送给CPE的HTTP响应是空的。

3) ACS已经针对先前收到的所有请求都回复了响应。

4) ACS已经从CPE收到了所有自己发送的请求的响应消息。

如果ACS发送最后一个HTTP响应之前以上的条件都满足,则ACS的最后一个HTTP的响应必须是空的。

如果以上条件并未全部满足,当ACS已经在一个本地定义的不少于30s的时间段内没有收到对应CPE的一个HTTP POST,它可以认为此会话终止。在此情况下,ACS可以通过执行一个连接请求来重建一个会话。

如果ACS收到一个来自CPE的HTTP POST,且对应的xml不是well-formed,或它包含了一个不在3.5中描述的SOAP错误的格式,ACS必须用一个HTTP 400状态码来回复CPE,并必须认为此会话异常终止。这个错误响应必须不能包含一个SOAP内容,但可以包含可理解的文本内容用于详细描述此错误原因。

如果ACS从一个它认为已经超时的会话中收到一个请求,或ACS认为发生了一些其他协议的攻击,ACS可以通过用HTTP 400状态码回复CPE来异常终止这个会话。这个HTTP响应必须不能包含任何的soap内容,但可以包含可理解的文本内容用于详细描述此错误原因。

如果ACS从CPE收到了一个SOAP错误响应,ACS可以选择如下操作之一:

1) ACS可以强制异常终止此会话。通过HTTP 400状态码

2) ACS可以正常终止此会话,这样CPE就不会来尝试重建这个会话。为了实现它,ACS不能发送更多的请求。且遵循上面定义的规则来判断此会话何时会终止。

3) ACS可以继续这个会话,并发送其他的请求到CPE。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值