OpenVPN कम प्रदर्शन। क्या मुझे MTU की समस्या है? अंदर डंप करता है


13

मुझे एक OpenVPN सुरंग के साथ समस्या है जो लाइन गति तक नहीं पहुंचती है। गेटवे OVH में होस्ट किया गया एक डेबियन जेसी वर्चुअल सर्वर है। ग्राहक या तो मेरे फ्रीबस 10.2 होमसेवर (इंटेल I3 आइवी ब्रिज) या मेरे रास्पबेरी पी 2 है। मैंने एन्क्रिप्शन और प्रमाणीकरण को निष्क्रिय कर दिया। मेरे पास 100mbit / s सममित एफटीटीएच कनेक्शन है लेकिन सुरंग केवल 20-40mbit / s की गति तक पहुंचती है। प्रत्यक्ष कनेक्शन (सुरंग के बिना) मुझे हमेशा 100 मीबिट / एस की उम्मीद है। मैंने iperf3 के साथ प्रदर्शन का परीक्षण किया। मैंने पहली बार अपने फ़्रीबेसड होमसेवर के साथ प्रयास किया। मैंने mssfix, टुकड़ा आदि के बारे में सभी अनुशंसित सेटिंग्स की कोशिश की। कुछ भी मदद नहीं की।

तब मुझे लगा कि शायद यह मेरी फ्रीबस मशीन है। इसलिए मैंने अपने RPI2 पर एक ताजा रसियन जेसी स्थापित किया और गहराई से परीक्षण में कुछ और किया:

सबसे पहले मैंने ओपनवीपीएन कॉन्फ़िगरेशन से सभी एमटीयू सेटिंग्स को हटा दिया और पथ एमटीयू को चीजों (उम्मीद) को संभालने दिया। चूंकि मेरे पास दोनों मशीनों पर कोई फ़ायरवॉल सक्रिय नहीं है, इसलिए इसे काम करना चाहिए। ये मेरे vpn विन्यास हैं:

server 10.8.0.0 255.255.255.0
port 1194
proto udp
dev tun
sndbuf 0
rcvbuf 0

user nobody
group nogroup
persist-key
persist-tun
ifconfig-pool-persist ipp.txt
keepalive 10 120
push "redirect-gateway def1"
status openvpn-status.log
verb 3

ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/vpn.theissen.io.crt
key /etc/openvpn/easy-rsa/keys/vpn.theissen.io.key
dh /etc/openvpn/easy-rsa/keys/dh4096.pem
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 0
cipher none
auth none
comp-lzo no



client
proto udp
dev tun12
remote xxx.io 1194
resolv-retry infinite
sndbuf 0
rcvbuf 0

nobind
user nobody
group nogroup
persist-key
persist-tun
verb 3

pkcs12 /etc/openvpn/vpn.theissen.io/alex.p12
tls-auth /etc/openvpn/vpn.theissen.io/ta.key 1
ns-cert-type server
cipher none
auth none
comp-lzo no

सुरंग के बिना सभी परीक्षण के पहले यह दिखाने के लिए कि सर्वर से कनेक्शन वास्तव में लगभग 100mbit / s है:

iperf3 -c vpn.theissen.io
Connecting to host vpn.theissen.io, port 5201
[  4] local 192.168.1.253 port 34512 connected to 149.202.58.183 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  10.8 MBytes  90.5 Mbits/sec    0    335 KBytes       
[  4]   1.00-2.00   sec  11.4 MBytes  95.7 Mbits/sec    0    335 KBytes       
[  4]   2.00-3.00   sec  11.1 MBytes  93.0 Mbits/sec    0    352 KBytes       
[  4]   3.00-4.00   sec  11.2 MBytes  94.0 Mbits/sec    0    369 KBytes       
[  4]   4.00-5.00   sec  11.5 MBytes  95.9 Mbits/sec    0    390 KBytes       
[  4]   5.00-6.00   sec  11.0 MBytes  92.5 Mbits/sec    0    390 KBytes       
[  4]   6.00-7.00   sec  11.4 MBytes  95.2 Mbits/sec    0    390 KBytes       
[  4]   7.00-8.00   sec  11.2 MBytes  94.3 Mbits/sec    0    390 KBytes       
[  4]   8.00-9.00   sec  11.1 MBytes  93.3 Mbits/sec    0    390 KBytes       
[  4]   9.00-10.00  sec  11.3 MBytes  95.1 Mbits/sec    0    390 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   112 MBytes  93.9 Mbits/sec    0             sender
[  4]   0.00-10.00  sec   112 MBytes  93.5 Mbits/sec                  receiver

