您的位置:首页 > 其它

Symbol-level Network Coding for Wireless Mesh Networks

2008-08-22 10:59 393 查看
Symbol-level Network Coding for Wireless Mesh Networks[/b]

摘要[/b]:[/b]
本文描述了一个能提高无线网状网吞吐率的系统——MIXIT。MIXIT利用了网状网的一个基本特性:即使没有(邻居,译者)节点正确地接收数据包,(此包中的,译者)任何一个给定比特位也有可能被某节点正确接收。MIXIT路由器使用PHY hints以最大限度地猜测一个坏包中的哪些比特位是正确的并且把它们转发到目的地,而不是只转发正确的数据包。虽然这种方法不可避免地让出错的比特位通过,但是我们的实验结果表明此方法可以在不损失端到端可靠性的情况下,达到很高的吞吐率。
MIXIT的核心部分是对符号(symbols,若干位所组成的比特组)进行操作的网络编码(将包划分成许多的symbol,每个symbol由若干个bit组成,译者)。它允许节点把接收到的正确的比特位通过机会路由转发到它们的目的端,并且头部开销很小。MIXIT网络编码还整合了目的端纠错组件,用以纠正可能会漏过的任何端到端的错误。我们在一个运行ZigBee协议的无线软件平台上实现了MIXIT。我们在一个具有25个节点的室内试验台上进行了实验,结果表明,MIXIT的吞吐率是成熟的机会路由(opportunistic routing)方案“MORE”的2.8倍,是采用ETX度量的传统路由方案的3.9倍。

类别及科目:[/b]C.2.2 【计算机系统组织】:计算机通信网络
术语:[/b]算法,设计,性能,理论

1. 介绍[/b]
本文提出了MIXIT——和当前最优的方法相比,MIXIT是个能大大地提高无线网状网吞吐率的系统。不管是传统的路由协议,还说最近的机会路由协议,中间节点只会转发没有错误的数据包。相比之下,MIXIT采用了更灵活的方法:转发节点并不试图从任何错误中恢复数据,甚至都不采用任何的检错码(比如CRC)。
稍感出人意外的是,放宽节点只转发正确数据的要求可以提高吞吐率。这种提高主要归因于无线网状网的一个独特性质:即使没有(邻居)节点正确地接收数据包,(此包中的)任何一个给定位也有可能被某节点正确接收。
在MIXIT中,网络层及以下各层协作利用上述优势以提高吞吐率。物理层使用SoftPHY hints作为每个位的批注(annotation)以反映物理层解调与解码的置信度。链路层把带有这些批注的帧传递给网络层,但并不试图恢复这些出错的帧或者通过链路层重传低置信度的位。相反,网络层使用SoftPHY hints过滤掉数据包中出现的这些低置信度位,然后它对高置信度的比特位按组采用机会路由进行转发。
MIXIT的核心部分是网络编码,它允许每段链路以比现在高很多的位错误率运行,但并不损失端到端的可靠性。与以往的工作不同,这段网络编码工作在符号(symbols)级粒度下,而不是数据包(packet)级:每个路由器转发(使用无线组播)高置信度符号(simbols)的随机线性组合,并且这些符号属于不同的数据包。这样,MIXIT路由器就转发了可能正确的符号,并且尽量避免转发那些可能出错的符号,但是不可避免地对出错的符合进行一些不正确的猜想并给予转发。
MIXIT网络编码突破了对潜在错误数据实施符号级机会路由的两个难题。第一个难题是可扩展协调问题:为避免相同符号的重传,节点需检查其它每个节点接收了哪些符号,这样做的代价是非常大的。相对于ExOR等方法的一个协调节点的情况,MIXIT使用网络编码和动态规划算法的随机性来解决这个难题,并且能可扩展地把高置信度符号汇集到目的节点。
第二个难题是错误恢复:因为错误的符号会渗透过去,所以目的节点需要纠正这些错误。MIXIT并没有采用传统的请求重传方法,而是使用了与网络编码协同工作的无比率端到端纠错组件(rateless end-to-end error correcting component)。路由器只是转发高置信度符号的随机线性组合,他们本身并没有错误处理能力。
MIXIT为提高性能采用了两种传统的技术:
l 增强并发性:MIXIT利用了两个特性设计了信道接入协议以获得比CSMA更好的并发传输:第一,整个数据包并不需要正确地传递到下游节点;第二,符号需要正确传递到下游的“某个”节点,而不是具体的一个下游节点。
l 拥塞感知(Congestion-aware)转发:不像以前的忽略了拥塞信息的机会路由协议,MIXIT通过兼具高传递几率和小队列的路径转发编码符号(coded symbols)。
MIXIT融合了机会路由(ExOR等等)和部分数据包恢复的思想,使两者协同工作。早先的机会策略往往专注于很长链路上分散的接收,但这些长链路具有内在的不可靠性并且很可能出现符号错误。由于只转发完全正确的数据包,先前的机会协议失去了他们的大部分机会。类似地,先前的利用部分正确接收的提议,如PPR、SOFT及H-ARQ,仅限于无线单跳的情况,并且使用了很长的头部以保证该跳的可靠性。与此相反,我们主张避开可靠链路层错误检测与恢复,因为把机会接收(opportunistically-received)的正确符号汇集到目的节点就足够了,它们会在目的节点组装成完整的数据包。
我们在具25个节点的运行ZigBee(802.15.4)协议的试验台上,使用了我们的软件无线工具评估了MIXIT。主要的实验结果如下:
l 在中等负载下,MIXIT达到了比MORE高2.8倍的吞吐率,MORE是一个成熟的基于数据包的机会路由协议。比传统的路由协议的端到端吞吐率高3.9倍。在负载减小的情况下,相应的数字是2.1倍和2.9倍。
l MIXIT的改进来源于两点:符号水平的机会路由和更高的并发性。它们有着倍数效应,比如,它们分别有着比MORE高1.5倍和1.4倍的吞吐率,那么,当它们相互协同时,这个数字就是2.1倍。
l 高负载情况下,拥塞感知转发占到吞吐率增益的30%
路由器并不需要转发完全正确的数据包就能达到端到端的可靠性,MIXIT是第一个能对这点给予明证的系统;放宽对只转发正确数据包的要求,可以极大地提高吞吐率。MIXIT实现了这样的分层体系结构——使用洁净接口(clean interfaces)跨层协作:只要物理层向上提供SoftPHY hints,网络编码就可以运行——该系统可以运行于任何MAC协议之上(虽然那些积极寻求并发的系统有更好的表现) ,路由器是忽略纠错码的。模块分离的设计简化了实现过程。

