오리지네이션과 터미네이션, 페일오버는 레이어마다 다르게 움직인다

Twilio의 Elastic SIP 트렁킹 문서는 인바운드(오리지네이션)와 아웃바운드(터미네이션) 페일오버를 서로 다른 메커니즘으로 설명합니다. 오리지네이션 쪽은 여러 SIP URI에 우선순위와 가중치를 매겨, 우선순위가 같은 엔드포인트끼리는 트래픽을 나누고 하나가 끊기면 나머지가 그 몫을 흡수합니다. 터미네이션 쪽은 다르게 움직입니다 — 터미네이션 호스트네임을 DNS로 풀면 여러 리전의 IP가 함께 돌아오고, 발신 트렁크는 응답이 없는 IP를 건너뛰며 순서대로 시도합니다. Twilio는 이때 첫 시도의 타임아웃을 4초로 잡으라고 권고하고, 더블린 같은 1차 엣지가 막히면 프랑크푸르트 같은 2차 엣지로 넘어가는 폴백 URI까지 따로 설정하게 합니다.

방화벽 규칙 하나가 페일오버를 조용히 무력화한다

오리지네이션 엔드포인트에 1차 엣지의 IP 대역만 허용해 두면, 트래픽이 2차 엣지로 넘어가는 순간 방화벽이 그 패킷을 막아 버립니다. Twilio 문서는 선택한 엣지와 무관하게 전체 시그널링·미디어 IP 레인지를 열어 두라고 명시하는데, 이 조건을 빼먹으면 페일오버 설정 자체는 콘솔에 정상으로 보여도 실제 장애 상황에서는 통화가 복구되지 않습니다.

911 디스패처블 로케이션 의무는 페일오버 설계와 별도로 걸려 있다

RAY BAUM'S Act 506조에 따른 FCC 명령은 고정형 단말의 자동 디스패처블 로케이션 제공 기한을 2021년 1월 6일로, 비고정형 단말은 기술적으로 가능한 경우에 한해 2022년 1월 6일로 못박았습니다. 2020년 2월 16일 이후 제조·설치된 시스템에는 Kari's Law이 겹쳐, 추가 번호 없이 911로 바로 연결되고 교환실 같은 중앙 위치로 통지가 가야 합니다. 이 세 날짜는 모두 지난 의무라서, 지금 SIP 트렁크를 새로 구성하는 모든 콜봇 루프는 이미 이 요건을 지키고 있어야 하는 상태에서 페일오버를 얹는 셈입니다.

다이얼 플랜부터 911까지: SIP 트렁크 페일오버 운영 가이드

기획 단계에서 목표 수치를 먼저 다이얼 플랜 문서에 못박습니다. 터미네이션 엔드포인트별 응답 대기는 4초, 1차 경로 장애 감지부터 2차 경로로 전환이 끝나기까지는 전체 10초 이내로 잡고, 오리지네이션은 물리적으로 분리된 SBC 최소 2곳에 우선순위·가중치를 나눠 배정합니다.

첫 번째 실패 패턴은 DNS 캐싱입니다. 터미네이션 호스트의 응답을 트렁크 장비가 TTL보다 오래 캐싱하면, 리전 하나가 내려가도 옛 IP만 계속 재시도해 전환이 늦어집니다. 레코드의 TTL을 그대로 존중하고, 하드코딩한 IP 목록으로 트렁크를 구성하지 않는 것이 복구의 전제입니다.

두 번째는 위치 매핑 누락입니다. 2차 엣지로 넘어가며 오디오 리전이 바뀌어도 911 디스패처블 로케이션은 회선(혹은 내선) 단위로 별도 등록돼 있어야 합니다. 로케이션을 엣지에 묶어 두면 페일오버가 걸리는 순간 발신 회선의 위치 레코드가 비어, 긴급 신고가 좌표 없이 전달됩니다. 로케이션은 엣지가 아니라 회선 ID에 매핑해 페일오버와 분리된 채로 유지해야 합니다.

세 번째는 앞서 짚은 방화벽 누락을 체크리스트 항목으로 못박는 일입니다. 배포 전 서명 과정에 2차 엣지 IP 레인지까지 포함한 방화벽 룰을 별도 항목으로 올려 두지 않으면, 테스트 때는 멀쩡해 보이던 설정이 실제 장애에서만 드러납니다.

운영 체크리스트로는 분기 1회 1차 SBC를 의도적으로 끊는 리허설을 둡니다. 로그에는 트렁크ID·전환 발생 시각·전환 소요시간·911 로케이션 조회 성공 여부를 남기고, 발신자 번호는 원문 대신 해시값으로 남겨 보존기간이 지나면 파기합니다.

지속 개선 루프는 월간 전환 발생 횟수와 평균 전환 시간을 추세로 쌓는 데서 시작합니다. 캐리어 SLA가 바뀌거나 FCC가 비고정형 단말 요건을 조정하면, 다이얼 플랜과 타임아웃 값부터 먼저 고쳐 코드와 규정이 어긋나지 않게 합니다.

신고 전화는 끊기지 않아야 완성된다

SIP 트렁크 페일오버는 통화만 살리는 것이 아니라, 911 디스패처블 로케이션이 그 전환을 그대로 따라가는지까지 설계해야 완성됩니다. 터미네이션 측 4초·전체 전환 10초라는 숫자를 다이얼 플랜에 박아 두고, 로케이션은 엣지가 아니라 회선 단위로 매핑하고, 방화벽이 2차 엣지를 막지 않는지 분기마다 리허설로 확인해야 신고 전화가 끊기지 않습니다.

참고 링크

Twilio Voice Failover Best Practices — Twilio

911 Dispatchable Location — Federal Communications Commission

이 글에 대해 AI와 대화하기

AI가 이 글을 읽은 상태로 답합니다. 무엇이든 물어보세요 — 글에 없는 내용이면 없다고 먼저 알려줍니다.

대화창을 불러오는 중…