iperf Done.

इस कनेक्शन के पैकेट मैंने सर्वर पर tcpdump के साथ डंप किए। आप उन्हें यहां डाउनलोड कर सकते हैं (आपको उन्हें वायरशार्क के साथ खोलने के लिए निकालना होगा): डंप्रा.कैप। एक्सज़

तो यह है कि एक "ओके" डंप कैसा दिखता है। अधिकतम फ़्रेम आकार जो मैंने देखा है वह 1514 है। सुरंग के बिना iperf3 का डंप

अब मैंने सुरंग के ऊपर परीक्षण चलाया:

iperf3 -c 10.8.0.1
Connecting to host 10.8.0.1, port 5201
[  4] local 10.8.0.14 port 36388 connected to 10.8.0.1 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  5.96 MBytes  50.0 Mbits/sec  127    133 KBytes       
[  4]   1.00-2.00   sec  5.19 MBytes  43.5 Mbits/sec    6    120 KBytes       
[  4]   2.00-3.00   sec  5.80 MBytes  48.7 Mbits/sec    0    151 KBytes       
[  4]   3.00-4.00   sec  4.27 MBytes  35.9 Mbits/sec   23   96.5 KBytes       
[  4]   4.00-5.00   sec  4.89 MBytes  41.0 Mbits/sec    0    129 KBytes       
[  4]   5.00-6.00   sec  6.11 MBytes  51.2 Mbits/sec   26    111 KBytes       
[  4]   6.00-7.00   sec  5.50 MBytes  46.1 Mbits/sec    0    143 KBytes       
[  4]   7.00-8.00   sec  5.25 MBytes  44.1 Mbits/sec   15    126 KBytes       
[  4]   8.00-9.00   sec  5.80 MBytes  48.7 Mbits/sec    0    158 KBytes       
[  4]   9.00-10.00  sec  3.97 MBytes  33.3 Mbits/sec   22    105 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  52.7 MBytes  44.2 Mbits/sec  219             sender
[  4]   0.00-10.00  sec  52.3 MBytes  43.8 Mbits/sec                  receiver

iperf Done.

ओह। अब इतना अच्छा नहीं है। विशेष रूप से यह "रिट्र" कॉलम इतना अच्छा नहीं लगता है। मैंने मान लिया कि यह tcp रीट्रांसमिट है और डंप में कुछ होना चाहिए। हम देखेंगे कि ऐसा नहीं है: /। सीपीयू यहां अड़चन नहीं है क्योंकि मैंने एनरजेशन और ऑथेंटिकेशन को निष्क्रिय कर दिया है। सीपीयू सर्वर पर 20% और परीक्षण के दौरान PI पर 50% है।

परीक्षण का OpenVPN ट्रैफ़िक इस तरह दिखता है: भौतिक इंटरफ़ेस पर OpenVPN ट्रैफ़िक

मेरे लिए यह ठीक है। लेकिन मुझे नहीं पता कि क्या देखना है। कृपया तारों के साथ डंप पर एक नज़र डालें: डंप_फिज़िकल.कैप। एक्सज़

सुरंग इंटरफ़ेस पर ट्रैफ़िक मुझे भी अच्छा लगता है। ऐसा लगता है कि उन्होंने फ्रेम आकार को सही ढंग से कम कर दिया (1444 के रूप में ऐसा लगता है): सुरंग इंटरफेस पर iperf3 यातायात

