Linux

Linux 使用 Tsunami UDP 高速檔案傳輸協定教學與範例

介紹如何使用 Tsunami UDP 高速檔案傳輸協定,加速檔案的網路傳輸速度。

編譯與安裝 Tsunami UDP

若在 Ubuntu Linux 中必須以自行編譯的方式來安裝 Tsunami UDP,首先要安裝一些編譯用工具套件:

# 安裝編譯用工具套件
sudo apt install gcc git automake autoconf make

下載 Tsunami-UDP 原始碼:

# 下載 Tsunami UDP 原始碼
git clone https://git.code.sf.net/p/tsunami-udp/code_git tsunami-udp-code_git

編譯 Tsunami UDP:

# 編譯 Tsunami UDP
cd tsunami-udp-code_git/tsunami-udp/
./recompile.sh

安裝 Tsunami UDP:

# 安裝 Tsunami UDP
sudo make install

若要自行指定 Tsunami UDP 的安裝目錄,則可自己更改 configure 的參數:

# 指定安裝目錄
./configure --prefix=/opt/tsunami-udp

# 安裝 Tsunami UDP
make install

若是更改過預設的安裝目錄之後,要記得設定 PATH

# 設定 PATH
export PATH=$PATH:/opt/tsunami-udp/bin

傳輸資料

以 Tsunami UDP 傳輸檔案時,需要在伺服器端與使用者端都安裝好 Tsunami UDP,然後先在伺服器端進入資料目錄,並啟動 Tsunami 伺服器:

# 進入資料目錄(伺服器端)
cd data/

# 啟動 Tsunami 伺服器(伺服器端)
tsunamid *
The specified 2 files will be listed on GET *:
   1)   CentOS-8.1.1911-x86_64-boot.iso  625999872 bytes
   2)   CentOS-8.1.1911-x86_64-dvd1.iso  7554990080 bytes
total characters 64
Block size: 1024
Buffer size: 20000000
Port: 46224
Tsunami Server for protocol rev 20061025
Revision: v1.1 devel cvsbuild 43
Compiled: Apr  1 2020 10:06:40
Waiting for clients to connect.

在使用者端執行 Tsunami UDP client 程式:

# 執行 Tsunami client(使用者端)
tsunami
Tsunami Client for protocol rev 20061025
Revision: v1.1 devel cvsbuild 43
Compiled: Apr  1 2020 09:09:12
tsunami>

進入 Tsunami client 之後,執行以下指令,連線至 Tsunami UDP 伺服器下載檔案:

connect 192.168.12.34
get CentOS-8.1.1911-x86_64-dvd1.iso
             last_interval                   transfer_total                   buffers      transfer_remaining  OS UDP
time          blk    data       rate rexmit     blk    data       rate rexmit queue  ring     blk   rt_len      err
00:02:10.226 23850  20.77M  531.4Mbps   3.8% 9232550    8.8G  553.9Mbps   0.0%   932  4096   87686      932   274629 RF
00:02:11.522 16850   5.62M  101.6Mbps  10.8% 9249400    8.8G  549.4Mbps   0.0%     0  3584   87646     2048   276644 R-
00:02:11.872 19850   0.00M  442.6Mbps   9.4% 9269250    8.8G  549.1Mbps   0.0%     0  4038   86397     2048   283912 R-
00:02:12.223 16550   0.00M  368.9Mbps   8.2% 9285800    8.9G  548.7Mbps   0.0%  1473  4096   85240     1473   285145 RF
00:02:12.580 16850  32.26M  369.1Mbps   7.0% 9302650    8.9G  548.2Mbps   0.0%  1259  4088   84231     1259   289442 R-
00:02:12.995 12650  23.16M  238.8Mbps  13.9% 9315300    8.9G  547.2Mbps   0.0%     0     0   75447     2048   294545 R-
00:02:13.346 21600   0.00M  481.7Mbps   0.0% 9336900    8.9G  547.0Mbps   0.0%     1     0   72576        1   295572 R-
00:02:13.697 28300   0.02M  630.6Mbps   0.0% 9365200    8.9G  547.2Mbps   0.0%     7     0   53637        7   295618 R-
00:02:14.048 28950   0.16M  644.9Mbps   0.8% 9394150    9.0G  547.5Mbps   0.0%   246     0   29843      246   295864 --
00:02:14.399 28450   5.48M  634.2Mbps   2.1% 9422600    9.0G  547.7Mbps   0.0%   610     0    1433      610   296608 --
Transfer complete. Flushing to disk and signaling server to stop...
!!!!
PC performance figure : 296608 packets dropped (if high this indicates receiving PC overload)
Transfer duration     : 134.42 seconds
Total packet data     : 73625.27 Mbit
Goodput data          : 73095.55 Mbit
File data             : 57640.00 Mbit
Throughput            : 547.73 Mbps
Goodput w/ restarts   : 543.79 Mbps
Final file rate       : 428.81 Mbps
Transfer mode         : lossless

經過實際測試,傳輸一個大約 7GB 的檔案,若以傳統的 scp 來傳輸,需要的時間是 3 分 36 秒,速度大約是 33.2MB/s,而若改用 Tsunami UDP 傳輸的話,需要的時間則是 2 分 14 秒,速度大約是 53.6MB/s

Tsunami UDP 與 SCP 傳輸速度比較

如果要將 Tsunami UDP 用於指令稿中下載檔案,可在執行 tsunami 指令時直接帶入所有要執行的動作指令:

tsunami connect 192.168.12.34 get CentOS-8.1.1911-x86_64-dvd1.iso

關於 Tsunami-UDP 更詳細的用法,可以參考 Tsunami UDP 網站上的說明。

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

10 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

11 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago