一种解决IPTV机顶盒PPPOE拨号失败的方法转让专利

申请号 : CN201811523736.1

文献号 : CN109660424B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 夏波许勇黄林波

申请人 : 四川天邑康和通信股份有限公司

摘要 :

本发明涉及IPTV机顶盒领域,特别是涉及一种解决IPTV机顶盒PPPOE拨号失败的方法,光猫分别与局端设备、IPTV机顶盒相连,光猫上设有会话嗅探模块、会话记录模块、链路状态感知模块和会话清理模块,用于完成信息处理程序和故障排除程序;信息处理程序和故障排除程序同时进行,会话嗅探模块随时监控光猫收发的报文,同时链路状态感知模块监控光猫LAN口,判断是否出现拨号失败的问题;会话记录模块创建会话记录文件,会话清理模块,读取会话记录模块已经创建完成的会话记录文件,用其填充PADT报文,并发送PADT报文,终止IPTV机顶盒和局端设备之间的PPPOE会话,各模块之间合理分工、同步运转,用最快的速度发现并解决拨号失败的问题,可以提高效率,提升用户好感度。

权利要求 :

1.一种解决IPTV机顶盒PPPOE拨号失败的方法,其特征在于:将光猫通过LAN口与IPTV机顶盒通信连接,通过WAN口与局端设备通信连接,使光猫收发PPPOE报文,并完成信息处理程序和故障排除程序;

所述信息处理程序具体包括以下步骤:

ⅰ. 光猫上的会话嗅探模块监控光猫收发的报文,若发现特定报文,调用光猫上的会话记录模块,进入步骤ⅱ;若没有发现特定报文,则继续监控;所述特定报文是指目的地是光猫的LAN口的PADS报文;

ⅱ. 光猫上的会话记录模块解析PADS报文,提取有用的信息,包括源MAC地址,目的MAC地址,PPPOE会话ID和报文接收接口名称;

ⅲ. 光猫上的会话记录模块使用PADS报文中的目的MAC和目的接口名称,检索PPPOE会话全局链表,查看是否找到匹配的会话记录,若是,更新匹配的PPPOE会话全局链表节点中的会话信息,进入步骤ⅳ;若否,根据会话信息,新建一条PPPOE会话记录,插入PPPOE会话全局链表,进入步骤ⅳ;

ⅳ. 会话记录模块遍历PPPOE会话全局链表,链表的每个节点保存了一条PPPOE会话记录,将会话记录输出为一行PPPOE会话字符串,将字符串追加到全局的字符串buffer中;

ⅴ. 会话记录模块将全局的字符串buffer写入光猫FLASH上的PPPOE会话记录文件中;

所述故障排除程序具体包括以下步骤:

a. 光猫上的链路状态感知模块监控光猫LAN口连接状态,若判断接口状态从已经连接状态转变为断开连接状态,调用光猫上的会话清理模块,进入步骤b;若判断接口状态没有改变,不作处理;

b. 光猫上的会话清理模块创建线程,清理已经断开连接的光猫的LAN口上的PPPOE会话,读取信息处理程序步骤ⅴ中会话记录模块创建的会话记录文件,填充PADT报文并通过RAW SOCKET发送PADT报文,终止IPTV机顶盒和局端设备之间的PPPOE会话。

2.根据权利要求1所述的一种解决IPTV机顶盒PPPOE拨号失败的方法,其特征在于:所述信息处理程序中步骤ⅴ中PPPOE会话记录文件是以光猫LAN口名称命名的。

3.根据权利要求2所述的一种解决IPTV机顶盒PPPOE拨号失败的方法,其特征在于:所述故障排除程序中步骤a具体包括以下步骤:a1. 链路状态感知模块创建AF_NETLINK类型的SOCKET;将SOCKET绑定到RTMGRP_LINK组,监听SOCKET;

a2. 链路状态感知模块判断SOCKET是否有RTM_NEWLINK和RTM_DELLINK类型的消息到来,若否,继续监听SOCKET,若是,进入步骤a3;

a3. 链路状态感知模块解析接收到的消息中ifinfomsg结构体的ifi_flags成员是否被设置了IFF_RUNNING,若是,表示接口已经连接,若否,表示接口已经断开连接;