यहाँ डंप है: डंप_ट्यूनलाइन.कैप। एक्सज़

मेरे लिए यह सब ठीक है, लेकिन मुझे वास्तव में पता नहीं है कि वास्तव में क्या देखना है। मैं वास्तव में OpenVPN सेटिंग्स के साथ सब कुछ बाहर का परीक्षण किया। शायद कोई मुझे बता सकता है कि क्या ट्रैफिक ठीक है।

मैं एक उत्तर के रूप में क्या उम्मीद करता हूं

कम से कम एक स्पष्टीकरण जो यहां हो रहा है और ऐसा क्यों लगता है कि मैं वीपीएन सॉफ्टवेयर से स्वतंत्र हूं। इंटरनेट पर मुझे जो कुछ भी मिला वह एमटीयू की समस्याओं के बारे में था, लेकिन टनल एमटीयू या ओपनपीएनपी के अन्य मापदंडों को कम करके आसानी से तय किया जाना चाहिए। मेरे लिए यह थोड़ा बदलता है। जब आप डंप को देखते हैं तो आप देखते हैं कि यह tcp सेगमेंट के आकार को कम कर देता है और पैकेट्स खंडित नहीं होते हैं। कुछ और होना चाहिए। मैं वास्तव में जानना चाहता हूं कि क्या

अपडेट करें

मैंने इसे स्ट्रांग्सन के साथ और यहां तक ​​कि सॉफ्टवेअर के साथ भी परीक्षण किया। यह वास्तव में एक ही समस्या है (तुलनात्मक गति, कोई सीपीयू अड़चन नहीं)। मैं वास्तव में हैरान हूं कि यहां क्या समस्या है। मैंने एक और प्रवेश द्वार की कोशिश की (दोस्तों 100/100 घर कनेक्शन पर RaspberryPi2)।

अपडेट २

मैंने देखा कि iperf3 रिपोर्ट tcp retransmits (retr) है, लेकिन डंप में कोई भी retransmits नहीं हैं (Wireshark को उन्हें हाइलाइट करना चाहिए)। क्या हो रहा है?

मैंने अपने स्थानीय नेटवर्क (RaspberryPi2 से FreebsdServer) पर भी OpenVPN की कोशिश की। यहाँ तक कि मेरे पास बहुत सारे रिट्रांसमिट्स हैं (LAN ?!) पर:

Connecting to host 192.168.222.11, port 5201
[  4] local 192.168.222.10 port 46196 connected to 192.168.222.11 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  9.19 MBytes  77.0 Mbits/sec    8    141 KBytes       
[  4]   1.00-2.00   sec  8.71 MBytes  73.1 Mbits/sec    3    130 KBytes       
[  4]   2.00-3.00   sec  8.59 MBytes  72.0 Mbits/sec    3    120 KBytes       
[  4]   3.00-4.00   sec  8.65 MBytes  72.5 Mbits/sec    4    108 KBytes       
[  4]   4.00-5.00   sec  8.65 MBytes  72.5 Mbits/sec    4   95.6 KBytes       
[  4]   5.00-6.00   sec  8.52 MBytes  71.5 Mbits/sec    2   80.5 KBytes       
[  4]   6.00-7.00   sec  8.83 MBytes  74.1 Mbits/sec    0    141 KBytes       
[  4]   7.00-8.00   sec  8.59 MBytes  72.0 Mbits/sec    7    106 KBytes       
[  4]   8.00-9.00   sec  8.71 MBytes  73.1 Mbits/sec    3   94.2 KBytes       
[  4]   9.00-10.00  sec  8.59 MBytes  72.0 Mbits/sec    3   79.2 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  87.0 MBytes  73.0 Mbits/sec   37             sender
[  4]   0.00-10.00  sec  86.8 MBytes  72.8 Mbits/sec                  receiver

रिवर्स मोड में मेरे पास वास्तव में अजीब भीड़ खिड़की (wtf?) है:

Accepted connection from 192.168.222.10, port 46197
[  5] local 192.168.222.11 port 5201 connected to 192.168.222.10 port 46198
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  5]   0.00-1.00   sec  8.90 MBytes  74.7 Mbits/sec    3   1.48 GBytes       
[  5]   1.00-2.00   sec  8.45 MBytes  70.9 Mbits/sec    2   1.59 GBytes       
[  5]   2.00-3.00   sec  8.66 MBytes  72.7 Mbits/sec  518    214 MBytes       
[  5]   3.00-4.00   sec  7.96 MBytes  66.8 Mbits/sec   37    703 MBytes       
[  5]   4.00-5.00   sec  8.09 MBytes  67.9 Mbits/sec    0    719 MBytes       
[  5]   5.00-6.00   sec  8.04 MBytes  67.5 Mbits/sec    0    734 MBytes       
[  5]   6.00-7.00   sec  8.07 MBytes  67.7 Mbits/sec    1    703 MBytes       
[  5]   7.00-8.00   sec  8.07 MBytes  67.7 Mbits/sec    1    703 MBytes       
[  5]   8.00-9.00   sec  7.99 MBytes  67.1 Mbits/sec    2    693 MBytes       
[  5]   9.00-10.00  sec  8.06 MBytes  67.6 Mbits/sec    1    693 MBytes       
[  5]  10.00-10.09  sec   684 KBytes  64.5 Mbits/sec    0    695 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  5]   0.00-10.09  sec  83.0 MBytes  69.0 Mbits/sec  565             sender
[  5]   0.00-10.09  sec  0.00 Bytes  0.00 bits/sec                  receiver

अपडेट ३

ओदह में udp परिणामों के साथ iperf के उपयोग से उस पोर्ट को अस्थायी रूप से अवरुद्ध कर दिया जाता है (वे मुझे एक हमले के बारे में सूचित करने वाला एक ईमेल भेजते हैं) और बड़े पैमाने पर पैकेट हानि:

-----------------------------------------------------------
Server listening on 1194
-----------------------------------------------------------
Accepted connection from 185.22.143.160, port 15906
[  5] local 149.202.58.183 port 1194 connected to 185.22.143.160 port 4355
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  5]   0.00-1.00   sec  2.89 MBytes  24.2 Mbits/sec  0.727 ms  1017/1387 (73%)  
iperf3: OUT OF ORDER - incoming packet = 1409 and received packet = 1470 AND SP = 5
iperf3: OUT OF ORDER - incoming packet = 1410 and received packet = 1471 AND SP = 5
iperf3: OUT OF ORDER - incoming packet = 1411 and received packet = 1472 AND SP = 5
iperf3: OUT OF ORDER - incoming packet = 1445 and received packet = 1473 AND SP = 5
iperf3: OUT OF ORDER - incoming packet = 1463 and received packet = 1473 AND SP = 5
[  5]   1.00-2.00   sec  3.29 MBytes  27.6 Mbits/sec  0.716 ms  1110/1526 (73%)  
[  5]   2.00-3.00   sec  3.30 MBytes  27.7 Mbits/sec  0.732 ms  1103/1526 (72%)  
[  5]   3.00-4.00   sec  3.27 MBytes  27.4 Mbits/sec  0.717 ms  1108/1526 (73%)  
[  5]   4.00-5.00   sec  1.56 MBytes  13.1 Mbits/sec  0.837 ms  546/746 (73%)  
[  5]   5.00-6.00   sec  0.00 Bytes  0.00 bits/sec  0.837 ms  0/0 (-nan%)  
[  5]   6.00-7.00   sec  0.00 Bytes  0.00 bits/sec  0.837 ms  0/0 (-nan%)  
[  5]   7.00-8.00   sec  0.00 Bytes  0.00 bits/sec  0.837 ms  0/0 (-nan%)  
[  5]   8.00-9.00   sec  0.00 Bytes  0.00 bits/sec  0.837 ms  0/0 (-nan%)  
[  5]   9.00-10.00  sec  0.00 Bytes  0.00 bits/sec  0.837 ms  0/0 (-nan%)  
[  5]  10.00-10.06  sec  0.00 Bytes  0.00 bits/sec  0.837 ms  0/0 (-nan%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  5]   0.00-10.06  sec   118 MBytes  98.5 Mbits/sec  0.837 ms  4884/6711 (73%)  
[SUM]  0.0-10.1 sec  4884 datagrams received out-of-order

