요약

  • RFC 3337은 하나의 PPP 세션이 서로 다른 선점 클래스를 위해 별도의 AAL2 CPS 채널 식별자(CID)를 사용하도록 했다. SSSAR의 64바이트 프래그먼트 덕분에 높은 우선순위 클래스의 프래그먼트를 큰 낮은 우선순위 패킷의 프래그먼트 사이에 끼워 넣을 수 있었다.
  • 클래스 식별자는 스케줄러를 선택하거나 ATM 가상 회선을 프로비저닝하지 않았다. 따라서 분류, 클래스-CID 매핑, 큐 서비스, 용량, 수신 측 재조립, 애플리케이션 결과에는 각각 별도의 근거가 필요했으며, 문서에 나온 100ms와 공정 스케줄러 예시는 조건부이지 보편적 보장이 아니었다.

라벨은 권한을 행사하지 않고 의도를 서술할 수 있었다

품질 서비스(QoS) 시스템은 흔히 트래픽에 이름을 붙이는 것에서 시작한다. 분류기가 한 패킷은 음성에, 다른 패킷은 일반 데이터에 속한다고 판정한다. 그 이름은 프로토콜 상태로 표현되기 때문에 중요해 보인다. 그러나 라벨은 송신기에 대한 물리적 권한이 없다. 누군가 그것을 읽고, 큐 중에서 선택하고, 바이트를 회선에 실어야 한다.

RFC 3337은 이 구분을 이례적으로 선명하게 드러냈다. 이 문서는 PPP over AAL2를 확장해 하나의 PPP 세션이 여러 AAL2 공통부 서브레이어 채널 식별자(CID)에 걸치도록 했다. 각 선점 클래스는 서로 다른 CID를 사용했다. 이 분리는 CPS 스케줄러에 선택할 구체적 대상을 주었다.

그러나 AAL2 CPS 명세는 그 선택을 어떻게 해야 하는지 규정하지 않았다. RFC 3337은 우선순위, 공정, 가중 공정 스케줄링을 서로 다른 가능성으로 열거했다. 방법은 애플리케이션의 실시간 요구사항에 따라 달랐다. 따라서 올바른 클래스-CID 매핑은 스케줄링 결정의 입력이지 결정 그 자체가 아니었다.

큰 패킷 하나가 느린 회선을 약 100밀리초 동안 점유할 수 있었다

문서의 동기 부여 산술은 단순했다. 128kbit/s ATM 가상 회선에서 1,500바이트 패킷은 대략 100밀리초 동안 링크를 점유한다. 송신기가 새로 도착한 음성 패킷을 보내기 전에 그 패킷을 끝내야 한다면, 직렬화 지연만으로도 대화형 교환이 감당할 수 없을 정도가 될 수 있다.

큰 패킷의 전송이 시작된 뒤에 우선순위를 높여도 그 밀리초는 돌아오지 않는다. 시스템에는 더 작은 선점 단위가 필요하다. RFC 3337은 PPP over AAL2가 이미 요구하던 서비스 특정 세그먼테이션·재조립(SSSAR) 기능을 재사용했다. SSSAR은 PPP 패킷을 64바이트 프래그먼트로 나누었다. 그러면 높은 우선순위 프래그먼트를 낮은 우선순위 트래픽의 프래그먼트 사이에 배치할 수 있었다.

100ms라는 수치는 하나의 패킷 크기와 하나의 회선 속도에서 도출된 예시였다. 더 빠른 회선은 이를 줄이고, 다른 프레이밍과 스케줄링은 경계를 바꾼다. 그 역사적 가치는 벤치마크가 아니다. 이는 직렬화가 제어 지점임을 보여 주며, 송신기가 프래그먼트 경계에서 중단할 수 없다면 클래스 라벨은 이를 바꿀 수 없다는 점을 드러낸다.

스케줄러가 클래스를 보려면 클래스에 자체 CID가 필요했다