a4. 链路状态感知模块接收到上述消息后,遍历光猫的接口连接状态链表,通过上述消息中的接口名称字段进行匹配,并对比该接口上一次的状态,若接口状态改变,从连接状态转变为断开连接状态,更新匹配的光猫接口连接状态链表节点中对应记录,调用会话清理模块,若接口状态没有改变,不做处理。

4.根据权利要求3所述的一种解决IPTV机顶盒PPPOE拨号失败的方法,其特征在于:所述故障排除程序中步骤b具体包括以下步骤:b1. 会话清理模块创建线程,传入已经断开连接的LAN口的名称;

b2. 在被创建的线程中,会话清理模块根据接收到的LAN口名称,打开对应的光猫FLASH上的PPPOE会话记录文件;

b3. 逐条读入PPPOE会话记录,提取有效信息,包括PPPOE报文的源MAC地址,目的MAC地址,PPPOE会话ID和报文接收接口名称;

b4. 创建RAW SOCKET,组建PADT包,使用步骤b3中的信息进行填充,将组建好的PADT包通过RAW SOCKET发送给局端设备,并判断会话记录是否读取完毕,若是,进入步骤b5;若否,进入步骤b3;

b5. 关闭会话记录文件,关闭SOCKET;退出线程。

5.根据权利要求1或4所述的一种解决IPTV机顶盒PPPOE拨号失败的方法,其特征在于:所述光猫LAN口与交换机相连,交换机与多个IPTV机顶盒相连。

说明书 :

一种解决IPTV机顶盒PPPOE拨号失败的方法

技术领域

[0001] 本发明涉及IPTV机顶盒领域,特别是涉及一种解决IPTV机顶盒PPPOE拨号失败的方法。

背景技术

[0002] 宽带运营商现网中,IPTV机顶盒接入光猫LAN口,通过光猫与运营商局端设备通信。在IPTV机顶盒上电的时候,概率性出现PPPOE拨号失败的问题,导致IPTV机顶盒无法获取IP,不能进行网络通信,用户无法通过IPTV机顶盒收看IPTV节目。
[0003] 现有技术中,提出了授权公告为CN100358336C,授权公开日为2007年12月26日的中国发明专利文件,来解决上述存在的技术问题,该专利文献所公开的技术方案如下:一种IP机顶盒重新拨号的方法,通过保存PPPoE接入方式中的宽带接入服务器的MAC地址和PPPoE发现阶段IP机顶盒与宽带服务器确定的会话ID号以及校验信息,当IP机顶盒在异常情况下重新拨号时,把保存的相关信息读出并组拼成报文,在发送PADI报文之前先发送报文,以便终止异常情况后仍存在的链路/会话,使得PPPoE的发现阶段顺利进行,从而使IP机顶盒快速接入网络,提高了网络利用率和用户享受,并且具有很高的稳定性和有效性。
[0004] 上述技术方案在实际使用过程中,会出现以下问题:
[0005] (1)该技术方案实在机顶盒上电或者机顶盒连接异常的时候,发送PADT报文,来通知PPPOE服务器结束会话,技术方案部署在该运营商的机顶盒上面,只能是该运营商的机顶盒或者该运营商授权的机顶盒,与光猫配合使用才能解决拨号失败的问题,不能适配所有的运营商的机顶盒,使用范围太窄。
[0006] (2)该技术方案只是针对单个机顶盒,不能同时支持多个机顶盒,适用范围窄。
[0007] (3)发生了异常情况后才重新拨号,检测文件SaveInfo.txt,最后才进入重新拨号的发生阶段,不能提前判断是否有异常情况,然后处理异常情况,该方法效率不高,不能提升用户的好感度。

发明内容

