와우자 스트리밍 엔진의 멀티캐스트 인터페이스 지정 방법

복수의 랜카드가 장착된 와우자 스트리밍 엔진 서버에서 멀티캐스트 스트림을 수신하기 위해서는 사용할 랜카드를 지정해 주어야 한다. VHost.xml 또는 스트림 파일을 수정해 인터페이스를 바인딩 하는 방법에 대해 설명한다.

멀티캐스트 스트림과 와우자 스트리밍 엔진

멀티캐스트(Multicast)는 하나의 송신 장비가 동일한 스트림을 여러 수신 장비에 동시에 전달하는 IP 전송 방식이다. 하나의 신호를 여러 곳으로 동시에 분배한다는 방송의 특성과 매우 유사하며, 방송국 내부 신호, 송출 시스템, IPTV 헤드엔드, 모니터링 시스템, 인코더와 디코더 사이의 전송 등에 널리 사용된다.

와우자 스트리밍 엔진(Wowza Streaming Engine, 이하 와우자)은 MPEG-TS UDP 멀티캐스트 스트림을 입력 소스로 받아 다른 스트리밍 형식으로 변환하거나 재배포하는 용도로 사용할 수 있다. 예를 들어 방송용 인코더가 출력하는 UDP 멀티캐스트 스트림을 RTMP나 HLS같은 스트리밍 프로토콜로 변환해 OTT 또는 웹 기반 서비스에 제공할 수 있다.

멀티캐스트 소스가 존재하는 방송망과 외부 스트리밍 서비스를 제공하는 출력망은 서로 분리되어 있는 경우가 많다. 즉, 와우자 서버에 둘 이상의 랜카드가 장착되어 있고 각 랜카드가 서로 다른 네트워크에 연결되어 있는 구성이 일반적이다.

유니캐스트 통신에서는 운영체제가 라우팅 테이블을 확인해 목적지에 적합한 랜카드를 자동으로 선택하지만 멀티캐스트는 일반적인 라우팅만으로 수신 인터페이스를 명확하게 결정하지 못하는 경우가 있다. 때문에 시스템이 사용자가 의도한 랜카드와 다른 인터페이스를 선택하면, 인코더의 스트림 출력이 정상이라도 와우자가 입력 스트림을 수신하지 못할 수 있다.

이 문제를 해결하려면 와우자가 멀티캐스트 스트림을 어떤 랜카드를 통해 수신할지 명시적으로 지정해야 한다. 와우자 스트리밍 엔진 매니저 웹 UI에서 수신 인터페이스를 설정하거나, 설정 파일을 직접 수정해 사용할 랜카드의 IP 주소를 지정할 수 있다. 본 글에서는 두 가지 방법을 이용해 와우자의 멀티캐스트 수신 인터페이스를 설정하는 과정을 설명한다.

와우자 스트리밍 엔진의 멀티캐스트 수신 랜카드 지정 방법

와우자 엔진에서 멀티캐스트 소스 수신용 랜카드를 지정하는 방법에는 크게 세 가지 방법이 있다. 192.168.1.100 랜카드에서 239.100.100.100:1234 스트림을 수신하는 경우를 예로 들겠다.

방법 1 : 편집기를 이용한 VHost.xml 파일 수정

와우자의 가상 호스트 설정 파일인 VHost.xml편집기를 이용해 직접 수정하는 방법이다.

동일한 가상 호스트 설정을 공유하는 모든 어플리케이션들에게 일괄적으로 적용되는 설정으로, 보통 하나의 서버에 하나의 가상 호스트를 운영한다는 점을 감안했을때, 서버의 전역 설정이라 생각해도 무방하다.

