사진 = 강상진 필자
사진 = 강상진 필자

COVID-19로 인해 재택근무와 홈 러닝에 필요한 시스템의 니즈가 확대되었고, 비대면에 기반한 언택트(untact) 경제를 창출해야 하는 과제를 낳고 있다. 업무와 배움이 아닌 엔터테인먼트 측면에서는 모바일 게임, 넷플릭스와 유튜브와 같은 멀티미디어 서비스의 소비가 늘어나는 등, 다양한 산업 전반에 걸친 변화가 발생하고 있다.

재택근무에 사용되는 IT 기술을 나열하면 비디오 콘퍼런스(video conference)라 부르는 화상 회의, 문자 및 멀티미디어 전달을 위한 채팅 기술, 조직 내 인프라에 접속하고 서비스를 사용할 수 있는 VPN과 그룹웨어 그리고 이러한 시스템들을 지탱하고 운영하는 가상화 기술과 클라우드 등 다양한 서비스들이 있다.

그중에서 첫 번째로 화상 회의에 사용되는 기술을 알아보았다. 비디오 전달을 위한 스트리밍 기술은 비디오를 생성하여 전달하기 좋게 압축하고, 이를 P2P 혹은 중계 서버를 통해 올바른 대상자에게 실시간으로 빠르게 전달하는 다양한 서버와 클라이언트 기술들이 포함되어 있다. 대표적으로 음성과 비디오 전달에 사용되는 WebRTC 프로토콜을 언급할 수 있다.

WebRTC는 어떤 기술인가?
WebRTC(Web Real Time Communication)는 단어 그대로 웹상의 실시간 커뮤니케이션을 지원하는 프로토콜이다. WebRTC는 오디오, 비디오, 데이터를 웹 혹은 네이티브 앱 애플리케이션을 통해 실시간으로 제공하는 오픈 소스 기술이며, 크롬, 파이어폭스, 오페라 최신 버전의 브라우저들과 iOS, Android 네이티브 앱 라이브러리를 지원한다.

그림 1. WebRTC 로고 / 출처 = webrtc
그림 1. WebRTC 로고 / 출처 = webrtc

페이스북 Messenger, WhatsApp과 같이 화상 채팅을 지원하는 인스턴스 메신저, Zoom, 마이크로소프트 Teams, 구글 Meet와 같은 화상 회의 솔루션들은 대부분 WebRTC 기술을 바탕으로 만들어졌다. WebRTC는 전통적인 스트리밍 서비스처럼 클라이언트-서버 구조가 아니라, 사용자 간 Peer-To-Peer 연결을 맺고 미디어 통신을 수행하는 기술에서 시작되었다. WebRTC의 기능은 크게 4가지로 나눌 수 있다.

△ 사용자의 device에서 오디오와 비디오 데이터 추출할 장치를 준비
△ 사용자의 device에서 오디오와 비디오를 녹화
△ 사용자 간(Peer to Peer) 오디오와 비디오 스트림 전달을 위한 연결 생성
△ 사용자 간 실시간 데이터 전달 수행

WebRTC가 사용하는 표준화된 기술은?
WebRTC는 대화 상대를 검색하고, 서로가 지원하는 연결 방법을 찾아 네트워크 연결을 생성하여 상대에게 전달하기 좋게 압축된 비디오를 인터넷을 통해 전달하는 순서로 사용된다. 올바른 대화 상대를 찾는 것을 시그널링(signaling)이라고 하며 일반적으로 웹소켓(WebSocket)을 사용한다. 대화를 원하는 자신의 정보와 자신이 찾는 상대방(peer)의 정보를 소켓(socket)에 담아 서로가 대화를 나눌 수 있도록 만들어진 가상화된 공간에 전송한다. 서로가 찾는 대화 상대인지 마지막 확인을 위해 약속된 핸드셰이킹(handshaking)을 수행한다.

ICE(Interactive Connectivity Establishment, RFC-5245) 기술은 WebRTC peer들이 서로를 빠르고 정확하게 찾을 수 있는 방법을 제공한다. 자신의 접속 가능한 공인 IP 주소를 STUN을 통해 파악하고, 상대에게 알려주며 여기로 통신해달라고 요청하는 구조다.

그렇지만 NAT(Network Address Translation) 환경에서의 인터넷 통신은 더욱 복잡해진다. NAT는 일반적으로 요청하지 않은 패킷은 차단하는 특성을 가지고 있기 때문에 뒤단의 클라이언트에게 보내진 패킷을 막으며 P2P 간의 직접적인 연결을 불가능하게 만든다.