1
यदि आपने अभी तक नहीं किया है, तो मेरा होना आप इसे एक कोशिश दे सकते हैं: tun-mtu 9000 fragment 0 mssfix 0(तीन अलग-अलग पंक्तियों में विकल्प जोड़ने की आवश्यकता है)
Diamant

मैंने पहले ही गवाही दे दी है। लेकिन मैंने फिर से परीक्षण किया। क्या हुआ कि यह एक ही गति के साथ शुरू होता है लेकिन फिर कनेक्शन स्टालों। जिस तरह से हमेशा होता है जब मैं OpenVPN पैकेट विखंडन को अक्षम करता हूं। यह मार्गदर्शिका समुदाय. openvpn.net/openvpn/wiki/Gigabit_Networks आपको लगता है कि OS को इसे संभालना चाहिए, लेकिन जाहिर है कि ऐसा नहीं है।
अलेक्जेंडर थिएन

ओह वाह। मैं अपने वीपीएन पर ठीक वैसा ही व्यवहार देख रहा हूं, और मेरे दोनों सिरों पर गोमुखी हार्डवेयर और एक धीमा इंटरनेट कनेक्शन है। मैं आगे की जांच करने जा रहा हूं; अगर मुझे कुछ ठोस मिलता है तो मैं यहां वापस आ जाऊंगा।
हैराल्ड

1
यदि मैं अपना परीक्षण यूडीपी (iperf3 -u -b 25m) पर स्विच करता हूं, तो मुझे ओपनवीपीएन सुरंग के अंदर और बाहर दोनों जगह पूरी गति मिलती है। मैंने पुष्टि की है कि टीसीपी का उपयोग करते समय कोई विखंडन नहीं है - ओपनवीपीएन सही ढंग से एक छोटे एमएसएस की रिपोर्ट कर रहा है, सुरंग के अंदर मेरे टीसीपी पैकेट सभी 1354 बाइट्स हैं, और यूडीपी पैकेट अनफिट हैं। मैं आप के रूप में एक ही घटना देख रहा हूँ - सुरंग के अंदर CWND मान लगभग आधे हैं जो वे सुरंग के बाहर हैं, और थ्रूपुट भी आधा है, लेकिन मैं यह बताने के लिए नुकसान में हूं कि क्यों । चित्त आकर्षण करनेवाला।
हेराल्ड

1
ठीक है, झूठी आशा पैदा करने के लिए मेरी माफी। चर की एक पूरी गुच्छा को खत्म करने की कोशिश कर रहा है, मैं अपने स्थानीय लैन पर चल रहे एक ही विन्यास मापदंडों के साथ एक OpenVPN सेटअप। सुरंग के बाहर, 750Mbps। सुरंग के अंदर, 117Mbps। लेकिन - Openvpn दोनों एंडपॉइंट पर एक एकल CPU कोर का 100% उपभोग कर रहा था। तो फिर मैंने अपने इंटरनेट सुरंग के होम एंडपॉइंट को "वास्तविक" सर्वर पर स्थानांतरित कर दिया और अपनी सुरंग के माध्यम से अपेक्षित 25Mbps को देखा। दोनों समापन बिंदुओं पर OpenVPN लगभग 20% CPU का उपभोग कर रहा था। लंबी कहानी छोटी - मेरे मामले में, समस्या यह है कि मेरे घर-साइड सुरंग समापन बिंदु सीपीयू बाध्य है। माफ़ करना!
हैराल्ड