2. [/b]相关工作[/b][/b]
Laneman et.al.提出并分析了一系列的信息论课题以开拓无线协同分集(co-operative diversity。在慢衰落信道中,协同分集是一种新的空间分集方式,其本质是利用分布用户的单天线形成一个虚拟的多天线系统,即形成虚拟MIMO。译者)领域。MIXIT的设计有两个关键点:第一点,中间节点使用SoftPHY hints在处理和转发之前“净化”符号,而不是简单的在信号级接收、组合与转发信息。第二点,节点使用内流(intra-flow)符号级的网络编码,这就允许它们在不是精确同步传输的情况下进行协调与协同工作,而精确同步是很多“协同分集”方法所必须的。
MIXIT是建立在机会路由、空间分集、无线网络编码等等理论基础之上的。尤其是与MORE一样,有着内流网络编码的思想,但也有三个关键的不同点:第一,MORE是对数据包进行操作并且不能处理出错的数据包;第二,MIXIT所采用符号级的网络编码是一种端到端无比率纠错码(end-to-end rateless error correcting code),而MORE所采用的是不能纠错的网络编码;第三,MIXIT所设计的MAC放宽了对包传递的限制,极大地提高了传输的并发性,而MORE采用载波并且只传递正确的数据包,这就限制了它的高并发性。MIXIT网络编码的出现得益于最近的在出错情形下扩展网络编码方面取得的进步,MIXIT只对置信度高于特定门限值的符号进行编码,同时使用编码系数以减小头部。
MIXIT同样离不开先前的“软信息”方面的成果,“软信息”所带来的好处是众所周知的。软信息利用了符号解码时在物理层所计算出的置信度值。最近的工作是开发了SoftPHY接口,利用附加的hints注解比特位,以一种物理独立(PHY-independent)的方式向上层提供“软”信息。到目前为止,物理层以上对这些hints的利用局限于提高链路可靠性:采用更好的重传机制或者在有线网络中结合置信度值从出错的接收中重构出正确的数据包。与此相反,MIXIT以一种新的方式使用SoftPHY hints,避开了链路层的可靠性,采用空间分集以达到高吞吐率与高可靠性。
MIXIT看似是模拟与物理层网络编码,但它是对符号进行操作,而不是信号;这个差别很重要,因为在中间节点做了一个软数字化决策,因避免了转发不准确的信息而提高了效率。更重要的是,分层体系结构简化了设计,并且不同的物理层方案与技术都可以采用相同的网络层。MIXIT使用SoftPHY通过洁净的物理独立的接口传播跨层信息。

3. [/b]引例[/b][/b]
本章讨论将讨论两个实例以说明能被正确接收的符号机制有着哪些要求。这些实例展示了提高吞吐率的两大时机:有着很高比特出错率的长链路允许快速跳转到目的节点,即使它们从来都不可能正确地接收到完整的数据包;使用更激进的MAC协议提高并发性有着比CSMA更高的比特出错率。这些实例所强调的重点是允许更高的链路出错率可以提高吞吐率。

考虑图一,源端S试图使用R1,R2,R3路由传递数据包到目的端D。当源端广播它的数据包时,R1,R2都正确地接收了这个数据包,但是R3和D收到的数据包的某些位出错。传统的路由算法是忽略在R2上“幸运地”接收的数据包,只是按照预先的路径进行传递数据包,也就是,它是再一次地让R1转发这个数据包给R2。相反,最近的机会路由协议(比如ExOR)利用了这些在R2上接收的数据包并向目的端做一个长跳,减小了传输。
由于只是转发完全正确的数据包,现有的机会路由协议错失了减小传输、增加吞吐的大量机会;它们并不利于在R3甚至在目的端已经正确接收的正确比特位。更有甚者,因为空间分集,在R3和D上所出错的比特位很可能是在不同的位置上。那样的话,R3只需传输在D上没有正确接收的比特位,目的端就可以得到完整的数据包。若能定义正确的符号并转发之,势必会大大地减小传递一个数据包所需要的传输量。

接下来,考虑一下图2中潜在并发性的例子,图中有两个发送方Sa和Sb,各要传递一个数据包到它们所期望的目的端Da和Db。如果两个发送方要并发传输,BER将会很高,并且没有路由器会正确接收数据包。因为现行的机会路由协议只转发正确并完整的数据包,MAC层在最好的情况下也只会在两个时隙之后,让这些发送方轮流发送。
但干扰并不是二进制变量。实际上,不同的路由器有着不同的干扰程度;Sa的近端路由器可能会收到数据包Pa,但带有很少的错误,同时Sb的近端路由器收到数据包Pb,但带有稍多的错误。如果能定义哪些符号是正确的并且转发这些比特组,那么这两个发送者就可以并发传输并增加吞吐率,然后就可以把这些从路由器接收的正确符号汇集到目的端。
MIXIT的目标是利用这些实践上的潜在优势,但面临着如下挑战:
l 一个路由器如何区分所接收的每个数据包中哪些符号是正确的?
l 考虑到不同路由器上正确符号的重叠,我们如何保证它们所转发的不是相同的信息而浪费带宽?
l 我们如何避免创造热点?
l 各节点何时并发传输?
l 我们如何保证目的端所恢复的是正确并完整的源端数据?
本文接下来的部分将提出在MIXIT体系结构下解决以上问题的的方法。

4. [/b]MIXIT[/b]体系结构[/b][/b]
MIXIT是一种分层的体系结构,适用于静态网状网的批量传输。每层都类似于传统的物理层、链路层及网络层,但层间的接口及网络层的功能有着很大的不同。物理层和链路层将所有接受到的数据都传递到网络层,而不管这些比特位是否出错。每个包都有个MIXIT头部,这个头部必须是正确接收的,因为它包含着目的端和其他元数据信息;MIXIT使用很小的单独的转发纠错码FEC来保护头部。
我们将就每个数据包流(stream of packets)的源端、转发者以及目的端进行介绍,而不是对各层进行单独介绍。

