udr rsync

SoftEther VPN に関するご質問はこのフォーラムにお気軽にご投稿ください。
Post Reply
nmitsu
Posts: 10
Joined: Sat Nov 18, 2017 4:05 am

udr rsync

Post by nmitsu » Mon Jan 17, 2022 11:46 pm

現在、かなり距離のある場所と拠点間VPNを構築しております。
ファイル転送の高速化を行いたく、UDPを使った高速化手法UDTをrsync用に実装したUDRというソフトを試そうとしてみました。
https://github.com/martinetd/UDR
https://genome.ucsc.edu/goldenPath/newsarch.html#030315

ローカルのマシン間では作動しましたが、SoftEther VPN間ではrsync broken pipeエラーなどが出て動きません。
通常のrsyncはもちろん、NFSのマウントなども拠点間で可能な状態です。
何かSoftEtherの仕様上、この通信ができないということがありますでしょうか?

cedar
Site Admin
Posts: 2070
Joined: Sat Mar 09, 2013 5:37 am

Re: udr rsync

Post by cedar » Tue Jan 18, 2022 11:05 am

SoftEther VPN はイーサネットを模擬するので、原理的にはUDPであってもローカル同様に通信できるはずです。

nmitsu
Posts: 10
Joined: Sat Nov 18, 2017 4:05 am

Re: udr rsync

Post by nmitsu » Tue Jan 18, 2022 11:53 am

