대기 시간이 긴 링크에서 OpenVPN 안정성을 개선하려면 어떻게해야합니까?


11

핑 시간이 약 3 초인 BGAN 위성 링크를 통해 OpenVPN VPN을 실행하고 있습니다. 우리는 tun 구성 에서 사용 하며 Linux (CentOS)에서 실행 중입니다. 주로 링크를 통해 전송되는 이메일이지만 메일에 큰 첨부 파일이 포함되면 VPN이 정지 된 것 같습니다.

"나는 터널을 통해 Ping 할 수 있지만, 실제 작업은 가두을 야기한다. 이것이 MTU 문제인가?" OpenVPN FAQ의 질문은 내 문제를 정확하게 설명하는 것처럼 보이지만 사용 mssfix하고 fragment여전히 상황을 개선하는 데별로 도움이되지 않는 것 같습니다.

내 주요 테스트는 scp로 VPN을 통해 2MB 파일을 복사하는 것 입니다. 약 192kbyte를 복사 한 후 정지 된 상태 를보고합니다 . 몇 초 기다렸다가 다시 복사를 시작한 다음 다른 몇 kbyte 후에 다시 정지합니다.

이 중단은 OpenVPN 구성에서 fragment또는 mssfix옵션을 설정했는지 여부에 관계없이 발생합니다 (설정 fragment 1000은 중단을 줄이는 것처럼 보이지만 제거하지는 않습니다). OpenVPN mtu-test은 1542를 MTU 크기로보고했습니다.

내가 사용하는 방법과시기에 대한 자세한 조언을 인터넷을 검색 한 mssfix하고 fragment,하지만 난 단지 페이지가 자주 묻는 질문과 같은 말을하고, 어떤 매개 변수를 사용하는 방법 및시기에 관한 세부 사항을 제공하지 찾을 수 있습니다.

내 질문은 다음과 같습니다

  • 언제 사용합니까 mssfix와 fragment?
  • 사용 mssfix하고 fragment조합 하여 사용 합니까?
  • 경우 mssfix및 fragment솔루션이며, 무엇이다 tun-mtu, link-mtu및 mtu-disc매개 변수는?

또한 iperf 도구 를 사용하여 대역폭을 측정했습니다. VPN이 없으면 210Kbits / sec의 순서로 지속적으로 측정됩니다.

VPN ( )을 통해 iperf 를 사용 하는 경우 $ iperf -c remoteserver -t60 -i510Kbits / sec에서 시작한 다음 1.2Mbits / sec를보고 할 때까지 꾸준히 올라간 후 여러 번 반복하여 0kbits / sec를보고합니다 (I 1.2Mbits / sec는 일부 OpenVPN 버퍼링 때문일 수 있습니다.)

가 iperf는 대역폭을 측정하는 가장 좋은 방법은?

이 상황에 대한 도움을 주시면 감사하겠습니다.


openvpn이 현재 TCP 또는 UDP를 사용하고 있습니까?
— pjc50

현재 UDP를 사용하고 있습니다
— iWerner

모든 답변에 감사드립니다. 그러나 BGAN 장치의 방송 시간이 부족하여 일시적으로 중지해야했습니다. 오늘 후반에 공동 작업을하고 싶습니다. TCP를 사용하면 네트워크를 통해 전송되는 데이터가 두 배가되기 때문에 (따라서 클라이언트가 이미 매우 민감한 비용) UDP를 유지하는 것이
— 좋습니다.

답변:


5

MTU로 1542? WAN 링크에 대해서는 들어 본 적이 없습니다. 일반적으로 MTU는 최대 페이로드, ip 패킷 크기에서 IP (20 바이트) 및 ICMP (8 바이트)의 헤더를 뺀 값입니다. 이는 기존 이더넷 LAN의 경우 MTU = 1500을 의미합니다. 또한 대부분의 VPN은 패킷 캡슐화에 오버 헤드를 발생시킵니다. 일반적인 VPN MTU는 1400입니다.

현대 네트워크에서는 수신 및 송신 경로가 다를 수 있으며 자동 경로 재 라우팅으로 인해 변경 될 수 있으므로 MTU의 현재 상태를 결정하기가 어렵습니다. 이와 같은 네트워크의 경우 VPN 링크 양쪽에있는 호스트 (예 : 576)에서 MTU를 낮게 설정하는 것이 더 효과적 일 수 있습니다.

MSS (최대 세그먼트 크기)는 MTU에서 IP + TCP 헤더 (40 바이트)를 뺀 값입니다. 이것은 일반적으로 네트워크 스택에 의해 협상되며 MTU가 잘못되지 않는 한 MTU와 동일한 협상 문제가 없습니다. (MTU 협상은 일반적으로 차단 된 ICMP 또는 블랙홀 라우터에 의해 손상됩니다).

가장 먼저해야 할 일은 보내는 쪽에서 네트워크 패킷 캡처를 수행하고 프레임 크기별로 디스플레이를 정렬하는 것입니다 (Wireshark 에서이 열을 추가해야 할 수도 있습니다). 너무 큰 프레임, 예상 한 프레임을 보내지 않는지 확인해야합니다. 대형 전송 오프로드 또는 점보 프레임과 같은 옵션이 활성화 된 경우 최신 네트워크 카드가 대형 프레임을 전송하는 것은 드문 일이 아닙니다. 이 옵션이 활성화되면 30,000 + 바이트 프레임을 보았습니다.