4.1 [/b]源端[/b]
传输层将数据分流(stream)到网络层,然后将使用§9中所介绍的纠错码进行预处理。网络层将这些处理后的结果分流成由K个数据包构成的batches,然后把这些batches按序发送到目的端。只要MAC层允许,网络层就将当前batch中的K个包进行随机线性组合然后广播之。
MIXIT的网络编码工作在符号级粒度,所谓的符号就是数据包中一组连续的比特位。这个组可能是来自同一个被调制成单个物理层符号(PHY symbol)的比特集(比如,在16-QAM调制方式下的4位成一组),也可能来自跨度很大的几个物理符号。在一个编码后的包中的第j个符号s 是这k个包中第j个符号的线性组合,即s = ,其中 是此batch中第i个包中的第j个符号, 是每个包的随机乘积。我们称 =(v1,…,vK)为编码数据包的编码向量。请注意,源端所产生的数据包的每个符号都有着相同的编码向量。
源端向编码数据包添加一个MIXIT头部并广播之,这个头部记录着哪些符号被编码到了一起。源端很容易定义这点,因为在一个编码后的数据包中的所有符号都是使用这个包的编码向量 产生的。这个头部同样也包含了转发节点的邻居节点所收集的转发节点顺序表,按照§7中所描述的度量标准,这些转发节点更接近目的端。

4.2 [/b]转发节点[/b]
每个节点在不发送信息时都不断地在侦听并对其解码。当物理层侦听到一个数据包时,节点就将解码后的后继比特序列连同反映其解码置信度的Soft hints一起传递给网络层,网络层利用这些信息把符号分为洁净符号(clean)和脏符号(dirty)两类。洁净符号就是可能是正确的符号,反之则反。§5描述了MIXIT网络层是如何将这些符号分类的。
当一个节点收到一个没有头部错误的数据包时,它要先检查自己是否在头部中所包含的转发节点列表中。如果在,此节点要坚持这个数据包中是否包含了新的信息,即“最新的”( innovative)。若一个数据包中的编码向量 相对于此节点先前从batch中接收的数据包的编码向量是线性独立的,则这个数据包就被认为是最新的,对这些短向量直接采用高斯消去法即可判断是否独立。那些不是最新的数据包将被忽略,节点只存储从当前batch中接收的最新数据包,并保存“洁净”或是“脏”的批注。
当转发数据的时候,节点把从相同的batch中接收的数据包中的洁净符号进行随机线性组合,并广播最终的编码后的数据包,正如§6所述。为了负载平衡与最大化吞吐率,节点还要对每个邻居节点应该转发多少数据进行决策,详见§7。
任何MAC协议都可以在MIXIT中使用,但是使用§8.1中所述的方案会达到比标准CSMA更高的并发性,因为此方案利用了MIXIT的优势——MIXIT有着处理比以往路由协议更高错误率的能力。

4.3 [/b]目的端[/b]
MIXIT提供了一个无比率网络编码。因此,目的端只需简单地收集它所侦听的所有数据包,直到收集到足够的信息以解码出原始数据,详见§9。更有甚者,MIXIT还能提供灵活、可靠的语义。因应用而不同,目的端可以对多少信息是足够的进行决策。比如,如果应用需要绝对的可靠性,那么目的端要解码出所有的原始符号;而如果应用只需要90%的可靠性,那么目的端解码出90%的原始符号即可。只要目的端解码出所需要的原始符号,它就发送batch-ack确认到源端。这个确认使用可靠的单路径路由进行发送,源端收到确认后将移到下一个batch。下文中,我们假设目的端要求100%的可靠性。
5. [/b]对接收的符号进行分类[/b][/b]
MIXIT是对按物理符号进行分组的的符号进行操作的,如果这些物理符号的所有组成部分的错误率都是低于γ的,那么这个符号则被分类为“洁净的”,否则就是“脏的”。我们把门限值γ称作错误率(mistake rate),错误率是本系统可配置的参数。为满足错误率门限值,MIXIT的网络层根据物理符号(PHY symbols)的软值(soft values)选定判定边界。如果组成符号的所有物理符号的软值都低于判定边界,那么这个符号就是“洁净的”,否则就是“脏的”。这个判定边界取决于错误率及SINR信道。

图三支持了上述观点。此图是一个实现无线ZigBee协议的GNU软件所绘制(见§10)。图中曲线表示,在1%,5%,10%及15%四种错误率情况下,用物理符号的软值所表示的决策边界随SINR变化的情形。从图中可以清楚地看到,这个边界不仅依赖于错误率,还依赖于SINR。SINR是信道噪声和干扰的度量,因此它反映了我们对信道信赖多少才能保证发送和接收信号的相关性。当错误率固定时,我们可以使用上图选定判定边界以完成对符号的分类。
MIXIT使用了文献8中所提出的SoftPHY接口,用置信度值标注解码后的物理符号,并将其传到更高层。我们扩充了这个接口以适应SINR。使用文献10中的标准方法可以完成对SINR的估计。图3也可以进行脱机计算,因为SINR、置信度估计及判定边界之间的关系是固定的。MIXIT网络层使用物理层信息以区分符号的“洁净”或者“脏”,然后就可以对洁净的符号实施符号级的网络编码。

6. [/b]MIXIT[/b]网络编码[/b][/b]
当MAC层允许时,节点就可以转发编码后的数据包。把从同一batch中数据包所接收的洁净符号进行线性组合,就构成了编码后数据包的符号。为了解编码的工作机理,我们来看一个例子。
6.1 [/b]实战MIXIT[/b]
考虑图4的情形,源端S要传递Pa和Pb两个数据包到目的端。假设源端S传输Pa、Pb时比特错误率(bit error rate,BRE)比较高,这样网络中的节点就会收到一些错误的符号。按照§5中的方法,各节点中的网络层将使用Soft hint将这些符号划分为洁净的和脏的
两类。图4中带阴影的单元格表示这些脏符号。
我们使用符号级编码的目标是将这些洁净符号汇集到各自的目的端,并最小化头部。具体来说,大部分符号被R1和R2都准确接收了。因此,在没有其他措施的情况下,路由器将把相同的符号发往目的端,浪费了无线带宽。为避免这种浪费,MIXIT使路由器转发它们所接收到的洁净符号的随机线性组合。假设ai和bi分别是Pa和Pb的第i个符号,路由器R1选择两个随机数α和β,并生成了一个编码后的数据包Pc,那么Pc的第i个符号ci的计算如下:

如果R1和R2分别广播它们各自的数据包Pc和Pd,目的端将接收一些出错的符号,如图4所示。这样,目的端就有了四个部分破坏了的包:Pa和Pb,是由源端直接封装的头部,包含了很多的错误符号;Pc和Pd,只包含很少的错误符号。对每个位于i的符号,目的端需要解码出两个原始的符号ai和bi。只要目的端接收到两个未被破坏的位于i的独立符号,这样就能进行适当的解码。比如,考虑i=2,目的端将接收这样的符号:
c =αa +βb
d =α′a .
由于编码后的数据包包含了这些乘数(比如:α和β),目的端就得到了两个二元线性方程,其中未知数a2和b2都比较容易求解(具体如何解码请参考§9)。一旦目的端正确地解码出所有的符号,它就广播一个应答ACK,以使路由器停止转发数据包。

