와우자 엔진 UDP 멀티캐스트, 다중 네트워크 인터페이스 수신 문제 해결 방법
둘 이상의 네트워크 인터페이스(랜카드)를 사용하는 와우자 스트리밍 엔진에서 멀티캐스트 입력이 안 될 때, VHost.xml 전역 설정 또는 개별 스트림 파일 설정을 통해 수신 지정 랜카드를 바인딩하는 방법
일반적인 네트워크 환경의 경우, 하나의 서버에 여러 네트워크 인터페이스(Network Interface Card, 이하 랜카드)가 설치 되어 있더라도 OS의 라우팅 테이블을 통해 통신에 사용할 적절한 랜카드가 자동으로 결정된다. 하지만 멀티캐스트의 경우, 여러가지 이유로 OS가 적절한 랜카드를 결정하지 못하는 경우가 자주 발생한다.
특히 와우자 스트리밍 엔진(Wowza Streaming Engine, 이하 와우자 엔진)이 MPEG TS UDP 멀티캐스트 스트림을 출력하는 인코더를 입력 소스로 사용할 경우, 멀티캐스트 소스 스트림이 있는 네트워크와 출력 네트워크가 분리되어 있는 경우가 많다. 즉, 랜카드가 둘 이상 장착되어 있는 경우가 많으며, 소스 스트림을 수신하지 못하는 문제가 발생하는 경우가 있다는 의미이다.
이러한 문제를 해결하기 위해서는, 와우자 엔진이 멀티캐스트 스트림을 수신할 랜카드를 명시적으로 지정해 주어야 한다. 사용자의 상황과 기호에 따라 다음과 같은 두 가지 방법중 하나를 선택해 랜카드를 지정해 줄 수 있다.
와우자 멀티캐스트 수신 랜카드 지정 방법
와우자 엔진에서 멀티캐스트 소스 수신용 랜카드를 지정하는 방법은 크게 2가지 방법이 있다.
방법 1 : VHost.xml 파일 수정을 통한 전역 설정 변경
이 방법은 와우자 엔진의 가상 호스트관련 설정 파일인 VHost.xml
을 수정해, 멀티캐스트 수신에 사용할 랜카드를 엔진 차원에서 설정하는 방법이다. 한 서버에 있는 모든 어플리케이션들에 일괄적으로 적용되는 방식으로, 입력 랜카드가 하나만 있을 경우 사용하기에 적합한 방법이다. 사용자의 기호에 따라 두가지 방법 중 하나를 선택해 설정을 진행하면 된다.
콘솔에서 VHost.xml
파일을 직접 수정하는 방법
콘솔이나 메모장 등을 이용해 VHost.xml
파일을 직접 수정하는 방법이다. 사실 가장 간단하고 빠른 방법으로, 본 필자는 이 방법을 사용할 것을 추천한다.
- 와우자 서버의 설치 디렉토리로 이동 : OS별 와우자 기본 설치 디렉토리는 아래와 같다.
윈도우 :C:\Program Files\Wowza Media Systems\
리눅스 :/usr/local/WowzaStreamingEngine/
- 설정 디렉토리로 이동 : 설치 디렉토리에 하위에 존재하는
conf
디렉토리로 이동한다. VHost.xml
열기 :VHost.xml
파일을 편집기로 열어,RTP
섹션의Incoming
섹션을 찾는다.VHost.xml
수정<RTP> <IdleFrequency>75</IdleFrequency> <DatagramConfiguration> <Incoming> <ReuseAddress>true</ReuseAddress> <ReceiveBufferSize>2048000</ReceiveBufferSize> <SendBufferSize>65000</SendBufferSize> <MulticastBindToAddress>true</MulticastBindToAddress> // 멀티캐스트 바인딩 활성화 <MulticastInterfaceAddress>192.168.100.100</MulticastInterfaceAddress> // 사용할 주소 192.168.100.100 지정 <!-- <TrafficClass>0</TrafficClass> --> <MulticastTimeout>50</MulticastTimeout> <DatagramMaximumPacketSize>4096</DatagramMaximumPacketSize> </Incoming>
- 와우자 엔진 재시작 : 와우자 엔진의 설정을 변경 했기 때문에 재 시작해 주어야 한다.
와우자 엔진 웹 UI 를 통한 멀티캐스트 랜카드 설정
와우자 엔진 웹 UI 에 접속해 VHost.xml
를 수정하는 방법이다. 진행 절차가 많이 복잡한 편이지만, 이 방법을 사용해도 콘솔에서 직접 수정하는 것과 동일한 결과를 얻을 수 있다.
- 와우자 웹 UI에 접속한다.
- Virtual Host Setup선택
상단 메뉴에서 Server탭을 선택한 후, 좌측 메뉴에서 Virtual Host Setup을 선택한다.
와우자 웹 UI의 가상 호스트 설정 화면 - Properties탭 선택
와우자 웹 UI의 가상 호스트 설정 화면 - RTP Datagram 편집모드 진입
Properties 목록에서 Incoming RTP Datagram 항목으로 이동하여 Edit 버튼을 클릭해 편집 모드로 들어간다.
RTP 입력 설정 - 바인딩(Binding) 설정
편집 화면의 multicastBindToAddress_in항목에서 True를 선택 해 주고, multicastInterfaceAddress_in항목에 멀티캐스트 입력에 바인딩할 랜카드의 IP주소를 입력해 준다.
바인딩 활성화 및 사용 랜카드 주소 입력 - 저장 및 재시작
SAVE버튼을 클릭해 변경 사항을 저장한 후, 화면 상단의 Restart Now버튼을 눌러 와우자 서비스를 재시작한다.
재시작
위에서 소개한 두 가지 방법 모두, 와우자의 가상 호스트 관련 설정을 담당하는 VHost.xml파일을 수정하는 방법이다. 설정을 완료한 후에는 와우자에서 멀티캐스트 스트림을 입력받기 위해 소스 스트림 파일을 생성해 준다. 아래와 같은 형식으로 스트림 파일을 생성해 주면 된다.

