[ 네트워크 ] Multicasting 통신간 데이터 수-발신 오류

2018. 7. 23. 23:36공부 자료/네트워크

[ 네트워크 ] Multicasting 통신간 데이터 수-발신 오류


    신비한 오류를 겪어서 이곳에 공유 해 본다. Multicasting이란, 위키백과에서도 알 수 있듯, 하나의 IP Group에 여러대의 컴퓨터가 Join 하여 하나의 컴퓨터가 데이터를 뿌려두면, 다른 컴퓨터가 가져갈 수 있는 형식으로 이루어져있다. 이 때, 데이터를 가져가는 상황이 특정한 IP가 먼저 가져가거나 하는 것이 아니라, 모든 IP의 컴퓨터 / 단말기 / 서버가 동시에 데이터를 가져 갈 수 있는 방식이 주목받아서, 여러 서버 / 단말기에 한치의 오차도 없는 시간대에 동일한 정보를 전달해야하는 상황에서 자주 쓰이곤 한다.

    이 때의 통신 방법에 대해서 이야기하는 것은 끝도 없으므로, 간단하게 설명하고 넘어가자면, 특정 IP Group ( 여기에선 244.0.0.10 으로 진행하자. ) 에서 데이터를 수신하고 싶다고 해 보자. 이 때, 그 IP Group에 자신의 서버는 접속 요청( IGMP Join )을 보낸다. IP Group에서는 허가 / 불허가를 통해 그 서버의 진입을 확인한다. 그 후, 데이터의 수신을 그만 받고 싶다면 해제 요청 ( IGMP Leave )메시지를 발송 한 뒤, 바로 연결을 해제한다. 이처럼, Multicast 는 특정 IP에 대해 Join 신청을 하고, 허가가 나야만 데이터가 들어오는 성질을 가졌다. 이 때 사용하는 메시지 프로토콜은 IGMP라고 불리는데, 자세한 사항은 여기에서 확인 가능하다.

    정상적인 Multi-casting이라면 노드 ( 단말기 )간의 데이터 교환은 동등하게 이루어 질 수 있다. Feeder 따로, Receiver 따로가 아닌 모두가 Feeder이자 Receiver 가 될 수 있는 것이다. 이번에 문제가 된 곳은 여기였다. 현재 서버 구성은 다음과 같다.

[ 사진 1 - 서버 구성도 ]



    A Server는 단순 공급자 역할을, B, C, D 서버는 단순 소비자 역할을 하고 있는 것이다. 그런데,  D 서버는 사실 하나의 라우터 역할을 하는 서버였던 것이다. 따라서 다음과 같은 것이 성립했다.

[ 사진 2 - 서버 구성도 2 ]


    여기서 D 서버에서 특정 IP에 대해서 발송을 했던 것이다. 이는 A Server를 타고, 다른 곳에도 영향을 미쳤던 것이다. 이게 정상적인 정보였으면 큰 일은 아니었지만.... 안타깝게도 비정상적인 데이터여서 다른 서버에서 이상 현상이 일어났었다. Multicasting은 양방향 통신임을 이해하고, 이를 스위치 / 라우터 단계인 L2 단계에서 막을 방법은 없는지 확인이 필요 할 것 같다.