6.2 [/b]高效的符号级编码[/b]
对符号进行网络编码的难点不是编码操作,而是如何编码才更高效。符号所取的长度一般都比较小,比如一个或几个字节。MIXIT所转发包的头部必须足以说明每个符号是如何得到的,只有这样目的端才能解码。如果一个数据包中所有的符号都是乘以相同的乘数,那么只要把这个乘数放到数据包头部里即可,这样我们就得到了一个高效的包级编码。但MIXIT所需要的不仅如此,它是要只对洁净符号进行编码而不管脏符号;也就是说,只有洁净符号才能被乘以一个非0乘数。
考虑一个简单的例子,一个K=2的batch包含两个包Pa和Pb,假设转发者已接收了两个已编码的包Pc=αPa+βPb ,Pd=α′Pa+β′Pb。现在,转发者选定两个随机数v1和v2,并且对这两个包进行线性组合。

于是,新产生的包就有了一个编码向量 =(v α+v α′,v β+v β′)。如果这个转发者接收的都是洁净符号,那么这个向量就足以描述整个数据包。具体来说,数据包P的第j个洁净符号s ,它的编码如下:

但是实际上,并不是每个符号都是洁净的,我们需要更多的信息去描述数据包P中的每个符号是如何得到的。取决于转发者所接收的Pc和Pd中的第j个符号c 和d 是否洁净,产生的符号s 的取值有四种可能:

每个不同的取值都有着不同的编码向量,因此发送数据包的头部必须能够说明包中每个符号的编码向量是什么。
我们使用下面两种机制来解决这个问题:
(1) 行程编码(Run-lengh encoding):因为无线传输的错误都是突发的(bursty),一组连续的符号序列应该有着相同的编码向量,所以我们可以使用行程编码按照一种有效的方式去描述发送符号的编码。头部按照[(Code Vector of run),(Runstart:Runend)]的方式给出一个run序列,例如在图5中,第一个输出的编码数据包的头部定义了两个run:[(γ ),(1,1000)]和[(α +β ),(1001,1500)]。
(2) 选择有更长run的编码:我们有意将会分散行程编码的洁净符号摒弃,这样可以减小开销。换句话说,为保证编码向量相同的符号有着更长的run,转发者可以决定忽略某些洁净符号,这样就能进行高效编码。

考虑图5中的例子,转发者收到3个数据包,并且每个包都含有一些脏符号。利用这些符号级的网络编码以及上述的行程编码,我们可以得到有着7个不同run的编码数据包。但是,若是在编码过程中忽略一些洁净符号,我们得到的将是数量更少、长度更大的run。例如,在这个朴素编码包(naive coded packet)中的前五个run,我们可以忽略第一和第二个接收包中的洁净符号。于是,这五个run可以合并成一个更长的run,其编码向量是γ ,其中γ是一个随机的乘数, 是第三个接收包的编码向量。类似地,如果我们忽略后两个run的第三个接收包的洁净符号,我们将得到一个编码向量为α +β 的更长的run,其中α和β是随机乘数, 和 是第一个和第二个接收包的编码向量。最终的编码数据包如图5所示,只有两个run及对应的两个编码向量,这就减小了开销。
但是,如果这个转发者必须要传输第二个编码数据包会怎么样呢?一种选择是像上面一样,忽略相同的洁净符号集,但是使用不同的乘数α′,β′,γ′,我们会得到两个编码向量分别为γ 和α +β run的编码数据包。但是相对于节点已经传输的第一个编码数据包(γ 并不线性独立于γ ),第一个run的符号并不是最新的(innovative),因此这样的传输是极其没有必要的。应对策略就是吧第一个长run分成两个小的包含了第一和第二个数据包的洁净符号的run,这些洁净符号我们先前是忽略的。图5中的第二个编码数据包有三个run,对应的三个编码向量分别是β +γ 、α γ 和α β 。相对于先前发送的编码数据包,这个新的数据包就是最新的了,并且描述编码的开销更小。

6.3 [/b]动态规划以最小化开销[/b]
为使一个编码数据包中run的数量达到最小,我们提出了一个系统化的方法,同时也保证了每个数据包相对于已发送的编码数据包都是最新的。我们使用动态规划方法对此问题进行形式化。假设从n个输入数据包我们得到了朴素编码数据包(naïve coded packet),如上例所示。这个朴素数据包中包含R R …R 共L个run,优化器试图将这些朴素编码数据包中连续的run组合成一个run,通过忽略一些洁净的输入符号,这个组合成的run中的符号有着相同的编码向量。C 是组合后的run,它包含了朴素编码数据包中的R …R 。注意,组合后的C 即是R 。
下面我们将说明的是,每个组合后的run都可以分配权值,在将最新组合run(innovative combined runs)的数量降至最小的优化问题中表现出了“最优子结构”(optimal substructure)特性,也就是说,组合后run的权值可以从两个sub-run中得到。
我们的目标是,从最少的组合run中得到输出编码数据包,并且要保证我们所发送出去的信息是最新的(innovative)。这样,我们就可以按照如下公式计算组合run的权值了:

其中,f(C )表示如下:

直观地看,函数f(C )表明,如果组合run C 相对于先前已发送的run不是最新的,那么它的权值就是这个组合run中所包含的符号数;如果这个组合run相对于已发送的run是最新的,那么它的权值就是描述它所需的字节数。这就需要描述这个组合run的开始(start )和结尾(end),我们可以用(2 log S)/8个字节来表示,其中S是数据包的大小;我们还要使用K个字节描述这个组合run的编码向量,其中K为相应batch的大小。方程2的作用是检查是否可以将C 分成两个更小的run(run越小相应权值也越小),如果可以,它将寻求最优的方式将其分成两个小run。
转发者使用一张表记录各权值,然后自顶向下进行动态规划。因为算法要结合朴素编码数据包中的run,这张表的表目最多是待组合的run的数目。算法的最坏复杂度为O(L ),但实际上它比下面的试探法要快。在方程2中,如果C 是最新的,我们并不需要检查它是否可以分解,因为f(C )总是比两个sub run要低,而两个sub run的权值至少为2 f(C )。一般来说,对一个L≈15-20的数据包实行动态规划DP所花的时间是低于一个毫秒的。

7. [/b]拥塞感知([/b]Congestion-Aware[/b])转发[/b][/b]
一因为无线是个广播的媒介,所以一般下游会有多个路由器侦听到没有任何错误的符号。对每个符号来说,最理想的情况是由到目的端路径质量最优的下游转发者来转发这些符号(在编码之后)。比如,图6(a)中,路由器R1和R2侦听到了从S1发送的所有符号。R2应该是转发这些符号的转发者,因为它可以更少的发送量将这些符号传递到目的端。