사실상 가장 간단하고 빠른 방법으로, 가장 추천하는 방법인 동시에 본 필자도 주로 사용하는 방법이다.

  1. 와우자 서버의 설치 디렉토리로 이동 : OS별 와우자 기본 설치 디렉토리는 아래와 같다.
    윈도우 : C:\Program Files\Wowza Media Systems\엔진버전
    리눅스 : /usr/local/WowzaStreamingEngine/엔진버전
  2. 설정 디렉토리로 이동 : 설치 디렉토리 하위에 존재하는 conf 디렉토리로 이동한다.
  3. VHost.xml 열기 : VHost.xml 파일을 편집기로 열어, RTP 섹션의 Incoming 섹션을 찾는다.
  4. VHost.xml 수정
    (... 전략 ...)
    	  <RTP>
    	  <IdleFrequency>75</IdleFrequency>
    	  <DatagramConfiguration>
    		<Incoming>
    		  <ReuseAddress>true</ReuseAddress>
    		  <ReceiveBufferSize>2048000</ReceiveBufferSize>
    		  <SendBufferSize>65000</SendBufferSize>
    		  <MulticastBindToAddress>true</MulticastBindToAddress> // 멀티캐스트 바인딩 활성화
    		  <MulticastInterfaceAddress>192.168.1.100</MulticastInterfaceAddress> // 사용할 주소 192.168.1.100 지정
    		  <!-- <TrafficClass>0</TrafficClass> -->
    		  <MulticastTimeout>50</MulticastTimeout>
    		  <DatagramMaximumPacketSize>4096</DatagramMaximumPacketSize>            
    		</Incoming>
    (... 생략 ...)
  5. 와우자 엔진 재시작 : 와우자 엔진의 설정을 변경했기 때문에 재시작해 주어야 한다.

방법 2 : 웹 UI를 이용한 VHost.xml 파일 수정

와우자의 가상 호스트 설정 파일인 VHost.xml와우자 엔진 매니저 웹 UI를 이용해 수정하는 방법으로, 편집기를 이용해 직접 수정하는 것과 동일한 결과를 얻을 수 있다.

  1. 와우자 웹 UI에 접속한다.
  2. Virtual Host Setup 선택

    상단 메뉴에서 Server 탭을 선택한 후, 좌측 메뉴에서 Virtual Host Setup을 선택한다.

    와우자 스트리밍 엔진 매니저의 Virtual Host Setup 화면
  3. Properties 탭 선택

    Virtual Host Setup 화면에서 Properties 탭을 선택한다.

    와우자 Virtual Host Setup의 Properties 탭 화면
  4. RTP Datagram 편집 모드 진입

    Properties 목록에서 Incoming RTP Datagram 항목으로 이동하여 Edit 버튼을 클릭해 편집 모드로 들어간다.

    와우자 Incoming RTP Datagram 속성 화면
  5. 바인딩(Binding) 설정

    편집 화면의 multicastBindToAddress_in 항목에서 True를 선택해 주고, multicastInterfaceAddress_in 항목에 멀티캐스트 입력에 바인딩할 랜카드의 IP주소를 입력해 준다.

    와우자 멀티캐스트 수신 인터페이스 주소 설정 화면
  6. 저장 및 재시작

    SAVE 버튼을 클릭해 변경 사항을 저장한 후, 화면 상단의 Restart Now 버튼을 눌러 와우자 서비스를 재시작한다.

    와우자 가상 호스트 설정 저장 후 Restart Now 안내 화면

방법 3 : 스트림 파일에 사용할 랜카드 지정

스트림 파일을 생성하고 편집기를 이용해 스트림 파일에 멀티캐스트 스트림을 수신할 랜카드의 IP 주소를 지정해 주는 방식이다.

이 방법은 각 입력 스트림마다 사용할 인터페이스를 개별적으로 지정할 수 있다는 장점이 있다. 즉, 멀티캐스트 입력 인터페이스가 2개 이상인 경우에도 사용할 수 있는 방법이다. 반면 모든 스트림 파일에 입력 인터페이스를 지정해 주어야 하기 때문에 관리가 복잡하다는 단점이 있다.