[0008] 为解决上述技术问题,本发明提出了一种解决IPTV机顶盒PPPOE拨号失败的方法,信息处理程序和故障排除程序同时进行,实现随时且同时监控收发报文、监控LAN口连接状况,对机顶盒拨号失败的问题及时处理,合理分工,效率更高,便于提升用户体验感。
[0009] 本发明是通过采用下述技术方案实现的:
[0010] 一种解决IPTV机顶盒PPPOE拨号失败的方法,其特征在于:将光猫通过LAN口与IPTV机顶盒通信连接,通过WAN口与局端设备通信连接,使光猫收发PPPOE报文,并完成信息处理程序和故障排除程序;
[0011] 所述信息处理程序具体包括以下步骤:
[0012] ⅰ. 光猫上的会话嗅探模块监控光猫收发的报文,若发现特定报文,调用光猫上的会话记录模块,进入步骤ⅱ;若没有发现特定报文,则继续监控;所述特定报文是指目的地是LAN口的PADS报文;
[0013] ⅱ. 光猫上的会话记录模块解析PADS报文,提取有用的信息,包括源MAC地址,目的MAC地址,PPPOE会话ID和报文接收接口名称;
[0014] ⅲ. 光猫上的会话记录模块使用PADS报文中的目的MAC和目的接口名称,检索PPPOE会话全局链表,查看是否找到匹配的会话记录,若是,更新匹配的PPPOE会话全局链表节点中的会话信息,进入步骤ⅳ;若否,根据会话信息,新建一条PPPOE会话记录,插入PPPOE会话全局链表,进入步骤ⅳ;
[0015] ⅳ. 会话记录模块遍历PPPOE会话全局链表,链表的每个节点保存了一条PPPOE会话记录,将会话记录输出为一行PPPOE会话字符串,将字符串追加到全局的字符串buffer中;
[0016] ⅴ. 会话记录模块将全局的字符串buffer写入光猫FLASH上的PPPOE会话记录文件中;
[0017] 所述故障排除程序具体包括以下步骤:
[0018] a. 光猫上的链路状态感知模块监控光猫LAN口连接状态,若判断接口状态从已经连接状态转变为断开连接状态,调用光猫上的会话清理模块,进入步骤b;若判断接口状态没有改变,不作处理;
[0019] b. 光猫上的会话清理模块创建线程,清理已经断开连接的LAN口上的PPPOE会话,读取信息处理程序步骤ⅴ中会话记录模块创建的会话记录文件,填充PADT报文并发送PADT报文,终止IPTV机顶盒和局端设备之间的PPPOE会话。
[0020] 所述信息处理程序中步骤ⅴ中PPPOE会话记录文件是以光猫LAN口名称命名的。
[0021] 所述故障排除程序中步骤a具体包括以下步骤:
[0022] a1. 链路状态感知模块创建AF_NETLINK类型的SOCKET;将SOCKET绑定到RTMGRP_LINK组,监听SOCKET;
[0023] a2. 链路状态感知模块判断SOCKET是否有RTM_NEWLINK和RTM_DELLINK类型的消息到来,若否,继续监听SOCKET,若是,进入步骤a3;
[0024] a3. 链路状态感知模块解析接收到的消息中ifinfomsg结构体的ifi_flags成员是否被设置了IFF_RUNNING,若是,表示接口已经连接,若否,表示接口已经断开连接;
[0025] a4. 链路状态感知模块接收到上述消息后,遍历光猫的接口连接状态链表,通过上述消息中的接口名称字段进行匹配,并对比该接口上一次的状态,若接口状态改变,从连接状态转变为断开连接状态,更新匹配的光猫接口连接状态链表节点中对应记录,调用会话清理模块,若接口状态没有改变,不做处理。
[0026] 所述故障排除程序中步骤b具体包括以下步骤:
[0027] b1. 会话清理模块创建线程,传入已经断开连接的LAN口的名称;
[0028] b2. 在被创建的线程中,会话清理模块根据接收到的LAN口名称,打开对应的光猫FLASH上的PPPOE会话记录文件;
[0029] b3. 逐条读入PPPOE会话记录,提取有效信息,包括PPPOE报文的源MAC地址,目的MAC地址,PPPOE会话ID和报文接收接口名称;
[0030] b4. 创建RAW SOCKET,组建PADT包,使用步骤b3中的信息进行填充,将组建好的PADT包通过RAW SOCKET发送给局端设备,并判断会话记录是否读取完毕,若是,进入步骤b5;若否,进入步骤b3;
[0031] b5. 关闭会话记录文件,关闭SOCKET;退出线程。
[0032] 所述光猫LAN口与交换机相连,交换机与多个IPTV机顶盒相连。
[0033] 与现有技术相比,本发明的有益效果表现在:
[0034] 1、光猫上设有会话嗅探模块、会话记录模块、链路状态感知模块和会话清理模块,完成信息处理程序和故障排除程序,信息处理程序和故障排除程序同时进行,其中信息处理程序中包括会话嗅探模块和会话记录模块,会话嗅探模块一直监控光猫收发的报文中是否出现特定报文,便于一旦出现特定报文,能直接调用会话记录模块对其进行解析、会话信息提取并创建会话记录;故障排除程序包括链路状态感知模块和会话清理模块,链路状态感知模块一直感知模块监控光猫LAN口连接状态,一旦判断接口状态从已经连接状态转变为断开连接状态,立即快速调取会话清理模块,清理已经断开连接的LAN口上的PPPOE会话,读取会话记录模块已经创建完成的会话记录文件,用其填充PADT报文,并发送PADT报文,终止IPTV机顶盒和局端设备之间的PPPOE会话。该过程中,各模块之间合理分工且相互合作,同步运转,用最快的速度发现拨号失败的问题,且能立即处理,可以提高效率,提升用户好感度。
[0035] 2、链路状态感知模块一直运行,通过感知LAN口的连接状态,将其与上一次的状态进行对比,便于第一时间发现拨号失败的问题,便于后期节约前期发现问题的时间,使减少整个处理问题的时间,提高效率,且该判断方法准确。
[0036] 3、光猫上设有会话嗅探模块、会话记录模块、链路状态感知模块和会话清理模块,光猫LAN口与交换机相连,交换机与多个IPTV机顶盒相连,便于利用同一光猫,支持多个IPTV机顶盒,对多个IPTV机顶盒的拨号失败问题进行处理,效率更高。
[0037] 4、本方案将软件设置在光猫上,能适配一般运营商的机顶盒,解决拨号失败的问题,适用范围更加广。
[0038] 5、光猫上设有会话清理模块,清理已经断开连接的LAN口上的PPPOE会话,使PPPOE会话通信两端局端设备和机顶盒各自保存的当前PPPOE会话状态的同步,提前做好准备,减少拨号失败的几率。
[0039] 6、所述信息处理程序中步骤ⅴ中PPPOE会话记录文件是以光猫LAN口名称命名的,便于后期调用相应的会话记录文件,节约时间,提高效率。

