요약

  • RFC 3331은 SS7 링크를 IP 엔드포인트 쪽으로 옮기지 않았다. MTP1과 MTP2는 시그널링 게이트웨이에 남았고, M2UA는 MTP2 사용자 경계를 전송하여 원격 MTP3가 링크를 운용할 수 있게 했다.
  • 이 아키텍처는 세 가지 사실을 서로 독립적으로 만들었다. SCTP 연합이 맞을 수 있고, ASP가 활성 상태일 수 있으며, 그럼에도 물리적 SS7 링크는 서비스 불가 상태일 수 있다. 인터페이스 매핑과 명시적 감사가 이 세 사실을 하나로 묶어주며, 초록불 연결 표시는 그렇지 못하다.

그 “사용자”는 프로토콜 계층이었다

“MTP2 사용자 적응(User Adaptation)”이라는 제목은 마치 가입자를 위한 트래픽을 적응시키는 것처럼 들릴 수 있다. RFC 3331에서 “사용자”는 계층화된 프로토콜의 의미였다. MTP3는 MTP2의 유일한 사용자다. 백홀 구성에서 물리적 SS7 회선과 MTP1, MTP2는 시그널링 게이트웨이 프로세스(SGP)에서 종단된다. MTP3는 미디어 게이트웨이 컨트롤러(MGC)의 애플리케이션 서버 프로세스(ASP)에서 실행되며, M2UA는 원래 로컬 MTP2/MTP3 경계를 가로질러가던 프리미티브를 SCTP를 사용해 IP 네트워크로 전달한다.

이 구분이 본 글의 핵심이다. 신호 유닛은 게이트웨이의 실제 회선에 도착하고, MTP2는 그곳에서 링크 기능을 수행한다. 원격 MTP3는 회선의 또 다른 사본을 소유하는 것이 아니라, M2UA를 통해 데이터와 상태 지시를 받고 경계 요청을 되돌려 보낸다. 설정, 해제, 혼잡, 국소 프로세서 고장, 원격 프로세서 고장, 회수(retrieval), 데이터 전송이 분산된 경계를 넘나드는 메시지가 된다.

이러한 분리가 존재한 이유는 앞선 RFC 2719의 SIGTRAN 프레임워크가 설명했다. 시그널링 게이트웨이는 회선교환 신호망의 가장자리에서 그 네트워크를 만나고, 미디어 게이트웨이 컨트롤러는 패킷 네트워크의 다른 위치에서 상위 계층 호출 제어 로직을 담당할 수 있었다. RFC 3331은 그 아키텍처 안의 한 지점에 대한 구체적 프로토콜을 제공했다.

따라서 M2UA를 SS7 링크를 단순히 종단간 터널링하는 것으로 서술하는 것은 틀렸다. 하위 링크는 물리적으로도 운영적으로도 게이트웨이에 그대로 있다. 이동하는 것은 그 상위 인터페이스에 대한 접근이다. 이 선택은 유연성을 만들었지만, 동시에 한때 로컬이던 경계를 분산 제어 시스템으로 바꿔놓았다.

하나의 식별자가 서로 다른 두 종류의 장소를 연결했다

RFC 3331은 게이트웨이가 인터페이스 식별자(Interface Identifier)를 물리 인터페이스에 매핑하도록 요구했다. V.35 회선, T1 회선과 타임슬롯, 또는 E1 회선과 타임슬롯이 그 예였다. 또한 같은 식별자를 SCTP 연합과 그 연합 내 스트림에도 매핑했다. 이 두 매핑은 동일하게 안정적이지 않았다. 물리적 관계는 프로비저닝된 것이었다. 반면 연합·스트림 관계는 ASP가 활성화되거나 비활성화되거나 대체 장비로 페일오버할 때 바뀔 수 있었다.

인터페이스 식별자는 국소적 의미를 가지며 시그널링 게이트웨이와 애플리케이션 서버 프로세스 사이에서 조율된 값이었다. 회선의 전역 이름이 아니었다. 식별자 17을 담은 패킷 캡처는 어느 피어가 특정 맥락에서 그 값을 보냈다는 사실만 증명한다. 구성 수령 기록 없이는 운영자가 그 값에 어떤 동선, 광선, 타임슬롯 자원을 담으려 했는지 증명하지 못한다.