이 방식은 와우자 스트리밍 엔진 버전 4.8.0 부터 사용할 수 있다.

  1. 스트림 파일 생성

    멀티캐스트 수신을 위한 스트림 파일을 생성한다.

    와우자 스트림 파일에 UDP 멀티캐스트 주소를 입력하는 화면
  2. 스트림 파일 열기

    생성된 스트림 파일을 에디터를 이용해 연다. 스트림 파일은 와우자 스트리밍 엔진이 설치된 경로의 content 디렉토리에 있다. 윈도우 시스템일 경우 에디터를 실행할 때 관리자 권한으로 실행해야 수정 후 저장이 가능하다.

    추가적인 옵션을 설정한 것이 없다면, 아래와 같이 수신할 스트림의 정보만 간단히 들어가 있을 것이다.

    기본 생성된 멀티캐스트 스트림용 스트림 파일의 예
  3. 스트림 파일 수정

    스트림 파일의 추가 설정은 JSON과 유사한 형태로 저장된다. 아래와 같이 파일의 내용을 변경하고 저장해 준다.

    {
     uri : "udp://@239.100.100.100:1234",
     multicastInterfaceAddress : "192.168.1.100"
    }

위에서 설명한 방법인 VHost.xml에 설정된 가상 호스트 전역 설정이 있을 경우 스트림 파일에 지정된 인터페이스가 우선하여 적용된다.

내게 적합한 방법은 무엇인가?

멀티캐스트는 특성상 수신 랜카드를 명시적으로 지정하는 작업이 매우 중요하다. 때문에 와우자 엔진에서 여러 개의 랜카드를 사용해 멀티캐스트 스트림을 입력 소스로 사용하는 경우, 입력 소스를 수신할 랜카드를 명확하게 지정하는 것은 필수적인 과정이다.

앞에서 설명한 세 가지 방법은 모두 와우자가 멀티캐스트 스트림을 수신할 인터페이스를 지정한다는 점에서는 같은 결과를 가져온다. 차이는 설정 범위와 관리 방식에 있다.

방법 1: 편집기를 이용한 VHost.xml 파일 수정
해당 가상 호스트를 사용하는 모든 어플리케이션에 공통으로 적용되는 방식이다. 설정 파일을 직접 수정해야 하지만 절차가 가장 단순하고 빠르며, 멀티캐스트 입력에 사용하는 랜카드가 하나로 고정된 환경에 적합하다.
방법 2: 웹 UI를 이용한 VHost.xml 파일 수정
적용 결과는 방법 1과 동일하지만, 설정 파일을 직접 열지 않고 와우자 엔진 매니저 웹 UI에서 값을 변경한다. 파일을 직접 수정하는 것이 부담스러울 경우에 적합하다.
방법 3: 스트림 파일별 수신 랜카드 지정
각 스트림마다 서로 다른 수신 인터페이스를 지정할 수 있는 방식이다. 멀티캐스트 입력망이 두 개 이상이거나 스트림별로 다른 랜카드를 사용해야 하는 환경에는 유리하지만, 모든 스트림 파일을 개별적으로 관리해야 하므로 스트림 수가 많아질수록 관리가 복잡해진다.

따라서 하나의 멀티캐스트 입력망을 여러 어플리케이션과 스트림이 공통으로 사용하는 일반적인 환경이라면, 본 필자는 VHost.xml 파일을 직접 수정하는 방법 1을 추천한다. 와우자 엔진 대부분이 하나의 소스 네트워크와 다수의 분배 네트워크로 구성되고, 멀티캐스트 입력 네트워크가 여러 개인 경우는 상대적으로 드물기 때문이다. 이 방법을 사용하면 모든 스트림 파일을 동일한 형식으로 유지할 수 있어 설정의 일관성을 확보하고 관리의 귀찮음을 줄일 수 있다.

반면 설정 파일을 직접 수정하는 것이 부담스럽다면 방법 2를 선택하면 된다. 적용 범위와 결과는 방법 1과 같으므로, 사용자의 작업 방식과 익숙한 관리 도구에 따라 두 방법 중 하나를 선택하면 된다. 여러 멀티캐스트 입력망을 동시에 사용하거나 스트림마다 다른 랜카드를 지정해야 한다면 방법 3이 가장 적합하다.

결국 선택 기준은 단순하다. 하나의 랜카드를 가상 호스트 전체에서 공통으로 사용한다면 VHost.xml 설정을, 스트림마다 서로 다른 랜카드를 사용한다면 스트림 파일별 설정을 선택하면 된다.

