[发明专利]基于块状链表结构的6lowpan数据包重装缓存方法有效
申请号: | 201210580981.2 | 申请日: | 2012-12-28 |
公开(公告)号: | CN103023808A | 公开(公告)日: | 2013-04-03 |
发明(设计)人: | 孙知信;骆冰清 | 申请(专利权)人: | 南京邮电大学 |
主分类号: | H04L12/861 | 分类号: | H04L12/861;H04L29/06 |
代理公司: | 南京经纬专利商标代理有限公司 32200 | 代理人: | 朱小兵 |
地址: | 210003 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 块状 结构 lowpan 数据包 重装 缓存 方法 | ||
1.一种基于块状链表结构的6lowpan数据包缓存方法,其特征在于,在基于6lowpan的无线传感器网络中,根据接收节点对于接收到数据包分片时缓存的状态分为以下A、B、C三种情况处理:
A、当链表为空链表,即不存在其他已经缓存的数据包分片,此时对所接收到的数据包分片处理过程如下:
A1、读取数据包分片的首部,根据首部字段size的值判断该数据包负载的总大小,然后根据该数据包负载的总大小建立缓冲区,同时根据首部字段tag的值判断该数据包分片所属于的数据包标示信息;
A2、为6lowpan分片数据包建立由next、scis、tag、size、Ip-len组成的五元组;其中各字段定义如下:next代表下一节点指针,在每个节点中所表示的意义相同;scis为指向所分配缓冲区的开端的指针;tag用于标示属于同一数据包的一组分片;size代表缓冲区的大小,与整个数据包大小一致;Ip-len表示已经处理过的数据包分片长度,其随着处理数据包分片的数量的增加而增加;
A3、将scis指针指向缓冲区地址;将next指针指向链表的头指针,插入五元组;
A4、继续接收其他数据包分片,返回步骤A1;
B、当链表为非空链表,即存在其他已经缓存的数据包分片,此时对所接收的数据包分片处理过程如下:
B1、读取数据包分片的首部,根据首部字段size的值判断该数据包负载的总大小,根据首部字段tag的值判断该数据包分片所属于的数据包标示信息;
B2、根据B1中所读取的tag的值,在链表中查找是否已存在相同tag值的链表节点,若存在相同tag值的链表节点,则转B3;若不存在相同tag值的链表节点,则转B4;
B3、根据所查找到的链表节点中的scis指针,将该数据包分片存储至已分配好的缓冲区;
B4、为该6lowpan分片数据包建立由next、scis、tag、size、Ip-len组成的五元组,根据size的大小建立缓冲区,scis指针指向缓冲区地址;将该节点插入到上一节点后,保存指针;
B5、返回步骤B1继续接收其他数据包分片;
C、当链表的最后一个节点已存储了正在接收的数据包分片信息,则丢弃该数据包分片。
2.一种采用权利要求1所述的基于块状链表结构的6lowpan数据包缓存方法对6lowpan数据包进行分片处理的方法,其特征在于,采用单向链表的结构对缓存进行维护与管理,包括以下步骤:
步骤(1),首先对接收到的数据包报文首部进行解析,判断是否为数据包分片,若是完整的6lowpan数据包,则直接对数据包进行首部解压缩,将处理后的IPV6数据包直接交由Uipv6协议栈进行处理;若是数据包分片,则转步骤(2);
步骤(2),对IPV6数据包分片首部进行解析,判断该数据包分片的合法性,若合法则转步骤(3),若不合法则直接丢弃;
步骤(3),读取IPV6数据包分片首部中的tag值,遍历块状链表,查询是否已经对该数据包的其他分片进行缓存,若没有接收过该数据包的其他分片,则转步骤(4);若已经存在缓存,则转步骤(5);
步骤(4),判断该数据包分片是否为该IPV6数据包的第一个分片:
若是第一个分片,则对该IPV6数据包首部进行解压缩,根据首部字段size的值判断该数据包负载的总大小,然后根据该数据包负载的总大小建立缓冲区,并读取块状链表中的scis指针信息来定位缓存位置;将数据按缓存位置存储至缓存空间后,增加该链表节点中的IP-len的长度,进入步骤(6);
若不是第一个分片,则直接读取块状链表中的scis指针信息来定位缓存位置;将数据按缓存位置存储至缓存空间后,增加该链表节点中的IP-len的长度,进入步骤(6);
步骤(5),查询缓存空间是否已满,若缓存空间已满,则丢弃该分片;若还有剩余缓存空间,则根据该IPV6数据包首部tag值查找所对应的链表节点中的scis指针,将该分片存储至已分配好的缓冲区,增加该链表节点中的IP-len的长度,进入步骤(6);
步骤(6),判断IP-len数值是否等于size的大小,当该IP-len数值与size大小一致时,表示该缓冲区中的数据包已经重装完成,则需要释放该缓冲区空间,并删除该链表节点;具体方法是:定位到IP-len数值与size数值相等的节点,利用下一节点数据复制到该节点位置;若该节点位置正好是尾节点,则需要遍历整个链表,找到该节点的上一节点,连接上一节点指针至尾节点。
3.根据权利要求2所述的采用基于块状链表结构的6lowpan数据包缓存方法对6lowpan数据包进行分片处理的方法,其特征在于:
在缓冲区中设置定时器,定时清空重装失败的分片数据,并删除该缓冲区所对应的链表节点;具体如下:定位到该缓存区scis指针所在的链表节点,利用下一节点数据复制到该节点位置;若该节点位置正好是尾节点,则需要遍历整个链表,找到该节点的上一节点,连接上一节点指针至尾节点。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京邮电大学,未经南京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210580981.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:模拟RGB信号的控制显示方法和系统
- 下一篇:多路静电释放保护器件的加工方法