路径质量不是判定的唯一标准,因为最终的衡量标准是一个符号到达目的端所花费的时间。如果一个路径质量很好(按照出错率低进行衡量),但是却又很长的转发队列,那么这不是一条好的路径。图6(b)的例子表明,一条正被R2转发的二次流(second flow)导致了R2队列的增长,所以将其中的部分流量(traffic)交由R1进行转发将提高性能,并避免在R2上产生瓶颈。
这样的需求预示着下面的方法:一个节点可以根据下游转发者的状况来决定如何转发。第一,对每条路径(经过一个下游节点),都要检查它成功发送一个符号所期望的时间。我们称这个时间为C-ETS(因为“congestion-aware ETS”),这个时间结合了路径质量和节点队列长度(备用)。经过一个下游节点i到达目的端d的C-ETS的计算如下:C-ETS(i,d)=PQ(i,d)+kQ(i),这里,PQ是从i到d的路径质量,它取决于符号的传递概率和在无队列轮候的情况下传递一个符号到目的端所用的时间。在我们的实现中,使用的是ETS度量(定义为传输一个符号所需要次数的期望值)来近似表示PQ,而没有使用更精确的公式以及优化的路由来计算这个传输次数期望值。Q(i)是在节点i上排队且未被发送的所有流(flow)中的符号(备用)的总数。(k是取决于传输一个符号所花时间的常因数)。
现在我们来讨论一个节点如何决策它队列上符号的数量Q(i,f),(因为网络编码的随机性,我们不必担心下游节点会发送完全相同的信息。)好的想法是选择C-ETS值小的节点,但同时要给每个下游节点分配一定的职责,因为没有哪条链路或路径是无损的(loss-free)的。每个节点通过给其下游节点分配信用度(credit)来分配职责。当下游节点接收到从该节点发送的数据时,下游节点转发属于这条流的符号的几率决定其信用度。C-ETS最优的下游节点的信用度为1,次优的为(1-p1),其中p1是这个符号被传递到最优的下游节点的概率,最优节点的下一个节点的信用度为(1-p1)(1-p2),依次类推。我们所期望的就是,最优的下游节点发送它侦听到的所有符号,次优节点只转发最优节点所没有侦听到的符号,如此等等,直到最差节点的所有下游邻居节点都有一些转发任务。
节点的传输量应为多少呢?答案是,足以保证每个排队的符号都能以一个低C-ETS值到达某节点。如果符号被传递到下游邻居节点j的几率为p ,那么某下游邻居节点收到任意给定符号的概率P= 。由上可知,每个排队符号都要被发送出去的batch编码后的符号数量等于(在下游节点收到之前)1/(1-P)。为此目的,每个节点为每个流(per-flow)都维持一个递减的计数器Transmit_Counter,当其值减以上为0时就停止传输。
以上过程如算法1所示:

分布式协议(Distributed protocol):节点i通过探针(probes)为每个邻居节点测量其传输概率p(i,j)。这些概率通过链路状态协议(link state protocol)散步到各邻居节点。节点i所传输的数据包的头部中包含了为每个下游节点计算出的信用度credit_assgn。当下游节点收到一个数据包时,它就根据头部中的信息更新对应流的Q(i,f)。进而,节点i所传输的数据包都在头部中包含了到相应目的端的C-ETS值。上游节点若侦听到此数据包,将在信用度分配程序(credit assignment procedure)中使用这个C-ETS值。
上面的算法从两个方面改进了基于机会路由协议(如MORE)的路由算法:第一,我们使用队列备用信息以精确地避免拥塞点(congested spots)并平衡网络带宽负载(network-wide load),而以往都是忽略拥塞的。第二,我们的算法是符号级的,这个粒度正好适合于对符号进行机会路由。从本质上说,这个算法类似于后压(back-pressure)思想,但是具体技术有所不同并且更简单。我们将在§11中进行此算法的实现和评估。

8. [/b]增加并发性[/b][/b]
当前的无线网状网仅在确定传递数据包到期望中的下一跳的概率很高时,才允许节点传输这个数据包。但是MIXIT却放宽了这个限制:
1. MIXIT并不要求所传输的数据包完全正确,部分正确的数据包也是允许的。
2. 由于有着机会路由的本质,MIXIT所需要的是保证每个符号发送到比传输者离目标端更近的节点上,它并不需要保证一个具体节点收到正确的符号。
MIXIT利用上述灵活性,在不影响端到端可靠性的情况下增加了并发性,更具流水线性质的传输模式提高了吞吐率。MIXIT的并发性设计有两个组成部分:检查何时进行并发传输是有利的,以及构建一个分布式协议以利用并发机会。下面我们分别介绍这两部分。

8.1 [/b]两节点何时进行并发传输?[/b]
类似于冲突地图(conflict maps),MIXIT预测并发传输的吞吐率并与节点分别传输的吞吐率做对比,然后才决定两个节点是否并发传输。节点按照吞吐率独立选择传输策略。具体来说,假如两个节点n1,n2传输具两条流(flow)l和k的数据包,Ne(n1,l)和Ne(n2,k)是n1和n2相应于两条流所对应的下游节点集。符号在链路上传输的概率取决于两节点是否并发传输。设 是两节点并发传输时符号在链路(i,j)上传递的概率, 是非并发传输时的概率。在并发传输和非并发传输的情况下,节点n1传输流l的符号传递似然(symbol delivery likelihood)分别为:

符号传递似然是在节点n1传输符号时,Ne(n1,l)中至少有一个节点正确接受的概率。符号传递似然依赖于其他并发流量(traffic),它可能会因n1与n2传输的相互干扰而不同。类似地,n2也能计算出两种情况下的符号传递似然。
于是,每个节点的并发传输条件为满足:

上述方程比较了两种调度策略下的总体传递似然。如果上述条件成立,则表示并发传输时每个时隙所传递的信息多于分别传输。每个节点按照上式独立地决定其传输策略。

