대기 시간이 긴 링크에서 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,하지만 난 단지 페이지가 자주 묻는 질문과 같은 말을하고, 어떤 매개 변수를 사용하는 방법 및시기에 관한 세부 사항을 제공하지 찾을 수 있습니다.

내 질문은 다음과 같습니다

  • 언제 사용합니까 mssfixfragment?
  • 사용 mssfix하고 fragment조합 하여 사용 합니까?
  • 경우 mssfixfragment솔루션이며, 무엇이다 tun-mtu, link-mtumtu-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.