요약

  • RFC 3487은 큐잉, 선점, 예약 용량 또는 세션 지속 시간을 직접 지정하는 방식이 아니라, 명명된 정책을 호출하는 SIP 우선순위 표시를 요구했다.
  • 하나의 레이블이 게이트웨이, 회선교환망, 프록시 또는 수신 측마다 서로 다른 동작을 유발할 수 있었다. 인식, 승인, 접속 허가, 미디어 용량, 완료된 통신은 여전히 별개의 기록으로 남았다.

우선순위 레이블은 명령처럼 보인다. 요청에 붙이면 네트워크가 그 요청을 밀어주어야 한다. 그러나 RFC 3487은 정반대의 공학적 사실에서 출발했다. 발신자는 어떤 자원이 부족해질지, 어떤 기관이 그 자원을 통제하는지, 어떤 동작이 서비스를 보전할지 알 수 없었다. 그리하여 2003년 2월, 이 문서는 프로토콜 기능을 정의하지 않으면서 비상 대비 통신의 요구사항을 명시했다. 그 가장 오래 지속된 선택은 미니 정책 프로그램이 아니라 정책의 이름으로 만든 것이었다.

이 구분이 중요했던 이유는 하나의 SIP 세션이 성격이 다른 기계들을 가로지르기 때문이다. RFC 3487은 적어도 다섯 가지 자원 표면을 세었다. 게이트웨이는 회선교환망으로 들어가는 제한된 수의 트렁크를 가졌다. 회선교환망은 자체적으로 희소한 경로와 GETS나 MLPP 같은 기존 체계를 갖고 있었다. IP 네트워크는 신호와 미디어를 전달했지만 품질은 SIP 외부의 메커니즘으로 통제했다. 수신 시스템은 세션을 다 소진할 수 있었다. 프록시는 접속 대역폭이 남아 있는 상태에서도 연산 능력이 고갈될 수 있었다. 하나의 메커니즘이 다섯 표면을 모두 지배한다는 요구사항은 없었다.

각 표면은 혼잡에 서로 다르게 응답할 수 있었다. 게이트웨이는 시도를 큐에 넣거나 대체 통신사를 찾을 수 있었다. 회선 시스템은 규제와 현지 절차가 허용하는 곳에서 기존 통화를 선점할 수 있었다. 수신 측은 높은 우선순위의 통화가 대기 중이라는 경고를 운영자에게 보내거나 현재 세션을 대체할 수 있었다. 프록시는 한 클래스를 먼저 처리하거나, 요청을 거부하거나, 선별된 작업을 조용히 폐기할 수 있었다. 레이블은 이러한 결정들의 소유권을 지우지 않았다.

토폴로지는 또한 제어 평면을 제한했다. RFC 3487은 IP 단대단, IP-회선망, 회선망-IP, 회선망-IP-회선망 경로를 검토했다. 브리지된 통화에서 발신 측은 상대 회선망이 어떤 신호 프로토콜을 쓰는지 모를 수 있었다. SIP 게이트웨이는 포킹이 IP 기기로 끝나는지, 회선 단말로 끝나는지, 둘 다인지조차 알지 못할 수 있었다. 따라서 동일한 요청이 어떤 경로를 타는지에 따라 서로 다른 통제 가능한 자원 집합과 마주칠 수 있었다.

주변 IP 네트워크 역시 정도의 차이가 있었다. 기관 소유 네트워크는 라우터와 예약 동작을 수정할 수 있었다. 투명 네트워크는 유효한 패킷을 단순 전달했다. SIP/RTP 투명 네트워크는 통화는 허용하면서 RSVP나 0이 아닌 DSCP 값을 차단할 수 있었다. 제한적 SIP 네트워크는 새 헤더나 메서드를 거부할 수 있었다. 유용한 우선순위 표시는 모든 라우터나 운영자가 하나의 설계에 합류했다고 가정하는 대신, 이런 환경들을 견뎌야 했다.

여기서 RFC 3487은 중심선을 그었다. 값 기반 호출(call-by-value)은 상세한 처리를 요청 안에 담았을 것이다. 이 시도를 큐에 넣고, 선점 금지, 세션은 3분으로 제한하는 식이다. 참조 기반 호출(call-by-reference)은 그 대신 명명된 정책의 레이블을 제공한다. 제약된 자원을 소유한 요소가 그 정책을 로컬에서 해석한다. 한 등급에 배정되는 용량의 비율조차 전송 신호 밖에 있었다.

이 선택은 관찰할 수 없는 자원을 자신이 관리한다고 주장하는 원격 애플리케이션을 막았다. 우선순위 시도가 드물고 용량이 크다면, 다른 통화를 끊는 것보다 잠시 대기하는 편이 피해가 적을 수 있다. 다른 곳에서는 선점이 필요할 수 있다. 제3의 요소는 레이블을 단지 요청을 폐기하지 않을 이유로만 다룰 수 있다. RFC 3487은 하나의 표시가 한 곳에서는 선점을, 다른 곳에서는 변경된 큐잉을 일으키도록 명시적으로 허용했다.

