Home 기술 문서 동적 정체 제어 튜닝으로 네트워크 성능 향상
Applications

동적 정체 제어 튜닝으로 네트워크 성능 향상

About The Author

Outline

TCP(Transmission Control Protocol) CCA(Congestion Control Algorithm)는 사용 가능한 대역폭의 활용도를 극대화하고 정체를 방지하기 위해 클라이언트와 서버 간에 전송해야 하는 데이터의 양을 제어합니다. 설립 이래로 병목 현상 대역폭, 왕복 전파 시간(TCP BBR), 큐빅 등 다른 CCA가 개발되었습니다. TCP BBR과 큐빅은 혼잡 방지를 목표로 하고 있지만, 그 효과를 이해하는 것은 엔지니어링 및 연구 팀의 지속적인 임무였습니다.

TCP BBR은 패킷 손실 대신 패킷 지연을 지표로 사용하여 더 높은 처리량을 달성하는 것을 목표로합니다. 그러나 우리의 이전 연구는 BBR이 모든 경우에 저조한 성과를 보인다고 보고했다. 구체적으로, 우리의 평가는 작은 파일 (<100KB)의 처리량에 거의 또는 전혀 이점이 없다는 결론을 내렸다. 또한 RTT(Round-Trip Time)가 낮고 재전송이 낮은 흐름에 대한 BBR 성능이 입방형보다 나쁘다는 것을 관찰했습니다. 마지막으로, BBR의 이점은 클라이언트 대상 트래픽에서만 확인되었으며, 백오피스 연결(낮은 RTT 및 무시할 수 있는 재전송)은 큐빅에서 더 나은 성능을 발휘했습니다.

현재 Edgio인 EdgeCast는 대규모(VOD 및 라이브) 비디오 스트리밍 고객에게 웹 트래픽을 전송하는 글로벌 멀티 테넌트 CDN입니다. 한 고객에 대해 BBR을 사용하는 정체 제어 튜닝은 다른 고객의 성능에 부정적인 영향을 미칠 수 있고, 일부 시나리오에서 포괄적인 활성화로 인해 성능 저하가 발생할 수 있다는 점을 감안할 때, BBR이 향상된 성능을 제공하고 모든 CDN 고객에게 동적으로 지원할 수 있는 경우를 감지하는 메커니즘을 구현했습니다. 그 결과 모든 고객이 사용할 수 있는 새로운 동적 정체 제어 튜닝 기능이 탄생했습니다.

방법론에 대한 통찰력

아마도 그러한 동적 시스템에 가장 중요한 입력은 그것을 구동하는 데이터일 것입니다. 동적 정체 제어 튜닝 메커니즘은 대규모 소켓 데이터 수집의 최상위에 위치하며 모든 에지 캐시에서 TCP(xTCP) 소켓 성능 데이터를 내보냅니다. 특히 NetLink를 통해 Linux 커널의 TCP_INFO 구조에서 정보를 추출하여 Kafka를 통해 ClickHouse 클러스터로 스트리밍합니다. 이러한 소켓 성능 데이터를 대규모로 보유하면 캐시 서버에 대한 연결 성능을 매우 세분화하여 모니터링할 수 있습니다. xTCP는 많은 CDN 최적화를 위한 강력한 도구로 입증되었습니다. 예를 들어, 최근에 IPv6 초기 정체 기간을 전환하고 xTCP를 사용하여 성능을 향상시키는 모니터링 결과를 얻었습니다.

XTCP는 Google Measurement Lab(M-Lab)의 TCP-info 도구에서 수행하는 작업과 유사하며, 엣지 캐시에서 볼 수 있는 많은 소켓을 관리하기 위해 필요한 최적화(M-Lab 서버와 비교)와 프로토버프 형식으로 데이터를 내보내는 기능에서 상당한 차이가 있습니다. 계속 지켜봐 주시기 바랍니다. 곧 xTCP를 오픈할 계획입니다.

다음 그림에서는 시스템의 개요를 보여 줍니다. xTCP 데이터는 카프카로 스트리밍되는 모든 엣지 캐시에서 대규모로 수집됩니다. 그런 다음 xTCP 데이터가 ClickHouse 클러스터에 수집되어 BBR 컨트롤러를 비롯한 네트워크 데이터 분석에 힘을 실어주며 각 엣지 POP에서 성능이 저하된 접두사를 감지합니다.

그림 1. xTCP 및 BBR 구성 푸시를 사용한 데이터 취합 개요입니다.

워크플로의 동적 특성을 유지하고자 하는 동시에 짧은 시간 동안 큐빅과 BBR 사이의 플립 플롭핑을 방지하기 위해 각 엣지 포인트 오브 프레즌스(POP)에서 일관되게 저성능 접두사를 선택해야 합니다. 앞서 언급한 바와 같이 파일 크기가 100KB보다 큰 요청에 대해 BBR을 선택적으로 활성화합니다. 미세 조정된 입방 유량은 작은 파일에 더 적합합니다.

BBR 컨트롤러는 관찰된 모든 클라이언트 접두사의 상태를 평가하기 위해 두 가지 메트릭을 사용합니다.

  • 듀티 사이클: 하위 20 백분위수 성과 그룹에서 접두사(/24 또는 /56)는 얼마나 걸립니까?
  • 플랩 비율: 하위 20 백분위수 성과 그룹에서 접두사가 얼마나 자주 나타나고 사라지는가, 즉 상태의 변화?

그런 다음 알고리즘은 지난 몇 시간 동안 성능이 저하된 접두사를 지속적으로 감지합니다. 이 감지는 5분마다 실행됩니다. 엣지 POP당 선택된 총 접두사 수는 수백 개일 수 있지만 접두사 성능은 비교적 일관성이 있는 것으로 나타났습니다. 동일한 접두사가 정기적으로 선택되며 각 라운드에서 새로 추가되는 항목(시카고 팝의 다음 그림에서 볼 수 있음)은 거의 없습니다.

그림 2. 구성 생성 라운드당 선택된 새 접두사 수가 적습니다.

BBR을 활성화하기 위해 새 접두사가 선택되면 구성이 생성되고 검증 단계를 거쳐 전역적으로 엣지 캐시로 푸시됩니다.

성능 향상

전 세계 EDGE에서 BBR을 사용할 수 있게 되어 상당한 성능 개선이 이루어졌다는 소식을 전하게 되어 기쁘게 생각합니다. xTCP 소켓 데이터에서 추적하는 주요 메트릭은 TCP_INFO에 보고된 전달 속도입니다. 실적이 가장 저조한 접두사에 대해 BBR을 동적으로 활성화하기 때문에 낮은 백분위수(최악의 경우) 전달률이 개선될 것으로 예상합니다.

다음 그림은 BBR 변경이 활성화되자마자 로스앤젤레스 POP에서 5, 10 백분위수 전달율의 개선을 보여줍니다.

그림 3. BBR 변경 후 5, 10 백분위수 전달률에서 개선이 관찰되었습니다.

마찬가지로, 다음 그림에서도 북미 POP에서 BBR을 동적으로 활성화하자마자 미국의 대형 주거용 ISP의 낮은 백분위수 배송률에서 상당한 개선(~2배)을 보였습니다.

그림 4. BBR을 동적으로 활성화한 후 대규모 주거용 ISP에 대한 개선이 관찰되었다.

TCP-info에서 추출된 전송 속도는 클라이언트가 인식한 성능에 대한 적절한 추정치를 제공합니다. 그러나 가장 정확한 성능 지표는 클라이언트 연결에 대한 HTTP 액세스 로그에 표시되는 처리량(예: Goodput)입니다.

에지 캐시 서버에서 Goodput을 측정합니다. 다음 그림에서 볼 수 있듯이 변화로 인해 Goodput이 증가했습니다. 전체적으로 10%의 굿풋은 12% 증가했다.

그림 5. 10%의 굿풋은 12% 증가했다.

BBRv1에 대한 놀라운 작업과 BBRv2에 대한 지속적인 노력에 대해 Google의 BBR 개발 팀에 특별한 감사를 전합니다. 우리는 BBRv2를 기대하고 있으며 조만간 우리 플랫폼에 관련 변경 사항을 계속 추진할 것입니다. 에지캐스트의 세르지오 루이즈, 조셉 코르카메스, 조 라후드, 후안 브란, 다니엘 록하트, 벤 러벳, 콜린 라소르, 모니쉬 라드, 무하마드 바시르, 잭 존스, 데이브 앤드류에게 개발, 테스트 및 롤아웃 과정에서 이러한 변화를 지원한 칭찬을 전합니다. Edgio 엔지니어링 팀은 특히 분석의 많은 부분을 지원하는 xTCP 도구를 개발하는 데 기여한 Dave Seddon에게 감사를 표합니다.

Edgio 고객은 동적 정체 제어 튜닝을 통해 성능 저하 클라이언트에 대한 성능 향상을 자동으로 얻고 수익성 향상을 통해 웹 전송 속도를 높이고 비디오 스트리밍에 대한 리버퍼를 줄일 수 있습니다.