라이브 스트리밍에 SRT 인코더 및 디코더를 사용하는 주요 기능
2020년 11월 13일, Kiloview
▶ 직접 연결 설정
SRT를 사용하면 원격 위치에서 신호를 수집하고 하나 이상의 대상으로 리디렉션하기 위해 중앙 집중식 서버가 필요한 기존 비디오 전송 시스템과 달리 소스와 대상을 직접 연결할 수 있습니다. 중앙 집중식 서버 기반 아키텍처에는 단일 장애 구간이 있어 트래픽이 많은 기간에 병목 현상이 발생할 수 있습니다. 허브를 통해 신호를 전송하면 엔드-투-엔드 신호 전송시간이 증가되고 두 개의 링크가 구현되어야 하기 때문에 두 배의대역폭 비용이 발생할 수 있습니다. 하나는 소스에서 허브로, 다른 하나는 중앙에서 목적지로 전송됩니다. SRT는 직접 소스와 목적지 간 연결을 사용하여 지연시간을 줄이고 중앙 병목 현상을 제거하여 네트워크 비용을 절감할 수 있습니다.
▶ 패킷 전달을 위해 ARQ 메커니즘 사용
세 가지의 패킷 전송 매커니즘을 비교하면 상단에는 수정되지 않은 데이터 스트림이 있으며 출력 신호는 패킷이 손실될 때마다 오류를 생성합니다. 중간에는 FEC(Forward Error Correction) 메커니즘에 따라 스트림에 고정된 양의 추가 데이터를 스트림에 추가하여 손실된 패킷을 재생성 하는데 사용할 수 있습니다. 하단에는 자동 반복-재요청(ARQ, Automatic Repeat-reQuest) 메커니즘에 따라 발신자는 수신자의 요청에 따라 손실된 패킷을 재전송하여 FEC의 일정한 대역폭 소비를 방지합니다.
ARQ는 비디오 소스와 대상 사이에 양방향 연결을 설정하여 작동합니다. 각 아웃바운드 패킷에는 수신자가 모든 수신 패킷이 올바른 순서로 수신되었는지 확인하기위해 사용되는 고유 일련 번호가 주어집니다. 네트워크에서 패킷이 손실된 경우 수신자는 손실된 패킷의 일련 번호 목록을 생성하고 송신자에게 재전송 요청을 보낼 수 있습니다. 이 프로세스는 오류율이 높은 네트워크에 대해 여러번 반복 될 수 있습니다. (특정시간 또는 오류 발생시) ARQ는 전송 위치에서 캐싱(재전송이 필요한 경우 패킷을 임시로 저장하려면)을 요구하며 비디오 디코더 또는 다른 수신기가 전송되기 전에 수신 위치에 버퍼를 설정하여 패킷을 올바른 위치로 재배열합니다.
SRT는 주로 인터넷에서 가장 일반적인 유형의 오류를 처리할 수 있기 때문에 ARQ 매커니즘을 사용합니다. 즉 손실이 주로 랜덤 패킷 손실에 의해 발생한다는 뜻입니다. 이러한 오류는 수신자에게 도착하지 않은 패킷을 재전송하기만하면 송신자가 쉽게 해결할 수 있습니다. 비트 오류가 포함된 패킷이 수신자에게 도착하면 손실된 패킷으로 처리되어 발신자에게 재전송을 요청받게 됩니다. 또 다른 이점은 SRT가 각 패킷에 대해 고해상도 타임 스탬프를 제공하여 수신단에서 출력되는 미디어 스트림의 타이밍을 정확하게 재현한다는 점입니다. 이를 통해 다운 스트림 장치가 비디오 및 오디오 신호를 올바르게 디코딩 할 수 있습니다. FEC는 FEC 데이터에 필요한 추가 대역폭을 지원할 수 있는 시스템뿐만 아니라 네트워크 오류율이 임계값을 초과하는 상황이 발생할 때 신호 중단을 견딜 수 있는 시스템에만 적용됩니다.
▶ UDP 패킷 형식 사용
SRT 세션 중 전송되는 각 패킷은 UDP (User Datagram Protocol) 패킷 형식을 사용하여 오버헤드가 낮고 딜레이가 짧은 패킷 전달을 제공합니다. 전문 애플리케이션용으로 설계된 대부분의 실시간 미디어 전송 네트워크는 UDP를 사용합니다. UDP는 일관된 처리량으로 안정적이고 반복 가능한 패킷 전달 시스템을 제공하기 때문입니다.
TCP(Transmission Control Protocol)를 사용하지 않는 이유는 TCP가 스트림의 모든 바이트를 원래 순서로 정확하게 전달되도록 요구하기 때문입니다. 이 방법이 동영상을 보낼 수 있는 좋은 방법처럼 들리겠지만 경험상 그렇지는 않았습니다. 비디오를 사용하면 최악의 경우 일부 누락된 바이트를 수정하거나 무시할 수 있게됩니다.
TCP를 사용하게되면 잘못된 바이트를 건너 뛸 수 없게 됩니다. 대신 필요한 경우 프로토콜은 손실된 데이터 전송을 연속적으로 재시도 합니다. 이것은 많은 고정 프레임의 원인이자 시청자에게 상당한 영향을 미칠 수 있는 혼잡한 네트워크 환경에서 “재 버퍼링” 기호가 발생하는 원인이기도 합니다. TCP의 세번째 영향은 미묘하지만 비디오전송에 매우 중요합니다. TCP는 네트워크 정체가 발생할 때 자동으로 패킷 전송 속도를 줄입니다. 이런 작동은 네트워크의 전반적인 혼잡을 줄이는데 도움이 되지만 비디오 신호의 속도가 공칭 비트 전송률보다 낮을 수 없기 때문에 비디오 신호에는 적용되지 않습니다.
핸드셰이킹 및 기능 정보 교환으로 시작
SRT는 장치가 서로 통신하고 IP 주소와 같은 패킷을 주고 받는데 필요한 데이터를 설정할 수 있는 세가지 핸드 셰이크 모드를 제공합니다. 첫 번째는 SRT 엔드 포인트가 알려진 주소와 UDP 포트 번호를 사용하여 원격 장치에 연결을 시도하는 호출 모드 입니다. 두 번째는 SRT 장치가 수신 트래픽 흐름을 지속적으로 모니터링하여 정의된 주소 및 포트 번호로 수신되는 트래픽 흐름을 알 수 있기 때문에 호출기 장치에서 연결을 기다리는 리스너 모드로 대기하고 있습니다. 마지막 모드는 집계(aggregation)라고도 합니다. 여기서 두 끝 점은 특정 유형의 방화벽을 통해 연결을 더 쉽게 설정하기 위해 호출자와 수신기 역할을 모두 수행합니다.
각 핸드 셰이크는 계속 작동하기 전에 보안 쿠키를 사용하여 엔드 포인트 ID 및 암호를 양방향으로 확인해야 합니다. 핸드셰이크 프로세스가 완료되면 호출자와 리스너는 기능과 구성을 교환합니다. 패킷 재전송 지연을 처리할 수 있는 올바른 버퍼 크기를 설정하려면 네트워크 양쪽 끝 두 엔드포인트 사이의 전체 지연을 알아야합니다. 네트워크 용량에 맞게 비디오를 압축할 수 있또록 연결 대역폭을 예측하고 전달할 수도 있습니다. 송신자와 수신자 간에 암호화 키를 교환하여 AES 128/192/256 비트 암호화를 사용해 IP 패킷 내에서 비디오 및 오디오 콘텐츠를 보다 안전하게 전송할 수 있습니다.