요약

  • RFC 3057는 레거시 D채널의 물리 종단과 Q.931 호출 처리가 수행되는 위치를 분리했습니다: 시그널링 게이트웨이(Signaling Gateway)가 Q.921를 종단하고, IUA가 Q.921 사용자 경계를 SCTP를 통해 애플리케이션 서버로 백홀(backhaul)했습니다.
  • ASP 장애 조치(failover)는 시그널링을 다른 프로세스로 우회시킬 수 있었지만, 전송 복구가 호출 상태 복구는 아니었습니다. 이후 RFC 4233은 IUA 외부의 방법으로 애플리케이션이 상태를 공유하지 않으면 전환 중인 호출이 실패할 수 있다고 명시합니다.

회선이 아니라 상위 계층을 옮기다

전통적인 ISDN 구성에서 D채널은 종단 장치가 회선 교환 호출을 성립하고 관리할 수 있게 하는 시그널링을 전달합니다. 하위 계층에서는 Q.921이 데이터 링크 서비스를 제공하며, Q.931과 QSIG가 그 위의 Q.921 사용자로 위치합니다. RFC 3057는 이 프로토콜 경계를 활용해 작업이 수행되는 위치를 분리했습니다.

시그널링 게이트웨이(SG)는 표준 ISDN 인터페이스에서 시그널링을 수신해 Q.921을 종단했습니다. IP 측 미디어 게이트웨이 컨트롤러(MGC)는 대등한(peer) Q.931 계층과 호출 처리를 호스팅했습니다. 두 사이에서 ISDN Q.921-User Adaptation 계층, 즉 IUA가 경계 프리미티브를 SCTP로 전달했습니다. 이 적응(adaptation)은 가입자 루프, D채널 또는 모든 회선이 IP 객체가 되었다는 주장이 아니었습니다. SG가 레거시 인터페이스를 유지하는 가운데 상위 시그널링 기능을 백홀하는 방식이었습니다.

이 구분은 운영상 중요했습니다. Q.921의DL-DATA프리미티브는 Q.931 메시지를 전달할 수 있고, 성립·해제·유닛 데이터 프리미티브는 서로 다른 링크 결과를 운반합니다. 따라서 IUA 교환은 인터페이스 식별성과 경계의 의미론을 보존해야 했습니다. 게이트웨이는 여전히 물리 시그널링 채널과 그 로컬 Q.921 동작에 책임이 있었고, 원격 컨트롤러는 D채널 자체를 인수했다고 가장하지 않고도 호출 제어 메시지를 처리할 수 있었습니다.

하나의 인터페이스 식별자, 하나의 로컬 매핑

IUA의 인터페이스 식별자(Interface Identifier)는 메시지를 SG의 물리 인터페이스에 연결했습니다. 구현에 따라 정수 또는 텍스트로 표현될 수 있었지만 그 의미는 로컬이었습니다: SG와 해당 애플리케이션 서버가 값을 조율했습니다. RFC는 이 식별자가 서로 다른 게이트웨이에 걸쳐 의미를 갖도록 하지 않았습니다. 네트워크 전체 이름처럼 보이는 레이블은 실제로는 시그널링 컨텍스트 사이의 로컬 조인 키였습니다.

이 로컬 매핑이 백홀의 핵심이었습니다. SG는 인터페이스 식별자를 애플리케이션 서버와 활성 애플리케이션 서버 프로세스(ASP)에 연결했습니다. 애플리케이션 서버는 반드시 한 대의 장비가 아니었고, 주(primary) 컨트롤러와 백업 컨트롤러 같은 ASP 프로세스의 순서 목록으로 표현되는 논리 서비스였습니다. 게이트웨이는 각 시그널링 인터페이스에 대해 어떤 프로세스가 활성인지 알아야 했으며, 그 할당은 장애 조치 중에 바뀔 수 있었습니다.

