CloudFlare WARP PLUS (Argo Smart Routing) 분석

(Last Updated On: December 28, 2020)

WARP PLUS가 다시 ICN (서울 엣지)에서 사용되게 바뀌어 이번 기회에 왜 빠른지 궁금한 WARP PLUS를 조금 자세히 분석 해 보기로 하였다.

CloudFlare WARP

CloudFlare Warp는 VPN으로 설계된 것은 아니지만 인터넷 상에 Origin IP로 변조하는 행위는 용납되지 않기 때문에(HTTPS) 동작 자체는 VPN으로 동작하며 CloudFlare 프록시 사이트에만 Origin IP가 적용된다. (HTTP CF-Connecting-IP 헤더를 붙임.)

Argo Smart Routing

https://blog.cloudflare.com/argo/ – CloudFlare Argo Smart Routing

Argo는 최적화 된 백본 네트워크를 제공한다. 기존의 인터넷 망은 네트워크 혼잡 또는 손상, 과금 네트워크에 의한 속도 제한. 또는 최적의 경로로 거치지 않는 라우팅 문제등 인터넷의 패킷(데이터)이 여러 ISP (통신사)를 거쳐 속도가 느려지는 현상을 CloudFlare 자사의 데이터센터급 네트워크인 PoP (네트워크 접속지점, Edge)를 서로 연결하여 만든 가상 터널에 고객의 트래픽을 실어 보낸다.

WARP PLUS

WARP PLUS는 WARP와 다르게 Argo Smart Routing을 적용하고 CloudFlare 사이트에는 해당 지역의 엣지에 캐시를 사용할 수 있게 제작되었다.

WARP PLUS 터널 구조

클라우드플레어에서 제공한 위 그림을 보면 클라이언트는 origin 지역 데이터센터에서 PROXY로 시작하고 목적지 서버의 프록시(CloudFlare) 데이터센터로 연결 요청을 한다. 그렇게 되면 Client와 Origin 서버는 해당 지역에서 가장 가까운 데이터센터로 연결하기 때문에 네트워크 혼잡의 가능성도 줄어들며 각각 TCP RTT는 20ms 이내가 될 것이다. 즉 클라이언트나 서버 측에서는 거리가 떨어지더라도 고RTT에 의한 throughput 손실이 일어나지 않는다.

https://en.wikipedia.org/wiki/TCP_tuning

나머지 역활은 저 Initial Data Center와 Proxy Data Center 사이의 라우팅 최적화이다. 이건 CloudFlare가 자랑하는 Argo Smart Routing이 제 역할을 하게 될 것이다. 분명 TCP는 RTT에 의해 성능이 손실되기 때문에 모든 홉(데이터센터 구간)을 데이터센터가 서로 세션연결을 성사시킨다면 더 빠르겠지만 그림을 참고해 보나 기술적으로 보나 복잡만 커질 것 같다.

무선에서 강력함

스마트폰의 경우 대부분 무선 네트워크를 사용한다. LTE의 경우 Latency가 최소 20ms에 평소 40ms를 기웃거리고 신호가 좋지 않으면 100ms까지도 넘나든다. 더구나 보고 있는 웹사이트가 외국사이트라면 기본 60~100ms가 추가되고 데이터를 보내는 서버측이나 무선 기기인 클라이언트, 양쪽 다 RTT가 증가하여 throughput은 떨어지게 될 것이다. 이런 무선 환경에서는 RTT가 심각하게 요동치고 패킷 로스도 생기기 때문에 원격서버에 대한 RTT는 Tranparent Proxy를 통해 프록시 서버가 대신 떠 맡아 성능 체감이 향상 될 것이다.

데이터센터급이기에 가능한 넉넉한 대역폭

위 그림을 보면 해당 지역과 원격 지역의 사이는 데이터센터 임을 알 수 있다. 클라우드플레어의 경우 수 많은 통신회사와 계약을 하고 데이터센터에 서버를 두어 혼잡이 생기지 않을 만 한 충분한 대역폭을 마련하였기 때문에 백본 가속에는 무리가 없을 것이다.

또한 CloudFlare가 자랑하는 Argo Smart Routing. 으로 모든 클라우드플레어 데이터센터간(백본) 라우팅을 최적화하였기 때문에 빠를 수 밖에 없겠다.

문제점

아이피가 고정되지 않는 문제점

WARP 의 기본 동작은 VPN이기 때문이기도 하다. 애초에 VPN이 아니면 구현이 안 되는 문제가 있다. 예를 들어 인터넷에서 서울에 위치한 198.51.100.3 의 클라이언트 IP가 있는데 이 아이피를 도쿄 데이터센터의 프록시 서버를 통해 원격 서버로 넘어간다 한들 원격서버는 198.51.100.3을 서울로 인지하기 때문에 도쿄 데이터센터와의 연결이 성립될 수 없다.

따라서 CloudFlare 프록시 서버는 출구 IP로 도쿄의 IP를 사용하게 된다. 이 과정에서 원본 IP가 소실되어 버린다.

특히 Argo 의 경우 각 원격서버의 IP 위치별로 최적의 위치의 데이터센터로 연결해야 하기 때문에 원격 IP가 접속하는 지역별로 달라지는 가능성은 기피할 수 없다.

실제로 기술상의 문제(위에서 언급한 문제 또는 서버 로드밸런싱이나 NAT 포트 할당등)겠지만 WARP 상태에서 TCP나 UDP를 연결할 때마다 Request IP가 변경되는 것을 확인하였다.

WARP(+) 사용 중에는 TCP와 UDP를 같이 사용하는 프로토콜 (특히 게임)이나 여러 서버에 접속하여 아이피 인증을 거치는 로직을 가진 서버에 연결 할 경우 무조건 오류날 것이다.

CloudFlare가 잡지 못한 라우팅 오류 또는 망 혼잡은 느리다

그렇다..

가격

케이블 인터넷을 월 5000원 이하에도 이용할 수 있는 것을 감안하면 인터넷 사용하는 부가상품으로 $5 는 큰 가격일 수 있다.

Throughput이 낮음

클라우드플레어의 서버 상태에 따라 속도가 달라진다. 내 인터넷 500Mbps 연결에서 WARP에 연결하면 최고로 잘 나오면 60Mbps가 최대일 때가 가끔 있다. 하지만 이걸 감안 하더라도 웹서핑 성능은 좋다.

잡담

국내에서 GTA V 무료배포로 인한 다운로드 폭증때 WARP를 사용하는 사용자가 늘자 WARP 한국서버를 한 동안 사용할 수 없게 되었다. 그러나 최근 다시 WARP를 사용할 수 있게 되어 더 빠른 인터넷을 사용할 수 있을 때 까지 나는 계속 사용할 것이다.