3.2 COPE基本思想
COPE协议服务于无线网状网络。它使用网络编码来处理单播传输。此协议假设没有同步,或者事先不知道发送端,接收端以及传输率,而这三者可以随时改变。解决方法的主要特征是机会主义:每一个节点依赖于本地信息来侦察并且开发使用这些可能任何时候出现的编码机会。COPE就是在MAC和IP间插入一个编码层,利用各种信息尽可能地在一次传输中混合多个包。主要技术有三:
1)机遇侦听(opportunistic listening):无线是一种广播媒介,给节点创造了许多接收数据包的机会,即使这些节点并非为此设置的接收端。我们让网络中的节点在有限的时间T内存储所有接收到的数据包。为了利益最大化,T应该比最大的数据潜伏期要长,而这潜伏期通常在数十毫秒。我们称这种功能为机遇侦听。除此以外,每一个节点会向其他的相邻节点广播接收报告,告知它所存储的数据包信息。而接收报告是通过注解节点所传送的数据来实现。一个在某时期内没有数据包传送的节点会以特殊的控制封包来发送接收报告。
由于无线网络中的节点具有广播的性质,如下图3-2所示,在距离该节点的一定的半径范围内的节点都能够接收到它发出的包,即使这个数据包并不是发给它的,COPE则假设网络中的节点能够侦听到其他节点发出的包,称之为“随机侦听”,即机遇侦听。每一个节点都设有一个缓冲池,用来存储有限时间T内所接收到的数据包,包括由上一站节点发送的数据包和随机侦听到的数据包。
图3-2 无线网络节点传输半径
COPE中的节点在随机侦听到其它节点发送的数据包后,将数据包送入节点的缓冲池中,同时向其它节点发送“接收报告”,接收报告中表明缓冲池中已收到的数据包的情况。接收报告一般是在节点向其它节点发送数据包时附加在数据包上的,所以它并未占用额外的传输带宽,而当这个节点没有数据包待发送时,就定时发送一些空的数据包其中附加上自身节点的“状态报告”。这样就使得网络中的节点都具有其邻节点的缓冲池中的数据包的状态报告。
COPE将所有节点的网卡设会混杂模式,存储在T时间(默认0.5s)内偷听到的所有包。所有节点会广播自己的接收报告(reception reports),告诉邻居自己自己所存的包有哪些。接收报告一般是附属在数据包上的,如果没有数据发送,也会周期性地广播控制包。
2)机遇编码(opportunistic coding):COPE协议主要需解决的问题是,什么数据包用来编码,怎么编码?每一个节点应该在本地信息的基础上解决这个问题,且不需要和其他节点联系。在当前的无线应用中,每一个节点以先进先出来处理每一个将要传送的数据包。当MAC指示节点可以发送数据包时,节点会挑选每个序列最前面的数据包,检查在本序列中是否有其他数据包和这个数据包编码,XOR这些数据包,然后广播出异或后的数据包。
无线网络中的每个节点都存有一个FIFO的数据包发送队列,当MAC层通知该节点可以发送数据包时,节点从队列中取队列的第一个数据包然后检测其余的数据包中是否有能够一起编码发送的数据包,然后发送异或后的数据包。因此,关键的问题就是,该如何选取能一同编码的数据包,即把哪些包XOR到一起可以达到最大的吞吐。一个节点在发送的时候,需要最大化一次传输中本地包的数量(从后面的工程上的种种近似可以看到,作者并没有达到这个准则),并且要保证下一跳集中的每个节点都能够解码。每个节点的发送队列中的数据包能以任意的一种方式组合,因此COPE必须选择一种最优的组合方式,使得能尽最大可能地压缩数据包,并且以一个很大的概率保证它的接收节点有足够的信息能够成功地恢复原始数据包。 基于NS2的COPE编码机制实现仿真(7):http://www.youerw.com/jisuanji/lunwen_7272.html