RFC 3337은 서로 다른 선점 클래스의 프래그먼트가 서로 다른 CID를 사용하도록 요구했다. 각 PPP 세션에는 선점 가능한 클래스 수만큼 최소한의 CID가 필요했다. 분류기는 패킷이 세그먼테이션에 들어갈 때 작동했고, 그 출력은 결과 프래그먼트에 대해 SSSAR 인스턴스와 CID를 선택했다.

표준은 하나의 분류기를 강제하지 않았다. 저비트레이트 서비스 아키텍처에서 가능한 방법들을 언급했을 뿐이다. 음성 예시는 패킷 크기를 사용했다. 작은 패킷은 실시간으로, 큰 패킷은 데이터로 취급했다. 그 경우조차 임계값은 애플리케이션과 전송 속도에 따라 달랐다.

크기는 편의상의 신호이지 의미적 증명이 아니다. 작은 제어 패킷이 실시간이 아닐 수도 있고, 큰 미디어 복구 객체가 긴급할 수도 있다. 낡은 규칙은 문법대로 완벽하게 분류하면서 현재 서비스 의도에 위배될 수 있다. 따라서 근거는 분류기 버전, 입력 필드, 규칙 매칭, 출력 클래스, 그리고 이를 승인한 정책 권한에서 시작된다.

스케줄러가 빠져 있던 동사였다

프래그먼트가 별도의 CID 큐에 놓이면, 스케줄러가 라벨의 시간상 의미를 결정한다. 엄격한 우선순위는 한 클래스의 대기를 최소화하면서 다른 클래스를 굶길 수 있다. 공정 스케줄링은 교대를 보장하지만 가장 촘촘한 지연 목표를 지키지 않을 수 있다. 가중 공정 스케줄링은 비율을 배분하지만 여전히 버스트가 원치 않는 큐를 만들 수 있다.

RFC 3337의 예시는 두 개의 클래스와 공정 스케줄러를 가정했다. 그 조건에서 실시간 프래그먼트는 전송 전에 최대 하나의 비실시간 프래그먼트를 기다리게 된다. 이는 유용한 상한이지만, 지연이 0이 아니고 종단 간 음성 보장도 아니다. 이 상한은 64바이트 프래그먼트 크기, 두 개의 서로 다른 CID의 존재, 선택된 공정 스케줄링 동작에 의존한다.

어떤 요소를 바꾸든 결론은 바뀐다. 큐를 더 추가하거나, 다른 양자(quantum)를 쓰거나, 두 클래스를 하나의 CID에 매핑하거나, 공정성을 더 큰 배치 경계에서 구현하면 대기 상한을 다시 도출해야 한다. 지연 주장에서는 스케줄러 알고리즘과 그 활성 매개변수가 클래스 옆에 나란히 있어야 한다.

용량은 별도의 관문이었다

음성 예시에는 요약에서 종종 생략되는 조건이 있었다. 낮은 지연과 손실을 보장하려면 ATM 가상 회선이 VBRnrt나 VBRrt 같은 적절한 실시간 트래픽 클래스로 프로비저닝되어야 했다. 클래스 확장은 프래그먼트의 순서를 정할 수 있었지만 서비스 용량을 만들어 낼 수는 없었다.

과부하 상태의 회선을 마주한 스케줄러는 어떤 약속을 깨뜨릴지만 고를 수 있다. 접속 승인 제어, 트래픽 계약, 셰이핑, 폴리싱, 다운스트림 경합이 선호 클래스에 충분한 자원이 있는지를 결정한다. 패킷이 로컬 CID 큐를 신속히 벗어나도 다음 경계에서 더 큰 큐를 만날 수 있다.

이는 “우선순위”의 세 가지 다른 의미를 분리한다. 분류는 패킷이 어떻게 다뤄져야 하는지를 말한다. 스케줄링은 어떤 적격 프래그먼트가 다음에 서비스되는지를 말한다. 프로비저닝은 그 처리가 의도한 결과를 내기에 충분한 서비스가 존재하는지를 말한다. 셋을 혼동하면 설정이 성능 근거처럼 보이게 만든다.