STUN(Session Traversal Utilities for NAT, RFC-3489)는 NAT를 사용하는 2개의 peer에게 서로가 어떻게 연결해야 하는지를 알려준다. NAT 장비 혹은 NAT 뒤단의 peer의 공인 IP와 서비스 가능한 포트 번호를 파악하여 P2P 연결이 가능한지를 파악한다. 만약 P2P 연결이 방화벽이나 NAT 구성으로 인하여 실패하면, TURN(Traversal Using Relay NAT)이라 부르는 중계 서버를 통해 통신을 해야 한다.

TURN(Traversal Using Relays around NAT, RFC-5766)은 P2P 연결이 불가능한 WebRTC 클라이언트들은 인터넷에 배치된 중계 서버(Relay Server)가 필요할 때 사용한다.

사용자에게 제일 좋은 성능을 제공할 수 있는 서버를 선택하기 위해 DNS는 IP 기반의 라우팅을 사용하고, 사용자가 증가할수록 TURN 서비스의 용량이 증가될 수 있도록 클라우드 상의 오토스케일링(autoscaling) 방식을 사용한다. 최신의 TURN 서비스는 STUN 서비스까지 모두 제공한다.

그림 2. WebRTC에 사용되는 다양한 기술
그림 2. WebRTC에 사용되는 다양한 기술

​일단 상대와 비디오 통화 연결이 완료되면 그 이후부터의 화상 대화는 TCP 혹은 UDP 기반의 다양한 프로토콜을 통해 전달된다. 대화 채널에 여러 사람이 접속하게 되면 1:1 통신에서는 없었던 대화 전달의 복잡성이 증가한다. 다수의 인원이 각자의 모습을 서로에게 실시간으로 전달해야 하기 때문이다.

​SFU(Selective Forwarding Unit) 방식이란 스트림 전달을 대화에 참여한 모든 사람이 아닌, 필요한 사람에게만 전달하며 서버와 네트워크의 자원을 최대한 아끼는 방식이다. 대화에 참여한 사람들도 가변 비트레이트 방식으로 서버로부터 최소의 패킷만을 전달받기 때문에 버퍼링이나 화질이 낮아지는 것을 방지할 수 있다. 모든 구성원들이 직접 연결을 맺는 P2P Mesh 방식이나, 구성원이 전달한 비디오를 중계 서버가 하나의 비디오로 통합하여 재전달하는 MCU(Multipoint Conferencing Unit) 방식보다 효율적으로 자원을 절약할 수 있다.

그림 3. SFU 방식 / 출처 = eyeson
그림 3. SFU 방식 / 출처 = eyeson

전달 방식이 결정된 스트림들은 비디오 코덱에 의해 적절한 형식으로 압축되어 송신된다. 사용자 간 시그널링을 주고받을 때, 오디오 혹은 비디오 스트림 데이터를 주고받을 때 경우에 맞게 각각의 보안성을 확보하는 것이 좋다. 서버 연결 자체의 보안은 TLS/SSL 기반의 HTTPS, 비디오 스트림의 보안은 DTLS(Datagram TLS)를 사용하여 보안 채널을 확보하도록 한다. 선별적으로 비디오 자체에 E2E(End-to-End) - 종단간 암호화를 추가할 수 있으나 문자열에 비해 상대적으로 크기가 큰 비디오 조각(chunk)들을 실시간 재생하면서 어떻게 암호화하고 복호화 할지가 가장 큰 과제라 할 수 있다. 최근 밝혀진 Zoom의 보안성에 대한 문제로 인해 서비스가 인기를 얻자마자 추락하는 사태를 보면, 아무리 기능이 좋아도 보안 취약점이 있는 서비스들은 대중들에게 빠르게 외면당한다는 것을 알 수 있다.

이상으로 비디오 회의에 사용되는 기술들을 빠르게 알아보았다. 증가하는 비디오 스트림 트래픽 서비스는 비단 시스템과 소프트웨어 차원에서 끝나지 않고 인터넷 트래픽의 증가와 맞물린 클라우드의 활용을 더욱 촉진하는 계기가 될 것으로 예상된다.

강상진 sangjin@brandonkang.net 필자는 삼성SDS, 마이크로소프트, 아카마이 테크놀로지스 등에서 소프트웨어 개발과 프로그램 매니저, 아키텍트 경험을 쌓았다. 기술 블로그 'Tech 유람'을 운영하고 있으며 다양한 IT 관련 지식을 글과 컨퍼런스, 교육을 통해 많은 이들에게 공유하며 상호 작용하는 삶을 즐기고 있다.

(*이 칼럼은 Nextdaily의 편집방향과 다를 수 있습니다.)

관련기사

저작권자 © 넥스트데일리 무단전재 및 재배포 금지