基于卫星通信的TCP加速方法与流程

文档序号:17158452发布日期:2019-03-20 00:18阅读:1218来源:国知局
本发明涉及卫星通信技术,特别涉及卫星通信的tcp加速技术。
背景技术
::在卫星通信系统中,采用tcp协议传输数据时,卫星的时延往返为600ms,传输mtu为1500,那么它的理论最大速率为:这个是根据tcp协议在600ms来回的时延模型下计算出来的理论最大速率。卫星通信由于时延大,导致tcp传输速率上不去,即使带宽设为2m,tcp传输的速率依然在38kb/s左右,卫星带宽不能得到有效利用。为了解决上述问题,nasa提出了scps方案,其中的scps-tp协议就是一个tcp增强传输技术,它通过“欺骗”“代理”的手段在应用层面实现了scps-tp协议,该协议模拟tcp协议的传输技术,并在tcp的头部使用了扩展的options进行窗口扩大,rtt检测,快速重传等技术,解决了卫星网络tcp协议报文传输的速率瓶颈。然而,上述加速方案存在以下缺陷:1.scps-tp协议是基于tcp协议进行的改造,涉及到的技术原理非常多且复杂。2.tcp协议技术一直在更新优化,任何tcp协议变动都可能会影响scps-tp协议的稳定性和性能,故该方案的可维护性差,需要实时跟进tcp协议的变动。技术实现要素:本发明为解决现有卫星通信中tcp传输速率低,并且现有tcp加速方法复杂,可维护性差的技术问题,提供一种基于卫星通信的tcp加速方法。为解决上述技术问题,本发明采用的技术方案是:基于卫星通信的tcp加速方法,应用于卫星通信系统,所述卫星通信系统包括客户端、卫星、服务器和两个卫星猫,所述两个卫星猫分别为卫星猫一及卫星猫二,所述卫星猫一分别与客户端和卫星连接通信,卫星猫二分别与服务器和卫星连接通信;所述卫星猫包括以下处理步骤:步骤一、卫星猫通过iptables的dnat命令,在内核netfilter的prerouting链中将所有tcp报文的目的ip和目的端口转换为该卫星猫的ip和指定端口;步骤二、卫星猫开启tcp的socket监听该卫星猫的指定端口,并通过该指定端口接收tcp报文;步骤三、对于该指定端口接收到的任一tcp报文,卫星猫提取该tcp报文的源ip和源端口,并通过socket选项的so_original_dst提取该tcp报文的原目的ip和原目的端口;步骤四、卫星猫根据该接收到的tcp报文生成新tcp报文,然后获取并绑定本地空闲端口,向内核下发snat命令,在postrouting链中将新tcp报文的源ip和源端口替换为步骤三所提取到的该tcp报文的源ip和源端口;步骤五、卫星猫根据步骤三所提取到的该tcp报文的原目的ip和原目的端口,将新tcp报文发送到原目的ip和原目的端口对应的设备;基于卫星猫的处理步骤,通过设置卫星链路的tcp参数来提高卫星链路的传输性能。作为进一步优化,进行设置的卫星链路的tcp参数包括tcp_congestion_control。tcp_congestion_control用于设置卫星传输的拥塞算法。作为进一步优化,进行设置的卫星链路的tcp参数包括tcp_adv_win_scale。tcp_adv_win_scale用于设置窗口扩展。作为进一步优化,进行设置的卫星链路的tcp参数包括tcp_app_win。tcp_app_win用于设置应用层窗口。有益效果是:本方法结合linux内核的tcp协议,通过使用linux内核中netfilter技术,拦截tcp报文,snat还原源ip端口等手段,在卫星猫上实现了tcp报文的透明代理功能,代理前后源ip、目的ip、源端口和目的端口都不变,成功的“欺骗”了客户端和服务器,将客户端到服务器的tcp连接分为了3段,再通过对卫星链路对应的tcp参数进行调优,使之更适应卫星的传输特性。实现了在用户层通过tcp透明代理技术,增大传输窗口,加大传输缓存,从而提高了tcp传输速率,提高卫星带宽使用效率,相对于现有技术本发明的技术方案更简单,容易开发,并且本发明不随tcp协议的更新而更新,可维护性高。本发明特别适用于卫星通信系统。附图说明图1是本发明实施例的卫星通信系统结构图。具体实施方式下面结合附图和实施例,进一步说明本发明的技术方案。本发明的技术方案是:基于卫星通信的tcp加速方法,应用于卫星通信系统,所述卫星通信系统包括客户端、卫星、服务器和两个卫星猫,所述两个卫星猫分别为卫星猫一及卫星猫二,所述卫星猫一分别与客户端和卫星连接通信,卫星猫二分别与服务器和卫星连接通信;卫星猫包括以下处理步骤:步骤一、卫星猫通过iptables的dnat命令,在内核netfilter的prerouting链中将所有tcp报文的目的ip和目的端口转换为该卫星猫的ip和指定端口;步骤二、卫星猫开启tcp的socket监听该卫星猫的指定端口,并通过该指定端口接收tcp报文;步骤三、对于该指定端口接收到的任一tcp报文,卫星猫提取该tcp报文的源ip和源端口,并通过socket选项的so_original_dst提取该tcp报文的原目的ip和原目的端口;步骤四、卫星猫根据该接收到的tcp报文生成新tcp报文,然后获取并绑定本地空闲端口,向内核下发snat命令,在postrouting链中将新tcp报文的源ip和源端口替换为步骤三所提取到的该tcp报文的源ip和源端口;步骤五、卫星猫根据步骤三所提取到的该tcp报文的原目的ip和原目的端口,将新tcp报文发送到原目的ip和原目的端口对应的设备;基于卫星猫的处理步骤,通过设置卫星链路的tcp参数来提高卫星链路的传输性能。上述方法中,卫星猫一和卫星猫二都进行步骤一至步骤五的处理,通过使用linux内核中netfilter技术,拦截tcp报文,snat还原源ip端口等手段,在卫星猫上实现了tcp报文的透明代理功能,并且代理前后报文的源ip、目的ip、源端口和目的端口都不变。经过上述透明代理后,将客户端到服务器的tcp连接分为了3段,分别是tcp连接一、tcp连接二和tcp连接三,tcp连接一为客户端与卫星猫一之间的tcp连接,tcp连接二为卫星猫一与卫星之间的tcp连接和卫星与卫星猫二之间的tcp连接,tcp连接三为卫星猫二与服务器之间的tcp连接,其中tcp连接二就是卫星链路的tcp连接。根据卫星通信系统的传输特性或应用的场景等具体情况,对tcp连接二的tcp参数进行设置,就能提高卫星链路的传输性能,提高卫星通信的带宽利用率,提高数据传输速率。对上述方法进行进一步优化,具体可以是:进行设置的卫星链路的tcp参数可以包括tcp_congestion_control,tcp_congestion_control用于设置卫星传输的拥塞算法。tcp参数还可以包括tcp_adv_win_scale,tcp_adv_win_scale用于设置窗口扩展。tcp参数还可以包括tcp_app_win,tcp_app_win用于设置应用层窗口。实施例下面具体举例说明。本例的卫星通信系统如图1所示,包括客户端、卫星猫一、卫星、卫星猫二和服务器,卫星猫一分别与客户端和卫星连接通信,卫星猫二分别与服务器和卫星连接通信。本例的基于卫星通信的tcp加速方法,应用于本例的卫星通信系统,卫星猫一按照以下步骤进行处理:步骤一、卫星猫一通过iptables的dnat命令,在内核netfilter的prerouting链中将所有tcp报文的目的ip和目的端口转换为卫星猫一的ip和指定端口;步骤二、卫星猫一开启tcp的socket监听卫星猫一的指定端口,并通过该指定端口接收tcp报文;步骤三、对于该指定端口接收到的任一tcp报文,卫星猫一提取该tcp报文的源ip和源端口,并通过socket选项的so_original_dst提取该tcp报文的原目的ip和原目的端口;步骤四、卫星猫一根据该接收到的tcp报文生成新tcp报文,然后获取并绑定本地空闲端口,向内核下发snat命令,在postrouting链中将新tcp报文的源ip和源端口替换为步骤三所提取到的该tcp报文的源ip和源端口;步骤五、卫星猫一根据步骤三所提取到的该tcp报文的原目的ip和原目的端口,将新tcp报文发送到原目的ip和原目的端口对应的设备。卫星猫二进行处理的步骤与卫星猫一相同,通过卫星猫一和卫星猫二的上述处理过程,客户端到服务器的tcp连接被分为了tcp连接一、tcp连接二和tcp连接三,参见图1,tcp连接一为客户端与卫星猫一之间的tcp连接,tcp连接二为卫星猫一与卫星之间的tcp连接和卫星与卫星猫二之间的tcp连接,tcp连接三为卫星猫二与服务器之间的tcp连接,其中tcp连接二就是卫星链路的tcp连接。在tcp连接二中,设置卫星猫一和卫星猫二linux内核的tcp参数,本例中对tcp_congestion_control、tcp_adv_win_scale和tcp_app_win进行设置,tcp_congestion_control用于设置卫星传输的拥塞算法,tcp_adv_win_scale用于设置窗口扩展,tcp_app_win用于设置应用层窗口,根据卫星通信系统的传输特性或应用的场景等具体情况设置上述tcp参数,就能提高卫星通信的带宽利用率,提高数据传输速率。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1