具体实施方式
为使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明实施例作进一步详细的说明。
实施例一
本实施例提供了一种数据包传输方法,如图1所示,包括:
S101,判断接收的数据包中目标地址与本机地址是否相同。
发送方会将所述数据包携带在IP报文中携带给接收方,所述IP报文的头部包含发送方的地址、接收方的地址等,所述数据包位于IP报文的正文中。对于发送方/接收方为网络侧主机的情况,对应的发送方/接收方地址可以为网络侧主机的IP地址;对于发送方/接收方为设备侧终端的情况,对应的发送方/接收方地址可以为终端的MSISDN(Mobile Station Integrated ServicesDigital Number,移动站点综合服务数字编码,即俗称的电话号码)。
每个数据包中包括目标地址、源地址、用户数据和服务质量QoS等属性字段。其中,目标地址为所述数据包的目标主机或终端等,如果目标地址为2G网络上的一个主机,则该字段值为所述主机的IP地址;如果目标地址为另一个终端,则该字段值可以为所述终端对应的MSISDN。源地址为形成并发出所述数据包的主机或终端等。用户数据为该数据包实际要传输的数据内容。服务质量QoS为所述数据包在传输时对承载链路的要求,如链路带宽、传输时延等。
接收所述数据包的设备可以为终端,即设备侧终端。该终端也可以进行中继转发所述数据包,当然,接收所述数据包的设备也可以是位于网络侧的其他主机。
S102,若否,则与所述目标地址的设备建立满足所述数据包中服务质量的承载链路,并将所述数据包通过所述承载链路转发给所述目标地址的设备。
若S101的判断结果为是,则可以确定所述数据包是发送给本机的,接收,进行后续处理;若所述判断结果为否,则与所述目标地址的设备建立满足所述数据包中服务质量的承载链路,并将所述数据包通过所述承载链路转发给所述目标地址的设备,完成数据包的传输。
本实施例的数据包传输方法,在终端与网络侧主机无法建立承载链路的情况下,通过其他设备作为中继节点转发数据包,实现了终端与网络间主机的间接通信,提高了无线通信系统的稳定性,降低了系统整体的故障率。
实施例二
本实施例的场景是:终端A有一个数据包需要发送给无线网络中的主机,但是却无法与该主机建立承载链路。如智能电表需要将用电数据上报给电力公司主站,但是该智能电表的SIM卡已经欠费,无法上网。
参见图2,本实施例中,终端除了可以与无线通信网络中的主机建立承载链路外,终端之间还可以建立承载链路,实现设备侧的局部互联。如图3所示,本实施例的数据包传输方法,包括如下步骤:
S201,终端A与终端B建立满足所述数据包中服务质量的承载链路,并将所述数据包通过所述承载链路转发给终端B。
终端A无法与主机建立承载链路的原因可能是由于终端A内部通信故障、或无线网络出现故障、或终端A已欠费等等。
本发明实施例中,终端A上可以集成有两种以上通信模块(如2G/3G芯片、WIFI(Wireless Fidelity,无线相容性认证)芯片、蓝牙芯片、RF(RadioFrequency,射频)芯片、有线LAN等),具备访问2G/3G网络、和WLAN(WirelessLocal Area Network,无线局域网)或有线LAN的能力。
当终端A无法通过自身的通信模块与主机建立满足所述数据包中服务质量的承载链路时,会与位于同一子网的终端B建立满足所述数据包中服务质量的承载链路,并将所述数据包转发给终端B,所述数据包的源地址为终端A,目标地址为所述无线网络中的主机。
终端A与终端B建立承载链路可以包括(参见图4):
S2011,获取终端A上各通信模块的当前状态。
所述终端A上各通信模块的当前状态,包括各通信模块是否可用、是否有可用网络、信号质量、可用带宽、是否需付费等。其中,若通信模块不可用,原因可能是该通信模块已经与其他远端设备建立连接,无法再用来建立其他连接;对于已欠费的2G/3G通信模块也认为其不可用。是否有可用网络,对于2G/3G通信模块,即是否有2G/3G网络;对于WIFI和蓝牙,即是否搜索到附近有可用的WIFI或蓝牙设备。信号质量,可以分为强、中、弱三个等级,具体如何划分可以由各通信模块自行定义与信号强度的对应关系。可用带宽,如54Mbps。是否需付费,通常2G/3G通信模块都是需付费的,而WIFI、蓝牙、有线LAN等是不需付费的。
S2012,依据所述当前状态,按照第二预设条件对所述通信模块进行筛选并排序;排序后的每个通信模块对应至少一个可用的终端B。
所述第二预设条件可以为通信模块可用、有可用网络、可用带宽满足所述数据包的服务质量要求、不需付费、信号质量强或中,也可是选其中比较关键的几项或一项,具体根据实际需要而定。依据终端A上各个通信模块的当前状态,按照第二预设条件对所述通信模块进行筛选,然后进行排序,排序时可以按照不需付费的通信模块优先、信号质量强的优先等原则。
经过筛选和排序后的通信模块,每个通信模块对应至少一个可用的终端B,排序后的通信模块可以参见表1。
表1
WIFI |
B1B2 |
BlueTooth |
B1B3 |
Zigbee |
B4 |
…… |
…… |
S2013,终端A依次尝试通过所述排序后的通信模块和与其对应的终端B分别建立满足所述数据包中服务质量的承载链路,直到所述承载链路成功建立。
终端A按照表1中通信模块的顺序,依次和与该通信模块(表1中的WIFI通信模块、BlueTooth通信模块或Zigbee通信模块)对应的终端B(B1和B2、B1和B3或B4)建立承载链路,直到承载链路成功建立。终端A可以通过在设定时间内能否收到目标主机的响应,来判断承载链路是否建立成功。
S202,终端B判断接收的数据包中目标地址与本机地址是否相同;若否,则与所述目标地址的主机建立满足所述数据包中服务质量的承载链路,并将所述数据包通过所述承载链路转发给所述目标地址的主机。
在终端A(例如第四终端)将封装有数据包的IP报文发送给终端B(例如第一终端)后(例如,所述IP报文的发送方地址为终端A的MSISDN,接收方地址为终端B的MSISDN),终端B接收并解析出其中的数据包(例如,所述数据包的源地址为终端A的MSISDN,目标地址为主机的IP地址),之后终端B解包判断其中的目标地址与本机地址是否相同。对于本例,终端B需要判断所述IP地址与本机的MSISDN是否相同。若相同,则接受进行后续处理;若不同,则表明该数据包需要终端B协助转发,终端B需要与目标地址的主机建立满足所述数据包中服务质量的承载链路。对于本例,所述IP地址与终端B的MSISDN显然不同。需要建立终端B和网络侧主机之间的承载链路
建立承载链路的具体过程如下(参见图5):
S2021,获取终端B上各通信模块的当前状态;
S2022,依据所述当前状态,按照第一预设条件对所述通信模块进行筛选并排序;
所述第一预设条件可以为通信模块可用、有可用网络、可用带宽满足所述数据包的服务质量要求、不需付费、信号质量强或中,也可是选其中比较关键的几项或一项,具体根据实际需要而定。依据终端B上各个通信模块的当前状态,按照第一预设条件对所述通信模块进行筛选,然后进行排序,排序时可以按照信号质量强优先等原则。
经过筛选和排序后的通信模块可以参见表2。
表2
2G |
WIFI |
BlueTooth |
Zigbee |
…… |
S2023,终端B依次尝试通过所述排序后的通信模块与所述目标地址主机建立满足所述数据包中服务质量的承载链路,直到所述承载链路成功建立。
此处与步骤S2013有些区别:步骤S2013中,终端A不确定与哪个终端B建立承载,因此会通过表1中的通信模块按顺序与其对应的终端尝试建立承载链路;而步骤S2023中,终端B是明确知道需要与目标地址的主机建立承载,通过表2中的通信模块按顺序与所述目标地址的主机尝试建立承载链路。
当数据包成功传输到目标地址的主机后,目标主机和终端A可以利用终端B进行数据转发,保证正常通信;目标主机也可以重新尝试与终端A建立承载链路,并在承载链路建立失败时,自己查找适合作为中继节点的终端或主机。
若终端B无法与目标地址主机建立承载链路,则还包括步骤S203:终端B与设备侧的终端C(即第二终端)建立满足所述数据包中服务质量的承载链路,并将所述数据包通过终端B和终端C之间的承载链路转发给终端C,其中,终端B与终端C位于同一子网。该终端A、终端B和终端C也可以位于同一子网。
终端B与终端C建立承载链路的过程可以参见终端A与终端B建立承载链路的介绍,此处不再赘述。
一个数据包可能经过多次转发才能到达目标地址的主机(即目标地址的设备),每个作为中继节点的设备所进行的动作可以参考终端B,在此不一一介绍。
上述终端A与终端B建立承载链路,还可以是预先在终端A上配置能够建立承载链路的设备的地址和与这些设备建立承载链路的通信模块种类、带宽等对应关系列表,终端A通过所述对应关系列表可以查找到适合的终端B并尝试与终端B建立承载链路。在终端B与目标主机建立承载链路时,同样还可以是预先在终端B上配置能够建立承载链路的设备的地址和与这些设备建立承载链路的通信模块种类、带宽等对应关系列表。
本实施例的数据包传输方法,在一个终端无法与目标地址的主机建立承载链路的情况下,通过其他终端作为中继节点转发数据包,实现了终端与网络间主机的间接通信,提高了无线通信系统的稳定性,降低了系统整体的故障率。
实施例三
本实施例的场景是:网络中的主机需要发送一个数据包给设备侧的终端A,但是主机无法与该终端建立承载链路。如电力公司主站需要对某智能电表进行远程抄表时,发现无法与该智能电表建立连接。
所述主机在与终端A建立满足所述数据包中服务质量的承载链路失败后,如图6所示,本实施例的数据包传输方法,包括如下步骤:
S301,所述主机查找与终端A位于同一子网的终端B,与终端B建立满足所述数据包中服务质量的承载链路;并将所述数据包通过所述承载链路发送给终端B。
无线网络中的主机可以查找到与终端A位于同一子网的其他终端(如终端B),是否位于同一子网可以通过两个终端是否采用同一个接入点(如网关)来判断。主机可以通过2G/3G网络将所述数据包发送给终端B。
S302,终端B判断接收的数据包中目标地址与本机地址是否相同;若否,则与所述目标地址的终端A建立满足所述数据包中服务质量的承载链路,并将所述数据包通过所述承载链路转发给终端A。
在主机(即网络侧主机)将封装有数据包的IP报文发送给终端B(例如第一终端)后(例如,所述IP报文的发送方地址为主机的IP地址,接收方地址为终端B的MSISDN),终端B接收并解析出其中的数据包(例如,所述数据包的源地址为主机的IP地址,目标地址为终端A的MSISDN),之后终端B解包判断其中的目标地址与本机地址是否相同。对于本例,终端B需要判断所述数据包中的MSISDN(即终端A的MSISDN)与本机的MSISDN是否相同,所述判断结果为否,则需要建立终端A(例如第三终端)和终端B之间的承载链路。建立承载链路的具体过程可以参考实施例二中的步骤S202,本实施例不再赘述。
当数据包成功传输到终端A后,主机和终端A可以利用终端B进行数据转发,保证正常通信,终端A也可以重新尝试与主机建立承载链路,并在承载链路建立失败时,自己查找适合作为中继节点的终端或主机。
若终端B无法与终端A建立承载链路,则还包括步骤S303:终端B与同一子网的终端C建立满足所述数据包中服务质量的承载链路,并将所述数据包通过终端B和终端C之间的承载链路转发给终端C。
一个数据包可能经过多次转发才能到达终端A,每个作为中继节点的设备所进行的动作可以参考终端B,在此不一一介绍。
本实施例的数据包传输方法,在主机无法与目标地址的终端建立承载链路的情况下,通过其他终端作为中继节点转发数据包,实现了网络中主机与终端的间接通信,提高了无线通信系统的稳定性,降低了系统整体的故障率。
实施例四
本实施例的场景是:同一子网中的终端A、终端B......都有需要发送给无线网络中主机的数据包,但是只有终端M具有与无线网络通信的能力。如所有的智能电表均需要定时将用电数据上报给电力公司主站,各智能电表通过将用电数据发送给某个智能电表,由该智能电表将所有用电数据汇总后统一发送给电力公司主站。
如图7所示,本实施例的数据包传输方法,包括如下步骤:
S401,终端A、终端B......与终端M建立满足所述数据包中服务质量的承载链路,并将各自的数据包通过相应的承载链路转发给终端M。
同一子网中的终端A、终端B......与终端M可以都是通过WIFI通信模块建立承载链路,也可以各自选择不同的通信模块与终端M建立承载链路并传输数据包,若其中的两个终端选择同一种通信模块(如WIFI通信模块)与终端M建立承载链路并传输数据包,则所述两个终端需要将传输数据包的时机交错开。
S402,终端M判断接收的数据包中目标地址与本机地址是否相同;若否,则与所述目标地址的主机建立满足所述数据包中服务质量的承载链路。
S403,终端M将接收到的至少一个数据包封装成一个数据包集,并将所述数据包集通过终端M和主机之间的承载链路转发给所述主机。
所述数据包集指的是包含了至少一个数据包的大数据包,如可以是一个IP包;终端M通过将目标地址为主机的数据包封装成一个数据包集,一次性发送给主机,能够减少协议开销。
其中,所述对数据包进行封装和与目标主机建立承载链路可以同时进行,也可以先后进行,本发明实施例不限制其先后执行顺序。
对于数据量小的多个数据包可以封装成数据包集,当然,终端M也可以直接转发数据包,或在某个数据包的数据量过大时将该数据包拆分成两个以上子数据包再转发给目标主机。
通过使用统一的终端M作为中继节点,其他终端可以省去配置2G/3G通信模块(即只配置WIFI通信模块),而且只有终端M会被计费,降低了整个无线通信系统的布置和使用成本。
本实施例的数据包传输方法,通过一个统一的中继节点对发送给目标主机的数据包进行封装并发送,减少了协议开销,实现了终端与网络间主机的间接通信,提高了无线通信系统的稳定性,降低了系统整体的故障率。
可以理解,上述四个实施例不应被限制在M2M领域,本领域技术人员根据本发明实施例的启发,可以将上述方案扩展到其他无线通信应用系统。
实施例五
本实施例提供了一种终端设备,如图8所示,所述终端设备包括接收模块10、判断模块20、承载链路建立模块30和发送模块40。
接收模块10用于接收数据包;所述数据包可以是来自其他终端设备,也可以是来自网络侧的主机。每个数据包中可以包括目标地址、源地址、用户数据和服务质量等属性字段。
判断模块20用于判断所述数据包中目标地址与本机地址是否相同。
所述判断模块20可以包括:
第一判断单元,用于当所述数据包中的源地址为网络侧的主机的IP地址、目标地址为设备侧的第三终端设备的MSISDN时,判断所述MSISDN与所述终端设备的MSISDN是否相同;其中,所述终端设备与第三终端设备位于同一子网;和/或
第二判断单元,用于当所述数据包中的源地址为设备侧的第四终端设备的MSISDN、目标地址为网络侧的主机的IP地址时,判断所述IP地址与所述终端设备的MSISDN是否相同;其中,所述终端设备与第四终端设备位于同一子网。
承载链路建立模块30用于当判断模块20的判断结果为否时,与所述目标地址的设备建立满足所述数据包中服务质量的承载链路。
承载链路建立模块30可以包括:
第一获取单元,用于获取所述终端设备上各通信模块的当前状态。
所述终端设备上可以集成有两种以上通信模块、如2G/3G芯片、WIFI芯片、蓝牙芯片、有线LAN等,具备访问2G/3G网络、和WLAN或有线LAN的能力。
第一筛选排序单元,用于依据所述当前状态,按照第一预设条件对所述通信模块进行筛选并排序。
所述第一预设条件可以为通信模块可用、有可用网络、可用带宽满足所述数据包的服务质量要求、不需付费、信号质量强或中,也可是选其中比较关键的几项,具体根据实际需要而定。依据所述终端设备上各个通信模块的当前状态,按照第一预设条件对所述通信模块进行筛选,然后进行排序,排序时可以按照信号质量强优先等原则。
第一建立单元,用于依次尝试通过所述排序后的通信模块与所述目标地址的设备建立满足所述数据包中服务质量的承载链路,直到所述承载链路成功建立。
发送模块40用于将所述数据包通过所述承载链路转发给所述目标地址的设备。
其中,承载链路建立模块30还可以用于:若所述终端设备无法与目标地址的设备建立承载链路,则与位于同一子网的设备侧的第二终端设备建立满足所述数据包中服务质量的承载链路;即承载链路建立模块30还可以包括:
第二获取单元,用于获取所述终端设备上各通信模块的当前状态;
第二筛选排序单元,用于依据所述当前状态,按照第二预设条件对所述通信模块进行筛选并排序;排序后的每个通信模块对应至少一个可用的第二终端设备。
所述第二预设条件可以为通信模块可用、有可用网络、可用带宽满足所述数据包的服务质量要求、不需付费、信号质量强或中,也可是选其中比较关键的几项,具体根据实际需要而定。依据所述终端设备上各个通信模块的当前状态,按照第二预设条件对所述通信模块进行筛选,然后进行排序,排序时可以按照不需付费的通信模块优先、信号质量强的优先等原则。
第二建立单元,用于依次尝试通过所述排序后的通信模块和与其对应的第二终端设备分别建立满足所述数据包中服务质量的承载链路,直到所述承载链路成功建立。
则发送模块40还可以用于:将所述数据包通过所述与第二终端设备之间的承载链路转发给第二终端设备。
当所述目标地址的设备为网络侧的主机时,可选的,如图9所示,所述终端设备还包括:
包封装模块50,用于在所述转发数据包前,将接收到的至少一个数据包封装成一个数据包集;
则发送模块40转发的数据包为所述数据包集。
本实施例的终端设备,在主机无法与目标地址的终端建立承载链路、或终端无法与目标主机建立承载链路的情况下,能够作为中继节点协助所述主机或终端转发数据包,实现了网络中主机与终端的间接通信,提高了无线通信系统的稳定性,降低了系统整体的故障率。
由于实施例五与前面方法实施例的相似内容较多,描述的比较简略,相关之处请参见方法实施例部分的介绍。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读存储介质中,该程序在执行时,包括如下步骤:判断接收的数据包中目标地址与本机地址是否相同;若否,则与所述目标地址的设备建立满足所述数据包中服务质量的承载链路,并将所述数据包通过所述承载链路转发给所述目标地址的设备。所述存储介质,如:ROM/RAM、磁碟、光盘等。
需要说明的是,在本文中,诸如第一、第二、第三和第四等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。