SCTP 스트림은 트래픽을 분리하고 링크 간 HOL(head-of-line) 블로킹을 줄이는 데 도움이 되었다. 그러나 스트림 번호가 인터페이스 식별자를 대체할 수는 없었다. SCTP 스트림은 단방향이므로 M2UA 피어는 메시지가 도착한 스트림만 보고 대응되는 반환 스트림을 추론할 수 없다. 그래서 RFC 3331은 인터페이스 식별자를 M2UA 헤더에 넣었다. 관리 트래픽은 공통 스트림을 사용하고, MAUP 트래픽은 그 데이터와 연관된 스트림에서 다루어지도록 했다.

이 구성은 감사 가능한 연쇄를 만들었다. 물리 링크에서 인터페이스 식별자로, 식별자에서 애플리케이션 서버로, 활성 ASP에서 SCTP 연합과 스트림으로. 이 연쇄의 어느 끝이라도 없거나, 낡았거나, 모호하면 원격 MTP3의 링크 관점이 게이트웨이의 실제 상황과 어긋날 수 있었다.

세 개의 초록불을 하나로 취급할 수 없었다

IP 전송, 애플리케이션 프로세스, SS7 링크는 각자 자신의 상태를 가졌다. SCTP는 연합이 수립되었다고 보고할 수 있었다. M2UA 제어 평면은 어떤 애플리케이션 서버에 대해 ASP를 DOWN, INACTIVE 또는 ACTIVE 상태로 둘 수 있었다. MTP2 링크는 독립적으로 서비스 중, 서비스 불가, 혼잡 또는 원격 프로세서 고장 상태에 있을 수 있었다.

연합이 살아 있다는 것은 두 SCTP 엔드포인트가 통신할 수 있다는 뜻일 뿐이었나 아니면 더였나. 그것은 두 SCTP 엔드포인트가 통신할 수 있다는 뜻일 뿐이었다. 이 ASP가 특정 인터페이스 식별자에 대해 활성화되었다는 뜻이 아니었다. ASP ACTIVE는 그 프로세스가 트래픽 모드에 따라 애플리케이션 트래픽을 받도록 선택되었다는 뜻이었다. 물리 링크가 서비스 중이라는 뜻이 아니었다. 반대로 게이트웨이의 SS7 링크가 건강하다고 해서 어느 원격 ASP가 그 트래픽을 처리할 준비가 되었다는 보장은 없었다.

RFC 3331은 애플리케이션 서버 상태와 복구 중의 보류(pending) 구간도 모델링했다. Override, Loadshare, Broadcast 모드는 활성 프로세스들이 트래픽을 받는 방식을 바꾸었다. 동적 매핑은 페일오버 동안 일시적으로 무효가 될 수 있으므로, 게이트웨이는 메시지를 경로할 때마다 현재의 AS 및 ASP 상태를 유지해야 했다. 명세는 하나의 시그널링 게이트웨이 프로세스만이 하나의 SS7 링크에 링크 종단 서비스를 제공하도록 권고했는데, 이는 두 개의 활성 소유자가 같은 물리 자원을 종단한다고 행세하는 일을 막기 위함이었다.

이것들은 관료적 구분이 아니다. 운영자가 전송 계층 생존을 서비스 건강과 동일시하면, 페일오버가 링크 상태를 아직 재구성하지 못한 ASP로 신호를 보낼 수 있다. 애플리케이션 활동을 물리적 준비와 동일시하면 메시지가 죽은 회선 뒤에 적체될 수 있다. 링크 건강을 원격 준비와 동일시하면, 게이트웨이가 어느 컨트롤러도 처리할 수 없는 트래픽을 계속 받아들일 수 있다.

감사는 불확실성을 수습했을 뿐, 이력을 복원하지 않았다

RFC 3331에는 STATUS_AUDIT 동작이 포함되어 있어, ASP가 게이트웨이에 SS7 링크의 현재 상태를 물을 수 있었다. 응답은 서비스 불가, 서비스 중, 혼잡 또는 원격 프로세서 고장을 나타낼 수 있었다. 이것은 활성화 후, 연합 재시작 후 또는 이벤트 전달 공백 후에 중요했다. 원격 MTP3는 마지막으로 기억한 상태가 여전히 유효하다고 가정하는 대신 현재 기준선이 필요했다.