8.2 [/b]估计符号传递概率[/b]
上述并发条件取决于符号传递概率。按照以往经验,计算所有这些并发传输对(pairs of concurrent transmissions)概率的复杂度为O( ),其中N是节点总数。MIXIT并非如此,它使用复杂度为O(N)的经验信噪比(empirical signal-to-noise ratio,SNR)来预测这些并发传输集(set of concurrent transmission)概率,其过程如下:
1. 测量网络的信噪比谱(SNR profile)是在流量很小时进行的。N个节点轮流广播探测包(probe packet),同时其他的节点计算所收到的SNR及正确接收符号的比例。测量结果形如SNR(i,j)和p(x),其中SNR(i,j)是节点i传输时节点j所接收的信噪比SNR,p(x)是当SNR为x时所接收的正确符号比例。
2. 节点使用信噪比谱(SNR profile)预测任意节点在并发传输时的SINR(signal-to-interference+noise)。具体来说,如果节点n1和n2并发传输,那么在节点m的SINR计算如下:SNR(n1,n2,m)=SNR(n1,m) -SNR(n2,m)(SNR(n1,m)>SNR(n2,m)≧c),其中c是SNR门限值,低于门限值时符号将无法解码。于是,符号传递概率等于p(SINR(n1,n2,m)),相对于节点m以SINR(n1,n2,m)的信噪比SNR接收信号。
图7使用上述模型绘出了预测错误的CDF。这个结果来自具USRP前端的25节点GNU无线软件实验平台,实验中两个发送者并发传输802.15.4数据包。图7证明了我们的预测模型是非常准确的,其中的不准确预测的SINR低于4dB。但是因为低SINR的符号传递概率是极小的,所以在低SINR区域中发生的不准确预测并不会影响性能。以往的提案往往是试图使用SINR模型预测数据包传递率,而MIXIT模型却是预测符号传递似然。后者更简单,因为数据包传递是错误率、干扰性等的复值函数。最后,并发性条件是个二元判定,即使预测的概率微乎其微,它也不可能影响判定。

8.3 [/b]分布式信道接入协议[/b]
当一个节点有传输队列数据包时,它将实施下面两个步骤:第一,如果节点没有侦听到正在传输的数据,那么它将进行传输。如果侦听到有数据正在传输,那么它将使用方程5检查它应该并发传输,还是等待当前数据传输完毕后再传输。
一个节点如何即时得知有其他哪些节点正在传输?类似于以往的成果,MIXIT囊括了带有头部和尾部的所有数据包。头部包含了正在进行传输的节点的唯一标识以及这个数据包所属的流(flow)。其他侦听到这个数据包的节点使用这个头部识别一个活动传输(active transmission)的开始,尾部表示结束。

9. [/b]纠错[/b][/b]
直到现在我们只关注将洁净符号传递到目的端,而忽略了洁净符号和正确符号之间的区别。但是,洁净符号也可能不正确,更有甚者,一个出错的符号被错误地归类于洁净,会因网络编码而可能破坏其他洁净且正确的符号。于是,目的端收到的所有符号都可能因一个洁净但错误的符号而被破坏。幸运的是,MIXIT具备纠错能力,目的端可以恢复出原始的正确符号。即使接收到的所有符号都遭到破坏,纠错码也不会受影响;唯一重要的是有多少错误符号被错误地归类于洁净。我们的编码保证了如果有m个出错符号被归类于洁净,那么目的端只需B+2m个符号就能恢复出原始的B个符号,这是理论最优的。编码是简单的、无比率的且是端到端的;网络内的路由器是忽略纠错码的。
随机网络编码是向量空间保持的(vector space preserving),MIXIT的纠错码正是建立在这个基础之上的。具体来说,如果我们对源端所注入的原始数据进行建模,并将其作为向量空间V的基,那么随机网络编码只是在此向量空间上做线性变换T。如果没有错误发生,那么向量空间就仅作线性变换;如果有错误发生,那么所接收到的向量空间U也非常接近于传输向量空间V,并小于向量空间上所定义的距离度量。
最近的工作已经研究了对拜占庭攻击性注入所破坏的数据包有弹性的网络编码这样的问题。低复杂度的MRD(Maximum Rank Distance)编码稍加修改便可应用于向量空间监测(vector space observation)和纠错。MIXIT中的网络编码虽然与此不同,但MIXIT的符号级网络编码中仍然有着MRD中的基本算法思想。图8展示了MRD融入到MIXIT的高级体系结构。MRD编码的解码细节可参考文献[23,21,3],我们这里概况一下主要的不同点:
l 符号级网络编码和端到端MRD编码函数一起构成了纠错码。目的端一旦收到B(<K)个编码符号,它就试图解码出那个位置的原始数据向量 。如果没有错误符号渗漏过去,那么目的端就可以恢复出原始的正确数据。否则,它就等待接收到更多的编码符号直到能够解码。这样的编码就保证了如果有m个错误符号被错误地归类于洁净并渗漏过去,那么目的端可以在接收到B+2m个编码符号时就能够解码。
l MIXIT的无比率编码提供了灵活并且可靠的语义。因为编码是对B个符号所组成的组进行的,组间共享就变得不可能了。可能的情况是,当目的端收到几个数据包时,它将对B个符号的组进行解码,大多都能正确解码,但错误太多的部分是不能解码的。取决于应用,目的端等待接收更多的编码符号直到能够解码,或者可以忽略那些无法解码的符号并发送batch-ack到源端以通知其开始传递下一个batch。

10. [/b]实现[/b][/b]

10.1 [/b]数据包格式[/b]
MIXIT对每个包插入一个可变长的头部,如图9所示。头部也可复制并放于数据包的
末端作为尾部,以改进冲突中的传递。头部中包含了源端和目的端的地址、流的唯一标识以及batch的唯一标识。其后是一个变长的编码向量块(Code Vector Block),描述了包中相应符号是如何产生的。编码向量块的格式为(Code Vector,Run Start,Run End),其中的值通过§6.2中的算法获得。然后是变长的转发者块(Forwarder Block),其中按C-ETS值列出了此节点的所有邻居节点。头部中还包含了每个邻居节点的信用度分配值(如§7中所述)。编码向量块和转发者块都是转发者计算和更新的。包中其它部分都是由源端初始化,转发者只是简单的拷贝即可。

10.2 [/b]节点状态[/b]
每个MIXIT节点维护着每条流(flow)的状态,它们在一条流的第一个包到达时进行初始化,流中的邻居块(Neighbor Block)包含着节点ID。每条流的状态包括:
l Batch-buffer,为每个batch存储所接收的洁净符号。这个缓冲区最大为K×S,其中K是这个batch的大小,S是相应包的大小。
l Credit_counter,其中存储着上游邻居节点对该batch为该节点所分配的信用度数。一个带有更高C-ETS值节点所发送的数据包一旦到达,该节点就按照包头中的信息增加相应的信用度。
l Transmit_counter, 它将按照§7中的信用度分配算法进行递增。一个数据包传输后,其值减1。

10.3 [/b]流控(Control Flow[/b])[/b]

