대규모 글로벌 네트워크를 운영할 때 공용 인터넷을 통해 통신하는 시스템 간의 우수한 연결성과 성능을 보장하는 것이 긍정적인 사용자 경험을 보장하는 데 중요합니다. 인터넷의 복잡하고 최선의 특성을 감안할 때 가장 신뢰할 수있는 공급자에서 가장 잘 프로비저닝 된 링크조차도 때로는 문제가 있습니다.
이러한 링크를 모니터링하기 위한 여러 가지 전략이 있습니다. 여기에는 측정을 위해 특별히 트래픽을 생성하는 능동 측정 과 기존 트래픽을 모니터링하는 수동 측정이 포함됩니다. 이 기사에서는 네트워크가 의존하는 많은 링크를 수동적으로 모니터링하기 위해 xTCP 소켓 샘플링 시스템을 사용하는 수동적인 접근 방식을 설명합니다.
xTCP의 데이터를 최대한 활용하기 위해, 우리는 인터넷 모니터링과 관련된 몇 가지 문제를 해결하는 이 데이터를 처리하는 접근 방식을 추가로 개발했습니다. 특히 CDN(콘텐츠 전송 네트워크) 사이트 간에 관찰되는 재전송의 심각도를 상대적으로 측정하는 재전송 비율 이라는 개념을 소개합니다. 특정 수준 이상의 재전송 비율은 처리량 저하와 일치하여 사용자 인식 성능에 직접적인 영향을 미치므로 네트워크 성능 저하를 해결할 수 있는 네트워크 자동화의 훌륭한 기반이 됩니다.
배경
CDN의 일반적인 워크플로우에는 한 POP(point-of-presence)가 다른 POP(point-of-presence)로 연결하여 캐시할 콘텐츠 조각을 가져오는 등 일부 콘텐츠를 찾습니다. 이러한 상호 작용은 클라이언트 요청에 대한 직접 응답으로 이루어지는 경우가 많으며, 이는 다운스트림 요청이 전송이 완료되기를 기다리는 중일 수 있음을 의미합니다. 일반적으로 요청 자체는 몇 킬로바이트 단위로 매우 작을 수 있습니다. 응답 크기는 킬로바이트에서 수 메가바이트에 이르기까지 매우 다양할 수 있습니다.
그림 1: 요청 흐름은 작은(순서 KB) 요청을 보내고 잠재적으로 큰 응답(메가바이트)을 받습니다.
존재 지점 간 연결 상태를 모니터링하기 위해 소켓 모니터링 도구인 xTCP를 사용하여 에지 서버에 있는 모든 오픈 소켓의 현재 상태를 샘플링할 수 있습니다. 이렇게 하면 클라이언트용 소켓에 중요한 가시성이 제공되지만 이 소켓 데이터를 통해 PoP 간의 데이터를 볼 수도 있습니다.
그러나 이 데이터를 측정하는 것은 몇 가지 어려움이 없습니다. 첫째, xTCP는 다양한 연결의 시점 샘플을 제공합니다. 즉, 전송의 여러 지점에서 많은 연결을 잡을 수 있습니다. 따라서 우리가 하는 모든 평가는 단일 가치보다 행동의 더 넓은 분포를 고려해야 합니다.
다음으로 올바른 방향을 모니터링하고 있는지 확인해야 합니다. 요청을 생성한 POP(위 다이어그램의 POP A)와 요청을 수신하여 응답해야 하는 POP(위 다이어그램의 POP B)에는 소켓 정보가 있지만, 비대칭 워크로드는 서로 다른 동작을 보일 것으로 예상합니다. 클라이언트가 전송한 패킷의 대부분은 제어 패킷(초기 요청, 후속 승인 패킷)이고 서버에서 전송한 패킷의 대부분은 데이터 패킷이므로 의미 있는 양의 데이터가 포함될 가능성이 높습니다.
결과적으로, 경로에 정체 또는 기타 문제가 있는 경우 데이터를 전송하여 더 많은 대기열 공간을 차지하는 패킷은 패킷 손실과 재전송을 겪을 가능성이 더 높습니다(예: 사용 중인 라우터에서 대기열이 끊어지는 경우). 이를 입증하기 위해 10분 동안 한 쌍의 POP 사이에서 요청 및 응답 흐름에서 볼 수 있는 패킷 재전송 속도(총 재전송 패킷의 비율을 전송된 데이터 세그먼트 수로 나눈 비율로 계산됨)의 분포를 고려합니다.
그림 2: 응답 트래픽은 더 큰 크기로 인해 더 많은 재전송에 직면합니다.
여기서는 클라이언트 요청 소켓이 이 기간 동안 거의 재전송되지 않는 것을 볼 수 있습니다. 반면에, 응답은 거의 85%의 소켓이 0이 아닌 재전송을 가지고 있음을 보여주지만, 대부분의 연결에서 재전송 속도는 1% 미만입니다. 놀랍지 않게, 우리는 테스트 기간 동안 0이 아닌 재전송과 함께 거의 모든 POP 쌍에서 유사한 동작을 관찰합니다. 따라서 우리는 데이터가 가득한 응답 흐름에 초점을 맞춥니다. 우리는 원래 요청 POP에 대한 요청을 서비스하는 것과 관련되어 있기 때문에, 우리는 이것을 “인바운드” 흐름이라고 부릅니다.
우리의 마지막 과제는 재전송과 관련된 몇 가지 일반적인 복잡성과 성능 저하를 위한 신호로 사용하는 것의 어려움에서 비롯됩니다. 실제로 재전송은 단순히 송신자 상태와 패킷이 재전송된 횟수를 반영하기 때문에 특정 문제를 나타내지 않고 정기적으로 발생할 수 있습니다. 이는 궁극적으로 손실 외에 다른 복잡한 프로토콜 동작의 결과일 수 있습니다(예: 꼬리 손실 프로빙). 복잡성을 더해, 우리는 많은 소켓이 재전송을 관찰하지 않는다는 것을 관찰합니다. 이는 순진한 요약(예: 중간값을 취함)이 재전송 속도의 매우 보수적인 요약으로 이어질 수 있으며, 왜곡된 요약(예: 95번째 또는 99번째 백분위수)은 일반적으로 인구에 해롭지 않은 행동을 대부분 포착할 수 있음을 의미합니다.
재전송 비율
이러한 과제의 영향을 단순화하기 위해 우리는 재전송 비율이라고 부르는 복합 지표를 고려합니다. HD 비디오를 스트리밍할 수 있는 클라이언트의 비율을 정량화하는 것을 목표로 하는 Meta의 HD Ratio 에서 영감을 받은 이 측정법은 비정상적인 수준의 재전송을 경험하는 소켓의 비율을 설명하기 위해 노력합니다. 0이 아닌 재전송이 예상되는 경우도 있으므로 재전송 비율을 다음과 같이 정의합니다.
특히 이 값은 xTCP를 통해 사용할 수 있는 데이터로 계산하기 쉽습니다. 운영 경험에 따르면 정상 링크에서는 재전송 비율의 값이 일반적으로 작지만 원시 재전송 속도 측정에서 거의 항상 0에 가까운 문제를 피할 수 있습니다.
또한 측정치는 민감한 것으로 나타났으며, 다른 성능 모니터링 시스템에 앞서 경고를 생성하는 경우가 많습니다. 이 기능은 네트워크 성능 저하를 신속하게 진단할 때 특히 유용합니다. 이러한 문제는 종종 작은 문제로 시작되어 결국 큰 문제로 이어집니다.
메트릭 유효성 검사
재전송 비율이 애플리케이션 성능과 직접적으로 연관되어 있음을 입증하기 위해 두 가지 측정을 고려하여 그 효과를 입증합니다. 먼저, 재전송 비율이 높을 때는 재전송 비율이 낮거나 0인 경우보다 클라이언트 애플리케이션(요청자)의 처리량이 더 낮다는 것을 보여 줍니다. 둘째, 높은 재전송 비율은 종종 다른 네트워크 신호, 특히 POP 사이의 ICMP 프로브의 저하와 일치한다는 것을 보여줍니다.
애플리케이션 성능에 미치는 영향을 살펴보기 위해 애플리케이션 계층에서 명시적으로 측정한 결과를 살펴봅니다. 특히 클라이언트 POP에서 측정된 처리량을 고려합니다. 이러한 처리량은 데이터 전송 프로세스에서 달성된 기능적 전달 속도를 나타냅니다. 재전송 이벤트의 영향을 이해하기 위해, 우리는 중요한 공급자 문제가 발생한 일주일 동안 POP 쌍에 대해 다음 연구를 수행했습니다.
첫째, 재전송 이벤트가 발생한 모든 기간을 고려합니다. 재전송 이벤트는 한 쌍의 PoP 간의 재전송 비율이 최소 10분 동안 특정 범위 내에 있는 기간으로 정의됩니다. 우리는 이것이 짧은 수명의 사건을 제외한다는 것을 주목하지만, 더 긴 사건의 행동에 대한 통찰력을 제공합니다. 각 재전송 이벤트에 대해 이벤트 중에 해당하는 처리량 값을 수집합니다. 통제 수단으로서 당사는 이벤트와 동일한 기간 동안 단 3시간 전에 데이터를 수집합니다. 이를 통해 두 가지 처리량 측정 세트가 제공됩니다. “도중” 재전송 이벤트와 재전송이 없는 시간에 찍은 “정상”입니다. 그런 다음 정상 시간 동안 POP 사이에서 달성된 중간 처리량에 의해 “도중” 측정을 정규화합니다. 임계값의 경우 0보다 크고 25% 미만, 25보다 크고 50% 미만, 50보다 크고 75% 미만, 마지막으로 75%보다 큰 네 가지 범위를 고려합니다.
그림 3: 각 재전송 이벤트 중에 관찰된 비재전송 기간과 비교한 상대적 처리량.
위 그림은 측정 기간 동안 관찰된 상대 처리량의 분포를 보여줍니다. 첫째, 가장 낮은 범위에서도 트랜잭션의 60%가 중간값보다 낮은 처리량을 달성했습니다. 재전송 비율이 높을수록 처리량은 계속 감소하고, 재전송 비율이 높을수록 처리량이 낮아지며, 최악의 경우 상대적으로 중간값이 크기 이상 감소합니다. 이러한 측정은 재전송 비율이 영향을 받는 플로우의 성능 저하를 성공적으로 포착한다는 것을 분명하게 보여줍니다.
다음으로, 우리는 이러한 이벤트가 POP 사이의 활성 ICMP 측정과 어떻게 상관되는지에 대해 살펴봅니다. 여기서는 지연 패턴의 손실 또는 변화를 측정하기 위해 POP 간의 정기적인 ICMP 프로빙을 수행하는 일부 활성 모니터링의 동작을 고려합니다. 이 분석에서는 처리량 비교에서 추출한 이벤트를 다시 사용합니다. 그러나 이번에는 ICMP가 각 임계값의 시간 간격에 대한 손실을 측정했으며, 이 경우 정상적으로는 손실이 관찰되지 않았습니다. ICMP 프로빙의 한계로 인해 이러한 특정 측정에 대해 2%의 손실 세분성이 발생한다는 점에 유의합니다.
그림 4: 각 기간 동안 관찰된 ICMP 손실. 재전송 비율이 높을수록 손실이 커집니다.
여기서 낮은 임계값은 손실이 거의 나타나지 않으며 측정값의 90%가 손실이 감지되지 않는 것을 볼 수 있습니다. 반면, 0.75 역치에서는 80%의 측정치가 손실을 관찰하고 4%의 비교적 높은 중간값 손실을 관찰했습니다. 재전송 비율이 처리량 영향(예: 0.25)에 상응하는 수준으로 인해 ICMP 메트릭의 손실이 거의 없습니다. 이러한 결과는 단순한 ICMP 프로브 이상의 경로 성능 측정의 중요성을 재차 강조하고, 인터넷을 통한 실제 흐름의 성능에 대한 미묘한 관점을 제공하는 재전송 비율의 기능을 강조합니다.
결론 및 그 이상
이 게시물에서 우리는 재전송 비율의 값을 시연했다, xTCP 소켓 데이터에서 사용할 수있는 데이터로 쉽게 계산할 수있는 편리한 요약 메트릭도. 또한 애플리케이션 성능에 영향을 미치고 네트워크 개입이 필요한 사례에 대한 명확한 통찰력을 제공한다는 것을 보여주었습니다.
재전송 비율은 모니터링 프로세스의 핵심적인 부분으로 자리잡았으며, 시스템 성능에 대한 명확한 통찰력을 제공합니다. 더 크고 복잡한 애플리케이션 로그를 처리하거나 일부 영향을 포착하지 못하는 ICMP 프로브에 의존할 필요가 없습니다.
현재 진행 중인 연구는 성능 저하를 조기에 경고하는 동시에 보다 복잡한 자동화 시스템에 적절한 입력을 제공하기 위해 메트릭을 가능한 한 민감하게 만드는 방법을 모색하고 있습니다.
이 작업을 지원해 주신 아키텍처 및 네트워크 신뢰성 엔지니어링 팀에 특별한 감사를 드립니다!
Edgio Labs & Advanced Projects에 대해 더 자세히 알고 싶거나 위에서 설명한 주제에 대한 협업 작업을 탐색하고 싶은 연구원은 research@edg.io 으로 문의하시기 바랍니다.