一种航空移动通信中TCP网络编码方法
2012-07-31宋扬,徐桢
宋 扬,徐 桢
(北京航空航天大学电子信息工程学院,北京 100083)
在航空移动通信中为用户提供语音和数据移动通信业务在技术上已经日趋成熟,需求也在不断增加。由于飞机的高速移动性带来的大多普勒频移和航空移动通信环境的复杂性造成了非常高的随机误码和突发误码。
TCP协议提供端到端的可靠传输,主要适用低误码率的环境。在高误码的航空移动通信系统中,现有的TCP协议性能急剧下降。因为地面网络有极低的误码率,传统TCP将所有的丢包都认为是拥塞造成的,而在移动的飞机通信中存在高随机误码和突发误码,如果将误码丢包作为拥塞进行处理,势必造成数据发送速率频繁减小,严重影响吞吐量[1],所以高误码率是必须克服的问题。
网络编码[2]技术2000首次提出,极大地提高了有线网络的吞吐量和可靠性,随后新的网络编码算法(如随机线性网络编码[2],应用于实际的网络编码方法如COPE[4])大量涌现。
J.K.Sundararajan等人在2009年首先提出了适应TCP传输的网络编码协议TCP/NC[5],该协议巧妙利用了编码数据的无差异性,大大提高了TCP在无线环境中的性能。然而,该协议不能直接应用到航空移动通信领域,因为协议的成功实现需要依赖与对丢包率进行准确估计,这在航空移动通信高随机误码和突发误码的环境中很难实现。鉴于这种局限性,本文提出了一种具有丢失感知的TCP编码方法,通过接收端反馈丢失信息:第一,避免对链路丢包率的估计;第二,使编码包丢失与冗余添加取得同步,防止无效冗余的出现,从而节约带宽,提高吞吐量;第三,及时的冗余补齐,获得比TCP/NC更低的解码等待时延。
1 TCP/NC的基本思想和分析
1.1 TCP/NC基本规则
TCP/NC的主要思想是在TCP层和IP层之间添加一个网络编码层,具体操作参见文献[6]。为了获得更好的兼容性,选择TCP-Vegas[7-8]作为传输层协议。
1.2 TCP/NC协议分析
为确保编解码操作成功实现,TCP/NC协议需要对端到端丢包率做出较为准确的估计。假定端到端丢包率为pe,冗余因子理论最优R=1/(1-pe)。而由于航空移动通信的随机误码和突发误码,导致pe的估计异常困难,冗余因子选择对传输性能至关重要,选择较小就无法掩盖丢失,选择较大又会造成冗余的浪费,两者都会造成协议性能下降。因此,这种冗余添加方式并不适用于航空移动通信。
2 具有丢失感知的网络编码方法
2.1 方法主要内容
本文提出了一种具有有丢失感知的改进编码方法TCP/NCLA。方法通过接收端反馈丢失信息的方法,使发送端可以针对性的发送冗余编码包来补齐丢失,消除了原协议冗余发送与数据包丢失不同步所带来的矛盾。通过这种方式,避免了对链路丢失概率的估计,可以更好的适应随时变化的网络状况,避免了盲目发送冗余数据包导致的带宽的浪费,提高传输性能。下面介绍对编码包包头的修改。
新方法修改了部分条目,并为与新编码方法相关的条目分配了空间。包括数据包传输原因(TX_REASON),其中TX_REASON=0代表正常传输,TX_REASON=1代表由于超时而重传,TX_REASON=2代表由于收到重复ACK而重传;编码窗口base(TX_BASE),即编码窗口中最早的数据包的序列号值;编码窗口大小(ENCODED NUM),即编码窗口中原始数据包的个数;编码系数向量 (CODING COEFFICIENT VECTOR),即在有限域 GF(28)中随机产生的编码系数[4],每个系数占用1个字节,最大可存储12个编码向量,即最多编码12个数据包;与ACK包相关的丢失标志(TCP_FLAG),其中TCP_FLAG=1标志存在丢失,需要发送冗余编码包;删除标志(DELETE_FLAG),其中DELETE_FLAG=1标志解码成功,可以删除编码窗口中已解码原始数据包等。如图1,左边为TCP包头,右边为修改后的编码包头。
图1 TCP包头和修改的TCP/NCLA包头Fig.1 Header structure of TCP and NC layers
2.2 伪码算法描述
发送端:发送端需要回应2种类型的事件—TCP层到达的数据包和IP层到达的ACKs包。
1)等待状态
如果以下的事件发生,则按照如下规则进行响应;否则,保持等待状态。
2)TCP到达数据包
a.如果到达的是用于连接管理的控制包,则将控制包传输给IP层并返回等待状态。如果到达的数据包TX_REASON为0,则将数据包加入编码窗口。
b.重复以下步骤TCP_FLAG+1次:
产生编码窗口中数据包的线性联合;添加编码包头,即随机线性编码包所对应的编码向量,编码包中编码的原始数据包的个数ENCODED_NUM以及TX_BASE;将编码包发送到IP层,记录当前传输时间。
c.如果到达的数据包的传输原因TX_REASON为1或2,则重复以上步骤一次。
d.如果发送编码包时,编码窗口大小超出了事先设定的阈值T,再次重复以上步骤。
e.返回等待状态。
3)从IP层到达ACK包
移除ACK包编码包头,提取标志位DELETE_FLAG和TCP_FLAG;若DELETE_FLAG=1,删除编码窗口中已解码的原始数据包;更新当前接收时间,向TCP提交ACK包;返回等待状态。
接收端:接收端需要回应两种类型的事件—IP层到达的数据包和TCP sink到达的ACKs。
1)设置接收矩阵的秩
Rank:=0,接收端本地base值初试化。
2)等待状态
如果以下的事件发生,则按照如下规则进行响应;否则,保持等待状态。
3)从TCP sink到达的ACK包
如果ACK包是用于连接管理的控制包,则将控制包传输给IP层,然后返回等待状态。否则忽略该ACK。
4)从发送端到达数据包
a.移除编码包头,提取编码系数向量,加入解码矩阵作为新一行,对解码矩阵进行高斯消去法,更新矩阵的秩Rank;提取TX_BASE值,并更新本地base;提取ENCODED_NUM。
b.如果编码包是更新的,Rank=Rank+1。
c.产生一个新的ACK,序列号为最新一个可见的数据包的序列号;如果ENCODED_NUM==Rank,表明当前解码窗口解码成功,DELETE_FLAG=1;如果ENCODED_NUM>Rank,表明传输过程中出现丢失,设置TCP_FLAG=1。
d.如果编码包是非更新的,则表明该编码包为无效冗余或该编码包的编码向量与解码矩阵线性相关:若为第一种情况,则忽略不进行任何操作;若为后一种情况,则效果等同于该包丢失,设置TCP_FLAG=1。
e.对解码缓存区中的编码包进行解码,将解码出的原始数据包传递给TCP sink,最终返回等待状态。
2.3 方法完整性描述
为保证方法的完整性,还需要一些相应的适应性调整。
a.在传输过程中,回复的ACK可能出现丢失,而其中可能包含丢失信息,TCP对于丢失的ACK可能会判断为超时而重传。当编码窗口收到重传的原始数据包时,不会再将该数据包加入到编码窗口中,而是将编码窗口中的数据包线性联合发送一次。
b.接收端接收到编码包,提取编码向量加入到解码矩阵中,对矩阵进行高斯消去,若该编码包不是更新包(innovative packet),则按照出现丢失进行处理。
c.发送端编码窗口根据经验值选择一个窗口大小阈值T,当超过该值则自动添加冗余发送。该措施是为了防止出现ACK丢失可能造成的冗余不足。
2.4 TCP网络编码方法时延评价
对于TCP网络编码方法,由于网络编码产生的原始数据包解码等待时延是不可忽略的。接收端每当有数据包被看见则回复ACK,而从数据包被看见到能够解码会造成一定的时延,即解码等待时延,该时延对于网络编码方法是无法避免的,且直接影响到TCP端到端的投递时延。
本文采用原始数据包从产生时刻tis到解码矩阵满秩的时刻tid的平均值作为时延的评价指标。即原始数据包端到端平均投递时延
3 仿真实验
仿真性能分析是在NS2中实现的。仿真环境配置如下:仿真模型为飞机与地面基站直接通信,飞机距离基站 7 000 m;TCP 层使用的版本为 TCP-Vegas,Vegas参数选择α=3,β=5,γ=2;数据包大小1 000字节;链路缓存区大小设置为50个数据包;每次仿真的持续时间为300 s,仿真结果是运行至少10次取平均值得到的结果。
3.1 吞吐量性能分析
针对 TCP-Vegas,TCP/NC 和 TCP/NCLA 3 种 方法,本文研究了吞吐量随链路丢包率的变化情况。端到端的丢包率从0%~20%变化,如图2,显示了3种方法吞吐量的变化情况。
图2 吞吐量与端到端丢包率关系Fig.2 Throughput vs.loss rate end-to-end
通过仿真结果可以看出,TCP-Vegas随端到端丢包率的上升,吞吐量下降较快,说明TCP协议对于无线链路中的丢失比较敏感,丢失将直接导致发送端降低发送速率;在端到端丢包率较小时,TCP-Vegas的性能优于编码方法,原因是编码所造成的少许时延影响到传输性能,当丢失率进一步上升,两种编码方法与TCP-Vegas相比,吞吐量都有较大的提升;TCP/NCLA与TCP/NC相比吞吐量又有一定的提升,且随着链路丢失率的增加,优势更加明显,如当链路丢失率为20%时,吞吐量提高21.24%。新方法之所以会有吞吐量的提高,是因为它采取了丢失反馈的机制,避免了冗余的浪费;若发送端发送了冗余编码包,链路并未发生丢包,则接收端将它判断为无效冗余,该冗余并未起到传输新数据的作用,却占据了带宽,造成了带宽的浪费。
3.2 端到端平均投递时延分析
对于端到端平均投递时延,仿真结果如图3,两种编码方法都随着链路丢失率增加,端到端平均投递时延逐渐增加,原因是随着链路丢失率的增加,解码矩阵的秩逐渐增加,需要的解码等待时间也逐渐增加;TCP/NCLA与TCP/NC相比,端到端的平均投递时延相对较小,平均降低约25.48%,原因是新方法能够及时补齐丢失,而使解码矩阵的秩保持在较小的水平,从而使解码等待时延也较小,因而平均投递时延也较小。
图3 端到端平均投递时延与端到端丢包率关系Fig.3 Delivery delay vs.loss rate end-to-end
4 结语
本文基于TCP/NC协议提出了一种适用于航空移动通信的具有丢失感知的新方法TCP/NCLA。
1)新方法将TCP网络编码应用到航空移动通信领域,并根据航空移动通信的特点进行适应性调整,很大程度上改善了航空移动通信中高突发误码和高随机误码导致的吞吐量下降的问题。
2)新方法使用丢失反馈的方法,不再需要预知链路丢失率,在一定程度上解决了原方法由于包丢失与冗余添加的不同步性所导致的吞吐量与理论上限存在较大差距的缺陷。
3)改进后的方法使冗余添加更加及时,使解码等待时间大大缩短,从而缩短了端到端的平均投递时延。
TCP的网络编码方法要在实际中应用需要注意很多问题,TCP/NCLA在提高吞吐量和降低时延方面有所改善,然而还存在一些难题,如降低解码复杂度等,这些都是在以后的工作中重点研究的方向。
[1]HANBALI A AL,ALTMAN E,NAINP.A Survey of TCP Over ad Hoc Networks[J].IEEE Communications Surveys&Tutorials,2005,7(3):22-36.
[2]AHLSWEDE R,CAI N,LI S-Y R,et al.Network information flow[J].IEEE Trans Inform Theory,2000,46(4):12.4-1216.
[3]KATTI S,RAHUL H,HU W,et al.XORs in the air:Practical wireless network coding[J].ACM SIGCOMM Computer Communication Review,2006,36(4):243-254.
[4]SUNDARARAJAN J K,SHAH D,MEDARD M,et al.Network Coding Meets TCP[C].Proceedings of IEEE INFOCOM,2009.
[5]SUNDARARAJAN J K,JAKUBCZAK S,MEDARD M,et al.BARROS J.Interfacing Network Coding With TCP:An Implementation[C].Proceedings of IEEE INFOCOM,2010.
[6] BRAKMO L S,PETERSONL L.TCP Vegas:End to end congestion avoidance on a global internet[J].IEEE JSAC,1995,13(8):1465-1480.
[7]SHIHADA B,ZHANG Q,HO P-H,et al.A novel implementation of TCP Vegas for optical burst switched networks[J].Optical Switching and Networking,2010,7(3):115-126.
[8] Network Simulator-ns-2[EB/OL].[2012-05-08].http://www.isi.edu/nsnam/ns/.