《基于前向纠错的车载自组网可靠广播协议的系统及方法.pdf》由会员分享,可在线阅读,更多相关《基于前向纠错的车载自组网可靠广播协议的系统及方法.pdf(18页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN102006625A43申请公布日20110406CN102006625ACN102006625A21申请号201010537989122申请日20101110H04W28/06200901H04W48/10200901H04L1/0020060171申请人清华大学地址100084北京市海淀区清华园1号72发明人向勇徐家强刘瑞霖74专利代理机构北京中伟智信专利商标代理事务所11325代理人张岱54发明名称基于前向纠错的车载自组网可靠广播协议的系统及方法57摘要本发明公开一种基于前向纠错的车载自组网可靠广播协议的系统及方法,主要是为了提供一种更适合车载自组网,且广播可靠性更高的。
2、广播协议而设计。本发明包括编解码器,设置在节点的数据链路层,基于数据链路层获取的发送码率,完成数据链路层广播帧的发送与接收的编解码;以及,FEC管理器,设置在接收方,接收节点的数据链路层计算输出的本次接收丢包率,对本节点下一次接收同一发送节点的广播帧的接收丢包率进行评估,并生成丢包率反馈帧,周期性地将丢包率反馈帧对外广播;设置在发送方,监听各邻居节点的数据链路层广播的丢包率反馈帧,利用发送码率调节算法计算出本节点的发送码率。本发明有效的改善了车载自组网广播通信的可靠性。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书11页附图3页CN102006638A1/3。
3、页21一种基于前向纠错的车载自组网可靠广播协议的系统,其特征在于,包括编解码器,设置在节点的数据链路层,基于数据链路层获取的发送码率,完成数据链路层广播帧的发送与接收的编解码;以及,FEC管理器,设置在接收方,接收节点的数据链路层计算输出的本次接收丢包率,基于该接收丢包率对本节点下一次接收同一发送节点的广播帧的接收丢包率进行评估,并生成丢包率反馈帧,周期性地将丢包率反馈帧通过数据链路层对外广播;设置在发送方,监听各邻居节点的数据链路层广播的丢包率反馈帧,并基于监听到的丢包率反馈帧利用发送码率调节算法计算出本节点的发送码率,并将其存储于FEC管理器中。2根据权利要求1所述基于前向纠错的车载自组网。
4、可靠广播协议的系统,其特征在于,所述的丢包率反馈帧包含各邻居节点的数据链路层地址和节点接收各邻居节点的广播帧的接收丢包率评估值。3一种基于前向纠错的车载自组网可靠广播协议的方法,其特征在于,包括以下步骤1编解码器基于节点的发送码率将广播帧编码生成可发送的报文,节点将其对外广播;2邻居节点接收报文,并检测接收到的报文数量是否足以恢复广播帧;是,解码出广播帧,并进行下一步骤,否,继续接收;3邻居节点计算本次接收丢包率,并对下一次接收该节点的广播帧的接收丢包率进行评估,然后,生成丢包率反馈帧,并周期性地对外广播;4节点实时监听丢包率反馈帧,采用发送码率调节算法计算出节点的发送码率,并将其记录下来以备。
5、下次广播使用。4根据权利要求3所述基于前向纠错的车载自组网可靠广播协议的方法,其特征在于,步骤1具体实现如下11扩展数据链路层的帧头部;12节点的数据链路层的MAC层接收到LLC层发送的广播帧时,MAC层进行信道竞争;13等信道可用后,编解码器根据广播帧的长度计算出原始子报文数量N;然后,将广播帧划分为N个子报文,并依据该节点的发送码率生成K个冗余子报文;最后,将NK个子报文中的每一个子报文分别封装在各自独立的数据链路层帧中,并设置各帧扩展后的帧头部的相关域;14节点的MAC层将封装后的NK个子报文保存在发送队列中,并发送出去。5根据权利要求3所述基于前向纠错的车载自组网可靠广播协议的方法,其。
6、特征在于,步骤2具体实现如下21各节点为每一个邻居节点均创建并维护一个独立的子报文接收队列,并将其与一计时器相关联;22邻居节点的数据链路层接收节点发送的子报文,根据子报文中节点数据链路层地址找出当前子报文所属的子报文接收队列,并判断当前子报文接收队列是否为空;是,设置子报文接收队列的序列号为当前接收的子报文的帧序列号,将接收到的子报文加入到子报文接收队列中,同时设置与其关联的计时器,否,进行下一步骤;23判断当前接收的子报文的帧序列号是否与子报文接收队列的序列号相等;是,将权利要求书CN102006625ACN102006638A2/3页3接收到的子报文加入到子报文接收队列中,并进行下一步骤。
7、,否,解码出广播帧,并释放子报文接收队列;24判断当前接收的子报文是否是该序列号的最后一个子报文,是,解码出广播帧,释放子报文接收队列,否,进行下一步骤;25基于超时处理机制判断节点是否已经发送完所有子报文,是,解码出广播帧,否,继续步骤22。6根据权利要求5所述基于前向纠错的车载自组网可靠广播协议的方法,其特征在于,所述的解码出广播帧,具体实现步骤如下231编解码器从子报文接收队列中的任一子报文的帧头部获取FEC信息;232判断接收到的子报文数量是否大于等于广播帧子报文数量N;是,将接收到的子报文通过RS解码算法解码出广播帧,并将解码出的广播帧的长度恢复为编码前的真实长度,否,结束解码。7根。
8、据权利要求6所述基于前向纠错的车载自组网可靠广播协议的方法,其特征在于,所述的FEC信息包括广播帧子报文数量N,冗余子报文数量K以及广播帧的负载长度。8根据权利要求3所述基于前向纠错的车载自组网可靠广播协议的方法,其特征在于,步骤3具体实现如下31邻居节点设置一接收丢包率列表,其中存储有各其他节点的数据链路层的地址,以及与各地址相对应的历史丢包率平均值估计D,丢包率抖动平均值评估V和时间戳;32邻居节点的数据链路层依据广播帧报文数量N,冗余子报文数量K以及节点本次接收到的子报文数量P,计算出本次接收丢包率RNKP/NK;33依据步骤32得出的接收丢包率R,并依据接收丢包率列表中已存储的接收丢包。
9、率平均值评估D和丢包率抖动平均值评估V,对下一次接收各发送节点发送的广播帧的各接收丢包率进行评估,计算式为DDRD,VV|RD|V其中,和是协议参数,取01,取02;然后,将得出的值分别添加到接收丢包率列表的相应表项中,更新表项中已有的接收丢包率平均评估值D和丢包率抖动平均值评估V,生成丢包率反馈帧;34邻居节点的数据链路层将步骤33生成的丢包率反馈帧周期性地对外广播。9根据权利要求8所述基于前向纠错的车载自组网可靠广播协议的方法,其特征在于,所述步骤33生成丢包率反馈帧的步骤具体为331节点设有一监听丢包率列表,其中存储有上一次节点接收到的各邻居节点广播的反馈帧信息;332判断各邻居节点的数。
10、据链路层地址是否在节点的接收丢包率列表中存在;不存在,不作处理并返回,存在,进行下一步骤;333查询监听丢包率表,若表中该数据链路层地址的丢包率小于节点的接收丢包率列表中的丢包率或者该表项已经过期,则将监听丢包率表中的丢包率更新为接收丢包率列表中的丢包率,并将时间戳更新为当前时间;否则,新增一个监听丢包率表的表项,并设置该数据链路层地址表项的丢包率为接收丢包率列表中的丢包率,时间戳为当前时间;334节点读取接收丢包率列表中接收丢包率平均评估值D和丢包率抖动平均值评估权利要求书CN102006625ACN102006638A3/3页4V,计算出节点接收各邻居节点广播帧的接收丢包率的评估值,计算式。
11、为ED2V;335若节点接收某一邻居节点广播帧的接收丢包率估计值E06,则该节点对应该邻居节点的接收丢包率的评估值E不加入到丢包率反馈帧中;若节点的监听丢包率表中没有与某一邻居节点的数据链路层地址相对应的表项,则将节点到该邻居节点的接收丢包率的评估值加入到丢包率反馈帧中;若节点的监听丢包率表中的某一表项已经过期,则删除该表项,并将该节点到该表项相对应的邻居节点的接收丢包率的评估值加入到丢包率反馈帧中;若节点的监听丢包率列表中的某一表项的丢包率比E小,则将该节点到该表项相对应的邻居节点的接收丢包率的评估值加入到丢包率反馈帧中,否则,不加入到丢包率反馈帧中;336完成本次丢包率反馈帧的生成。10根。
12、据权利要求3所述基于前向纠错的车载自组网可靠广播协议的方法,其特征在于,步骤4具体实现如下41节点设置一发送丢包率列表,其中存储有各邻居节点的数据链路层地址,丢包率和时间戳;42节点的数据链路层接收各邻居节点广播的反馈帧,并依据本节点的数据链路层地址在接收到的反馈帧中查找,找出地址相同表项对应的丢包率信息;43将步骤42查找出的丢包率信息加入到所述发送丢包率列表中的相应表项,并设置时间戳为当前时间;44发送节点每隔3秒扫描一遍发送丢包率列表,若当前时间与列表中表项的时间戳相差大于3秒,则删除该表项;45查找发送丢包率列表中丢包率最高的邻居节点的丢包率EMAX,计算出发送节点广播帧的发送码率,计。
13、算式为FEMAX/1EMAX,同时计算出发送节点广播丢包率反馈帧的发送码率,计算式为FEMAX/1EMAX025;46将上述得出的各发送码率记录下来以备下一次广播使用。权利要求书CN102006625ACN102006638A1/11页5基于前向纠错的车载自组网可靠广播协议的系统及方法技术领域0001本发明涉及车载自组网广播协议。背景技术0002近几年来,以提高行车安全性和改善汽车驾驶体验为目的,在智能交通系统中应用无线通信技术,成为了学术界和工业界共同关注的热门话题。道路上行驶的车辆和路边基站通过无线信道组成的自组织网络称为车载自组织网络,简称车载自组网VEHICULARADHOCNETWO。
14、RKS,VANET。0003安全预警信息和实时交通状况信息等很多重要的车载自组网应用数据都是通过广播方式发送的。相对于传感器网络和MESH网络等其他自组织网络形式,车载自组网具有移动性强和网络拓扑变化快的特点。由于道路环境在节点移动过程中不断变化,节点之间的相对位置和速度也是不断变化的,所以节点间的通信质量是不稳定的,信道的误码率随时间和车辆相对位置而变化。信道的不可靠性增加了,进而加大了保证广播通信可靠性的难度。0004车载自组网广播不可靠主要有两个因素00051、介质访问控制子层MEDIUMACCESSCONTROL,简称MAC层协议的不完善导致的不可靠性,如隐藏终端、数据冲突;00062。
15、、无线信道本身不稳定导致的不可靠性。这个因素在节点移动速度快、道路环境复杂时尤为突出。0007已有的车载自组网可靠广播方案大多着眼于提高MAC层协议的可靠性。但单纯的MAC层机制不能缓解车载无线信道质量剧烈变化所带来的不可靠问题,需要在数据链路层DATALINKLAYER中增加差错恢复的机制,以提高广播通信的可靠性。0008计算机网络中常用的差错恢复机制是差错重传AUTOMATICREPEATREQUEST,ARQ和前向纠错FORWARDERRORCORRECTION,FEC。差错重传机制需要预先确定接收节点集合,并要求接收节点给发送节点回复接收确认消息,然后发送节点根据接收节点的接收情况决定。
16、是否需要重传。车载自组网的节点的高速运动特征导致很难预先确定接收节点集合。因此,差错重传机制很难应用到车载自组网的广播中。0009前向纠错码是一种按照一定的编码方法从数据生成冗余纠错信息的技术。在数据通信中,发送节点通过产生并发送一定数量的冗余纠错信息,使得接收节点在出现数据接收错误时可以直接从冗余信息中恢复原始数据,从而减少在数据丢失或出错时的数据重传次数。因此,前向纠错机制更适合作为车载自组网广播的差错恢复机制。0010当前已有不少基于前向纠错的组播或者广播协议,但它们是针对有线网络或者无线传感器网络这类拓扑相对固定的网络而设计的,不能很好适应车载自组网的节点高速运行特性。比如,RMDPR。
17、ELIABLEMULTICASTDATADISTRIBUTIONPROTOCOL是一个面向有线网络的基于前向纠错的可靠组播协议,使用混合的ARQ/FEC策略。在RMDP中,发送节点预先生成一定数量的冗余报文,然后先发送原始数据报文;接收节点在接收完所有的原始说明书CN102006625ACN102006638A2/11页6报文后,通过报文序列号统计丢失的报文数量,并通过消息反馈给发送节点;发送节点根据所有接收节点的丢包情况,决定发送多少冗余报文。由于车载自组网的丢包率变化比较剧烈,很难预先选择一个恰当的冗余报文数量,因此,该协议不能直接应用到车载自组网中。发明内容0011针对上述问题,本发明提。
18、供一种能够有效提高车载自组网广播可靠性的基于前向纠错的数据链路可靠广播协议。0012为达到上述目的,本发明基于前向纠错的车载自组网可靠广播协议的系统,包括0013编解码器,设置在节点的数据链路层,基于数据链路层获取的发送码率,完成数据链路层广播帧的发送与接收的编解码;以及,0014FEC管理器,设置在接收方,接收节点的数据链路层计算输出的本次接收丢包率,基于该接收丢包率对本节点下一次接收同一发送节点的广播帧的接收丢包率进行评估,并生成丢包率反馈帧,周期性地将丢包率反馈帧通过数据链路层对外广播;设置在发送方,监听各邻居节点的数据链路层广播的丢包率反馈帧,并基于监听到的丢包率反馈帧利用发送码率调节。
19、算法计算出本节点的发送码率,并将其存储于FEC管理器中。0015其中,所述的丢包率反馈帧包含各邻居节点的数据链路层地址和节点接收各邻居节点的广播帧的接收丢包率评估值。0016本发明所述基于前向纠错的车载自组网可靠广播协议的方法,包括以下步骤00171编解码器基于节点的发送码率将广播帧编码生成可发送的报文,节点将其对外广播;00182邻居节点接收报文,并检测接收到的报文数量是否足以恢复广播帧;是,解码出广播帧,并进行下一步骤,否,继续接收;00193邻居节点计算本次接收丢包率,并对下一次接收该节点的广播帧的接收丢包率进行评估,然后,生成丢包率反馈帧,并周期性地对外广播;00204节点实时监听丢包。
20、率反馈帧,采用发送码率调节算法计算出节点的发送码率,并将其记录下来以备下次广播使用。0021其中,步骤1具体实现如下002211扩展数据链路层的帧头部;002312节点的数据链路层的MAC层接收到LLC层发送的广播帧时,MAC层进行信道竞争;002413等信道可用后,编解码器根据广播帧的长度计算出原始子报文数量N;然后,将广播帧划分为N个子报文,并依据该节点的发送码率生成K个冗余子报文;最后,将NK个子报文中的每一个子报文分别封装在各自独立的数据链路层帧中,并设置各帧扩展后的帧头部的相关域;002514节点的MAC层将封装后的NK个子报文保存在发送队列中,并发送出去。0026步骤2具体实现如下。
21、002721各节点为每一个邻居节点均创建并维护一个独立的子报文接收队列,并将其与一计时器相关联;说明书CN102006625ACN102006638A3/11页7002822邻居节点的数据链路层接收节点发送的子报文,根据子报文中节点数据链路层地址找出当前子报文所属的子报文接收队列,并判断当前子报文接收队列是否为空;是,设置子报文接收队列的序列号为当前接收的子报文的帧序列号,将接收到的子报文加入到子报文接收队列中,同时设置与其关联的计时器,否,进行下一步骤;002923判断当前接收的子报文的帧序列号是否与子报文接收队列的序列号相等;是,将接收到的子报文加入到子报文接收队列中,并进行下一步骤,否,。
22、解码出广播帧,并释放子报文接收队列;003024判断当前接收的子报文是否是该序列号的最后一个子报文,是,解码出广播帧,释放子报文接收队列,否,进行下一步骤;003125基于超时处理机制判断节点是否已经发送完所有子报文,是,解码出广播帧,否,继续步骤22。0032进一步地,所述的解码出广播帧,具体实现步骤如下0033231编解码器从子报文接收队列中的任一子报文的帧头部获取FEC信息;0034232判断接收到的子报文数量是否大于等于广播帧子报文数量N;是,将接收到的子报文通过RS解码算法解码出广播帧,并将解码出的广播帧的长度恢复为编码前的真实长度,否,结束解码。0035其中,所述的FEC信息包括广。
23、播帧子报文数量N,冗余子报文数量K以及广播帧的负载长度。0036步骤3具体实现如下003731邻居节点设置一接收丢包率列表,其中存储有各其他节点的数据链路层的地址,以及与各地址相对应的历史丢包率平均值估计D,丢包率抖动平均值评估V和时间戳;003832邻居节点的数据链路层依据广播帧报文数量N,冗余子报文数量K以及节点本次接收到的子报文数量P,计算出本次接收丢包率RNKP/NK;003933依据步骤32得出的接收丢包率R,并依据接收丢包率列表中已存储的接收丢包率平均值评估D和丢包率抖动平均值评估V,对下一次接收各发送节点发送的广播帧的各接收丢包率进行评估,计算式为0040DDRD,VV|RD|V。
24、0041其中,和是协议参数,取01,取02;然后,将得出的值分别添加到接收丢包率列表的相应表项中,更新表项中已有的接收丢包率平均评估值D和丢包率抖动平均值评估V,生成丢包率反馈帧;004234邻居节点的数据链路层将步骤33生成的丢包率反馈帧周期性地对外广播。0043进一步地,所述步骤33生成丢包率反馈帧的步骤具体为0044331节点设有一监听丢包率列表,其中存储有上一次节点接收到的各邻居节点广播的反馈帧信息;0045332判断各邻居节点的数据链路层地址是否在节点的接收丢包率列表中存在;不存在,不作处理并返回,存在,进行下一步骤;0046333查询监听丢包率表,若表中该数据链路层地址的丢包率小于。
25、节点的接收丢包率列表中的丢包率或者该表项已经过期,则将监听丢包率表中的丢包率更新为接收丢包率列表中的丢包率,并将时间戳更新为当前时间;否则,新增一个监听丢包率表的表项,并说明书CN102006625ACN102006638A4/11页8设置该数据链路层地址表项的丢包率为接收丢包率列表中的丢包率,时间戳为当前时间;0047334节点读取接收丢包率列表中接收丢包率平均评估值D和丢包率抖动平均值评估V,计算出节点接收各邻居节点广播帧的接收丢包率的评估值,计算式为ED2V;0048335若节点接收某一邻居节点广播帧的接收丢包率估计值E06,则该节点对应该邻居节点的接收丢包率的评估值E不加入到丢包率反馈。
26、帧中;0049若节点的监听丢包率表中没有与某一邻居节点的数据链路层地址相对应的表项,则将节点到该邻居节点的接收丢包率的评估值加入到丢包率反馈帧中;0050若节点的监听丢包率表中的某一表项已经过期,则删除该表项,并将该节点到该表项相对应的邻居节点的接收丢包率的评估值加入到丢包率反馈帧中;0051若节点的监听丢包率列表中的某一表项的丢包率比E小,则将该节点到该表项相对应的邻居节点的接收丢包率的评估值加入到丢包率反馈帧中,否则,不加入到丢包率反馈帧中;0052336完成本次丢包率反馈帧的生成。0053步骤4具体实现如下005441节点设置一发送丢包率列表,其中存储有各邻居节点的数据链路层地址,丢包率。
27、和时间戳;005542节点的数据链路层接收各邻居节点广播的反馈帧,并依据本节点的数据链路层地址在接收到的反馈帧中查找,找出地址相同表项对应的丢包率信息;005643将步骤42查找出的丢包率信息加入到所述发送丢包率列表中的相应表项,并设置时间戳为当前时间;005744发送节点每隔3秒扫描一遍发送丢包率列表,若当前时间与列表中表项的时间戳相差大于3秒,则删除该表项;005845查找发送丢包率列表中丢包率最高的邻居节点的丢包率EMAX,计算出发送节点广播帧的发送码率,计算式为FEMAX/1EMAX,同时计算出发送节点广播丢包率反馈帧的发送码率,计算式为FEMAX/1EMAX025;005946将上述。
28、得出的各发送码率记录下来以备下一次广播使用。0060本发明首先将广播帧划分为多个大小相同的子报文,然后通过前向纠错编码产生若干个冗余子报文,最后将这些子报文分别封装在独立的数据链路层帧中广播。如果部分子报文丢失,接收节点仍可以利用成功接收到的子报文来尝试恢复原始的网络层报文,从而在网络丢包时改善广播通信的可靠性。0061另外,本发明在基本差错恢复方法的基础上,自动调整发送码率,即根据与邻居节点的通信情况选择恰当的FEC强度,从而在保证协议的差错恢复效果的同时,把FEC的开销控制在合理的范围之内。为了让协议了解邻居节点的通信质量,本发明还提出了一种高效的通信质量反馈机制,使得协议在保持有效性的同。
29、时,大大降低了反馈引起的开销。附图说明0062图1为本发明所述数据链路层扩展后的帧头部格式;0063图2为本发明所述节点接收报文的流程图;0064图3为本发明所述基于前向纠错的车载自组网可靠广播协议的系统的结构示意说明书CN102006625ACN102006638A5/11页9图。具体实施方式0065下面结合说明书附图对本发明的具体实施方式做详细描述。0066实施例一0067本实施例采用成熟的IEEE80211协议作为MAC层。IEEE80211协议是目前应用最广泛的无线MAC层和物理层协议,而且IEEE正在制定80211P标准,以用于车载自组网中。因此,基于80211协议来描述本发明,不仅。
30、具有很好的说明性,还具有实用价值。0068此外,本实施例采用最经典的线性分块编码算法REEDSOLOMON编码,简称RS编码,作为编解码算法。从原理上说,使用其他线性分块编码算法并不会影响协议的适用性。本实施例是这样实现的0069首先,在数据链路层中加入编解码功能。0070为了提高编码后发送数据的效率,本实施例采用本发明所述基于前向纠错的数据链路可靠广播协议FECBASEDRELIABLEDATALINKLAYERBROADCASTPROTOCOL,简称FRBP在MAC层实现了编解码协议。在数据发送节点,当MAC层收到LLC层发送的广播帧时,MAC层首先会进行信道竞争,等到信道可用后,通过编解。
31、码器对待发送的广播帧进行编码生成真正需要发送的报文并发送出去。其生成过程为编码解码器首先将帧负载划分成N个原始子报文;然后,对这些子报文进行RS编码,生成K个冗余子报文;最后,将这些子报文封装在各自独立的数据链路层帧中并发送出去。0071对称地,数据接收节点的MAC层检查成功收到的子报文数量是否足以恢复原始的帧负载。如果可以恢复则将恢复后的原始帧交给LLC层做进一步处理。0072为了支持MAC层的编解码,所述的基于前向纠错的数据链路可靠广播协议FRBP对8022LLC以及80211MAC层帧头部格式进行了扩展,加入协议所需要的域,其中,0073LLC层帧头部扩展的扩展域2,包括0074RATE。
32、由FEC码率的字符串表示,用于指定MAC编解码时使用的码率,长度为64BIT,是一个保留6位有效数字的浮点数的字符串表示;以及,0075TYPELLC帧类型,包括IP数据帧和LLC控制帧两种类型,长度为8BIT。0076MAC层帧头部扩展的扩展域1,加入针对FEC的域,包括0077N原始子报文数量N,长度为8BIT;0078K冗余子报文数量K,长度为8BIT;0079SUBPKT_NO子报文序列号,长度为8BIT;以及,0080ORIG_LENGTH原始帧负载的长度,长度为16BIT;这些域紧跟在原有的80211帧头部之后。扩展后的数据链路层帧格式如图1所示。0081下面是本实施例中发送节点对。
33、一个数据链路层帧的负载进行FEC编码过程的详细描述,具体步骤如下008211根据帧负载的长度LEN计算恰当的子报文长度T,从而计算出原始子报文数量N;008312将帧负载划分为N个子报文,然后按照LLC层指定的码率数据链路层帧头部中的RATE域利用RS编码生成K个冗余子报文;说明书CN102006625ACN102006638A6/11页10008413将每个子报文封装在一个数据链路层帧里面,设置该帧头部的相关域,其中HEADERNN,HEADERKK,HEADERORIG_LENGTHLEN,设置SUBPKT_NO为当前的子报文序列号,并使序列号加一。0085其中,80211协议本身的头部就。
34、包含一个帧序列号,用于区分不同的帧。编解码器把属于同一个原始帧的所有子帧头部中的帧序列号都设置为原始帧序列号,以便于区分属于不同原始帧的子帧。在此需要特别注意的是,80211协议的帧序列号与FRBP中扩展的SUBPKT_NO域是不同的。前者用于区别原始帧,而后者用于区别属于同一个原始帧的各个子帧。0086上述步骤11中所述的子报文长度T和原始子报文数量N的求解过程如下0087111假设扩展后的数据链路层帧头部长度为H,FRBP取子报文长度的下限,即T2H。0088112如果帧负载长度LENT,则选定子报文长度为TLEN,此时原始子报文数量N1;0089113如果帧负载长度TLEN4T,则子报文。
35、的长度为T,原始子报文数量即LEN/T向上取整;如果最后一个子帧的负载长度不足T,则在子报文末尾填充0;0090114如果帧负载长度大于等于4T,则取N4,子报文长度取LEN/4向上取整;如果最后一个子帧负载长度不足LEN/4,则在子报文末尾填充0。0091编码后,MAC层将这NK个子报文保存在发送队列中,当信道进入空闲状态时,MAC层将这些子报文发送出去。为了减小发送的延迟,FRBP要求同一个原始帧的所有子报文必须连续发送,以保证子报文发送序列不被其他报文的发送和接收所中断。0092为了保证子报文序列发送的连续性,本发明所述的FRBP协议在一个子报文发送完毕后等待一个SIFSSHORTINT。
36、ERFRAMESPACE的时间,然后立即发送下一个子报文。其中,SIFS是80211协议中发送两个帧之间的最小时间间隔。80211协议保证在SIFS的时间间隙内邻居节点不会发送数据,从而保证属于同一个原始帧的子报文被连续发送。0093下面是接收节点接收子报文并从中解码出原始帧的过程描述。0094由于每个数据链路层的帧都会被划分为多个子报文发送,所以接收节点需要为每个邻居节点维护一个子报文接收队列,等待某一邻居节点已经发送完属于一个原始帧的所有子报文之后,再尝试恢复原始帧,并且删除该子报文接收队列。队列结构中记录当前正在接收的原始帧的序列号。0095接收子报文的过程如图2所示,步骤如下00962。
37、1各节点为每一个邻居节点均创建并维护一个独立的子报文接收队列,并将其与一计时器相关联;009722邻居节点的数据链路层接收节点发送的子报文,根据子报文中节点数据链路层地址找出当前子报文所属的子报文接收队列,并判断当前子报文接收队列是否为空;是,则表明是新建的队列,设置子报文接收队列的序列号为当前接收的子报文的帧序列号,将接收到的子报文直接加入到子报文接收队列中,同时设置与其关联的计时器,否,进行下一步骤;说明书CN102006625ACN102006638A7/11页11009823判断当前接收的子报文的帧序列号是否与子报文接收队列的序列号相等;是,则表明该子报文属于当前正在接收的广播帧,可将。
38、接收到的子报文直接加入到子报文接收队列中,并进行下一步骤,否,则表明发送节点已经开始发送下一广播帧了,可以从当前的队列中解码出上一广播帧,并释放子报文接收队列,然后重新创建一个新的子报文接收队列;009924判断当前接收的子报文是否是该序列号的最后一个子报文,是,解码出广播帧,释放子报文接收队列,然后重新创建一个新的子报文接收队列,否,进行下一步骤;010025基于超时处理机制判断节点是否已经发送完所有子报文,是,此种情况是当广播帧的最后一个子报文丢失时,接收节点就可以解码出广播帧,释放子报文接收队列,然后重新创建一个新的子报文接收队列,否,继续步骤22。0101FRBP通过超时处理机制来判断。
39、发送节点已经发送完所有的子报文,因此在上述过程中,每个新创建的子报文接收队列都会关联一个计时器,该计时器在接收到第一个子报文的时候被设置。其中,所述的超时处理机制中,计时器的超时时间按照如下过程计算得出假设接收到的第一个子报文序列号为I,则仍有NKI个子报文等待发送,发送这些子报文共需要TNKITSIFS,其中,T为发送一个子报文所需要的时间。本发明所述的FRBP协议将计时器的超时时间设置为TSIFS。当接收节点判断发送节点已经发送完成了属于同一个原始帧的所有子报文之后,就会解码原始帧。0102从保存在子报文接收队列中的子报文解码原始帧的负载的过程如下010331从任何一个子帧的头部中获取FE。
40、C信息原始子报文数量N,冗余子报文数量K,原始帧负载的长度ORIG_LENGTH;010432如果收到的子报文数量PN,则由收到的这些子报文通过RS解码算法解码出原始帧的负载,否则转步骤34;010533去除编码过程中加入的填充数据0,将恢复的原始负载截短为编码前的真实长度ORIG_LENGTH;010634结束解码。0107然后,本发明所述的FRBP协议中增加了码率自适应机制。0108本发明所述的码率自适应机制的实现过程描述如下010941接收节点接收到数据之后,首先,从任何一个接收到的子帧中获取FEC信息原始子报文数量N和冗余子报文数量K;然后,计算出本次接收中子报文的丢包率RNKP/NK。
41、,其中,P为接收节点成功接收到的子报文。011042基于该接收节点接收各邻居发送节点的广播帧的历史接收丢包率评估值,并采用接收丢包率的评估算法,接收节点分别对下一次接收各邻居发送节点的广播帧的接收丢包率进行评估,同时生成丢包率反馈帧;011143每个接收节点周期性地广播丢包率反馈帧;011244每个发送节点接收邻居节点反馈的丢包率反馈帧,并从中查找地址相同表项对应的丢包率信息,然后将查找出的丢包率信息作为自己到邻居节点的发送丢包率,并将其列入到发送丢包率列表中;011345广播数据时,发送节点根据发送列表中自己到各个邻居的发送丢包率信息,基于发送码率调节算法计算出发送码率,并设置在广播帧的帧头。
42、部相应域。说明书CN102006625ACN102006638A8/11页120114其中,所述的接收丢包率评估算法,计算步骤如下0115421每个接收节点维护一个接收丢包率列表,每个表项对应接收一个邻居发送节点的广播数据时的子报文丢包率。每当完成对一个数据链路层帧的接收时,接收节点都会更新接收丢包率列表中与源节点对应的表项。每个表项包含如下四项信息邻居的数据链路层地址、丢包率平均值估计R、丢包率抖动平均值估计V和时间戳。0116422假设某次接收数据链路层帧时检测到的接收丢包率为D,接收节点根据数据链路层地址找到广播该帧的邻居发送节点对应的表项;如果不存在,新建一个表项,并初始化RD,V0,。
43、转步骤423;0117如果存在,设置新的丢包率平均值估计为RRDR,新的丢包率抖动平均值估计为VV|DR|V;其中,和均为协议参数,默认取01,02。0118423更新表项对应的时间戳为当前时间。0119424接收节点每隔3秒扫描一遍接收丢包率列表,如果当前时间与表格中表项的时间戳之差大于3秒,则删除该表项。即如果某个邻居的丢包率信息在3秒内没有进行更新,则认为它已经离开了通信范围。0120所述的发送码率调节算法,计算步骤如下0121451读取当前发送丢包率表中丢包率最高的邻居节点的丢包率EMAX;0122452对于IP广播帧,发送码率为FEMAX/1EMAX;0123453对于丢包率反馈帧,。
44、发送码率为FEMAX1EMAX025;0124在接收丢包率评估算法比较准确的前提下,通过上述方法选取的码率可以使得所有邻居节点成功接收该帧。丢包率反馈帧的发送码率略高于IP数据帧的原因是,反馈帧对于协议的正确性有比较大的影响,所以需要额外提高其传输的可靠性。0125步骤44中所述的发送丢包率列表为类似与接收丢包率的列表,每个节点均维护一个发送丢包率列表,其中存储了从本节点到各个邻居节点发送数据时的丢包率。表项包含三部分信息邻居数据链路层地址,丢包率,时间戳。0126每个节点在收到邻居节点的丢包率反馈帧之后,根据本节点的数据链路层地址在里面查找属于自己的丢包率信息。该丢包率为邻居节点接收本节点数。
45、据时的接收丢包率评估值,即本节点发送数据到该邻居时的丢包率。如果查找到属于本节点的丢包率,则将它保存到发送丢包率表中。假设丢包率为E,节点通过以下过程来更新发送丢包率表0127441找到邻居节点数据链路层地址对应的表项,如果不存在则创建一个新的表项。0128442设置该表项的丢包率为E,设置时间戳为当前时间。0129443节点每隔3秒扫描一遍发送丢包率表,如果当前时间与表格中表项的时间戳之差大于3秒,则删除该表项。即如果某个邻居的丢包率信息在3秒内没有进行更新,则认为它已经离开了通信范围。0130最后,本发明所述FRBP协议还设置了面向广播的高效的丢包率反馈机制。0131每个节点每秒对外广播一。
46、个反馈帧,反馈帧的负载为本节点的接收丢包率列表。每个表项记录了接收某邻居广播帧时的接收丢包率评估值。每个表项具体包含有邻居节点的数据链路层地址ADDR和接收丢包率评估值RATE。其中,接收丢包率评估值RATE为邻居节点广播数据到本节点的丢包率的评估值。以下可以用二元组ADDR,RATE表示来表示说明书CN102006625ACN102006638A9/11页13反馈帧的一个条目。0132本发明所述的FRBP协议的系统通过监听邻居节点广播的反馈帧,每个节点维护一个监听丢包率表,该表中每个表项由三个域组成数据链路层地址ADDR,丢包率RATE和时间戳TIMESTAMP。以下可以用三元组ADDR,R。
47、ATE,TIMESTAMP表示监听丢包率表的一个表项。0133更新监听丢包率表的过程如下013451对于接收到的反馈帧中每一个条目ADDR,RATE,节点查找该条目的数据链路层地址是否存在于本节点的接收丢包率列表中;不存在,不作处理并返回,存在,进行下一步骤;013552如果在监听丢包率表中存在一个表项ADDR,RATE,TIMESTAMP,满足ADDRADDR,且RATERATE或者该表项已经过期,则更新RATERATE,并将TIMESTAMP更新为当前时间并返回;013653如果监听丢包率表中不存在满足ADDRADDR的表项,那么新增一个表项,并设置表项的ADDRADDR,RATERATE。
48、,TIMESTAMP为当前时间。0137其中,判断监听丢包率表中某个表项是否过期的方法是如果当前时间与该表项的时间戳之差大于3秒,则认为该表项已经过期。0138节点根据监听丢包率表的内容决定自己要在反馈帧中广播哪些邻居的接收丢包率,即选择反馈帧条目的过程如下013961对于接收丢包率列表中的每个表项,依据表项中的R,V值,计算出接收丢包率的评估值ER2V;014062如果E06,即估计的丢包率高于60,则不将E加入到反馈帧中,返回;0141如果在监听丢包率表中没有与该表项的数据链路层地址对应的表项,将丢包率E加入反馈帧,返回;0142如果监听丢包率表中的项已经过期,此时需要删除监听丢包率表中的。
49、表项,并且将E加入反馈帧,返回;0143如果监听丢包率表项中的丢包率比E小,那么将E加入反馈帧,返回,否则,不将E加入反馈帧中,返回。0144如图3所示,本发明所述基于前向纠错的车载自组网可靠广播协议的系统。系统分为两部分,一部分是编解码器,分别设置在发送节点和接收节点,它实现了编解码协议,第二部分是FEC管理器,分别与发送节点和接收节点的LLC层合作,实现码率的控制与自适应。0145图中画出了本发明所述的FRBP协议的数据流,实线表示与发送IP广播报文相关的数据流,而虚线表示与发送LLC层丢包率反馈帧相关的数据流;3为发送方,4为接收方。0146发送方3,当LLC层收到一个网络层要求发送的IP广播报文时,它首先从FEC管理器获取发送数据的码率,然后将报文封装在一个LLC帧里面,将数据链路层帧头部中的RATE域设置为该码率,将帧头部中的TYPE域设置为IP数据类型,并将该帧传递给MAC层发送。0147接收方4,MAC层首先计算接收丢包率并传递到FEC管理器,然后检查是否收到足够多的子报文以恢复上层报文,如果可以恢复则将恢复后的上层报文交给LLC层。说明书CN102006625ACN102006638A10/11页140148FE。