요구사항들은 이 얇은 신호를 중심으로 이식성을 세웠다. 네임스페이스는 서로 다른 국가 체계와 사설 체계를 지원해야 했다. 표시는 특정 운영자 아키텍처나 목적지 주소에 의존해서는 안 되었다. 대역 내 SIP에서 유효해야 하고, 메서드 간에 작동해야 했으며, 양쪽 회선망이 동일 체계를 사용할 때 회선망-IP-회선망 변환을 통해 정보를 보존해야 했다. 체계가 다를 때는 일부 정보가 손실될 수 있음을 RFC는 인정했다.

미지원 네트워크는 또 하나의 경계를 드러냈다. 바람직한 기본값은 일반 요청보다 나쁘지 않은 처리였다. 그러나 로컬 네트워크는 어떤 통화도 허용하기 전에 적절한 마킹과 인증을 요구할 수 있었다. 디스커버리는 명시적 목록으로, 혹은 시도 후 미지원 응답을 받는 방식으로, 터미널에 요소가 인식하는 네임스페이스를 알려줄 수 있었다. 인식은 용량이 아니었고, 용량은 승인이 아니었다.

신원만으로 우선순위가 정해지지 않았다. 같은 승인된 사람이 일반 통화와 우선순위 통화를 모두 걸 수 있었고, 요청되는 등급은 특정 비상 상황에서 사람의 판단에 달려 있었다. RFC 3487은 처리를 인증된 신원, 사용자 선택, 정책의 곱으로 기술했다. 발신자 이름은 상시적 권리가 아니었고, 선택된 레이블이 사용자가 그것을 쓸 자격이 있다는 증명도 아니었다.

그 결과 보안은 마무리 문단 이상을 차지했다. 우선순위 남용은 복구를 위해 예약된 자원 그 자체를 소모하고 정당한 사용자에게서 빼앗을 수 있었다. 인증은 미인가 시도에 소모되는 패킷, 연산, 희소 회선 시간을 제한할 만큼 이르게 이루어져야 했다. 노드는 전이적 신뢰에 의존하는 대신 승인을 독립적으로 검증해야 했다. 리플레이, 복사-붙여넣기, 다운그레이드 공격이 모두 명시적으로 다루어졌다.

프라이버시는 이 규율을 더 복잡하게 했다. 빌린 단말이 비상 근무자에게 재사용 가능한 비밀을 노출하도록 강요해서는 안 되었다. 통화가 특별한 처리를 요청했다는 사실 그 자체가 민감한 상황을 드러낼 수 있었다. 라우팅 데이터는 홉별 보호가 필요할 수 있고, 라우팅에 쓰이지 않는 정보는 단대단 보호를 받을 수 있었다. 그리하여 우선순위 표시와 인증 메커니즘은 별개의 설계 대상으로 남았다.

RFC 4412는 뒤이어 이 요구사항들을Resource-Priority와Accept-Resource-PrioritySIP 헤더로 옮겼다. 네임스페이스와 등급 같은 값이 원하는 우선순위를 표현했고, OPTIONS 응답은 수용되는 값을 광고할 수 있었다. 후속 표준은 여전히 수용이 충분한 자원이나 성공을 의미하지 않는다고 경고했다. 이후 문서들은 네임스페이스를 등록하고, 우선순위를 라우팅 및 접속 허가 시스템과 연결하며, 더 강한 승인 증거를 추가했다. 그들은 사슬을 연장했을 뿐, 접지 않았다.

역사적 재구성은 이 사슬을 순서대로 보존해야 한다. 행위자, 인증된 신원, 선택된 네임스페이스와 값, SIP 메서드, 토폴로지를 기록하라. 요청을 해석한 모든 게이트웨이, 프록시, 수신 시스템, 회선 도메인을 그들의 로컬 정책 버전과 함께 식별하라. 그런 다음 라우팅, 큐잉, 접속 허가, 선점, 미디어 할당, 최종 인간적 결과를 별개의 사건으로 보존하라.

Lu Heng이 상징적 권위와 실행 가능한 통제를 분리해야 한다고 고집한 것은 이 설계와 맞닿아 있다. 레이블이 보이고 이식 가능했던 것은 바로 얇았기 때문이다. 운영상의 결정은 희소 자원을 소유한 요소에 남았다. RFC 3487은 균일한 처리를 약속하지 않았다. 성격이 다른 시스템들에게 각자의 책임 있는 규칙을 참고하도록 요청하는 공통 방식을 만들었고, 그 답이 모든 경계에서 바뀔 수 있음을 보여주는 증거 궤적을 남겼다.

출처