참고로, 아래에서 설명할 스트림 파일에 랜카드를 지정하는 경우, VHost.xml의 전역설정은 무시되며 스트림 파일의 설정 내용이 우선 적용된다.
방법 2 : 스트림 파일에 사용할 랜카드 지정 (스트림별 설정)
만약 입력에 사용되는 랜카드가 둘 이상이거나, 왠지 와우자 엔진의 글로벌 설정쪽을 건드리기 불안한 마음이 있다면, 스트림 파일을 이용해 각 입력 소스별로 사용할 랜카드를 설정해 줄 수 있는 방법도 있다.
입력받을 소스의 스트림 파일을 생성하고 경로를 입력할 때, 다음과 같은 형식을 사용하여 수신할 멀티캐스트 주소와 해당 소스 수신에 사용할 특정 랜카드의 IP 주소를 적어준다.
udp://@[멀티캐스트 주소]:[포트 번호]?localAddress=[사용할 인터페이스 IP]
예를 들어, 239.100.100.100:1234 스트림을 192.168.1.100 인터페이스를 통해 수신하도록 설정할 경우, 아래와 같이 스트림 파일을 작성해 주면 된다.

만약, 위에서 설명한 VHost.xml를 수정하는 방법을 사용해 와우자 엔진에 전역 설정이 적용되어 있을 경우, 스트림 파일에 지정된 랜카드가 우선 적용된다.
결론
멀티캐스트는 특성상 수신 랜카드를 명시적으로 지정하는 작업이 매우 중요하다. 때문엔 와우자 엔진에서 여러 개의 랜카드를 사용해 멀티캐스트 스트림을 입력 소스로 사용하는 경우, 입력 소스를 수신할 랜카드를 명확하게 지정하는 것은 필수적인 과정이다.
본 필자가 제안한 방법들은 모두 동일한 결과를 가져 온다. 하지만 필자는 VHost.xml 파일을 직접 수정하는 전역 설정 방식을 사용할 것을 추천한다. 와우자 엔진 대부분이 하나의 소스 네트워크와 다수의 분배 네트워크로 구성되며, 더군다나 멀티캐스트 네트워크가 다수일 경우는 드문 경우이기 때문이다. 이를 통해 모든 스트림파일을 일관되게 유지할 수 있어 관리의 귀찮음을 덜 수 있다.
요약과 FAQ
- 와우자 스트리밍 엔진이 멀티캐스트 스트림을 수신하지 못하는 이유는?
- 와우자 스트리밍 엔진 서버가 둘 이상의 네트워크에 연결되어 있을 경우, 멀티캐스트 스트림을 가져오는 네트워크를 지정해 주어야 한다.
- 멀티캐스트 스트림은 라우팅 되지 않는가?
- Layer 2 이상의 네트워크에서 멀티캐스트를 사용하기 위해서는 IGMP 또는 멀티캐스트 라우팅 프로토콜을 별도로 운용해 주어야 한다.
- 와우자 스트리밍 엔진의 설정 파일 변경과 웹 UI 설정 변경의 차이는?
- 이 둘의 차이는 없다. 웹 UI 를 통해 변경한 설정은 와우자 스트리밍 엔진의 설정 파일 내부에 저장된다. 일부 표시되지 않는 설정들에 대해서는 직접 설정 파일을 수정해 주어야 할 경우도 있다.
- VHost.xml 파일의 역할은?
- 와우자 스트리밍 엔진의 가상 호스트 관련 설정이 저장되는 파일이다.
- 와우자 스트림 파일에서 소스 인터페이스를 지정하는 방법은?
udp://@[멀티캐스트 주소]:[포트 번호]?localAddress=[사용할 인터페이스 IP]
- 와우자 스트리밍 엔진에서 멀티캐스트 입력 네트워크를 지정하는 방법은?
- 2개의 네트워크의 경우, VHost.xml을 수정하여 엔진 차원에서 멀티캐스트 입력 인터페이스를 지정, 3개 이상의 네트워크가 있다면 스트림 파일에서 지정하는 것이 유리하다.