요약

  • RFC 3149는 원격 MGCP 콜 에이전트가 번호가 매겨진 기능 키를 해석하고, 키 레이블과 표시등을 설정하고, 후크 상태를 강제하고, XML 화면을 구동할 수 있게 했지만, 키 이벤트는 기능 매핑 및 그 결과 발생하는 통화 상태와 별개로 남았다.
  • 화면 상태가 전화 신호 상태와 어긋날 수 있었기 때문에, RFC는 화면에 별도의disp/엔드포인트를 부여하고 키 누름을 일반 전화 계층보다 XML 계층을 먼저 거치도록 라우팅했다.
  • 벨 울림, 수화기·스피커 볼륨, 수화기/스피커 즉시 전환, 마이크 음소거와 그 표시등은 로컬에 남아, 외부 통화 인텔리전스가 엔드포인트의 물리적 제어 표면을 지우지 않음을 보여주었다.

버튼은 업무 의미가 아니라 번호를 보고했다

미디어 게이트웨이 제어 프로토콜은 하나의 강한 아키텍처 선택에서 출발했다. 통화 제어 인텔리전스는 게이트웨이 바깥에 존재한다. 흔히 콜 에이전트라고 불리는 미디어 게이트웨이 컨트롤러는 게이트웨이에게 어떤 신호를 생성할지, 어떤 이벤트를 보고할지 지시했다. 기본 아날로그 라인 패키지는 일상적인 오디오 연결과 신호 처리를 지원할 수 있었다. 그러나 업무용 전화기는 훨씬 복잡한 표면을 지녔다. 보류, 전환, 재전화, 회의, 메시지 표시등, 프로그래밍 가능 키, LCD, 소프트키, 스피커, 음소거 제어가 그것이다.

RFC 3149는 MGCP에 세 가지 패키지 계열을 추가했다. Feature Key 패키지는 비-DTMF 키와 그 표시등 및 레이블을 기술했다. Business Phone 패키지는 강제 오프훅, 강제 온훅, 비프 신호를 제공했다. Display XML 패키지는 콜 에이전트와 화면 사이의 작은 인터페이스를 담았다.

기능 키 이벤트는 의도적으로 낮은 수준이었다. 전화기는 1번 키가 눌렸다고 말할 수 있었다. 1번 키를 보류, 전환, 라인 어피어런스 또는 다른 것으로 만드는 프로그래밍은 콜 에이전트가 보유했다. 다른 모델은 보류를 23번 키에 매핑하거나 그 키를 아예 노출하지 않을 수도 있었다. 따라서 같은 물리적 동작이 회선 상에서 보편적인 업무 의미를 갖지 않았다.

이 분리는 증거 측면에서 중요하다. 유효한 알림은 엔드포인트가 요청된 이벤트 집합 하에서 번호가 매겨진 키를 보고했다는 사실만 증명한다. “사용자가 보류를 눌렀다”고 말하려면 그 시점에 활성화된 매핑이 필요하다. “통화가 보류되었다”고 말하려면 콜 에이전트의 결정, 요청된 신호, 신호 전환, 관측 가능한 미디어 결과가 필요하다.button=hold만 저장하는 대시보드는 이 모든 것을 무단으로 하나로 합쳐버린 것이다.

레이블과 램프는 증거가 아니라 출력이었다

콜 에이전트는 키 상태 신호를 요청해 표시등을 켜거나 끌 수 있었고, 전화기에 적절한 화면이 있으면 키 옆에 자유 형식의 텍스트를 설정할 수 있었다. 이 기능들은 범용 엔드포인트를 응용 프로그램과 함께 기능이 변할 수 있는 업무용 전화기처럼 보이게 만들었다.

그러나 이는 표현과 동작 사이에 이음선을 만들었다. “보류”라는 레이블이 매핑이 바뀐 뒤에도 남아 있을 수 있었다. 신호가 수락되었지만 의도한 통화 기능이 실패한 상태에서 램프가 켜져 있을 수 있었다. 키가 정확히 보고하는 동안 사용자는 다른 레이블을 읽거나 옆의 물리적 제어를 누를 수도 있었다. 렌더링은 자체 성공 기준을 가진 동작이다.

RFC 3149는 최소한의 저수준 이벤트와 신호 집합을 추구했다. 과도하거나 중복되는 트래픽을 피하려고 명시적으로 노력했다. 누름이라는 사실만 관심 있는 콜 에이전트는 누름과 해제 보고를 둘 다 필요로 하지 않았다. 이러한 절약은 좁은 회선 인터페이스를 보존했다. 동시에 프로토콜 기록이 인간 상호작용의 완전한 설명은 아니라는 뜻이기도 했다. 디바운스, 물리적 배치, 로컬 타이밍, 사용자가 본 것은 다른 관측을 필요로 했다.

