用tsunami-udp加速网络传输
概述
tsunami-udp是一款专为网络加速诞生的小工具。 思路很简单,使用TCP进行传输控制、UDP进行数据传输。
这样可以无状态的进行数据传输,然后中间加一些文件校验和重传机制,达到加速传输的目的。
传统的tcp传统,基于长连接,很容易受网络波动的影响。特别是网络拥塞的情况下,只能通过多进程/线程来进行有序传输。
安装
建议将 tsunami-udp 录入仓库,方便用yum一键安装:
sudo yum -y install tsunami-udp

使用
安装完成后,在服务端(数据源)需要传文件的目录,运行tsunamid *即可:
cd /data
tsunamid *

客户端(执行下载的机器)进入到对应的存储目录,执行tsunami即可:
cd /data
tsunami
> connect your.server.address # 连接服务端(下载源)
> get file-name # 下载指定的文件

上图即,在中国济南的一个联通机房下载AWS新加坡机器上‘2.2G autodatas.tar’的文件,跨国传输速度接近 50Mbps (无专线)。 图中还显示了详细的过程数据,比如丢了多少包、总传输量、有效的传输量 等等…… 使用超简单吧!
干脆再直接用命令行操作:
tsunami connect demo.tsunami-udp.cmcm set udpport get mnt/d2/file4download quit

监控
使用AWS新加坡的服务器作为数据库,传输过程CloudWatch监控的流量:

客户端在济南联通,对应的资源使用情况如下图:

再来对比一下wget的下载速度:

另外,客户端虽然不支持子目录的遍历功能,但若知道全路径,是可以直接下载:

制作rpm包
另外,简单记录RPM打包过程。使用fpm打包最简单了:
wget 'https://github.com/cheetahmobile/tsunami-udp/archive/1.8.1.tar.gz' -O ~/rpmbuild/SOURCES/tsunami-udp-1.8.1.tgz
tar -zxvf tsunami-udp-1.8.1.tgz
cd tsunami-udp-1.8.1
./recompile.sh
mkdir -pv /tmp/usr/bin
cp -fv server/tsunamid client/tsunami /tmp/usr/bin/
fpm -f -s dir -t rpm -n tsunami-udp --epoch -v 1.8. --iteration .el6 -C /dev/shm -p ~/rpmbuild/RPMS/x86_64/ -d 'glibc >= 2.12' --verbose --category 'System Environment/Daemons' --description ' A fast user-space file transfer protocol that uses TCP control and UDP data for transfer over very high speed long distance networks' --url 'https://github.com/cheetahmobile/tsunami-udp' --license 'BSD' -m 'higkoo' --no-rpm-sign --workdir /tmp usr/bin
file ~/rpmbuild/RPMS/x86_64/tsunami-udp-1.8.-.el6.x86_64.rpm # 大功告成
注意:和Linux自带的ftp命令行一样,进入tsunami命令行里 按 Ctrl+Backspace才是删除。需要人肉转义一下
用tsunami-udp加速网络传输的更多相关文章
- [转帖]技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解
技术扫盲:新一代基于UDP的低延时网络传输层协议——QUIC详解 http://www.52im.net/thread-1309-1-1.html 本文来自腾讯资深研发工程师罗成的技术分享, ...
- udp 视频包网络传输花屏
视频数据传输在传输层可以选择TCP或者UDP,TCP面向连接,传输中断,发送端是知道的.TCP传输的好处是不丢包,坏处是网络不太好的情况下会越堵越严重.UDP非面向连接,发送端只管发送数据,接收端有没 ...
- 网络传输--UDP
UDP网络编程 一.优缺点 二.套接字socket 三.类型转换 四.UDP发收数据 五.广播和聊天器案例 回到顶部 一.优缺点 UDP : 无连接 (发送端无需确认接收端是否收到), 其主要用途为音 ...
- Raknet是一个基于UDP网络传输协议的C++网络库(还有一些其它库,比如nanomsg,fastsocket等等)
Raknet是一个基于UDP网络传输协议的C++网络库,允许程序员在他们自己的程序中实现高效的网络传输服务.通常情况下用于游戏,但也可以用于其它项目. Raknet有以下好处: 高性能 在同一台计算机 ...
- ASP.NET知识总结(1.网络传输层)
1.网络传输层 1应用层(HTTP.FTP.SMTP)报文Message 2传输层(TCP.UDP)报文段Segment,为运行在不同主机上的应用程序进程间提供数据 传输服务.通过套接字(Socket ...
- Android IOS WebRTC 音视频开发总结(五七)-- 网络传输上的一种QoS方案
本文主要介绍一种QoS的解决方案,文章来自博客园RTC.Blacker,欢迎关注微信公众号blacker,更多详见www.rtc.help QoS出现的背景: 而当网络发生拥塞的时候,所有的数据流都有 ...
- App安全之网络传输安全
移动端App安全如果按CS结构来划分的话,主要涉及客户端本身数据安全,Client到Server网络传输的安全,客户端本身安全又包括代码安全和数据存储安全.所以当我们谈论App安全问题的时候一般来说在 ...
- 解决TCP网络传输“粘包”问题
当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API).TCP/IP传输层有两个并列的协议:TCP和UDP.其中TCP(transport contro ...
- C#网络程序设计(3)网络传输编程之TCP编程
网络传输编程指基于各种网络协议进行编程,包括TCP编程,UDP编程,P2P编程.本节介绍TCP编程. (1)TCP简介: TCP是TCP/IP体系中最重要的传输层协议,它提供全双工和可 ...
随机推荐
- vs2013配置opencv3.2.0
工具/原料 l VS2013 l OpenCV3.20http://jaist.dl.sourceforge.net/project/opencvlibrary/opencv-win/3.2.0/op ...
- C/C++ 控制台演示彩色输出进度
#include <stdio.h> #include <windows.h> BOOL SetConsoleColor(WORD wAttributes); int main ...
- makefile--参数传递、条件判断、include (五)
原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 在多个Makefile嵌套调用时,有时我们需要传递一些参数给下一层Makefile.比如我们在顶 ...
- ASP.Net MVC开发基础学习笔记(7):数据查询页面
前言 前面铺垫了那么多,今天我们就用MVC5 + EF6 + Bootstrap3来正式创建一个基本查询页面. 为什么从查询页面開始?嘿嘿.由于小弟的.Net生涯就是从查询页面開始的,记得正式工 ...
- SQLServer------存储过程的使用
转载: http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html 例子: 1.学生表 CREATE TABLE [dbo].[Stude ...
- Java精选笔记_EL表达式
EL表达式 初始EL EL是一种可以简化JSP页面的表达式,EL表达式的语法非常简单都是以"${"符号开始,以"}"符号结束的 EL表达式是一种简单的数据&qu ...
- 【RF库Collections库测试】关键字append to list
Arguments:[ list_ | *values ]Adds `values` to the end of `list`.
- Python 数据类型:字符串
一.字符串介绍 字符串是由单引号/双引号/三引号引起来的,由字母 .数字或符号等构成的一串字符 In [1]: name = "Tom" # 定义字符串 In [2]: type( ...
- osgEarth2.8加载矢量数据描边效果
通过修改osgearth自带的agglite插件,实现矢量描边效果,可以自定义描边的颜色和宽度(单位像素) 测试文件osgearth_features.cpp #include <osg/Not ...
- VS2015编译JPEG9b源码
输入:nmake -f makefile.vc libjpeg.lib 出现错误:找不到win32.mak文件 按照网上说的,这个win32.mak可以在C:\Program Files (x86)\ ...