요약
- RFC 1046은 수용된 데이터그램이 노드별 대기 상한을 충족할 수 있도록 제한된 저지연 큐를 제안했다. 넘치는 패킷은 폐기되었고, 클래스의 링크 점유율이 제한되어 신속 트래픽이 다른 모든 클래스를 배제할 수 없도록 했다.
- 경합 상황에서 여러 Type-of-Service 요청은 누적 권리가 아니라 대안이었다. 한 패킷은 한 큐 처리를 받을 수 있었으며, 폴백은 재정렬, 가변적인 편도 지연, 다른 신뢰성 조건을 감수하는 대가로 수용 가능성을 높였다.
RFC 1046에서 직관에 반하는 대상은 Type-of-Service 비트가 아니다. 빈 버퍼 슬롯이다. 노드는 저지연 큐가 커지지 않도록 거부하는 한에서만 더 짧은 대기를 약속할 수 있었다. 허용된 모든 슬롯이 차면 다음으로 표시된 데이터그램은 더 많은 메모리를 받을 자격이 없었다. 폐기되었다.
1988년 2월 W. Prue와 J. Postel이 발행한 이 메모는 스스로를 아이디어 논문이라고 불렀다. IPv4 헤더에 이미 실려 있던 서비스 표시를 IP 링크가 어떻게 활용할 수 있는지 탐색했다. 범용 배포 사례를 보고하지 않았고, 백분율을 확정하지도 않았으며, 인터넷 전역의 서비스 계약을 정의하지도 않았다. 그 가치는 바람직한 라벨의 비용을 평소보다 드물게 가시적으로 만들어 보인 데 있다.
헤더는 라우터가 구현하기 전에 트레이드오프를 명명했다
RFC 791은 IPv4에 8비트 Type of Service 옥텟을 부여했다. 3비트는 우선순위를 표현했다. 나머지 비트는 낮은 지연, 높은 처리량, 높은 신뢰성에 대한 선호를 나타냈다. 명세는 주된 선택을 삼자 간의 트레이드오프로 서술했다. 한 속성을 개선하면 다른 속성이 나빠질 수 있고, 드물게도 셋 중 두 개 이상을 요청해서는 안 된다고 했다.
이 필드는 추상적인 서술이었다. 그 서술이 패킷의 운명을 바꾸려면 게이트웨이에는 여전히 알고리즘, 큐, 버퍼 한도, 전송 기회가 필요했다. RFC 1046은 바로 이 간극에서 시작했다. 이 파라미터를 어떻게 다룰지는 아직 정해진 바가 없다고 관찰한 뒤, 답이 중요해지는 조건을 가정했다. 수요가 현재 처리 능력을 초과하는 상황이다. 유의미한 큐가 형성되지 않는다면 특별한 큐잉은 불필요하다.
이 조건은 흔한 역사적 오류를 막아 준다. 서비스 차별화는 라벨만으로 만들어지지 않는다. 여러 패킷이 유한한 버퍼와 링크 시간을 두고 경쟁하고, 노드가 각 클래스가 어떤 비용을 부담할지 결정해야 할 때 비로소 의미를 갖는다.
더 짧은 대기에는 더 작은 공간이 필요했다
RFC 1046은 저지연 전용 데이터그램이 부하 상황에서도 노드를 신속히 통과하길 원했다. 노드별 최대 보장 지연(Maximum Guaranteed Delay, MGD)을 목표로 명명했으며, 데이터그램이 인터넷을 성공적으로 통과하는 것을 조건으로 했다. 이 조건이 핵심이다. 이 제안은 수용된 패킷의 대기를 바인딩했을 뿐, 표시된 모든 패킷이 수용되고 전달되리라고 약속하지 않았다.
산수는 단순했다. 저지연 큐의 크기가N, 클래스에 할당된 링크 자원의 비율이P, 초당 데이터그램 수로 표현한 링크 속도가R이라면 다음과 같다.
Max Delay = N / (P × R)
목표를 고정하면 더 느린 링크나 더 작은 할당은 더 작은 큐를 요구했다. 전파 지연이 큰 링크는 가용한 큐 예산을 더 줄일 수 있었다. 따라서 이 제안의 보장은 구성 값과 물리적 조건 안에 있었다. 큐 깊이, 서비스 점유율, 링크 속도. 패킷 헤더에는 그런 숫자가 하나도 없었다.
메모는 처음에 저지연 큐를 다른 클래스보다 낮은 비율로 서비스해 과도한 자원을 소모하지 못하도록 권고했다. 큐는 대기 시간을 보호할 만큼 작게 유지되었다. 도착량이 한도를 넘으면 노드는 초과분을 폐기했다. Source Quench는 그렇게 작은 큐에는 너무 느리다고 판단되어 기본 설계에서 이 클래스에 쓰지 않기로 했다.
이것이 “빠르다”는 매력적인 단어가 가린 협상이다. 저지연 클래스는 희소 자원을 모두 받지 못했다. 수용되는 패킷이 덜 기다리도록 처리량과 혼잡 상황의 신뢰성을 희생했다.
신뢰성은 더 긴 대기를 샀다
고신뢰성 큐는 이 선택을 뒤집었다. 정상보다 길었고, Source Quench를 더 일찍 보냈으며, 큐가 가득 찰 때까지 폐기를 미뤘다. 버퍼를 늘리면 일시적 혼잡에서 패킷이 살아남을 확률이 올라가지만 잠재적 대기 시간도 함께 올라갔다. 메모는 이것이 혼잡으로 인한 신뢰성 문제만 다룰 수 있다고 경고했다. 잡음이 많은 링크나 전방 오류 수정(FEC) 필요성은 다른 메커니즘의 영역이었다.
고처리량은 예시에서 가장 큰 서비스 비율과 더 큰 큐를 사용하며, 노드에서 더 큰 평균 지연을 감수했다. 버스트를 함께 유지하자는 제안은 큐가 알 수 없는 상위 계층 프로토콜에 대한 사실을 전제하므로 명시적으로 잠정적인 것이었다.
세 큐는 패킷을 좋음, 더 좋음, 최고로 나누지 않았다. 서로 다른 실패 양상을 할당했다. 저지연은 조기 손실을 감수했다. 고신뢰성은 대기를 감수했다. 고처리량은 전송 기회를 소모하고 더 큰 버퍼를 감수했다. 애플리케이션이 어떤 피해를 감당할 수 있는지 선택하기 전까지 “더 나은”에는 의미가 없었다.
세 번의 요청이 세 개의 권리를 만들지는 않았다
가장 중요한 규칙은 큐 상세보다 앞에 나온다. 자원이 경합될 때 여러 서비스 클래스에 대한 요청은 AND 요청이 아니라 OR 요청이었다. 저지연과 고처리량은 경합이 없을 때만 동시에 얻을 수 있었다.
메모 후반에서 구현상의 결과가 구체적으로 드러난다. 한 번에 한 클래스 큐만 데이터그램을 서비스할 수 있었다. 제안된 선택 순서는 저지연, 고처리량, 고신뢰성 순이었다. 저지연/고신뢰성 패킷이 저지연 큐가 가득 찬 것을 발견하면 노드는 그 패킷을 신뢰성 큐에 넣을 수 있었다. 이 폴백은 시스템에 진입할 또 한 번의 기회를 주었지만, 대우 자체가 달라졌다.
패킷 블록에 대해서는 큐 선택이 달라지면 데이터가 재정렬되고 편도 전송 시간의 변동이 커질 수 있었다. 원래 비트만 보는 수신자는 어느 큐가 각 데이터그램을 수용했는지, 얼마나 기다렸는지, 어느 패킷이 폐기되었는지 재구성할 수 없었다. 요청은 단말 간에 전파되었지만, 결정은 국지적이며 발생마다 새로 이루어졌다.
우선순위는 끼어들 수 있었지만 영원하지는 않았다
세 가지 서비스 선호는 여덟 개의 우선순위 단계 옆에 놓여 있었다. RFC 1046은 더 높은 우선순위의 도착 패킷이 선택된 클래스 큐 내에서 더 낮은 우선순위 데이터그램 앞으로 이동하도록 제안했다. 그러나 무한 기아 상태도 막으려 했다. 대기 중인 데이터그램이 추월될 때마다 그 국지적 “좌절” 값이 올라가, 더 늦게 도착한 같은 신규 패킷이 더 이상 추월할 수 없는 수준에 도달했다.
이 조정은 노드에 국지적이며 다음 홉에서 사라졌다. 패킷의 공시된 우선순위는 바뀌지 않았다. 높은 우선순위의 도착 패킷도 가득 찬 큐에서 오래된 패킷을 밀어낼 수 없었다. 최신 도착 패킷은 우선순위와 무관하게 폐기되었다.
이 두 번째 스케줄링 차원은 단순한 MGD 서사를 흔들었다. 메모의 예시에서, 우선순위가 높지 않은 저지연 패킷은 우선순위 큐잉이 없을 때 계산된 지연의 1배에서 28배까지 경험할 수 있었다. “저지연 요청됨”만 보고하는 시스템은 그 상한이 여전히 의미 있는지를 결정한 경합 상태를 누락한다.
제안은 자신의 헌법적 질문을 열어 두었다
RFC 1046은 예시적 점유율, 즉 저지연 17퍼센트, 고처리량 50퍼센트, 고신뢰성 33퍼센트를 제시하고, 클래스를 할당치 근처에 유지하기 위한 비례 “칫(chit)” 메커니즘을 제안했다. 그러나 그 숫자를 절대화하지 않았다. 이슈 섹션은 누가 클래스 백분율을 정할지, 어떤 MGD를 약속할지, 매력적인 클래스와 높은 우선순위를 어떻게 제한할지, 라우팅 복잡성이 감내할 만한지, 시뮬레이션이 무엇을 밝힐지 묻는다.
계측이 그 답의 일부였다. 노드는 패킷이 여러 서비스를 요청할 때 실제로 어떤 서비스가 사용되었는지 세고, 관찰된 손실과 사용량이 어긋나면 할당을 조정해야 했다. 비트가 아니라 관리자가 불균형을 해석하고 정책을 바꾸어야 했다.
이 미완의 작업 속에 메모의 역사적 정직함이 남아 있다. 큐잉은 단지 세 비트의 수학적 사상이 아니다. 손실, 대기, 용량을 사용자들 사이에 배분한다. 누군가는 파라미터를 소유하고, 결과를 관찰하고, 잘못된 선택을 되돌릴 수 있어야 한다.
이후 표준은 역사적 주장을 좁혔다
RFC 1349는 이후 TOS 메커니즘이 순수히 권고적이며 서비스 보장을 요청하는 데 적합하지 않다고 밝혔다. minimize-delay 값은 네트워크에 이용 가능한 최저 지연 경로를 선호하도록 청하는 것이었고, 사용자가 낮다고 판단할 지연을 약속하지 않았다. 1998년RFC 2474와RFC 2475는 옛 TOS 해석을 DS 필드로 대체하고, 코드포인트, 홉별 동작, 서비스, 트래픽 컨디셔닝, 그 동작을 구현하는 메커니즘을 분리했다.
이 후속 문서들은 RFC 1046이 배포되었거나 DiffServ가 그 정확한 큐를 물려받았음을 증명하지 않는다. 구분만 더 명시적으로 만든다. 휴대 가능한 표시는 국지적 포워딩 메커니즘이나 프로비저닝된 서비스와 같은 대상이 아니다.
Source Quench 관련 참조에도 확고한 시점 경계가 필요하다.RFC 1016은 혼잡 피드백을 받은 호스트가 느려지겠다는 당대의 아이디어를 기술했다. 이후RFC 6633은 호스트가 Source Quench를 보내지 않도록, 전송 계층이 무시하도록, RFC 1016 접근이 구현되지 않도록 요구했다. RFC 1046은 1988년 설계 공간을 기록한 것이며, 현재의 Source Quench 지침이 아니다.
출처와 근거의 한계
RFC 791은 원래의 TOS 필드와 트레이드오프를 제공한다. RFC 1046은 아이디어 논문의 지위, MGD 모델, 큐 수식, 클래스 규칙, OR 의미론, 우선순위 처리, 미해결 질문을 제공한다. RFC 1016과 RFC 6633은 역사적 Source Quench 맥락의 경계를 정한다. RFC 1349는 이후의 권고적 한계를 제공한다. RFC 2474와 RFC 2475는 이후 DS 필드 아키텍처를 확립한다.
이 출처들은 특정 네트워크가 이 알고리즘을 구현했다는 사실, 운영자가 사용한 큐 깊이나 백분율, 어떤 패킷이라도 요청한 클래스를 받았다는 사실, 특정 도메인에서 현재의 DSCP 표시가 무엇을 의미하는지를 보여 주지 않는다. 표시는 요청의 증거이다. 큐 수용, 스케줄링, 폐기, 전달, 애플리케이션 결과는 여전히 별개의 사실이다.
회원 브리핑
프로필 심층 컨텍스트
올바른 멤버십 등급으로 로그인하면 전체 브리핑과 출처 노트를 볼 수 있습니다.
Strategic Circle 전용
Strategic Circle
모든 독자에게 공개됩니다. 가입 후 로그인하면 프로필 브리핑를 열람할 수 있습니다.
Strategic Circle 가입하기Leadership Alliance 전용
Leadership Alliance
자격을 갖춘 IP 자산 소유자 및 운영진을 위한 콘텐츠입니다. 로그인하면 Leadership Alliance 브리핑을 열람할 수 있습니다.
Leadership Alliance 가입하기