따라서 올바른 영수증은 병합하지 않고 결합한다. 전화기 모델, 활성 키 맵, 보고된 번호, 요청 및 알림 트랜잭션, 레이블과 표시등 상태, 콜 에이전트 분기, 신호 결과, 미디어 결과, 사용자에게 보이는 상태가 그것이다.

화면은 또 하나의 엔드포인트가 되었다

화면은 전화기의 신호 기계에 얹힌 장식이 아니었다. RFC 3149는 화면 상태가 신호 상태와 비동기일 수 있다고 명시했고, 따라서 화면에 별도의 MGCP 엔드포인트 이름, 즉 전화기 엔드포인트에disp/를 접두한 이름을 가질 것을 기대했다.

예시가 이를 잘 보여준다. 통화가 도착해 벨이 울리는 동안 화면은 그 통화를 즉시 음성사서함으로 우회하는 옵션을 제공한다. 옵션을 선택하면 XML 포스트가 발생하고 벨 울림 타임아웃을 취소할 수 있다. 여러 시계가 공존한다. 화면은 옵션을 표시하고 있을 수 있고, 사용자는 선택할 수 있고, 이벤트는 콜 에이전트에 도달할 수 있고, 타임아웃은 취소될 수 있고, 신호는 바뀔 수 있고, 상대방은 우회를 경험할 수 있다. 이 전체 사슬을 증명하는 영수증은 하나도 없다.

XML 패키지는 콜 에이전트가 데크와 카드를 지정하고 치환 값을 공급하고 입력이나 선택을 받을 수 있게 했다. 카드에는 텍스트, 목록, 입력 상자, 타이머, 내비게이션이 담길 수 있었다. 어떤 키가 화면 스크립트와 일반 전화 동작을 둘 다 담당할 때, XML 계층이 그 키를 먼저 보았다. 그 계층은 키를 소비하거나 전화 계층에 넘겼다.

디스패치의 우선순위가 현실에 대한 권위는 아니었다. 스크립트가 한 자릿수를 소비했다는 것은 로컬 라우팅 선택을 증명할 뿐이다. 화면이 의도한 카드를 렌더링했는지, 포스트된 값이 올바른 컨트롤러에 도달했는지, 신호가 뒤따랐는지는 증명하지 않는다. 별도의 엔드포인트는 비동기 상태를 주소 지정 가능하게 만들었을 뿐, 그 상태를 자동으로 일관되게 만들지는 않았다.

제조사와 모델이 전수 탐색을 대신했다

콜 에이전트는 전화기가 어떤 키와 화면 기능을 제공하는지 알아야 했다. RFC는 전수 탐색이 가능하다고 보았지만 더 단순한 실험적 매개변수 X-UA를 선택했다. 이는 제조사와 모델을 고유하게 식별하는 문자열을 요구했다. 컨트롤러는 그 식별자로 기능 프로필을 선택할 수 있었다.

이는 하드웨어 증명이 아니라 경제적인 메타데이터였다. 제조사/모델 문자열은 지원되지 않아 무시될 수 있고, 펌웨어 대비 낡을 수 있고, 잘못 구성되었거나 불완전한 프로필에 매핑될 수 있었다. 물리적 키보드, 화면 크기, 표시등 배선, 동작하는 오디오 하드웨어를 증명하지 못했다.

X 접두사는 호환성 경계를 표시했다. 실험적 매개변수를 지원하지 못하는 게이트웨이는 전체 상호작용을 거부하기보다 이를 무시하는 것이 기대되었다. 응답이 없다는 것은 기본 전화 배치가 아니라 불확실성을 의미했다. 견고한 컨트롤러는 기능을 발명하는 대신 한정된 폴백을 필요로 했다.

증거 사다리는 반환된 문자열, 펌웨어, 인벤토리 식별을 기능 프로필 버전과 실제 표면에 대한 관측과 나란히 둔다. 모델 분류는 동작을 선택할 수 있으나, 실행 중인 하드웨어가 이의를 제기할 수 있다.

사용자의 손은 즉각적 권한을 유지했다

4절은 이 메모에서 가장 선명한 선을 긋는다. 벨 울림, 수화기와 스피커 볼륨은 로컬로 구현되어야 했다. 스피커폰이 활성 상태일 때 사용자는 콜 에이전트와의 어떠한 상호작용 없이도 수화기를 들어 전환한 뒤 다시 스피커 모드로 돌아갈 수 있어야 했다. 마이크 음소거 버튼과 그 선택적 표시등도 로컬이어야 했다.

이는 외부 인텔리전스 모델과 모순되지 않았다. 그 모델의 한계를 규정한 것이다. 콜 에이전트는 그 의미가 통화 응용에 속하는 기능을 해석했다. 엔드포인트는 물리적 사용자가 즉각적이고 기기에 묶인 제어를 필요로 하는 동작을 유지했다. 아키텍처는 의미를 중앙화하면서 일부 실행을 가장자리에 남겼다.

