
작성 목적: 행정안전부 고시 「행정·공공기관 영상회의시스템 상호연계 기술 표준규격」 인증 대응을 위한 기술 분석 및 구현 계획 정리
현재 스택: 8x8 JaaS / lib-jitsi-meet (SFU) · Django/DRF · NHN Cloud
행정안전부는 기관마다 제각각 구축된 영상회의 시스템 간 상호 통화·회의를 가능하게 하기 위해 「행정·공공기관 영상회의시스템 상호연계 기술 표준규격」 을 고시로 제정했다. 가장 최근 개정은 2021년 12월 13일이다.
공공조달 사업 참여 또는 지자체·행정기관 네트워크 연계 시 아래 5개 요건 충족이 요구된다.
| 요건 | 내용 | JaaS 현재 상태 |
|---|---|---|
| H.264 | 영상 코덱 | ✅ WebRTC 기본 지원 |
| SIP 연동 | SIP(RFC 3261) 시그널링 | ❌ 미지원 — Jigasi 필요 |
| 콘텐츠 공유 | H.239 또는 BFCP(RFC 4582) | ❌ 미지원 — BFCP 브리지 필요 |
| 연계 GW 연동 | 범정부 SIP/TLS trunk 등록 | ❌ 미지원 — Asterisk 필요 |
| E.164 번호 | 국제 전화번호 체계 다이얼인 | ❌ 미지원 — 번호 레지스트리 필요 |
JaaS / lib-jitsi-meet는 순수 WebRTC 스택이다. 행정기관 영상회의 인프라는 SIP(RFC 3261) 또는 H.323 기반 전용 장비 중심으로 구성되어 있어, 두 세계 사이를 잇는 별도 게이트웨이 레이어가 없으면 연결이 불가능하다.
┌─────────────────────────────────────────────────────────────┐
│ 행정기관 측 │
│ H.323 단말 ──┐ │
│ SIP 소프트폰 ─┼── SIP/TLS or H.323 ──→ [ sip-gw 인스턴스 ] │
│ 범정부 GW ───┘ │
└─────────────────────────────────────────────────────────────┘
│
┌───────────▼───────────┐
│ sip-gw (신규 VM) │
│ sip-gw.도메인 │
│ │
│ Asterisk │
│ ↓ │
│ Jigasi │
│ ↓ │
│ E.164 레지스트리 │
│ (Redis 캐시) │
│ ↓ │
│ BFCP 브리지 │
└───────────┬───────────┘
│ WebRTC (JaaS 참여자로 join)
┌───────────▼───────────┐
│ 8x8 JaaS 클라우드 │
│ Jitsi Videobridge │
│ (SFU · 변경 없음) │
└───────────┬───────────┘
│ WebRTC (기존 그대로)
┌───────────▼───────────┐
│ 기존 클라이언트 │
│ Electron 스튜디오 │
│ 웹 클라이언트(경로당) │
└───────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ Django 백엔드 (icsc-platform) │
│ 기존: 룸·JWT 관리 | 추가: E.164 API | 추가: Jigasi 웹훅 │
└─────────────────────────────────────────────────────────────┘
SIP 세계의 교환기 역할. 인스턴스에서 가장 먼저 외부 트래픽을 수신한다.
주요 역할
chan_h323 또는 외부 GW 연동)보안 구성
| 구간 | 프로토콜 |
|---|---|
| 외부 (행정기관 ↔ Asterisk) | SIP/TLS (포트 5061) + SRTP |
| 내부 (Asterisk ↔ Jigasi) | SIP (포트 5060) |
이 아키텍처의 핵심 브리지. SIP 콜을 WebRTC로 변환해 JaaS 룸에 참여시킨다.
동작 흐름
Asterisk → [SIP 콜 전달]
→ Jigasi: Django 웹훅에 JWT 발급 요청
→ JWT 수신
→ JaaS 룸에 WebRTC 참여자로 join
→ 미디어 브리징 시작
미디어 처리
| 방향 | 처리 내용 |
|---|---|
| 오디오 | G.711 / G.722 ↔ Opus 실시간 트랜스코딩 |
| 영상 | H.264 pass-through (가능 시) / 불가 시 트랜스코딩 |
Jigasi는 Jitsi 프로젝트의 공식 컴포넌트로, JaaS 연동 레퍼런스가 공식 문서에 정리되어 있다.
Django가 원본 번호 매핑 데이터를 관리하지만, Asterisk가 콜마다 Django를 직접 호출하면 지연이 발생한다. sip-gw 내부에 Redis로 번호 매핑 테이블을 캐싱한다.
Django (원본 DB)
→ 번호 변경 시 Redis 갱신 or Asterisk reload 신호
↓
Redis on sip-gw (캐시)
← Asterisk 조회 (콜 수신 시)
번호 매핑 예시:
+82-2-XXXX-1234 → room-id: smartsilver-gyeongrodang-42
+82-2-XXXX-1235 → room-id: smartsilver-gyeongrodang-15
5개 요건 중 구현 난이도가 가장 높다.
BFCP란? RFC 4582. SIP 환경에서 화면 공유 권한(floor)을 협상하는 프로토콜. H.323 환경에서는 H.239가 동일 역할을 한다.
문제: JaaS의 화면 공유는 WebRTC getDisplayMedia() 기반이며 BFCP/H.239 시그널링을 전혀 사용하지 않는다.
구현 방식 (커스텀)
SIP 단말 → BFCP floor request 수신
→ BFCP 브리지가 floor 승인
→ 헤드리스 브라우저(Puppeteer 등)가 JaaS 룸에서 화면 공유 세션 시작
→ SIP 단말의 H.239 콘텐츠 스트림을 두 번째 비디오 트랙으로 JaaS에 publish
표준 구현체가 없어 직접 개발이 필요하다. 인증 심사에서 이 요건을 어느 수준까지 검증하는지 먼저 확인하고 작업 범위를 결정하는 것을 권장한다.
| 포트 | 프로토콜 | 방향 | 용도 |
|---|---|---|---|
| 5060 | SIP UDP/TCP | 내부 | Asterisk ↔ Jigasi |
| 5061 | SIP TLS | 외부 인바운드 | 행정기관, 범정부 GW |
| 10000–20000 | RTP/SRTP UDP | 양방향 | 미디어 스트림 |
| 2855 | BFCP TCP | 외부 인바운드 | 화면 공유 floor control |
| 6379 | Redis TCP | 내부 | E.164 캐시 |
기존 icsc-platform에 엔드포인트 2개만 추가한다. 기존 룸·JWT 관리 로직은 변경하지 않는다.
GET /api/sip/numbers/ # 전체 번호 매핑 목록
POST /api/sip/numbers/ # 번호 등록
PATCH /api/sip/numbers/{number}/ # 매핑 수정
DELETE /api/sip/numbers/{number}/ # 번호 삭제
Asterisk가 콜 수신 시 이 API(또는 Redis 캐시)를 조회해 목적지 룸 ID를 얻는다. 번호 변경 시 Redis 갱신 신호도 여기서 발송한다.
POST /api/sip/jwt/
Body: { "room_id": "smartsilver-gyeongrodang-42" }
Response: { "jwt": "<JaaS JWT token>" }
Jigasi가 JaaS 룸에 join하려면 유효한 JWT가 필요하다. Jigasi가 이 엔드포인트를 호출하면 Django가 기존 JWT 발급 로직을 재사용해 토큰을 돌려준다. 기존 코드를 감싸는 얇은 레이어다.
| 서버 | 역할 | 변경 여부 |
|---|---|---|
icsc-platform | Django 백엔드 | API 2개 추가 |
mch-media | nginx-rtmp / HLS | 변경 없음 |
sip-gw (신규) | Asterisk + Jigasi + BFCP 브리지 | 신규 생성 |
| 8x8 JaaS (클라우드) | Videobridge / Jicofo | 변경 없음 |
난이도와 의존성을 고려한 권장 순서다.
1단계 Asterisk 설치 + SIP 수신 기본 동작 확인
↓
2단계 Jigasi 설치 + JaaS 룸 join 연동 검증
↓
3단계 Django E.164 API + Redis 캐시 구성
↓
4단계 범정부 연계 GW에 SIP trunk 등록
↓
5단계 BFCP 브리지 (심사 요건 수준 확인 후 범위 결정)
1~4단계가 완료되면 SIP 연동·연계 GW·E.164 세 가지 요건이 충족된다. H.264는 JaaS가 이미 지원하므로 4개 요건이 동시에 해결된다. BFCP는 별도 단계로 분리 진행한다.