TR069协议简单理解

TR069协议简单理解
tr069 协议代码逻辑整理总结:
1.协议初始化
1) log相关的初始化工作;
2) 读取配置文件,包括协议相关参数的初始化、是否第一次运行(为之后第一次inform做准备)、是否包含上次运行未完成任务(如:重启、恢复出厂设置等,需要在第一次inform中做相应的informresponse)
3) 判断是否需要ssl并做ssl的初始化工作
4) 初始化数据模型信息
5) 如果是tr069-Amendment,则需要对tr111协议进行初始化
6) 配置第一次inform的信息,并进行首次的inform,如果出于灵活性考虑,此步可以放到初始化完成后任何时机处理
7) 如果需要tr111,则需要在首次inform之后启动tr111,一般tr111的链接参数应该是在首次inform中从ACS反馈给CWMP
8) 进入httpserver,开始监听从ACS发送过来的命令,此httpserver只在没有tr111的情况下生效,如果有tr111则命令通过tr111的udp命令发送并在带有6 CONNECTION REQUEST的inform消息的informresponse中传递命令

2.会话开始
1) 会话最好在单独的线程中处理,因为可能涉及到耗时的操作,如:下载、上传等
2) 会话分为本地发起和ACS发起,实质都是在CWMP中首先发起inform。ACS发起是指ACS通过httpserver或者tr111发起链接请求,然后CWMP发起infrom,之后ACS在infromresponse中传递命令;本地发起只是在启动时主动发起带有0 BOOTSTRAP或者1 BOOT的inform,其中可能还包含上次未完成的inform,如:重启、恢复出厂设置等,此时还需要包含指令完成信息,如:M Reboot、7 TRANSFER COMPLETE等。
3) 每次的会话都是全新的网络连接,会话开始时需要先发起对ACS的链接(TCP),并发送空的信息到ACS验证链接,之后根据不同的eventcode创建inform消息,创建成功后发送inform到ACS,并等待infromresponse,收到infromresponse后发送空消息到ACS,等待ACS的指令。如果没有新的指令,则会话结束,否则根据指令信息再次发送inform直至没有新指令为止。

3.tr111协议
1) tr111协议主要是在cwmp处于内网环境时,无法通过httpserver直接链接到CWMP以实现对CWMP的控制,所以通过NET打洞的方式(及STUN协议)实现对CWMP的控制,tr111协议是对STUN协议的简单应用,抛弃了STUN协议的部分特性,协议报文完全遵循STUN协议报文格式。分为三部分:保活、bind、命令接收。
2) 保活顾名思义主要是为了保持对ACS的链接,周期性发送,发送内容为bindingrequest,ACS会返回bindingresponse以确定链接没有断开
3) bind主要是在启动时发送到ACS以实现NAT打洞,之后会收到ACS发送的打洞IP,及内部外网IP,之后ACS发起的链接主要通过该IP。之后CWMP需要发送带有4 VALUE CHANGE的inform已确定打洞成功。并且需要在每次CWMP地址发生变化时发起bind。
4) 命令接收主要是ACS通过内部外网IP发起链接请求,在CWMP收到链接请求之后发起带有6 CONNECTION REQUEST的infrom,ACS通过之后的informresponse发送指令到CWMP以实现对CWMP的控制

你可能感兴趣的:(tr069协议)