수신 측 성공은 또 하나의 체인이었다

SSSAR 세그먼테이션은 기본 PPP/AAL2 규칙을 따랐다. UUI 상태가 중간 및 마지막 프래그먼트를 표시했고, 수신기가 PPP 패킷을 재조립했다. 스케줄러 근거는 프래그먼트가 전송 기회를 얻었다는 것만 증명한다. 모든 프래그먼트가 도착했고, CRC가 통과했고, PPP가 패킷을 수용했으며, 애플리케이션이 기한 전에 사용했다는 것은 증명하지 않는다.

유용한 근거 체인은 분류기 입력과 출력, 클래스-CID 매핑, 프래그먼트와 UUI 순서, CID별 큐 도착과 출발, 스케줄러 선택, ATM 트래픽 계약, 셀 전송, SSSAR 결과, CRC, LCP 상태, 애플리케이션 결과를 함께 보존한다. 각 전이에는 다른 주체와 시계가 있다.

음성 품질에는 지터 버퍼, 코덱, 재생 기한, 손실 은폐가 더해진다. 국소 직렬화 대기의 상한이 필요 조건이면서 여전히 불충분할 수 있다. 최종 근거를 제공하는 것은 클래스 라벨이 아니라 종단이다.

인접 RFC들은 채택을 증명하지 않고 비교의 틀을 제공한다

RFC 3336은 기본 PPP over AAL2 매핑을 제공했다. RFC 2689는 저비트레이트 링크에서 통합 서비스를 위한 더 넓은 아키텍처를 서술했다. RFC 2686은 멀티링크 PPP에 대한 멀티클래스 확장을 정의했고, RFC 1990은 멀티링크 기반을 제공했다. RFC 2508은 IP/UDP/RTP 헤더 압축, 즉 실시간 오버헤드 감소의 또 다른 부분을 다루었다.

RFC 2474와 RFC 3246은 차등화 서비스 맥락을 제공한다. 필드나 홉별 동작(PHB)은 네트워크의 다른 곳에서 처리 방식을 표현하거나 구현할 수 있다. 그러나 이들은 RFC 3337의 클래스-CID 매핑을 증명하지 않으며, EF 마킹은 AAL2 스케줄러의 근거가 될 수 없다. RFC 2119는 표준이 사용하는 요구사항 단어를 설명할 뿐, 배포를 설명하지 않는다.

어떤 문서도 통신사가 이 확장을 활성화했고, 규격에 맞는 분류기를 선택했고, 특정 스케줄러를 설정했고, 충분한 용량을 프로비저닝했고, 측정된 지연을 전달했다는 것을 증명하지 않는다. 표준은 이용 가능한 메커니즘과 의무를 보여 준다. 운영 역사에는 설정과 측정이 필요하다.

영구적인 교훈은 실행 주체를 찾아내는 것이다

RFC 3337은 트래픽을 CID로 분리함으로써 가치 있는 일을 했다. 높은 우선순위 프래그먼트가 큰 패킷의 조각 사이를 지나갈 수 있는 주소 지정 가능한 스케줄링 지점을 만든 것이다. 실수는 설명을 라벨에서 멈추는 것이다.

모든 서비스 약속에는 명사와 동사가 들어 있다. “음성 클래스”는 명사다. 분류, 매핑, 세그먼테이션, 스케줄링, 승인, 전송, 재조립, 재생은 서로 다른 구성 요소가 수행하는 동사들이다. 지연 보장은 그 동사들이 명시되고, 자원이 배정되고, 관측될 때만 존재한다.

따라서 역사적 질문은 패킷이 클래스를 실었는지 여부가 아니다. 그 클래스를 어떤 메커니즘이 읽었는지, 그 메커니즘이 그 순간에 어떤 권한을 행사했는지, 그리고 수신기에서 어떤 근거가 남았는지이다. RFC 3337은 차등화된 처리를 가능하게 했다. 동시에 가능성이 증명이 아니라는 이유를 보여 줄 만큼의 재량을 남겼다.

출처