VMware View를 사용하여 가상데스크톱 환경을 구축하고 통신 프로토콜로 PCoIP를 선택한 경우, 실제 운영 환경에서 관찰되는 현상 중에 PCoIP packet loss (패킷 손실)이 있습니다. PCoIP로그를 분석하면 패킷 손실에 대한 정보를 확인할 수 있는데 권장값은 0.1%이내 입니다. 권장값보다 큰 패킷 손실이 있으면 연결이 끊어지고 “Agent Unreachable”과 같은 에러를 경험할 수도 있습니다. 이럴때 대부분 네트워크를 점검해 보라고 안내를 합니다. 하지만 네트워크의 무엇을 점검하란 말이냐? 고 되묻는다던가 점검해 보니 네트워크에는 이상이 없다라고 할 경우 여러분은 어떻게 대처하십니까? 여기에 대한 설명을 좀 드려볼까 합니다.
네트워크에서 페킷이 전달되지 못하고 손실되는 경우에는 어떤 이유들이 있을까요?
우선 생각해 볼 수 있는 경우는 물리적인 링크가 끊어진 경우 입니다. 완전히 끊어지지 않고 불안정한 경우, 예를 들면 케이블 불량이나 접촉 불량과 같은,를 생각해 볼 수 있습니다. 이런 경우는 네트워크 엔지니어가 점검을 한다면 확인하고 조치할 수 있을 것입니다.
다음으로 생각해 볼수 있는 것이 네트워크에 트래픽이 많을 때, congestion 되었을 때, 관리를 어떻게 하는가에 따라 패킷 손실이 발생 하는 경우 입니다. 네트워크 장치/장비가 트래픽이 처리 용량을 넘어서 많아지는 경우 패킷을 drop할 수 있습니다. Traffic shaping이나 정책 또는 congestion 회피 정책이 영향을 줄 수도 있습니다. 서비스별로 우선순위를 적용하는 경우(QoS), 우선순위가 높은 서비스의 트래픽이 많으면 우선 순위가 낮은 트래픽이 drop 될 수 있습니다. PCoIP 프로토콜에서 사용하는 UDP의 경우 일반적으로 우선순위 낮게 되어 있습니다.
사용환경에 무선 네트워크가 개입되는 경우 패킷 손실이 있을 수 있습니다. 무선의 특성상 패킷 손실이 있을 수 있기 때문에 이런 경우에는 PCoIP 프로토콜의 bandwidth 를 조정하여야 합니다.
마지막으로 PCoIP 프로토콜에 의해 패킷 손실로 처리되는 경우 입니다. 패킷이 수신되는 순서가 정열되지 않는 경우, 즉 패킷이 전송된 순서대로 수신되지 않는 경우, PCoIP는 패킷 손실로 처리할 수 있습니다. 이 경우, 이런 상황은 라우터 로그에 기록되지 않고 따라서 네트워크 점검에서 확인하기가 어렵습니다. 아마도, 이런 경우를 파악하여 원인을 제거하는 데 많은 어려움을 겪을 것으로 생각됩니다.
패킷 손실의 원인들에 대해 살펴 보았는데, out-of-order packets(비정렬 패킷)에 대해서는 좀 더 알아보는 것이 좋을 듯합니다.
수신되는 패킷이 전송된 순서와 맞지 않을 경우 순서를 조정하기 위해서는 패킷들을 queue/buffer에 보관을 하고 있어야 합니다. PCoIP 프로토콜도 그런 버퍼를 운용하고 있지만 패킷을 다시 정렬하는 시간을 길게 가져갈 수는 없습니다. 오디오나 영상데이터와 마찬가지로 PCoIP 데이터도 실시간이기 때문에 버퍼에서 패킷을 재정렬하는 양을 크게 하는 것이 쉽지 않습니다. 패킷 재정렬로 처리할 수 있는 양보다 비정렬된 패킷의 양이 많으면 PCoIP로그에 packet loss로 기록됩니다. 하지만 네트워크 로그에는 패킷이 전달되었기 때문에 에러로 기록되지 않습니다. 그래서 이런 경우를 네트워크 점검에서 확인하는 것이 어렵습니다.
자, 그러면 무엇이 패킷 재정렬을 필요로 하게 하는지를 살펴보면 원인을 찾아서 제거하는데 도움이 될 것입니다.
- 상이한 네트워크 경로
패킷이 서로 다른 네트워크 경로를 따라 전달될 경우 수신하는 쪽에서는 패킷의 순서가 달라질 수 있습니다. 이런 이유로 최신 PCoIP프로토콜은 로그에 trace route기록을 남기도록 되어 있습니다. 클라이언트에서 가상데스크톱으로 trace route를 했을 때 실행 시 마다 경로가 서로 다르다면 PCoIP 패깃의 수신 순서가 바뀔 수 있다 하겠습니다.
- 라우터 QoS
네트워크 장비가 작은 패킷에 높은 우선순위를 주도록 구성될 수 있는데, 이런 경우 패킷 재정렬을 유발할 수 있습니다.
- 로드 밸런싱
네트워크 로드 밸런싱이 동일한 source address-destination address가 동일한 경로를 사용하도록 구성되지 않은 경우 패킷 재정렬을 유발할 수 있습니다.
MPLS(Multi Protocol Load balancing Service) 로드 밸런싱을 사용하는 경우, per-destination으로 구성되어야 하며 per-packet으로 구성되면 패킷 재정렬을 유발할 수 있습니다.
- WAN 최적화
WAN 최적화에서 패킷 처리 순서에 따라 패킷 재정렬을 유발할 수 있습니다. 그래서, WAN optimizer는 PCoIP 패킷을 bypass하도록 구성되어야 합니다.
- Packet Fragmentation
패킷이 MTU 보다 큰 경우 Packet Fragmentation이 발생 할 수 있고 패킷 재정렬을 유발할 수 있습니다. PCoIP 프로토콜은 MUT를 1300~1400으로 기본 설정하고 있기 때문에 일반적인 네트워크 MTU인 1500 환경에서 fragmentation이 일어나지 않습니다. 하지만, 실제 환경에서는 네트워크 MTU가 변경 되었을 수 있기 때문에 점검을 통해 확인해야 합니다.
PCoIP 프로토콜의 패킷 손실은 다양한 연결 끊어짐 현상의 원인이 될 수 있고, 패킷 재정령에 의한 패킷 손실은 네트워크 장비/장치의 로그에서는 확인되지 않기 때문에 위에서 열거한 다양한 관점에서 점검이 필요합니다.
또 다른 연결 끊어짐 현상의 원인이 될 수 있는 것은 4172 포트 연결의 네트워크 연결 끊김입니다. UDP 4172는 30초 이내에서는 PCoIP 연결 끊어짐을 유발하지 않지만 TCP 4172는 30초 이내의 짧은 장애에도 PCoIP 연결 끊어짐을 유발합니다. 그래서 최신 버전에서는 TCP 4172 연결을 PCoIP세션동안 계속 유지하지 않고 필요시에만 사용하는 것으로 설계가 변경되었습니다.
아울러, 패킷 재정렬에 사용되는 버퍼의 크기가 증가하였습니다. 버퍼 크기 증가로 패킷 재정렬에 의한 패킷 손실의 가능성은 줄였지만 여전히 다른 요인들을 확인하여 조치할 필요가 있습니다.