在比较理想的环境下传输大量数据,是否可以用 UDP 完全替代 TCP?

2018-06-23 13:21:26 +08:00
 gaayyy

简单来说,就是内网大约 100 多台机器分布存放了一些较大的数据文件,每台大概有 2T 的样子,现在想把这些分散的文件集中备份到三套专用的存储服务器上。没办法拆硬盘,也没办法改变网络结构,大致计算了一下数据量,理想状态下,等待传输的数据量是:2TB * 1024 * 1024 = 2097152 MB, 而千兆以太网 1Gbps / 8 = 128MBps,存储服务器都是走的硬盘 RAID,硬盘写速率应该能跟上,所以一台机器时间大约是 2097152 MB / 128MBps / 3600 = 4.55 小时。

环境是纯内部网络,没介入互联网,机器都是 DELL 和 hp 的机器,交换机用的是 NetGear 千兆,硬件应该都没问题。但是时间限制只能在周末或者晚上操作。现在主要是考虑到千兆网的 128MBps 是理想状态下的速率,如果自己写一个文件传输的小工具,用 UDP 替代 TCP,这样对数据传输速率是否有改善?想了解一下是否有 v 友处理过类似的案例。

13178 次点击
所在节点    程序员
71 条回复
aru
2018-06-23 15:10:28 +08:00
内网环境 TCP 基本可以达到理论速度,协议消耗并不多,优化余地有限。
网络拓扑预测是多个接入交换机通过一个汇聚交换机互联,互联带宽为 1Gbps。
网络硬件是主要瓶颈。
可能的优化途径:
不增加硬件投入
1. 存储服务器通过多网卡绑定,将带宽由 1Gbps 提升到 2Gbps 或更高
2. A. 存储服务器网卡接在汇聚交换机或
B. 存储服务器尽量和上传数据的服务器在同一个交换机下(即减少跨交换机网络传输)

增加投入
接入交换机换成万兆上联,汇聚交换机全万兆,存储服务器升级为万兆网卡并接入到汇聚交换机
gamexg
2018-06-23 15:23:43 +08:00
经验上内网千兆 tcp 可以跑满,换 udp 优化余地应该很小。
lslqtz
2018-06-23 15:31:33 +08:00
@ryd994 虽然数量较少,也可以说成是一种微小的开销吧。
实际上如果是绝对理想的环境,我觉得 UDP 也未尝不可,不过实际上没有这么理想的环境。。。
msg7086
2018-06-23 15:37:44 +08:00
@lslqtz 现实环境里,UDP 为了保证不丢,一样需要类似 ACK 的机制。
还要加上包编号什么的,我觉得和重新发明一遍 TCP 差距真的不大。
能提升 1%的效能?都到不了吧我觉得。
这么折腾一遍下来远不如加两块网卡揉一起来得好用……
jedihy
2018-06-23 15:48:05 +08:00
这样的环境关掉 tcp 时间戳可以略微提升性能。其他没什么好折腾的了。
a7a2
2018-06-23 16:24:20 +08:00
@ryd994 你理解错了。

udp 确实比 tcp 要快传大文件大量数据的时候并且在稳定的网络环境中,udp 相对 tcp 需要三次握手已经可以分析出,当然在丢包严重的环境中肯定 tcp 好如果 udp 没有改造的话。

还有 rsync 是基于文件同步的,就是说如果这个文件 1tb 大小因为修改了其中 1 点点儿重新同步整个文件一次
msg7086
2018-06-23 16:33:24 +08:00
@a7a2
> rsync 是基于文件同步的,就是说

然而 rsync 的帮助文件并不同意你的说法。

-W, --whole-file copy files whole (without delta-xfer algorithm)
也就是不指定-W 的话就是差异传输。

请问你这个说法是哪来的?
yippees
2018-06-23 16:35:44 +08:00
飞鸽 PK FTP
msg7086
2018-06-23 16:36:21 +08:00
其实说了这么多,还是拿几块移动硬盘拷起来最快了。你 128MB/s 是完全没考虑到分包 overhead 的情况,实际能跑出来的也就 110MB/s 上下。要我的话就挂着慢慢跑就是了,你要实在等不及那就移动硬盘拷。
ucanuup
2018-06-23 16:40:52 +08:00
@a7a2 rsync 使用了非常牛逼的算法,只会同步文件差异。算法见: https://coolshell.cn/articles/7425.html
a7a2
2018-06-23 16:43:11 +08:00
@msg7086 学到了,以前使用不求甚解。
ucanuup
2018-06-23 16:44:30 +08:00
@msg7086 那你得用 SSD 的移动硬盘,因为机械硬盘拷贝速度也不快。
silencefent
2018-06-23 16:46:41 +08:00
1Gbps/8 = 128M/s
机械硬盘速度写入大文件在 160M/s
但是!!!图片小文件远小于 20M/s
所以 100 来台电脑同时使用,万兆网络基本满足需要,如果资金紧张,分拆 3 条千兆网络对应接收端也可以满足,这瓶颈和 TCP/UDP 无关,接收端需要上 intel 的傲腾 900P 会好一点
msg7086
2018-06-23 16:48:17 +08:00
@ucanuup SSD 也不是必须。移动硬盘可以买不止一块,拷起来速度是算并发的,这和带宽有限的交换机不一样。
msg7086
2018-06-23 16:50:07 +08:00
@silencefent 人家存储服务器也没说只插了一块硬盘啊……
而且人家也说了是较大的数据文件啊……
silencefent
2018-06-23 17:13:32 +08:00
@msg7086 一些较大的数据文件有两种释义:单个文件较大 /文件夹较大,没给明确的条件就不用去臆测了,跟我无关
reus
2018-06-23 18:36:50 +08:00
一来 UDP 也不比 TCP 快,二来就算本机,UDP 也会丢包。
总之就是不能。
x7395759
2018-06-23 19:15:46 +08:00
不是
niubee1
2018-06-23 19:33:36 +08:00
等你写好了数据都传完了
3dwelcome
2018-06-23 19:36:19 +08:00
@a7a2 说反了吧,tcp 在掉包环境上表现很差,所以才有 bbr 之类补丁。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/465240

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX