Tôi đang gặp tốc độ truyền OpenVPN cực kỳ chậm giữa hai máy chủ. Đối với câu hỏi này, tôi sẽ gọi máy chủ Server A và Server B.
Cả Máy chủ A và Máy chủ B đều đang chạy CentOS 6.6. Cả hai đều được đặt trong các trung tâm dữ liệu với đường truyền 100Mbit và truyền dữ liệu giữa hai máy chủ bên ngoài OpenVPN chạy gần ~ 88Mbps.
Tuy nhiên, khi tôi cố gắng chuyển bất kỳ tệp nào qua kết nối OpenVPN mà tôi đã thiết lập giữa Máy chủ A và Máy chủ B, tôi nhận được thông lượng ngay khoảng 6,5Mb / giây.
Kết quả kiểm tra từ 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
Ngoài các thử nghiệm iperf OpenVPN này, cả hai máy chủ hầu như không hoạt động với tải không.
Máy chủ A được gán IP 10.0.0.1 và đó là máy chủ OpenVPN. Máy chủ B được gán IP 10.0.0.2 và nó là máy khách OpenVPN.
Cấu hình OpenVPN cho Máy chủ A như sau:
port 1194
proto tcp-server
dev tun0
ifconfig 10.0.0.1 10.0.0.2
secret static.key
comp-lzo
verb 3
Cấu hình OpenVPN cho Máy chủ B như sau:
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
Những gì tôi đã nhận thấy:
1. Suy nghĩ đầu tiên của tôi là tôi đang làm tắc nghẽn CPU trên máy chủ. OpenVPN là một luồng đơn và cả hai máy chủ này đều chạy bộ xử lý Intel Xeon L5520 không phải là nhanh nhất. Tuy nhiên, tôi đã chạy một top
lệnh trong một trong các thử nghiệm iperf và nhấn 1
để xem mức độ sử dụng CPU theo lõi và thấy rằng tải CPU rất thấp trên mỗi lõi:
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. Thời gian Ping tăng đáng kể so với đường hầm OpenVPN trong khi iperf đang chạy. Khi iperf không chạy, thời gian ping trên đường hầm luôn là 60ms (bình thường). Nhưng khi iperf đang chạy và đẩy lưu lượng lớn, thời gian ping trở nên thất thường. Bạn có thể xem bên dưới cách thời gian ping ổn định cho đến lần ping thứ 4 khi tôi bắt đầu thử nghiệm 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. Như đã đề cập ở trên, tôi đã chạy iperf bên ngoài đường hầm OpenVPN và thông lượng là bình thường - ~ 88Mbps một cách nhất quán.
Những gì tôi đã thử:
1. Tôi nghĩ rằng nén có thể làm hỏng mọi thứ, vì vậy tôi đã tắt nén bằng cách xóa comp-lzo
khỏi cả hai cấu hình và khởi động lại OpenVPN. Không có cải thiện.
2. Mặc dù trước đây tôi thấy rằng việc sử dụng CPU thấp, tôi nghĩ rằng mật mã mặc định có thể hơi quá nặng để hệ thống theo kịp. Vì vậy, tôi đã thêm cipher RC2-40-CBC
vào cả hai cấu hình (một mật mã rất nhẹ) và khởi động lại OpenVPN. Không có cải thiện.
3. Tôi đã đọc trên các diễn đàn khác nhau về cách điều chỉnh đoạn, mssfix và mtu-tun có thể giúp hiệu suất. Tôi đã chơi với một vài biến thể như được mô tả trong bài viết này , nhưng một lần nữa, không có cải thiện.
Bất kỳ ý tưởng về những gì có thể gây ra hiệu suất OpenVPN kém như vậy?
cipher none
mặc dù tôi nghi ngờ nó sẽ giúp.