FAQ

와우자 스트리밍 엔진이 멀티캐스트 스트림을 수신하지 못하는 이유는?
와우자 스트리밍 엔진 서버가 둘 이상의 네트워크에 연결되어 있으면, 와우자가 멀티캐스트 그룹에 가입할 때 사용자가 의도하지 않은 랜카드를 선택할 수 있다. 이 경우 멀티캐스트 스트림이 존재하는 네트워크에 연결된 랜카드의 IP 주소를 수신 인터페이스로 명시적으로 지정해야 한다.
와우자 스트리밍 엔진에서 멀티캐스트 수신 랜카드를 지정하는 방법은?
웹 UI또는 편집기를 사용해 VHost.xml 파일을 수정하거나, 각 스트림 파일에 multicastInterfaceAddress 값을 추가해 준다.
멀티캐스트 스트림은 라우팅되지 않는가?
멀티캐스트 스트림은 동일한 Layer 2 네트워크 안에서는 별도의 멀티캐스트 라우팅 없이 전달될 수 있다. 그러나 라우터를 넘어 다른 네트워크로 전달하려면 PIM과 같은 멀티캐스트 라우팅 프로토콜이 필요하다.
와우자 설정 파일 변경과 웹 UI 설정 변경의 차이는?
VHost.xml 파일을 직접 수정하는 방법과 웹 UI에서 가상 호스트 속성을 변경하는 방법은 적용되는 설정과 결과가 같다. 웹 UI에서 저장한 값도 가상 호스트 설정에 반영된다. 다만 웹 UI에 표시되지 않는 일부 설정은 파일을 직접 수정해야 할 수 있다.
VHost.xml 파일의 역할은?
VHost.xml은 와우자 스트리밍 엔진의 가상 호스트와 관련된 네트워크 포트, RTP 데이터그램, 멀티캐스트 인터페이스 등의 설정을 저장하는 파일이다. 하나의 가상 호스트를 공유하는 여러 어플리케이션에 공통으로 적용된다.
VHost.xml에서 멀티캐스트 수신 인터페이스를 지정하는 항목은?
MulticastBindToAddress 값을 true로 설정하고, MulticastInterfaceAddress에 멀티캐스트를 수신할 랜카드의 로컬 IP 주소를 입력한다.
와우자 스트림 파일에서 멀티캐스트 수신 인터페이스를 지정하는 방법은?
스트림 파일의 URI에 멀티캐스트 주소와 포트를 입력하고, multicastInterfaceAddress에 사용할 랜카드의 IP 주소를 지정한다. 예를 들어 멀티캐스트 주소가 239.100.100.100:1234이고 랜카드 주소가 192.168.1.100이라면 해당 두 값을 스트림 파일의 객체 설정에 함께 저장한다.
가상 호스트 설정과 스트림 파일 설정이 동시에 존재하면 어느 설정이 적용되는가?
VHost.xml에 멀티캐스트 수신 인터페이스가 지정되어 있어도, 개별 스트림 파일에 multicastInterfaceAddress가 설정되어 있으면 해당 스트림 파일의 값이 우선 적용된다.
멀티캐스트 인터페이스 설정을 변경한 후 재시작이 필요한가?
VHost.xml을 수정한 경우에는 변경 사항을 적용하기 위해 와우자 스트리밍 엔진을 재시작해야 한다. 스트림 파일에 지정한 경우라면 해당 스트림 파일을 재시작하면 된다.
인터페이스를 올바르게 지정했는데도 멀티캐스트 스트림을 수신하지 못하는 이유는?
방화벽의 UDP 차단, 스위치의 IGMP Snooping 설정, 멀티캐스트 그룹 가입 실패, 잘못된 포트 번호, 네트워크 장비의 멀티캐스트 라우팅 미구성, 인코더의 송출 오류 등을 함께 확인해야 한다. 인터페이스 지정은 여러 원인 가운데 하나를 해결하는 설정이다.

갱신 내역

  • 최초 게시
  • 수정
  • 수정 및 이전