जवाबों:


2

शुरुआत के लिए टनल iperf रन के बाहर आपका 'नॉर्मल' UDP / 1194 होना चाहिए, जिस पर आपको समस्या है और TCP / 5201 नहीं है। पहले -b 100M के साथ प्रयास करें, लेकिन ध्यान रखें कि यह अधिकतम आकार के डेटाग्राम का उत्पादन करेगा जो आपके वीपीएन ट्रैफ़िक का प्रतिनिधि नहीं है (डेटाग्राम आकार को क्रमबद्ध यादृच्छिक होना चाहिए)। डेटाग्राम आकार के लिए -l विकल्प के साथ ट्यून करें और परिणाम जांचें। यदि परिणाम अच्छे नहीं हैं (मैं कहता हूँ कि 15 या 20% नुकसान) आपको ओवरलोडेड इंटरनेट राउटर पर संदेह हो सकता है जो आपके (शायद सबसे अच्छे प्रयास के) पैकेट को गिरा रहा है।

इसके अलावा, यह देखना दिलचस्प हो सकता है कि यदि आप अपने वीपीएन सुरंग को ईएफ क्लास क्लास यूडीपी पोर्ट पर स्विच करते हैं तो आपको क्या प्रदर्शन मिलेगा (मैं आरटीपी के कारण 5061 कहूंगा, लेकिन वास्तव में यह सुनिश्चित नहीं है कि सभी इंटरनेट राउटर ने क्यूओएस को सही ढंग से कॉन्फ़िगर किया है) या कोई भी। टीसीपी पोर्ट।

मेरे लिए, आपके सेटअप में कुछ भी गलत नहीं है और आपके डायग्नोस्टिक्स में कुछ भी अजीब नहीं है। इसके अलावा, OpenVPN या अन्य वीपीएन सॉफ़्टवेयर का एक और संस्करण आज़माएं।


वह किया। अपडेट 3 को देखें। आगे के परीक्षण करने के लिए बंदरगाह को अनवरोधित करने के लिए ओवेट की प्रतीक्षा की जा रही है।
अलेक्जेंडर थिएन

Aww, क्षमा करें, उस अंतिम अद्यतन को नहीं देखा। OVH के लिए इंतजार करते हुए अपने वीपीएन को टीसीपी पर बढ़ते हुए देखें; परिणाम क्या हैं? अपने दूसरे एडिट और रिट्रांसमिट के बारे में भी * बीएसडी से पीआई तक; क्या आपने iperf के सर्वर बफ़र्स के साथ खेला है? यह 8 केबी डिफ़ॉल्ट है, न जाने कैसे स्टैक एआरएम और लिनक्स पर बनाया गया है, लेकिन मैं इसे बढ़ाने में मदद कर सकता हूं।
30gd4n

मेरे कहने का मतलब यह है कि आपने मुझे बताया :)। Tcp पर परिणाम बदतर हैं। Tcp 443 से फर्क नहीं पड़ता। मजेदार बात यह है कि जब मैं इस github.com/sivel/speedtest-cli का उपयोग करता हूं, तो यह परीक्षण करने के लिए 95 मीटर नीचे और 75 मीटर की रिपोर्ट करता है। मैं iperf पर अधिक विश्वास करता हूं लेकिन यह वास्तव में ट्रैफ़िक प्रकार पर निर्भर करता है इसलिए ऐसा लगता है। Playstation4 को सुरंग के ऊपर गेम या पैच डाउनलोड करने में अधिक समय लगता है। जब मैं घर से दो आरबीपीएस के बीच एक सुरंग बनाऊंगा, जो अलग-अलग स्थानों पर हैं, लेकिन एक ही आईएसपी का उपयोग करें। मैंने पहले भी यही किया था और जहां परिणाम लगभग वही थे। लेकिन मैं आगे के परीक्षण करने की कोशिश करता हूं।
अलेक्जेंडर थिएन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.