发明内容
针对上述情况,为克服现有技术的缺陷,本发明提供了一种点对多点自组网协议栈实现方法,针对一般的自组网中的节点是动态移动的,导致网络拓扑频繁变化,网络协议需要不断适应新的拓扑结构,导致路由选择复杂的问题,本方案设置终端从节点发送心跳消息维护自组网的连接,从节点既可以主动加入现有网络,也可以自动切换到其他新的主节点网络,以适应网络拓扑灵活变化;针对一般的自组网通常没有固定的基础设施,主节点需要作为中继节点来转发数据,随着从节点数量的增加,传输时延也随之增加的问题,本方案通过动态调度上行数据传输信道和下行数据传输信道的位置和长度,提高帧时隙的利用率,有效减小时延;针对一般的数据传输最大传输单元是有限的,不同类型的网络的最大传输单元值不同,网络环境的变化影响数据传输的稳定性的问题,本方案通过数据分片和重组支持长度较大的数据传输,提高数据传输的灵活性,有效适应各种网络环境。
本发明采用的技术方案如下:本发明提供的一种点对多点自组网协议栈:包括一个固定主节点和多个从节点,通过无线连接构成星形网络拓扑,主节点发往从节点的数据作为下行数据,从节点发往主节点的数据作为上行数据,从节点持续发送心跳消息保持与主节点的连接状态;主从节点通过协议栈进行网络通信,所述协议栈按照功能划分,包括数据管理模块、网络管理模块、数据转发控制模块、资源调度模块;
所述数据管理模块负责数据的发送、接收、封装、分片、重组操作;包括接收端和发送端,接收端接收应用层数据并封装成协议栈数据,发送端将协议栈数据解封装后转发给应用层;
所述网络管理模块管理自组网连接状态,监控心跳消息维护主从节点的邻居关联状态,处理自组网的连接、断开与重连;
所述数据转发控制模块管理数据包的路由选择和转发策略,包括上行数据传输、上行控制消息传输、下行数据传输、下行控制消息传输,上行数据和下行数据包括分片和不分片两种情况;
所述资源调度模块负责上行数据传输信道的动态分配,若其他从节点在当前时刻没有数据传输,则所有上行数据传输信道都分配给当前从节点使用;若有多于一个从节点在当前时刻需进行数据传输,则使用动态分配方法为从节点分配帧时隙,从节点根据分配的帧时隙长度封装上行数据。
进一步地,所述数据转发控制模块在上行数据和下行数据传输的数据长度超出物理层传送最大长度时,对数据进行分片处理:下行数据按照固定长度进行分片,以广播的方式加密后传输,每片按照配置的重传次数进行重传;上行数据根据数据剩余长度发送资源调度请求,根据资源调度响应消息中分配的数据长度进行分片、封装和加密,通过ACK消息确认是否需要重传,主节点接收到分片后解密,当接收到所有分片后重新组装数据并转发给应用层。
进一步地,数据管理模块中,所述协议栈数据分为首部固定部分和有效载荷部分:首部固定部分长度为10B;有效载荷部分长度可变,用于承载传输数据。
进一步地,资源调度模块中,所述动态分配方法采取先申请后使用的方式:从节点向主节点发送申请,主节点根据当前的资源占用情况给从节点分配资源,从节点根据主节点分配的动态资源进行上行数据的传输,使用资源请求队列存储从节点的申请信息;主节点使用帧缓存链表记录已经完成资源分配的帧和需要下发的资源分配响应信息,链表节点代表每一帧待发送的资源分配数据,具体步骤如下:
步骤A1:主节点读取资源请求队列,判断队列是否为空,若队列为空,则结束调度;若队列不为空,则执行步骤A2;
步骤A2:判断帧缓存链表是否为空,具体如下:
步骤A21:若帧缓存链表为空,则创建新的链表节点,链表节点ID为全局帧号,记录从节点ID,起始时隙号为1,占用时隙数n为从节点传输的报文长度,更新该帧的可用时隙数为maxSlot-n,maxSlot表示最大时隙数,转到步骤A1;
步骤A22:若帧缓存链表不为空,读取最后一个链表节点,获取该帧的帧号Fn和剩余时隙数m;
步骤A3:计算剩余时隙数是否能容纳消息首部长度,具体如下:
步骤A31:若剩余时隙数能容纳消息首部长度,计算该帧剩余时隙数是否能容纳从节点申请的长度,具体如下:
步骤A311:若该帧剩余时隙数能容纳从节点申请的长度,记录从节点ID,更新起始时隙号为maxSlot-n,占用时隙数n为报文长度,更新该帧的可用时隙数为m-n;
步骤A312:若该帧剩余时隙数不能容纳从节点申请的长度,记录从节点ID,更新起
始时隙号为maxSlot-n,占用时隙数,更新该帧的可用时隙数为0;
步骤A32:若剩余时隙数不能容纳消息头长度,则创建新的链表节点,链表节点ID为Fn+1,记录从节点ID,起始时隙号为1,占用时隙数为从节点传输的报文长度,更新该帧的可用时隙数为maxSlot-n,转到步骤A1。
进一步地,一种点对多点自组网协议栈实现方法,包括以下步骤:
步骤S1:协议栈发起任务,调度各功能模块;
步骤S2:主节点建立自组网络,提供主节点与从节点之间的通信连接;
步骤S3:从节点启动,主动发送心跳消息加入主节点创建的自组网络,主节点对从节点进行认证,认证通过后从节点与主节点建立连接,接收主节点的广播消息;
步骤S4:协议栈监测心跳消息,维护主从节点邻居关联状态;若从节点与主节点失联,协议栈向物理层发起网络扫描请求匹配新的主节点,匹配成功后从节点加入到新的主节点自组网络。
采用上述方案本发明取得的有益效果如下:
(1)针对一般的自组网中的节点是动态移动的,导致网络拓扑频繁变化,网络协议需要不断适应新的拓扑结构,导致路由选择复杂的问题,本方案设置终端从节点发送心跳消息维护自组网的连接,从节点既可以主动加入现有网络,也可以自动切换到其他新的主节点网络,以适应网络拓扑灵活变化。
(2)针对一般的自组网通常没有固定的基础设施,主节点需要作为中继节点来转发数据,随着从节点数量的增加,传输时延也随之增加的问题,本方案通过动态调度上行数据传输信道和下行数据传输信道的位置和长度,提高帧时隙的利用率,有效减小时延。
(3)针对一般的数据传输最大传输单元是有限的,不同类型的网络的最大传输单元值不同,网络环境的变化影响数据传输的稳定性的问题,本方案通过数据分片和重组支持长度较大的数据传输,提高数据传输的灵活性,有效适应各种网络环境。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例;基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、“顶”、“底”、“内”、“外”等指示方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
实施例一,参阅图1,本发明提供的一种点对多点自组网协议栈,固定主节点和从节点通过无线连接构成星形网络拓扑,主节点发往从节点的数据作为下行数据,从节点发往主节点的数据作为上行数据,从节点持续发送心跳消息保持与主节点的连接状态;主从节点通过协议栈进行网络通信,所述协议栈按照功能划分,包括数据管理模块、网络管理模块、数据转发控制模块、资源调度模块;
所述数据管理模块负责数据的发送、接收、封装、分片、重组操作;包括接收端和发送端,接收端接收应用层数据并封装成协议栈数据,发送端将协议栈数据解封装后转发给应用层;
所述网络管理模块管理自组网连接状态,监控心跳消息维护主从节点的邻居关联状态,处理自组网的连接、断开与重连;
所述数据转发控制模块管理数据包的路由选择和转发策略,包括上行数据传输、上行控制消息传输、下行数据传输、下行控制消息传输,上行数据和下行数据包括分片和不分片两种情况;
所述资源调度模块负责上行数据传输信道的动态分配,若其他从节点在当前时刻没有数据传输,则所有上行数据传输信道都分配给当前从节点使用;若有多于一个从节点在当前时刻需进行数据传输,则使用动态分配方法为从节点分配帧时隙,从节点根据分配的帧时隙长度封装上行数据。
实施例二,参阅图1和图2,该实施例基于上述实施例,数据管理模块中,所述协议栈数据分为首部固定部分和有效载荷部分:首部固定部分长度为10B,其中,类型占3bit、分片ID占5bit、序列号占1B、偏移量占1B、CRC校验码占2B、数据包总长度占10bit、源节点ID占11bit、目标节点ID占11bit、数据剩余长度占1B;有效载荷部分长度可变,用于承载传输数据。
实施例三,参阅图1和图2,该实施例基于上述实施例,所述数据转发控制模块在上行数据和下行数据传输的数据长度超出物理层传送最大长度时,对数据进行分片处理:下行数据按照固定长度进行分片,以广播的方式加密后传输,每片按照配置的重传次数进行重传;上行数据根据数据剩余长度发送资源调度请求,根据资源调度响应消息中分配的数据长度进行分片、封装和加密,通过ACK消息确认是否需要重传,主节点接收到分片后解密,当接收到所有分片后重新组装数据并转发给应用层。
通过执行所述操作,针对一般的数据传输最大传输单元是有限的,不同类型的网络的最大传输单元值不同,网络环境的变化影响数据传输的稳定性的问题,本方案通过数据分片和重组支持长度较大的数据传输,提高数据传输的灵活性,有效适应各种网络环境。
实施例四,参阅图1和图3,该实施例基于上述实施例,资源调度模块中,所述动态分配方法采取先申请后使用的方式:从节点向主节点发送申请,主节点根据当前的资源占用情况给从节点分配资源,从节点根据主节点分配的动态资源进行上行数据的传输;主节点使用资源请求队列存储从节点的申请信息,使用帧缓存链表记录已经完成资源分配的帧和需要下发的资源分配响应信息,链表节点代表每一帧待发送的资源分配数据,具体步骤如下:
步骤A1:主节点读取资源请求队列,判断队列是否为空,若队列为空,则结束调度;若队列不为空,则执行步骤A2;
步骤A2:判断帧缓存链表是否为空,具体如下:
步骤A21:若帧缓存链表为空,则创建新的链表节点,链表节点ID为全局帧号,记录从节点ID,起始时隙号为1,占用时隙数n为从节点传输的报文长度,更新该帧的可用时隙数为maxSlot-n,maxSlot表示最大时隙数,转到步骤A1;
步骤A22:若帧缓存链表不为空,读取最后一个链表节点,获取该帧的帧号Fn和剩余时隙数m;
步骤A3:计算剩余时隙数是否能容纳消息首部长度,具体如下:
步骤A31:若剩余时隙数能容纳消息首部长度,计算该帧剩余时隙数是否能容纳从节点申请的长度,具体如下:
步骤A311:若该帧剩余时隙数能容纳从节点申请的长度,记录从节点ID,更新起始时隙号为maxSlot-n,占用时隙数n为报文长度,更新该帧的可用时隙数为m-n;
步骤A312:若该帧剩余时隙数不能容纳从节点申请的长度,记录从节点ID,更新起
始时隙号为maxSlot-n,占用时隙数,更新该帧的可用时隙数为0;
步骤A32:若剩余时隙数不能容纳消息头长度,则创建新的链表节点,链表节点ID为Fn+1,记录从节点ID,起始时隙号为1,占用时隙数为从节点传输的报文长度,更新该帧的可用时隙数为maxSlot-n,转到步骤A1。
通过执行所述操作,针对一般的自组网通常没有固定的基础设施,主节点需要作为中继节点来转发数据,随着从节点数量的增加,传输时延也随之增加的问题,本方案通过动态调度上行数据传输信道和下行数据传输信道的位置和长度,提高帧时隙的利用率,有效减小时延。
实施例五,参阅图4,该实施例基于实施例四,帧缓存链表中的每个链表节点代表一帧待发送的资源分配数据,当第Fn帧没有足够的资源进行分配时,新建链表节点,存储帧Fn+1;第Fn帧中断信号到达时,将帧缓存链表中帧号为Fn的链表节点取下,封装链表节点内的资源响应消息并发送。
实施例六,参阅图1,该实施例基于上述实施例,一种点对多点自组网协议栈实现方法,包括以下步骤:
步骤S1:协议栈发起任务,调度各功能模块;
步骤S2:主节点建立自组网络,提供主节点与从节点之间的通信连接;
步骤S3:从节点启动,主动发送心跳消息加入主节点创建的自组网络,主节点对从节点进行认证,认证通过后从节点与主节点建立连接,接收主节点的广播消息;
步骤S4:协议栈监测心跳消息,维护主从节点邻居关联状态;若从节点与主节点失联,协议栈向物理层发起网络扫描请求匹配新的主节点,匹配成功后从节点加入到新的主节点自组网络。
通过执行所述操作,针对一般的自组网中的节点是动态移动的,导致网络拓扑频繁变化,网络协议需要不断适应新的拓扑结构,导致路由选择复杂的问题,本方案设置终端从节点发送心跳消息维护自组网的连接,从节点既可以主动加入现有网络,也可以自动切换到其他新的主节点网络,以适应网络拓扑灵活变化。
实施例七,参阅图5,该实施例基于上述实施例,数据管理模块中,下行数据传输包括以下步骤:
步骤P1:主节点启动;
步骤P2:主节点记录发送消息的序列号;
步骤P3:将发送消息分片4次,将包含目标节点ID、序列号、分片ID和偏移量的分片消息广播给所有从节点;
步骤P4:从节点启动,准备接收分片消息;
步骤P5:判断接收到的消息是否为第一个分片消息,如果是第一个分片消息,则为该消息创建一个接收队列,设置计时器,如果在计时器时间内没有收到所有分片消息,则丢弃该分片消息;将第一个分片消息存入接收队列,记录从主节点接收到的广播消息的序列号;
步骤P6:判断接收到的消息是否为最后一个分片消息并且所有分片消息都已接收到;若是,从节点将分片消息组合形成完整的消息;如果当前接收到的分片消息不在接收队列中,将新的分片消息添加到接收队列中;如果当前接收到的分片消息已经存在,则丢弃该分片消息;
步骤P7:从节点结束操作。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
以上对本发明及其实施方式进行了描述,这种描述没有限制性,附图中所示的也只是本发明的实施方式之一,实际的结构并不局限于此。总而言之如果本领域的普通技术人员受其启示,在不脱离本发明创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本发明的保护范围。