ご返信、ありがとうございます。
そうですか、原理的には通信できるはずなのですね。
ちなみにこのUDR、ポートは9000-9100を使うとなっています。
rsyncにオプション-n (DRY RUN)を与えますと、無事終了しますが、-nを外しますと、receiving incremental file listのところで止まって(ファイル名を取得できず)、
receiving incremental file list
rsync: [sender] write error: Broken pipe (32)
rsync error: error in socket IO (code 10) at io.c(820) [sender=3.1.3]
rsync: connection unexpectedly closed (113 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [receiver=3.1.3]
rsync: connection unexpectedly closed (113 bytes received so far) [generator]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [generator=3.1.3]
以上のエラーとなってしまいます。
ローカルではファイル名もすぐに取得され、転送が開始されます。

dmesg | grep udrで、
udr[XXXX]: segfault at XXX ip XXX sp XXX error 7 in libc-2.17.so
が出ておりました。

もうひとつ、高速化のためのこのような試みは可能性ありますでしょうか?

cedar
Site Admin
Posts: 2070
Joined: Sat Mar 09, 2013 5:37 am

Re: udr rsync

Post by cedar » Wed Jan 19, 2022 1:57 am

使用している OS と、SoftEther VPN の設定はどのようなものでしょうか。

nmitsu
Posts: 10
Joined: Sat Nov 18, 2017 4:05 am

Re: udr rsync

Post by nmitsu » Wed Jan 19, 2022 2:30 am

両拠点のルーター内にサーバーを置いて、そのOSはCentOS7、片方からTCPポート443でカスケード接続しています。
両方ともローカルブリッジを使用しています。
UDPアクセラレーションが有効となっています。
DHCPパケット、IPv6パケットのフィルターをenabledにしています。
他はあまりいじっていません。
両拠点のルーター内は、プライベートIPアドレス、同じサブネットとなり、同じローカルネットワークにあるようにアクセス可能です。
今まで、これ以外で困ったことがありません。
そういった意味でSoftEther VPNは素晴らしいと思います。

cedar
Site Admin
Posts: 2070
Joined: Sat Mar 09, 2013 5:37 am

Re: udr rsync

Post by cedar » Wed Jan 19, 2022 2:44 am

Linuxのローカルブリッジでは、ローカルブリッジを行っているホスト自身は VPN を利用できませんが、この UDR を使用している PC は別のものでしょうか。

nmitsu
Posts: 10
Joined: Sat Nov 18, 2017 4:05 am

Re: udr rsync

Post by nmitsu » Wed Jan 19, 2022 6:31 am

それぞれのサーバーには2つのネットワークデバイスがあり、ローカルブリッジは専用のを使っておりまして、SoftEtherを動かしているサーバー自身もVPNを利用できます。
(通常のrsyncは動きます。)
試しにSoftEther VPNが入っている以外の2つのマシンで別拠点にあるものの間で試しましたが、やはり転送できませんでした。
通常のrsyncは動きますし、udr rsyncもDRY RUNは上手くいきます。

cedar
Site Admin
Posts: 2070
Joined: Sat Mar 09, 2013 5:37 am

Re: udr rsync

Post by cedar » Wed Jan 19, 2022 6:43 am

UDTの要求するネットワークの詳細について資料が見つからなかったのですが、UDP高速化使用時に MTU が小さくなるのが原因かもしれません。
UDP高速化機能を無効にしてみた場合ではいかがでしょうか。

nmitsu
Posts: 10
Joined: Sat Nov 18, 2017 4:05 am

Re: udr rsync

Post by nmitsu » Wed Jan 19, 2022 7:11 am

なんと!UDP高速化機能を無効にしたら転送できました。
しかし、転送速度はUDP高速化機能をONにした場合の通常のrsyncの半分以下くらいでした(3-5 MB/s)。
UDP on TCP?だと速度が出ないのでしょうか。
現在、pingで17 msくらいの距離であり、なんとかファイル転送を高速化できないかとやっておりました。
TCPを使った通信だと、どうしても距離がネックになって、速度が出ないと理解しています。
SoftEther VPNならUDPで通信できるので、このUDRで転送速度が上がらないかなという素人考えです。
UDPを使った高速ファイル転送はasperaが有名ですが、価格が...それでUDRを試した次第です。

cedar
Site Admin
Posts: 2070
Joined: Sat Mar 09, 2013 5:37 am

Re: udr rsync

Post by cedar » Wed Jan 19, 2022 8:23 am

ソースコードを読んでみると、UDT自体には、もともと MTU を設定する機能があるのですが、UDR ではそのオプションを変更する機能がまだ実装されていないようです。

https://udt.sourceforge.io/udt3/doc/t-config.htm

udr_threads.cpp 辺りをいじってやれば、動作するようになるのではないかと思います。

nmitsu
Posts: 10
Joined: Sat Nov 18, 2017 4:05 am

Re: udr rsync

Post by nmitsu » Wed Jan 19, 2022 9:54 am

色々と調べていただき、ありがとうございます。
私はC言語は全くわからないのですが(プログラミング言語は、rubyやpythonでテキストをいじるくらいしかわかりません)、udr_threads.cppのどこか、socket作成後、bind前に
int mss = 1000;
UDT::setsockopt(serv, 0, UDT_MSS, &mss, sizeof(int));
のようなものを追加すればよいのかなと想像しております...。

nmitsu
Posts: 10
Joined: Sat Nov 18, 2017 4:05 am

Re: udr rsync

Post by nmitsu » Wed Jan 19, 2022 10:52 am

想像したとおりに追加して、コンパイルしてみましたら動きました!
mss = 1200までは動くことを確認しました。
(それ以上は試していません。)
転送速度も20 MB/s以上出るようで、通常の1.5-2.0倍程度になりました。
しかし、このudr rsync、1Gbpsで接続されているところで700-800 Mbpsくらい出たという記事もあり、SoftEther VPN間ではこれが限界でしょうか...。

cedar
Site Admin
Posts: 2070
Joined: Sat Mar 09, 2013 5:37 am

Re: udr rsync

Post by cedar » Wed Jan 19, 2022 8:55 pm

どこがボトルネックになっているのかは分かりませんが、処理の手間が大幅に増えるのは間違いないです。
UDR自身にも暗号化機能があるようなので、VPNを使わずに転送した方が良いかもしれませんね。

nmitsu
Posts: 10
Joined: Sat Nov 18, 2017 4:05 am

Re: udr rsync

Post by nmitsu » Thu Jan 20, 2022 12:09 am

そうですね。
施設全体の管理者にポート開けてもらうとかですかね。
これまで、色々と有難うございました。
大変勉強になりました。

Post Reply