MIXIT的流控对应于数据包的接收。在接收端,无论数据包何时到达,该节点都会检查它的ID是否在转发者块中。如果在,它就根据转发者块中的信用度分配值为流中相应的batch更新credit_counter,然后,该节点使用SoftPHY hints从接收的数据包中挑选出洁净符号并且加入到batch_buffer中。如果信用度大于1,它将使用§7中的信用度分配算法,然后使用§6.2中的技术产生transmit_counter编码数据包并且将其入队。数据包在MAC层的传输使用§8.1中所讨论的规则。
当目的节点接收一个数据包时,它将检查至少接收B个编码符号的符号位置,并且对其解码。它在解码出所需部分的原始符号时(取决于应用的可靠性需求),就发送一个batch_ack给源端。Batch_ack进行周期性地发送,直到下一个batch开始到达。

11. [/b]评估[/b][/b]

我们将MIXIT与另外的两种无线网状网路由协议进行比较,其中MORE是一种成熟的机会路由协议,另一个协议SPR,是普遍采用的ETX度量的单路径路由协议。表1概况了我们实验的结果。

实验
章节结果
低负载网络中的MIXIT11.2.1MIXIT的中值吞吐率是MORE的2.1倍,是SPR的2.9倍
并发性影响11.2.2MIXIT放宽了对包传递的限制,增加了并发性
符号级差异性影响11.2.2普通载波监听的MIXIT性能比MORE优1.5倍
错误率门限影响11.2.3MIXIT的纠错码运行我们在错误率方面更灵活。减少了正确符号被标记为脏的可能性并增加了吞吐率
Batch大小影响11.2.4MIXIT与batch大小关系不大,对大小为8的batch提供了大的增益
拥塞下的MIXIT11.3.1MIXIT的中值吞吐率是MORE的2.8倍,是SPR的3.9倍
转发算法的影响11.3.2MIXIT的拥塞感知转发避免了热点并且防止了拥塞时网络容量的下降
表1:本文主要的实验贡献[/b]
[/b]
11.1 [/b]实验平台[/b]
[/b]我们在实验室里使用了25节点的室内实验平台。每个节点都是一个ZigBee软件无线电(Zigbee software radio)。节点的硬件部分是一个带2.4GHz子版(daughterboard)的通用软件无线电外围(Universal Software Radio Peripheral),节点的剩余功能(解调、信道解码、网络编码等等)通过软件实现。没有其他传输进行时的链路数据传输峰值速率为250Kb/s。节点之间的路径长度为1到5跳,链路的信噪比为5~30dB。我们的网络链路上平均包丢失率为23%(数据包大小为1500字节)。

11.2 [/b]单流(Single Flow[/b])[/b]
11.2.1[/b]吞吐率比较[/b]
方法:我们在实验平台上随机选择了120对源-目的对,然后依次运行SPR,MORE和MIXIT。每次运行都是传输5MB的文件,MIXIT的batch大小为12,但是纠错预处理阶段将其分为16个数据包,如§9中所述。为公平起见,MORE使用16个数据包的batch。在没有特别声明的情况下,其他实验中的MIXIT和MORE的batch大小均相同。三个协议中的数据包大小均为1500B。没有特别声明的情况下,MIXIT的错误率γ调整到5%,并且MIXIT的符号大小为6字节。在实验进行之前,我们收集一些测量数据以计算数据包两两传递的概率,这个概率将在SPR和MORE中的路由计算中使用,MIXIT也要使用同样的测量数据包计算网络的信噪比谱(SNR profile),见§8所述。我们对每个源-目的对重复五次,并且对每种方案都报告平均吞吐率。
结果:从实验平台上超过120对源-目的对的实验结果,我们绘出了CDF与吞吐率的关系图,如图10所示。MIXIT的中值吞吐率(median throughput)比MORE高2.1倍,比SPR高2.9倍。

我们注意到,MIXIT在整个吞吐率范围中都提高了性能。基于数据包的机会路由协议(比如MORE)在死点(dead spots)提供了很大的吞吐增益,也就是说,在源端和目的端所有的路径质量都不好的情形下,高质量路径的增益相对较小。MORE和ExOR都在数据包级利用了分集(diversity)从多个坏链路上建立更高质量的链路。但是,对通过好链路连接的源-目的对来说,分集(diversity)并不起作用。一个很自然的问题是,MIXIT的增益是基于包的机会路由协议的作用呢?还是并发的作用呢?下节我们将讨论这个问题。

11.2.2[/b]MIXIT[/b]的吞吐增益来自哪里?[/b]
MIXIT同时利用了无线分集和并发传输,我们将测量每部分对吞吐增益的贡献。
方法:首先,我们将MIXIT与MORE-C做比较,其中MORE-C是MORE的修改版,它能够在数据包级利用并发性。像MORE一样,MORE-C仍然使用基于数据包的机会路由,但是MORE-C却运行节点进行并发传输。为检查是否可以进行并发传输,MORE-C使用与MIXIT同样的算法,如§8所述,只不过之后使用包传递概率代替了符号传递概率。

结果:图11绘出了MIXIT,MORE和MORE-C中的CDF与吞吐率的关系,使用的仍然是与前面同样的源-目的对。MIXIT的中值吞吐率(median throughout)比MORE-C高1.7倍。主要的结论是,即使与像MORE-C这样同时具分集和并发性的协议进行比较,MIXIT仍然优越了很多。MIXIT比MORE-C唯一所多出的特性就是工作在符号级。1.7倍的中值增益(median gain)难道主要归功于MIXIT利用洁净符号的能力?也就是,符号级分集是MIXIT吞吐增益的主要贡献者么?
方法:为回答上述问题,我们使MIXIT不使用并发传输,而只用普通的载波监听,目的就是限制其因在洁净符号上实行机会路由所产生的高于MORE部分的增益。我们把这个版本称作MIXIT-CS。

结果:图12绘出了MIXIT、MIXIT-CS和MORE中CDF与吞吐率的关系。MIXIT-CS的中值吞吐率比MORE高1.5倍,也就是说,比MIXIT少了很多。于是,符号级分集不是MIXIT吞吐率增益的主要贡献者。更进一步,将图11与图12进行比较后可知,MIXIT比MORE高的全部增益约等于MIXIT-CS比MORE高的增益与MORE-C高于MORE的增益之积,即1.5×1.4=2.1。这个倍数效应是并发性与符号级机会路由的相互作用的结果;并发性是最大限度地利用传输媒介,但是却因此增加了符号错误率平;而当符号错误率变得很高时,几乎每个数据包中都包含一些错误,导致了整个数据包被丢弃。因此,在数据包级协议上开发并发性天生就有缺陷。只有能把不正确符号过滤掉的协议才能突破并发性所带来的限制。

11.2.3[/b]让更多错误通过所带来的影响[/b]

方法:我们对洁净符号分类的门限值如何影响吞吐率进行了评估。正如§5所解释的,MIXIT有选择错误率门限值γ的灵活性,我们对多个错误率比较了它们的平均吞吐率。对ZigBee协议来说,物理符号是4比特,MIXIT符号是6字节。
结果:图13绘出了不同错误率下对所有的源-目的对的平均吞吐率。出人意料的是,这个平均吞吐率随着让更多错误通过而增加!当错误率为5%左右是达到了峰值,随后下降。
这看来不符合常理,但是请注意,我们所讨论的是错误的概率;如果路由器能确定地知道哪些物理符号是错误的,它最好的做法就是丢弃这些物理符号。但是一个物理符号有5%错误的可能,也有95%正确的可能。对我们的拓扑结构来说,5%的错误率时,进行端到端纠错的代价正好平衡了把正确符号传递到下一跳的机会,这就使得吞吐率达到了最大。
错误率门限值大小取决于具体的网络。我们假设由管理员指定网络的这个参数,但像30%这样高的错误率对任何网络都没有任何意义。实验结果说明,更多的选择有利于高的吞吐率并且优于基于包的机会路由。

11.2.4[/b]Batch[/b]大小的影响[/b]
下面我们评估MIXIT对batch大小是否敏感。图14绘出了batch大小为8、12、16和32是的吞吐率。

吞吐率对batch大小一点也不敏感。较小的batch的丢包主要是因为较大的开销。更大的batch运行MIXIT将开销分摊到更多的数据包上,增加了吞吐率。由于对batch大小不敏感,MIXIT就可以根据传输数据大小调整batch大小。对于大于8个包的传输,MIXIT显示了极大的优势,而短些的传输可以使用传统路由发送。

11.3 [/b]多流(Multiple Flow[/b])[/b]
11.3.1[/b]吞吐率比较[/b]
方法:我们依次运行MIXIT、MORE和SPR,并随机选取若干条网络中激活的流(active flow)。建立的其他部分与单流的情况很类似。我们对每种数量的流都运行50次实验,每个实验都重复5次。我们为每次运行计算平均吞吐率。

结果:图15绘出了当流数量增加时,MIXIT、MORE和SPR的平均吞吐率。我们可以看到,MIXIT的吞吐增益总体上随着负载的增加而增加,直到它的峰值达到MORE的2.8倍、SPR的3.9倍。
当负载增加时,更多的增益来自MIXIT利用并发的能力和拥塞感知转发。在流的数量增加时,依赖载波监听的MORE和SPR在媒介接入时都变得很保守。这样,它们都不能在网络中充分利用空间分集(spatial diversity)。但是MIXIT却能保持高水平的并发性,因为它有处理部分正确数据包的能力。
当网络拥塞很严重时,吞吐率增益就有了轻微的下降,主要是因为隐藏终端(hidden terminals),并且USRP节点不支持同步应答(synchronous ack)使得问题更严重——USRP节点在PC上的用户模式下运行,这样它就不可能很快地探测到隐藏终端并退避。

11.3.2[/b]拥塞感知转发的影响[/b]
方法:我们将对MIXIT的拥塞感知转发部分在性能上的影响进行评估。由于备用参数Q(i)的使用(Q(i)是在节点i上排队待传输的符号数),节点拥塞成了MIXIT的路由算法的一部分。上游的父节点不会给备用的节点分配信用度,这样流量(traffic)就绕过了热点。我们将其与没有这部分功能的方案进行比较,具体来说,就是父节点对下游节点只按照路径质量进行信用度分配,也就是说,只参照路径的ETS值而忽略拥塞信息。我们称这个方案为MIXIT-NCA,因为它是进行“无拥塞感知”(No Congestion Aware)转发的MIXIT。

结果:图16绘出了流数量增加时,MIXIT和MIXIT-NCA的平均吞吐率。结果表明,高负载情况下的拥塞感知转发占到了吞吐率增益的30%。当负载增加时,网络出现本地热点增加现象的概率也增大了。MIXIT-NCA不会绕开这些热点,而是不管是不是拥塞,继续传输同样的信息量;而MIXIT能适时地绕开这些热点,因此增加了吞吐率。

12. [/b]结论[/b][/b]
MIXIT的一个关键点就是,路由器并不需要转发完全正确的数据包以达到端到端的可靠性,放宽这点的限制可以极大地提高网络吞吐率。在MIXIT中,只要传输的数据包中的每个符号都被下游的某个节点正确地接收到,这个包就很有可能被目的端正确接收。设计具有这种性质的网络并不容易,因为要能可扩展地协调所接收到的重叠符号,还要能防止错误符号的传播。MIXIT使用符号级的网络编码解决了这些问题,并且具有端到端的无比率纠错组件。
MIXIT把整个无线网络看作是个逻辑信道,并且这个信道的组成链路允许高错误率,而不再使用链路层错误检测和恢复。由于MIXIT可以处理逐个链路的高错误率,所以它允许主动MAC协议(aggressive MAC protocol),比CSMA极大地增加了并发性。
虽然MIXIT利用了跨层信息,但它的体系结构仍然是模块化和分层的:它可以运行于任何的无线电或其他能提供合适置信度hints(confidence hints)的物理媒介之上,并且它的路由器不会处理端到端纠错码。因所用的PHY和MAC不同,所获得的增益也可能不同,但是它可以用在任何具有以下性质的无线多跳网中:
1. 计算能力:MIXIT的编码/解码算法比传统的存储转发式网络的要求更高。在我们基于软件无线电(software radio)的概念证明式(proof-of-concept)软件实现中,我们的算法最好可以达到4.7Mb/s的吞吐率。在文献[9]中,我们使用移位寄存器做了硬件实现,与传统的RS(Reed-Solomon)硬件解码器类似。因为现在的RS解码器可以达到80Gb/s,我们相信计算上的问题不会影响我们的算法在高数据率(high data rates)方面的应用。
2. 存储:MIXIT的节点需要存储最近batch中的包。默认的batch大小为16,传输中的batch一般是2到3个,这就需要存储空间为70KB左右,这是现代硬件通信的最适宜大小。
MIXIT中的思想还可以用在传感器网络中对汇聚节点(sink node)的数据传送。因为这些网络中流量大多都是单向的,不同传感器的数据可以共同编码以提高吞吐率。MIXIT还可以用在网状网的组播上,因为所有的目的端都需要同样的数据,路由器可以一直传输编码数据,直到所有的目的端都能对其进行解码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: