개요
네트워크 엔지니어로 일하면서 겪은 일 중 하나인데 이에 관한 내용을 정리하려 합니다.
우선 용어를 정리할 필요가 있을 것 같아 여기서 정리좀 해보려 합니다.
- mDNS :
- Apple에서 개발한 근접 호스트 탐색 프로토콜 입니다.
- UDP 5353 포트를 통해 통신하고 자신의 호스트 명과 IP를 멀티캐스트(IPv4: 224.0.0.251, IPv6: ff02::fb)를 통해 알립니다.
- 만약 호스트 이름이 동일한 장치가 있을 경우 동일한 호스트 전체 목록에 뒤에 숫자를 붙여 구분한 뒤 각 호스트에 대한 IP 주소를 전부 멀티캐스트를 통해 전달합니다.(호스트명이 같은 장비가 200대가 있다면 host(1): 1.1.1.1 host(2): 1.1.1.2 ... 이런 식으로 패킷을 만들어 전달합니다. 패킷이 길어져 패킷 크기가 1514를 초과한다면 패킷을 분리해 전송합니다.) - 멀티캐스트 스톰
- 초당 발생할 수 있는 멀티캐스트량이 기준치를 초과하면 패킷 과다 발생으로 판단하고 이 상태를 Storm이라 칭합니다.
- 패킷이 전달되는 목적지의 종류에 따라 다른 명칭이 있는데, 하나의 목적지에 전달하는 것이 유니캐스트, 같은 그룹의 목적지에 전달하는 것이 멀티캐스트, 같은 네트워크 전체에 전달하는 것이 브로드캐스트이다.
이번 글에서는 강의실 두 군데에서 모두 동일한 호스트명을 사용하게 되면서 약 100여대의 PC에서 mDNS 패킷을 과다 발생시키고 조치하는 과정에 대해서 설명하려 합니다.
Trouble Shooting 과정
우선 증상이 특이했습니다.
사용하는 네트워크 구성은 다음과 같습니다.

그림 그리기가 힘드네요.
네트워크 장비에 직접 붙여서 사용하는 사람이 있는 반면에, 허브를 사용하는 사용자도 있습니다.
강의실 특성상 반드시 허브에 연결하여 사용해야 하는 구성이었습니다.
증상은 다음과 같습니다.
- 네트워크 장비에 직접 연결한 사용자는 네트워크에 이상이 없다.
- 허브를 사용하는 사용자들 중 1G급 이상 장비를 사용하는 사용자는 이상이 없다.
- 허브를 사용하는 사용자들 중 100M급 장비를 사용하는 사용자는 네트워크가 불안정하다.
- 강의실에서 강의가 진행될 경우 위 허브를 사용하는 사용자들의 네트워크가 불안정하다.
- 강의실의 PC가 모두 꺼지면 네트워크에 이상이 없다.
이를 바탕으로 각 사용자들의 장비에 이상이 없는 것을 확인하고 패킷 검사를 진행했습니다.

해당 패킷은 네트워크 장비에서 모니터링한 것이 아니라 클라이언트 PC에서 1분간 모니터링한 결과입니다.
뭐 별거 없어보이지만 중요한 것은 패킷 수량입니다.

무려 1분에 발생한 패킷이, 그것도 클라이언트에서 발생한 패킷이 77만건이 넘어가고 MDNS 관련 패킷만 확인한 결과 98.2%를 차지하고 있습니다. ㄷㄷㄷ

패킷 내용은 보안상의 이유로 보여드릴 수는 없지만 모두 MDNS를 통해 자신을 알리고, 동일한 PC명을 가진 호스트들의 전체적인 정보가 멀티캐스트로 뿌려지고 있습니다. 그 내용이 너무 커서 PDU 사이즈를 초과해 여러 개의 패킷으로 나누어져 보내지고 있는것이 보입니다.
이로써 패킷이 과다하게 발생해 클라이언트 측에서 문제가 발생했을 것으로 추정되었습니다.
그렇다면 네트워크 장비에 직접 연결하면 괜찮은데 허브에 연결한 장비들은 문제가 발생했을까요??
그것은 바로 대역폭이었습니다.
허브를 사용하는 사용자들 중에서도 성능이 좋은 장비를 사용하면 문제가 없지만 성능이 좋지 않으면 발생하는 것이었습니다.
그 이유는 저렇게 많은 MDNS 패킷을 전달하는 과정에서 대역폭을 모두 사용했기 때
문입니다.
조치 및 결과
1차 조치
네트워크 장비에서 해당 클라이언트까지의 MDNS 패킷을 차단해보았습니다.


1차 조치 결과 아주 많이 패킷이 줄어든 것이 확인되었습니다.
2차 조치
MDNS 패킷 차단 후 눈에 띄게 패킷이 줄어든 것이 확인되었고 강의실 내부의 MDNS 서비스를 모두 끄기로 했습니다.

MDNS 패킷의 비중이 거의 사라졌습니다.
마무리
해당 장애에 대한 트러블 슈팅 과정이 재미있었네요