附图说明

[0040] 下面将结合说明书附图和具体实施方式对本发明作进一步的详细说明,其中:
[0041] 图1为本发明中会话嗅探模块的流程示意图;
[0042] 图2为本发明中会话记录模块的流程示意图;
[0043] 图3为本发明中链路状态感知模块的流程示意图;
[0044] 图4为本发明中会话清理模块的流程示意图。

具体实施方式

[0045] 实施例1
[0046] 作为本发明基本实施方式,参照说明书附图1和2,本发明包括一种解决IPTV机顶盒PPPOE拨号失败的方法,将光猫通过LAN口与IPTV机顶盒通信连接,通过WAN口与局端设备通信连接,使光猫收发PPPOE报文,并完成信息处理程序和故障排除程序;
[0047] 所述信息处理程序具体包括以下步骤:
[0048] ⅰ. 光猫上的会话嗅探模块监控光猫收发的报文,若发现特定报文,调用光猫上的会话记录模块,进入步骤ⅱ;若没有发现特定报文,则继续监控;所述特定报文是指目的地是LAN口的PADS报文;
[0049] ⅱ. 光猫上的会话记录模块解析PADS报文,提取有用的信息,包括源MAC地址,目的MAC地址,PPPOE会话ID和报文接收接口名称;
[0050] ⅲ. 光猫上的会话记录模块使用PADS报文中的目的MAC和目的接口名称,检索PPPOE会话全局链表,查看是否找到匹配的会话记录,若是,更新匹配的PPPOE会话全局链表节点中的会话信息,进入步骤ⅳ;若否,根据会话信息,新建一条PPPOE会话记录,插入PPPOE会话全局链表,进入步骤ⅳ;
[0051] ⅳ. 会话记录模块遍历PPPOE会话全局链表,链表的每个节点保存了一条PPPOE会话记录,将会话记录输出为一行PPPOE会话字符串,将字符串追加到全局的字符串buffer中;
[0052] ⅴ. 会话记录模块将全局的字符串buffer写入光猫FLASH上的PPPOE会话记录文件中;
[0053] 所述故障排除程序具体包括以下步骤:
[0054] a. 光猫上的链路状态感知模块监控光猫LAN口连接状态,若判断接口状态从已经连接状态转变为断开连接状态,调用光猫上的会话清理模块,进入步骤b;若判断接口状态没有改变,不作处理;
[0055] b. 光猫上的会话清理模块创建线程,清理已经断开连接的LAN口上的PPPOE会话,读取信息处理程序步骤ⅴ中会话记录模块创建的会话记录文件,填充PADT报文并发送PADT报文,终止IPTV机顶盒和局端设备之间的PPPOE会话。
[0056] 机顶盒到光猫的LAN连接已经断开,机顶盒当前使用的PPPOE会话将失效,但是机顶盒很可能没有在断开与光猫的LAN连接前,及时发送报文通知BRAS,当前PPPOE会话将失效。当机顶盒随后恢复与光猫LAN的连接,并且重新和BRAS协商PPPOE会话,BRAS发现它还保留了机顶盒上一次的PPPOE会话,会拒绝机顶盒当前的PPPOE会话协商,这样机顶盒就不能从BRAS获取IP,即拨号失败。所以该步骤中,光猫会检测到这种情况,代替机顶盒向BRAS发送PADT报文,这样BRAS收到PADT以后,会将其保存的与机顶盒的PPPOE会话清除,下一次机顶盒再发起PPPOE会话协商就会成功,机顶盒就会获取到IP,使PPPOE会话通信两端局端设备和机顶盒各自保存的当前PPPOE会话状态的同步,提前做好准备,减少拨号失败的几率。
[0057] 实施例2
[0058] 作为本发明一较佳实施方式,参照说明书附图3,本发明包括一种解决IPTV机顶盒PPPOE拨号失败的方法,其特征在于:将光猫通过LAN口与IPTV机顶盒通信连接,通过WAN口与局端设备通信连接,使光猫收发PPPOE报文,并完成信息处理程序和故障排除程序;
[0059] 所述信息处理程序具体包括以下步骤:
[0060] ⅰ. 光猫上的会话嗅探模块监控光猫收发的报文,若发现特定报文,调用光猫上的会话记录模块,进入步骤ⅱ;若没有发现特定报文,则继续监控;所述特定报文是指目的地是LAN口的PADS报文;
[0061] ⅱ. 光猫上的会话记录模块解析PADS报文,提取有用的信息,包括源MAC地址,目的MAC地址,PPPOE会话ID和报文接收接口名称;
[0062] ⅲ. 光猫上的会话记录模块使用PADS报文中的目的MAC和目的接口名称,检索PPPOE会话全局链表,查看是否找到匹配的会话记录,若是,更新匹配的PPPOE会话全局链表节点中的会话信息,进入步骤ⅳ;若否,根据会话信息,新建一条PPPOE会话记录,插入PPPOE会话全局链表,进入步骤ⅳ;
[0063] ⅳ. 会话记录模块遍历PPPOE会话全局链表,链表的每个节点保存了一条PPPOE会话记录,将会话记录输出为一行PPPOE会话字符串,将字符串追加到全局的字符串buffer中;
[0064] ⅴ. 会话记录模块将全局的字符串buffer写入光猫FLASH上的PPPOE会话记录文件中;所述PPPOE会话记录文件是以光猫LAN口名称命名的;
[0065] 所述故障排除程序具体包括以下步骤:
[0066] a. 光猫上的链路状态感知模块监控光猫LAN口连接状态,若判断接口状态从已经连接状态转变为断开连接状态,调用光猫上的会话清理模块,进入步骤b;若判断接口状态没有改变,不作处理;
[0067] b. 光猫上的会话清理模块创建线程,清理已经断开连接的LAN口上的PPPOE会话,读取信息处理程序步骤ⅴ中会话记录模块创建的会话记录文件,填充PADT报文并发送PADT报文,终止IPTV机顶盒和局端设备之间的PPPOE会话。
[0068] 所述故障排除程序中步骤a具体包括以下步骤:
[0069] a1. 链路状态感知模块创建AF_NETLINK类型的SOCKET;将SOCKET绑定到RTMGRP_LINK组,监听SOCKET;
[0070] a2. 链路状态感知模块判断SOCKET是否有RTM_NEWLINK和RTM_DELLINK类型的消息到来,若否,继续监听SOCKET,若是,进入步骤a3;
[0071] a3. 链路状态感知模块解析接收到的消息中ifinfomsg结构体的ifi_flags成员是否被设置了IFF_RUNNING,若是,表示接口已经连接,若否,表示接口已经断开连接;
[0072] a4. 链路状态感知模块接收到上述消息后,遍历光猫的接口连接状态链表,通过上述消息中的接口名称字段进行匹配,并对比该接口上一次的状态,若接口状态改变,从连接状态转变为断开连接状态,更新匹配的光猫接口连接状态链表节点中对应记录,调用会话清理模块,若接口状态没有改变,不做处理。
[0073] 实施例3
[0074] 作为本发明另一较佳实施方式,参照说明书附图3和4,本发明包括一种解决IPTV机顶盒PPPOE拨号失败的方法,其特征在于:将光猫通过LAN口与IPTV机顶盒通信连接,通过WAN口与局端设备通信连接,使光猫收发PPPOE报文,并完成信息处理程序和故障排除程序;
[0075] 所述信息处理程序具体包括以下步骤:
[0076] ⅰ. 光猫上的会话嗅探模块监控光猫收发的报文,若发现特定报文,调用光猫上的会话记录模块,进入步骤ⅱ;若没有发现特定报文,则继续监控;所述特定报文是指目的地是LAN口的PADS报文;
[0077] ⅱ. 光猫上的会话记录模块解析PADS报文,提取有用的信息,包括源MAC地址,目的MAC地址,PPPOE会话ID和报文接收接口名称;
[0078] ⅲ. 光猫上的会话记录模块使用PADS报文中的目的MAC和目的接口名称,检索PPPOE会话全局链表,查看是否找到匹配的会话记录,若是,更新匹配的PPPOE会话全局链表节点中的会话信息,进入步骤ⅳ;若否,根据会话信息,新建一条PPPOE会话记录,插入PPPOE会话全局链表,进入步骤ⅳ;
[0079] ⅳ. 会话记录模块遍历PPPOE会话全局链表,链表的每个节点保存了一条PPPOE会话记录,将会话记录输出为一行PPPOE会话字符串,将字符串追加到全局的字符串buffer中;
[0080] ⅴ. 会话记录模块将全局的字符串buffer写入光猫FLASH上的PPPOE会话记录文件中;所述PPPOE会话记录文件是以光猫LAN口名称命名的;
[0081] 所述故障排除程序具体包括以下步骤:
[0082] a. 光猫上的链路状态感知模块监控光猫LAN口连接状态,若判断接口状态从已经连接状态转变为断开连接状态,调用光猫上的会话清理模块,进入步骤b;若判断接口状态没有改变,不作处理;
[0083] b. 光猫上的会话清理模块创建线程,清理已经断开连接的LAN口上的PPPOE会话,读取信息处理程序步骤ⅴ中会话记录模块创建的会话记录文件,填充PADT报文并发送PADT报文,终止IPTV机顶盒和局端设备之间的PPPOE会话。
[0084] 所述故障排除程序中步骤a具体包括以下步骤:
[0085] a1. 链路状态感知模块创建AF_NETLINK类型的SOCKET;将SOCKET绑定到RTMGRP_LINK组,监听SOCKET;
[0086] a2. 链路状态感知模块判断SOCKET是否有RTM_NEWLINK和RTM_DELLINK类型的消息到来,若否,继续监听SOCKET,若是,进入步骤a3;
[0087] a3. 链路状态感知模块解析接收到的消息中ifinfomsg结构体的ifi_flags成员是否被设置了IFF_RUNNING,若是,表示接口已经连接,若否,表示接口已经断开连接;
[0088] a4. 链路状态感知模块接收到上述消息后,遍历光猫的接口连接状态链表,通过上述消息中的接口名称字段进行匹配,并对比该接口上一次的状态,若接口状态改变,从连接状态转变为断开连接状态,更新匹配的光猫接口连接状态链表节点中对应记录,调用会话清理模块,若接口状态没有改变,不做处理。
[0089] 所述故障排除程序中步骤b具体包括以下步骤:
[0090] b1. 会话清理模块创建线程,传入已经断开连接的LAN口的名称;
[0091] b2. 在被创建的线程中,会话清理模块根据接收到的LAN口名称,打开对应的光猫FLASH上的PPPOE会话记录文件;
[0092] b3. 逐条读入PPPOE会话记录,提取有效信息,包括PPPOE报文的源MAC地址,目的MAC地址,PPPOE会话ID和报文接收接口名称;
[0093] b4. 创建RAW SOCKET,组建PADT包,使用步骤b3中的信息进行填充,将组建好的PADT包通过RAW SOCKET发送给局端设备,并判断会话记录是否读取完毕,若是,进入步骤b5;若否,进入步骤b3;
[0094] b5. 关闭会话记录文件,关闭SOCKET;退出线程。
[0095] 实施例4
[0096] 作为本发明最佳实施方式,本发明包括一种解决IPTV机顶盒PPPOE拨号失败的方法,其特征在于:将光猫通过LAN口与交换机相连,将交换机与多个IPTV机顶盒连接,通过WAN口将光猫与局端设备通信连接,使光猫收发PPPOE报文,并完成信息处理程序和故障排除程序;
[0097] 所述信息处理程序具体包括以下步骤:
[0098] ⅰ. 光猫上的会话嗅探模块监控光猫收发的报文,若发现特定报文,调用光猫上的会话记录模块,进入步骤ⅱ;若没有发现特定报文,则继续监控;所述特定报文是指目的地是LAN口的PADS报文;
[0099] ⅱ. 光猫上的会话记录模块解析PADS报文,提取有用的信息,包括源MAC地址,目的MAC地址,PPPOE会话ID和报文接收接口名称;
[0100] ⅲ. 光猫上的会话记录模块使用PADS报文中的目的MAC和目的接口名称,检索PPPOE会话全局链表,查看是否找到匹配的会话记录,若是,更新匹配的PPPOE会话全局链表节点中的会话信息,进入步骤ⅳ;若否,根据会话信息,新建一条PPPOE会话记录,插入PPPOE会话全局链表,进入步骤ⅳ;
[0101] ⅳ. 会话记录模块遍历PPPOE会话全局链表,链表的每个节点保存了一条PPPOE会话记录,将会话记录输出为一行PPPOE会话字符串,将字符串追加到全局的字符串buffer中;
[0102] ⅴ. 会话记录模块将全局的字符串buffer写入光猫FLASH上的PPPOE会话记录文件中;所述PPPOE会话记录文件是以光猫LAN口名称命名的;
[0103] 所述故障排除程序具体包括以下步骤:
[0104] a. 光猫上的链路状态感知模块监控光猫LAN口连接状态,若判断接口状态从已经连接状态转变为断开连接状态,调用光猫上的会话清理模块,进入步骤b;若判断接口状态没有改变,不作处理;
[0105] b. 光猫上的会话清理模块创建线程,清理已经断开连接的LAN口上的PPPOE会话,读取信息处理程序步骤ⅴ中会话记录模块创建的会话记录文件,填充PADT报文并发送PADT报文,终止IPTV机顶盒和局端设备之间的PPPOE会话。
[0106] 所述故障排除程序中步骤a具体包括以下步骤:
[0107] a1. 链路状态感知模块创建AF_NETLINK类型的SOCKET;将SOCKET绑定到RTMGRP_LINK组,监听SOCKET;
[0108] a2. 链路状态感知模块判断SOCKET是否有RTM_NEWLINK和RTM_DELLINK类型的消息到来,若否,继续监听SOCKET,若是,进入步骤a3;
[0109] a3. 链路状态感知模块解析接收到的消息中ifinfomsg结构体的ifi_flags成员是否被设置了IFF_RUNNING,若是,表示接口已经连接,若否,表示接口已经断开连接;
[0110] a4. 链路状态感知模块接收到上述消息后,遍历光猫的接口连接状态链表,通过上述消息中的接口名称字段进行匹配,并对比该接口上一次的状态,若接口状态改变,从连接状态转变为断开连接状态,更新匹配的光猫接口连接状态链表节点中对应记录,调用会话清理模块,若接口状态没有改变,不做处理。
[0111] 所述故障排除程序中步骤b具体包括以下步骤:
[0112] b1. 会话清理模块创建线程,传入已经断开连接的LAN口的名称;
[0113] b2. 在被创建的线程中,会话清理模块根据接收到的LAN口名称,打开对应的光猫FLASH上的PPPOE会话记录文件;
[0114] b3. 逐条读入PPPOE会话记录,提取有效信息,包括PPPOE报文的源MAC地址,目的MAC地址,PPPOE会话ID和报文接收接口名称;
[0115] b4. 创建RAW SOCKET,组建PADT包,使用步骤b3中的信息进行填充,将组建好的PADT包通过RAW SOCKET发送给局端设备,并判断会话记录是否读取完毕,若是,进入步骤b5;若否,进入步骤b3;
[0116] b5. 关闭会话记录文件,关闭SOCKET;退出线程。
[0117] 综上所述,本领域的普通技术人员阅读本发明文件后,根据本发明的技术方案和技术构思无需创造性脑力劳动而作出的其他各种相应的变换方案,均属于本发明所保护的范围。