변경하기 전에 패킷 캡처에 +1 거대한 프레임을 찾지 않더라도 '정상적인'패킷이 어딘가에 조각난 것을 볼 수 있습니다.
— Javier

1
기본적으로 OpenVPN은 tun 장치의 MTU를 1500으로 설정합니다 (이 장비의 이더넷 장치에있는 MTU와 동일). VPN 패킷 조각화가 좋은지 나쁜지 확실하지 않습니다. 이 스레드의 대답은 그것이 나쁘다는 것을 암시하는 것처럼 보이지만 웹에서 찾은 다른 참조는 그것이 좋다는 것을 암시합니다.
— iWerner

2
@ iwerner : 핑으로 mtu 크기를 결정하려고 했습니까? ICMP가 비활성화되어 있지 않으면 Windows에서 다음을 사용할 수 있습니다. ping -f -l 1372 <destination ip>. 성공할 때까지 숫자를 줄이십시오. Linux에서 ping -s 1372 -M은 <대상 IP>를 수행합니다. 참고로 OpenVPN FAQ는 mssfix 1200을 사용하는 것이 좋지만 근본 원인을 다루지는 않습니다. VPN 솔루션을 사용하여 조각화하면 항상 성능이 저하 될 수 있습니다. 대규모 VPN 설정을 사용하는 경우 중앙 집중 장치 끝에서 원격 사무실 끝에서만 조각화를 사용할 수 없습니다.
— Greg Askew

2

호기심 때문에 네트워크 인터페이스의 MTU를 낮추려고 시도 했습니까? 아마도 위성 링크가 조각화를 심하게 망칠 수 있습니다. 반 직관적 인 메모로 TCP를 통해 openvpn을 통해 변경을 시도 할 수 있습니다. 성능이 저하되어야한다는 것을 알고 있지만 줄을 따라 조각화를 제어 할 수 없으면 도움이 될 수 있습니다.


나는 반대를 제안하려고했다 :)-이 높은 대기 시간은 TCP-in-TCP 문제가 나타나고 UDP는 그것을 피할 수있는 경우입니다.
— pjc50

나는 그가 openvpn에 기본 UDP 포트를 사용하고 있다고 가정하고 그 반대를 제안했습니다. 그렇습니다. 일반적으로 나는 당신과 동의 할 것입니다. 그러나 우리 모두는 sysadmin이 시행 착오라는 것을 알고 있으며 일반적으로 '반대
— 기를

감사. 우리는 현재 UDP를 사용하고 있으며 TCP 시도는 결코 일어나지 않았습니다. (좀 더 담당자가 있다면 내가 당신을 upvoted 한 것)
— iWerner

@iWerner : thanks :) 또한 iface에서 MTU를 점진적으로 줄이고 시도가 멈춘 경우를 확인하십시오.
— lorenzog

2

TCP를 사용할 때는 TCP의 창 크기를 늘리십시오. 이것은 "공중의 패킷 수"에 도움이됩니다.

내가이 물건을 가지고 놀았 기 때문에 오랜 시간이 지났지 만 여기에 Google이 찾은 링크 가 있습니다.

난 후에 나는 당신이 BGAN을 실행하는 참조 질문을 다시 읽기 - I은 좋은 모양이 것 이 (또는 구글 "BGAN 스푸핑").

대역폭 측정과 관련하여 합리적인 패킷 크기를 사용하는 한 iperf가 꽤 괜찮은 것으로 나타났습니다.


그것은 TCP 가속기 우리가 이야기 인말 새트 사람들은 윈도우와 OS X에서만 사용할 수라고 말했다 반면, 레드햇 사용할 수 있음을 언급한다 (이것은 인말 새트 / BGAN 웹 사이트의 말씀 참) -이 재미있다
— iWerner

그들은 지금 그것을 가지고 있지 않을 수도 있습니다. 나는 문서 날짜가 07 인 것을 본다. 당신이 충분히 강하게 밀고 충분한 사람들과 이야기한다면; 오래된 사본을 가진 사람을 찾을 수 있습니다. 일반적으로 전화를 걸면 1 단계 지원이 제공됩니다. 내 연락처 중 일부를 시도하지만 보장하지는 않습니다.
— Eddy

위성 제공 업체로부터 도망 쳤습니다. 말하는 내용을 아는 사람을 찾기가 어렵습니다. 나는 계속 노력할 것이다. 여기에 시도해야 할 것이있다 : sourceforge.net/projects/pepsal 프로젝트 설명에서 Inmarsat 소프트웨어가하는 일을 거의하고있다 : PEPsal은 통합 된 다층의 투명한 TCP이다 연결을 두 부분으로 분할하여 데이터를 전송할 때 Linux TCP 향상 기능을 사용하고 다른 특성을 가진 링크의 성능을 크게 향상시키는 Performance Enhancing Proxy
— Eddy

2

나는 당신이 잘못된 나무를 짖는 것 같아요. 잘못된 MTU 문제가 발생하면 192KB 이전에 트래픽이 중단되었습니다. 나는 그것이 "비행 패킷 내"창, TCP 창 또는 위성 업 링크 자체의 일부 버퍼와 관련이 있다고 생각합니다.

당신은 모든 받고하는 경우 확실히 약간 긴 패킷 캡처를 (모두 '내부'와 VPN의 '외부')를 어떻게 볼 ACK'들

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.