ฉันพบอัตราการถ่ายโอน OpenVPN ที่ช้ามากระหว่างเซิร์ฟเวอร์สองแห่ง สำหรับคำถามนี้ฉันจะเรียกเซิร์ฟเวอร์เซิร์ฟเวอร์ A และเซิร์ฟเวอร์ B
ทั้งเซิร์ฟเวอร์ A และเซิร์ฟเวอร์ B กำลังเรียกใช้ CentOS 6.6 ทั้งสองอยู่ในศูนย์ข้อมูลที่มีสาย 100Mbit และการถ่ายโอนข้อมูลระหว่างเซิร์ฟเวอร์ทั้งสองที่อยู่นอก OpenVPN ทำงานใกล้กับ ~ 88Mbps
อย่างไรก็ตามเมื่อฉันพยายามถ่ายโอนไฟล์ใด ๆ ผ่านการเชื่อมต่อ OpenVPN ที่ฉันได้สร้างขึ้นระหว่างเซิร์ฟเวอร์ A และเซิร์ฟเวอร์ B ฉันจะได้รับปริมาณงานประมาณ 6.5Mbps
ผลการทดสอบจาก iperf:
[ 4] local 10.0.0.1 port 5001 connected with 10.0.0.2 port 49184
[ 4] 0.0-10.0 sec 7.38 MBytes 6.19 Mbits/sec
[ 4] 0.0-10.5 sec 7.75 MBytes 6.21 Mbits/sec
[ 5] local 10.0.0.1 port 5001 connected with 10.0.0.2 port 49185
[ 5] 0.0-10.0 sec 7.40 MBytes 6.21 Mbits/sec
[ 5] 0.0-10.4 sec 7.75 MBytes 6.26 Mbits/sec
นอกเหนือจากการทดสอบ IPV ของ OpenVPN แล้วเซิร์ฟเวอร์ทั้งสองไม่ได้ใช้งานอย่างสมบูรณ์โดยไม่มีการโหลดเป็นศูนย์
เซิร์ฟเวอร์ A ถูกกำหนด IP 10.0.0.1 และเป็นเซิร์ฟเวอร์ OpenVPN เซิร์ฟเวอร์ B ได้รับการกำหนด IP 10.0.0.2 และเป็นไคลเอนต์ OpenVPN
การกำหนดค่า OpenVPN สำหรับเซิร์ฟเวอร์ A เป็นดังนี้:
port 1194
proto tcp-server
dev tun0
ifconfig 10.0.0.1 10.0.0.2
secret static.key
comp-lzo
verb 3
การกำหนดค่า OpenVPN สำหรับเซิร์ฟเวอร์ B เป็นดังนี้:
port 1194
proto tcp-client
dev tun0
remote 204.11.60.69
ifconfig 10.0.0.2 10.0.0.1
secret static.key
comp-lzo
verb 3
สิ่งที่ฉันสังเกตเห็น:
1.ความคิดแรกของฉันคือฉันกำลังคอขวด CPU บนเซิร์ฟเวอร์ OpenVPN เป็นแบบเธรดเดียวและเซิร์ฟเวอร์ทั้งสองนี้ใช้โปรเซสเซอร์ Intel Xeon L5520 ซึ่งไม่ใช่วิธีที่เร็วที่สุด อย่างไรก็ตามฉันรันtop
คำสั่งระหว่างหนึ่งในการทดสอบ iperf และกด1
เพื่อดูการใช้ CPU โดยหลักและพบว่าโหลด CPU ต่ำมากในแต่ละคอร์:
top - 14:32:51 up 13:56, 2 users, load average: 0.22, 0.08, 0.06
Tasks: 257 total, 1 running, 256 sleeping, 0 stopped, 0 zombie
Cpu0 : 2.4%us, 1.4%sy, 0.0%ni, 94.8%id, 0.3%wa, 0.0%hi, 1.0%si, 0.0%st
Cpu1 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu2 : 0.0%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.3%st
Cpu3 : 0.3%us, 0.0%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu4 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu5 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu6 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu7 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu8 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu9 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu10 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu11 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu12 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu13 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu14 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu15 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 946768k total, 633640k used, 313128k free, 68168k buffers
Swap: 4192188k total, 0k used, 4192188k free, 361572k cached
2.เวลาในการปิงเพิ่มขึ้นอย่างมากเหนืออุโมงค์ OpenVPN ขณะที่ iperf กำลังทำงาน เมื่อ iperf ไม่ทำงานเวลา ping เหนืออุโมงค์นั้นสม่ำเสมอ 60ms (ปกติ) แต่เมื่อ iperf ทำงานและผลักดันการรับส่งข้อมูลจำนวนมากเวลา ping จะไม่แน่นอน คุณสามารถดูด้านล่างว่าเวลา ping จะเสถียรจนถึง ping ที่ 4 เมื่อฉันเริ่มต้นการทดสอบ iperf:
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=60.1 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=60.1 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=60.2 ms
** iperf test begins **
64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=146 ms
64 bytes from 10.0.0.2: icmp_seq=5 ttl=64 time=114 ms
64 bytes from 10.0.0.2: icmp_seq=6 ttl=64 time=85.6 ms
64 bytes from 10.0.0.2: icmp_seq=7 ttl=64 time=176 ms
64 bytes from 10.0.0.2: icmp_seq=8 ttl=64 time=204 ms
64 bytes from 10.0.0.2: icmp_seq=9 ttl=64 time=231 ms
64 bytes from 10.0.0.2: icmp_seq=10 ttl=64 time=197 ms
64 bytes from 10.0.0.2: icmp_seq=11 ttl=64 time=233 ms
64 bytes from 10.0.0.2: icmp_seq=12 ttl=64 time=152 ms
64 bytes from 10.0.0.2: icmp_seq=13 ttl=64 time=216 ms
3.ดังกล่าวข้างต้นฉันวิ่ง iperf นอกอุโมงค์ OpenVPN และปริมาณงานปกติ - ~ 88Mbps อย่างสม่ำเสมอ
สิ่งที่ฉันได้ลอง:
1.ฉันคิดว่าการบีบอัดอาจทำให้เปรอะเปื้อนดังนั้นฉันจึงปิดการบีบอัดด้วยการลบcomp-lzo
ทั้งจาก configs และเริ่ม OpenVPN ใหม่ ไม่มีการปรับปรุง
2.แม้ว่าก่อนหน้านี้ฉันพบว่าการใช้งาน CPU ต่ำ แต่ฉันคิดว่ารหัสเริ่มต้นอาจมีความเข้มข้นน้อยเกินไปสำหรับระบบที่จะติดตาม ดังนั้นฉันจึงเพิ่มcipher RC2-40-CBC
การตั้งค่าทั้งสอง (รหัสที่มีน้ำหนักเบามาก) และเริ่ม OpenVPN ใหม่ ไม่มีการปรับปรุง
3.ฉันอ่านฟอรัมต่าง ๆ เกี่ยวกับวิธีปรับแต่งส่วน mssfix และ mtu-tun อาจช่วยประสิทธิภาพ ฉันเล่นกับรูปแบบต่าง ๆ ตามที่อธิบายไว้ในบทความนี้แต่ไม่มีการปรับปรุง
มีความคิดเห็นเกี่ยวกับสิ่งใดบ้างที่อาจทำให้ประสิทธิภาพของ OpenVPN แย่ลง?
cipher none
แต่ฉันสงสัยว่ามันจะช่วยได้