VPN이 직접 연결보다 빠를 수 있을까
캡슐화는 부하를 더하지만, 출구는 경로 중계와 목적지, 전송 조건을 바꿀 수 있다. 속도 테스트 한 번이 아니라 세 가지 비교로 판단하라.
사무실 회선에서 기어가듯 느린 전송이 터널을 거치면 빠르게 끝나는 경우가 있다. 추가 캡슐화를 생각하면 불가능해 보이지만, 이 겉보기 역설은 잘못된 대상을 비교한 데서 생긴다. 터널은 일을 더하는 동시에 트래픽이 어느 네트워크 경로로 가는지, 목적지가 어느 주소를 보는지, 때로는 어느 서버가 응답하는지까지 바꾼다. 속도에 대한 어떤 결론보다 먼저 이 세 가지 효과를 분리해야 한다.
터널이 바꿀 수 있는 세 가지
첫째는 경로 중계다. 인터넷 라우팅은 측정된 지연이 아니라 사업자의 정책과 상업 관계를 따르므로, VPN 사업자를 거치는 경로는 직접 경로와 다른 네트워크를 지날 수 있다. 혼잡한 교환 지점을 피하거나 연결성이 더 좋은 지점에 도착할 수 있고, 그만큼 쉽게 더 나빠질 수도 있다.
둘째는 목적지다. 출구 주소가 바뀌면 DNS 응답이 바뀌는 경우가 많고, 콘텐츠 네트워크가 다른 캐시나 다른 리전을 배정할 수 있다. 그러면 개선의 일부는 터널이 아니라 새 서버의 몫이다. 클라이언트에서 아무것도 바꾸지 않아도 같은 호스트 이름이 더 가깝거나 부하가 적은 서버에 도착할 수 있다.
셋째는 전송 동작이다. 캡슐화는 실효 패킷 크기를 바꾸고, 손실이 있는 중간 구간을 피하는 터널은 TCP 흐름이 여러 번 후퇴하는 대신 윈도를 키우게 할 수 있다. 이 중 어느 것도 보편적인 가속 기제가 아니다. 각각은 관찰해야 하는 조건이다. 이들을 분리하는 것이 호기심을 사실로 바꾼다.
바꿀 수 없는 것
터널 안의 무엇도 기기와 네트워크 사이의 회선에 용량을 더하지 않는다. 포화된 Wi-Fi 채널, 혼잡한 마지막 구간, 한도가 있는 모바일 요금제는 두 경로를 똑같이 제한하며, 터널을 통한 속도 테스트가 그 한계를 넘을 수 없다. 같은 회선이 캡슐화된 패킷을 나르므로 캡슐화는 용량을 소비할 수는 있어도 만들어 내지는 못한다. 바뀌는 것은 패킷이 그 회선을 떠난 뒤 어디로 가는지다. 그래서 빠른 터널 결과에는 항상 첫 홉 위쪽의 설명이 있다.
서버 쪽 한계도 마찬가지로 무관심하다. 원격 호스트가 느리게 응답하면 더 나은 경로는 느린 응답을 더 효율적으로 전달할 뿐이고 사용자는 여전히 기다린다. 부하가 걸린 공유 원본은 같은 순간에 두 경로 모두에서 느리게 보인다.
경로를 제대로 비교하라
애플리케이션, 방향, 시간, 동시성을 같게 유지하고 경로만 바꾼다. 각 테스트를 같은 시간대에 여러 번 실행하고, 출구 주소와 리졸버 응답을 처리량과 함께 기록한다. 한 번의 실행은 측정이 아니라 표본이며, 한 번의 빠른 다운로드는 경로에 대해 아무것도 말해 주지 않는 캐시 적중일 수 있다. 숫자는 나중에 해석하기 어려우므로 결과보다 조건을 먼저 적는다.
mtr -rwc 50 -T -P 443 203.0.113.20
curl -o /dev/null -s -w '%{speed_download} %{time_connect}\n' https://example.com/file
dig +short cdn.example.com
traceroute -n -T -p 443 cdn.example.com
리졸버 응답은 대부분의 비교가 빠뜨리는 세부 사항이며, 같은 서버를 강제하면 사라지는 “개선”을 설명한다. 실행마다 주소가 다르면 그 테스트는 두 경로가 아니라 두 목적지를 비교한 것이다. 처리량과 함께 지연과 손실을 보고하라. 전체적으로 빠르더라도 모든 대화형 요청에 지연을 더하는 경로는 불평한 워크로드에 더 좋지 않다. 묻고 기다리는 모든 것에는 왕복 시간이 대용량 속도보다 중요하다.
차이를 남길 가치가 있을 때
승인된 터널이 특정 워크로드를 안정적으로 개선한다면 그것은 정당한 운영 선택이다. 워크로드, 측정, 사용한 출구를 문서화하라. 쓸 만한 기록은 호스트 하나, 터널이 만든 출구 주소, 리졸버 응답, 그리고 같은 날 직접 경로의 같은 수치를 담는다. 그것으로 다음 엔지니어는 논쟁을 다시 하는 대신 비교를 재현할 수 있다. 여전히 사업자가 무엇을 제한한다는 증거는 아니며, 다른 애플리케이션이나 다른 시간대로 옮겨지지 않는다.
측정 기록은 설정과 함께 보관하라. 개선이 아직 있는지에 대한 다음 질문에 답하며, 경로가 바뀌었는지 워크로드가 바뀌었는지 아는 유일한 방법이다. 날짜가 없는 기록은 그 질문에 전혀 답할 수 없다.