RFC 3057는 SCTP 사용을 권장했고, 독립된 D채널들 사이의 버퍼링과 지연을 줄이기 위해 D채널마다 별도의 SCTP 스트림을 두도록 했습니다. 스트림은 전송 기능이었고, 인터페이스 식별자는 여전히 피어에게 메시지가 어느 물리 시그널링 인터페이스에 관한 것인지 알려주었습니다. 연결(association) 상태, 스트림 순서, 로컬 인터페이스 맵, ASP의 활성 상태는 서로 관련이 있었지만 어느 하나도 다른 것을 대신할 수 없었습니다.

장애 조치는 공유된 호출 이력이 아니다

이 설계는 운영자가 이중화 모델을 선택할 수 있게 했습니다. 1+0 구성에는 ASP 이중화가 없었습니다. 1+1 액티브/스탠바이에서는 한 프로세스가 트래픽을 처리하고 다른 프로세스가 인수할 수 있었습니다. 더 넓은 n+k 모델은 부하를 감당하는 데 필요한 n개 프로세스와 사용 불가능한 프로세스를 대체할 수 있는 k개의 예비 프로세스를 기술했습니다. IUA 메시지는 SG와 ASP가 프로세스 상태를 주고받고 새 시그널링의 방향을 결정하도록 했습니다.

그러나 백업과의 정상 동작하는 연결이, 이미 성립 중인 호출의 상태를 그 백업이 알고 있다는 뜻은 아닙니다. RFC 3057을 폐기하고 후속한 2006년의 RFC 4233은 이 구분을 명시했습니다. 캐리어급 네트워크에서는 하나의 ASP 장애가 안정된 호출을 끊어서는 안 되며(SHOULD NOT), 이 목표를 충족하려면 ASP들이 호출 상태를 공유해야 할 수 있습니다. 장애 조치 중에는 전환 중인 호출이 실패할 수 있습니다(MAY). 공유 메모리나 ASP 간 프로토콜이 이 위험을 완화할 수 있지만, 후자는 IUA의 범위 밖이었습니다.

이것은 SCTP의 숨은 결함이 아니었습니다. SCTP는 연결 상태를 보고하고, 스트림 내에서 사용자 메시지의 순서를 관리하며, 멀티호밍을 지원할 수 있었습니다. 이것들은 전송 계층 속성입니다. 대체 컨트롤러에게 어떤 호출 제어 결정이 이미 내려졌는지, 어떤 메시지가 피어에 도달했는지, 호출이 안정 상태인지 전환 중인지 알려주지는 못했습니다. IUA는 시그널링 경로를 옮길 수 있었지만, 애플리케이션 연속성은 별개의 책임이었습니다.

표준이 바꾼 것 — 그리고 바꾸지 않은 것

2001년 2월에 발표된 RFC 3057는 SIGTRAN 아키텍처에 ISDN Q.921 사용자를 위한 정의된 적응 계층을 제공했습니다. 회선 교환 네트워크로의 표준 기반 에지를 유지하면서 IP 백홀을 통한 분산 호출 처리를 가능하게 했습니다. 2006년 RFC 4233이 이를 폐기(obsolete)하고 같은 적응 계층을 다듬었습니다. 이 표준 역사는 프로토콜 진화를 문서화할 뿐, 어떤 운영자가 이를 배치했는지, 어떤 장비를 구매했는지, 실제 장애에서 몇 개의 호출이 살아남았는지를 그 자체로 입증하지는 못합니다.

남는 공학적 교훈은 "전화가 IP로 옮겨갔다"보다 좁습니다. 서비스 경계는 물리 인터페이스가 다른 곳에 남아 있는 가운데 이동할 수 있습니다. 링크를 종단하는 게이트웨이, 그 사용자 프리미티브를 전달하는 적응 계층, 전송 연결, 트래픽을 수신하는 프로세스, 호출을 하나로 만드는 애플리케이션 상태는 모두 서로 다른 근거를 요구합니다. 녹색 SCTP 연결이나 활성 ASP는 호출 완수 영수증이 아닙니다.

출처