프로젝트 소개

Media Transport Library(MTL)는 IP 네트워크를 통한 미디어 데이터의 고처리량, 저지연 송수신을 목표로 하는 오픈 소스 소프트웨어 기반 미디어 전송 스택입니다. 관리형 IP 네트워크를 통한 전문 미디어를 위한 SMPTE ST 2110 제품군의 구현을 내장하고 있으며, 특수 장비가 아닌 상용 기성품(COTS) 하드웨어에서 실행되도록 설계되었습니다. 접근 방식 및 아키텍처 MTL은 속도 제한 기능을 갖춘 일반 CPU 플랫폼과 기존 NIC를 활용하여 ST 2110 스트림의 엄격한 타이밍 요구 사항을 소프트웨어로 해결합니다. 메모리 및 코어 관리를 위해 DPDK의 환경 추상화 계층(Environment Abstraction Layer)을 기반으로 하며, 상위 계층에 통합 패킷 TX/RX 인터페이스를 제공하는 가상 데이터 경로 백엔드 계층을 도입합니다. 세 가지 백엔드 유형이 지원됩니다: - DPDK 폴 모드 드라이버(PMD): 커널 네트워킹 스택을 우회하여 하드웨어에 직접 접근하고 사용자/커널 컨텍스트 전환 및 IRQ 처리를 피합니다. - 네이티브 Linux 커널 네트워크 소켓 스택: 더 넓은 커널 생태계와의 호환성을 위해 사용됩니다. - eBPF 필터를 사용하는 AF_XDP: 성능과 커널 통합의 균형을 맞춥니다. 태스크릿 기반 비동기 스케줄러를 사용하여 CPU 활용을 최적화하고 패킷 처리 장치 및 가속기와 통합합니다. 패킷 페이싱은 부분적으로 하드웨어 오프로드되는 RL(Rate Limit)과 완전히 소프트웨어 기반인 TSC(Timestamp Counter)를 포함한 여러 알고리즘을 지원합니다. SIMD는 DMA 및 플러그인 인터페이스와 함께 빅엔디안/리틀엔디안 색 공간 변환에 사용됩니다. 기능 - 데이터 경로 백엔드: DPDK PMD, 네이티브 커널 소켓, eBPF 필터를 사용하는 AF_XDP. - 비루트(non-root) 작동. - 다중 프로세스 처리, 프로세스당 최대 8개의 NIC 지원. - SR-IOV를 통한 가상화 지원. - 하드웨어 타임스탬프 오프로드를 갖춘 내장 PTP 프로토콜. - FFmpeg 플러그인, OBS(Open Broadcaster Software) 플러그인, Intel Media SDK 지원. - 네이티브 C/C++ API와 Python 및 Rust 바인딩. ST 2110 기능 - 협대역 및 광대역 페이싱, 소프트웨어 솔루션의 협대역 페이싱에 대한 규정 준수 보고서가 공개되어 있습니다. - ST 2110-10, -20, -21, -30, -40 및 ST 2022-7. - 1080p, 1080i, 720p, 4K, 8K를 포함한 해상도. - 프레임 레이트: 120, 119.88, 100, 60, 59.94, 50, 30, 29.97, 25, 24, 23.98. - YUV 4:2:2 10비트를 포함하여 ST 2110-20에 나열된 모든 비디오 형식. - 빅엔디안과 리틀엔디안 간의 SIMD 색 공간 변환기. - 인코더/디코더 플러그인 인터페이스를 갖춘 ST 2110-22. - RTP 패스스루 인터페이스를 통한 ST 2022-6. - 하드웨어 RX 타임스탬프 오프로드를 갖춘 ST 2110-20 RX 타이밍 규정 준수 파서. 하드웨어 참고 사항 이더넷 지원은 선택한 백엔드에 따라 다릅니다. DPDK PMD의 경우 지원되는 하드웨어 목록은 DPDK 프로젝트에서 관리합니다. NIC가 DPDK에서 지원되지 않는 경우 커널 소켓 전송을 대체 수단으로 사용할 수 있습니다. 프로젝트에 따르면 일상적인 개발 및 검증은 Intel E810 및 E830 시리즈 카드에 집중되어 있으며 다른 NIC에서의 동작은 보장되지 않습니다. 협대역 TX 페이싱은 속도 제한 기능으로 인해 DPDK PMD를 사용하는 Intel E810/E830에서만 지원됩니다. 다른 구성에서는 페이싱 소스로 TSC를 사용해야 하며, 이는 광대역 페이싱만 제공합니다. 빌드 및 실행 DPDK, 라이브러리 및 샘플 애플리케이션에 대한 빌드 지침은 프로젝트의 빌드 가이드에 제공되며, 별도의 Windows 빌드 가이드도 있습니다. DPDK PMD 백엔드를 기반으로 하는 ST 2110 데모 파이프라인 실행은 실행 가이드에서 다루며, Windows, Linux, VF 패스스루를 사용하는 Windows 게스트 VM, AWS 클라우드 환경, 커널 소켓 경로에 대한 추가 가이드가 있습니다. 퍼징 가이드도 포함되어 있습니다. 개발 및 기여 애플리케이션은 설계 가이드에 설명된 ST 2110 API에 맞춰 개발할 수 있습니다. 저장소에는 포크, 브랜치, 풀 리퀘스트를 기반으로 한 기여 워크플로가 문서화되어 있으며, pre-commit을 통해 고정된 도구를 설치하고, 커밋 시 검사를 실행하며, 모든 추적 파일을 검증하는 단일 checkpatch 스크립트를 제공합니다. 포맷 자동 수정은 동반 스크립트로 적용됩니다. 코딩 표준 문서는 규칙과 각 검사가 실행되는 위치에 대한 참조입니다. 풀 리퀘스트를 열기 전에 기여자는 포맷과 검사를 통과할 때까지 실행하고, 빌드 및 단위 테스트가 통과하는지 확인하고, 변경 사항을 잡을 수 있는 가장 저렴한 계층(단위, VF를 사용한 통합, 또는 종단 간 승인)에 테스트를 추가하고, Conventional Commits 스타일 메시지를 사용하도록 요청받습니다. 프로젝트 상태 및 라이선스 프로젝트는 메인 브랜치의 소스 코드와 기능이 테스트 또는 평가용이며 프로덕션 준비가 되지 않았다고 명시하며, 평가된 코드는 릴리스 버전으로 태그가 지정됩니다. BSD 3-Clause 라이선스로 제공되며 OpenSSF Scorecard 및 Best Practices 배지와 함께 기본 빌드, Coverity, 린터, Trivy, 의존성 검토에 대한 CI 배지를 보유하고 있습니다. 관련 출판물로는 MHV'23 논문, Intel 백서, 2022 DPDK Userspace Summit 발표가 있습니다.