RFC가 밝히지 않은 동기를 채워 넣고 싶은 유혹이 있다. 지연, 페일오버, 프라이버시, 안전 등이 그것이다. 이는 그럴듯한 설계 이점일 수 있으나, 문서는 측정치나 완전한 복원력 이론을 보고하지 않는다. 뒷받침할 수 있는 주장은 더 좁다. 이 기능들은 로컬에 할당되었고, 수화기/스피커 전환은 컨트롤러를 거치지 않는다는 점이 명시적으로 요구되었다.

로컬 제어조차 계층화된 증거를 필요로 했다. 음소거 버튼 누름은 음소거 상태가 아니고, 램프는 오디오 억제가 아니며, 로컬에서 바뀐 오디오 경로는 상대방이 의도한 음원을 들었다는 증명이 아니다. 물리적 입력, 로컬 상태, 표시기, 미디어 결과는 여전히 별개다.

원격 명령도 여전히 로컬 저항을 만났다

Business Phone 패키지는 스피커폰을 강제로 오프훅하거나 온훅하거나 비프음을 재생할 수 있었다. 이 신호들은 컴퓨터에서 선택한 번호로 통화를 시작하는 것을 포함한 응용 통합을 지원했다. 그러나 명세는 사용자가 수화기를 내려 강제 오프훅을 무효화할 수 있다고 밝혔다.

이 세부 사항은 단순한 컨트롤러 서사를 막는다. 원격 요청이 곧 최종 상태는 아니었다. 게이트웨이가 신호를 해석하고 물리적 하드웨어가 변했으며, 사용자는 로컬 대응 수단을 유지했다. 회선 명령, 게이트웨이 수락, 후크 상태, 통화 설정, 사용자 동작은 서로 다른 시계에 속했다.

보안 언어에도 절제가 필요한 지점이다. RFC 3149는 기본 MGCP 외에 새로운 고려사항을 도입하지 않았다고 밝혔다. 이는 원격 XML, 키 매핑, 후크 신호가 본질적으로 안전하다는 뜻이 아니었다. 인증, 권한 부여, 무결성, 기밀성은 기본 프로토콜과 배포에 의존했다. 비밀번호 모드 입력은 화면에서 문자를 가렸을 뿐, 암호화 전송이나 콜 에이전트의 안전한 처리를 보증하지 않았다.

IESG 노트는 또 하나의 경계를 부과했다. RFC 3149는 Megaco/H.248이 표준 트랙에서 같은 문제 영역을 차지하는 동안 사용 중인 비-IETF 프로토콜을 문서화했다. 이 상태 사실이 운영 설계를 지우거나 보편적 마이그레이션을 증명하거나, 이후 명세가 전화기가 실제로 한 일을 다시 쓰게 하지는 않는다.

인텔리전스는 결과에 따라 나뉘었다

지속되는 교훈은 로컬이 항상 낫거나 중앙 제어가 실패했다는 것이 아니다. RFC 3149는 서로 다른 권한을 서로 다른 장소에 배분했다. 중앙 소프트웨어는 변화하는 업무 의미를 쥐었다. 어떤 번호의 키가 어떤 서비스를 뜻하는지, 어떤 레이블을 표시할지, 어떤 인터페이스 카드를 렌더링할지, 선택이 통화 로직에 어떻게 영향을 주는지가 그것이다. 전화기는 오디오 하드웨어와 음소거에 대한 즉각적 조작을 유지했다.

이 분할은 모든 업무 서비스를 모든 기기에 하드코딩할 필요를 줄이면서, 컨트롤러 왕복을 기다리지 않는 작은 물리적 제어 표면을 보존했다. 동시에 의존성을 만들었다. 중앙 할당 기능이 실패하는 동안 전화기는 로컬 음소거를 계속할 수 있었다. 콜 에이전트 업그레이드는 하드웨어를 바꾸지 않고 키 의미를 바꿀 수 있었다. 화면 데크는 신호에서 어긋날 수 있었다.

실행 코드 증거가 이 모호성을 해소한다. 콜 에이전트가 1번 키가 보류라고 말하지만 미디어가 계속 흐른다면, 그 기능은 주장된 결과를 만들지 않은 것이다. 음소거 램프가 켜져 있는데 오디오가 마이크에서 나간다면, 로컬 표현과 미디어 현실이 어긋난 것이다. 벨이 계속 울리는 가운데disp/가 우회를 표시한다면, 화면과 신호는 아키텍처가 가능하다고 명시한 지점에서 정확히 어긋난 것이다.

물리적 버튼은 작은 헌법적 경계다. 중앙 인텔리전스는 이름을 부여하고 통화를 조율할 수 있다. 그러나 엔드포인트가 자신에게 보고한다는 이유만으로 모든 동작의 보관권을 얻지는 못한다.

출처