감사는 조정 영수증이다. 그 직후에 상태 전환이 없었다는 증거가 아니며, 놓친 이벤트를 모두 재구성하지도 않는다. 방어 가능한 장애 기록은 감사 요청과 응답에 타임스탬프, 인터페이스 식별자, 연합 식별, ASP 상태 및 이후 지시들을 함께 남긴다. “감사가 서비스 중이라고 했다”는 그 교환의 시점과 관측 지점에 의해 범위가 한정된다.

동적 등록은 또 하나의 경계를 더했다. 링크 키(Link Key)는 승인되어 인터페이스 식별자에 매핑될 수 있었다. 등록 성공은 게이트웨이가 그 제어 매핑을 수용했다는 뜻이었다. 물리 링크가 건강하거나 ASP가 활성이거나 트래픽이 흐르고 있다는 증거가 아니었다. 승인과 가용성은 서로 다른 영수증으로 남았다.

백홀은 P2P 대체물이 아니었다

RFC 4165는 이후 이 대비를 M2PA와 명시적으로 비교했다. 두 프로토콜 모두 MTP3 관련 정보를 SCTP 위로 전달할 수 있지만 아키텍처가 다르다. M2PA에서는 각 피어가 MTP3를 가지며 M2PA가 그 피어들 사이의 MTP2를 대체한다. M2UA에서는 미디어 게이트웨이 컨트롤러의 MTP3가 전송된 경계 프리미티브를 통해 시그널링 게이트웨이의 실제 MTP2를 사용한다. 둘 다 “IP 위의 SS7”이라고 부르면 모든 장애 양상을 결정하는 소유권 문제가 가려진다.

같은 주의는 더 넓은 SIGTRAN 계열 전반에 적용된다. RFC 4666의 M3UA와 RFC 4233의 IUA는 공통의 ASP 상태와 메시지 클래스 체계를 공유하지만, 그들이 적응시키는 경계는 상호 교환 가능하지 않다. 공유된 헤더가 공유된 의미를 증명하지는 않는다.

RFC 3331은 2002년 당시의 SCTP 명세를 참조했다. RFC 9260이 오늘의 SCTP 프로토콜 명세다. 이 계승 관계는 구현자가 현재의 전송 동작을 읽는 데 도움이 되지만, 특정 M2UA 네트워크가 업그레이드되었거나 오늘 운영 중이라는 증거는 아니다. 마찬가지로 IANA는 여전히 M2UA의 SCTP 페이로드 프로토콜 식별자 2를 할당하고 MAUP 및 인터페이스 식별자 관리 메시지 클래스를 유지한다. 레지스트리 항목은 코드 포인트와 참조를 증명할 뿐, 배포, 트래픽 규모 또는 적합성을 증명하지 않는다.

보안에도 같은 경계가 있다. SCTP는 전송 메커니즘을 제공할 뿐, 국소적으로 조율된 인터페이스 식별자가 물리 회선에 대한 인증된 진술이 되도록 만들지 않는다. RFC 3788은 SIGTRAN 보안 고려사항과 메커니즘을 다루었다. 운영자에게는 여전히 보안 정책, 피어 승인, 그 네트워크에 맞는 보호가 필요했다. 작동하는 연합은 그 피어가 식별자 뒤의 링크를 운용할 권한이 있다는 증거가 아니다.

영속적 교훈은 근거의 분리다

M2UA는 물리적 앵커를 지우지 않고 이전까지 로컬이던 인터페이스를 분산시켰다. 그렇기 때문에 그 가장 유용한 역사적 교훈은 메시지 카탈로그가 아니다. 분산 인프라 주장을 읽는 방법이다.

다섯 가지 영수증을 함께 보라. SCTP 연합과 스트림, ASP 및 AS 제어 상태, 프로비저닝된 인터페이스 식별자 매핑, 물리적 MTP2 링크 상태, 그리고 관측이나 명령을 전달한 경계 메시지. “누가 행동할 권한이 있었는가”가 질문이라면 보안과 승인 맥락을 더하라. 그때에야 초록불이 켜진 애플리케이션 프로세스를 특정 링크와 연결할 수 있다.

RFC 3331은 무엇이 남았고, 무엇이 이동했고, 그 사이에서 무엇을 명명해야 하는지를 정밀하게 정함으로써 원격 제어를 가능하게 했다. 이 구분들이 하나로 뭉개지면 IP 연결이 전화 서비스의 거짓 증거가 된다. 구분이 보존되면, 패킷 네트워크가 회선 그 자체를 옮겼다고 가장하지 않고도 페일오버와 감사를 설명할 수 있다.

출처