요약

  • RFC 1219는 서브넷 비트를 주소의 최상위 쪽에, 호스트 비트를 최하위 쪽에 두고 그 사이에 성장 예비 비트를 남겨두었다. 서로 대칭(거울상)인 서브넷 번호 매기기 덕분에 어느 쪽이든 이미 사용 중인 호스트의 재번호 부여 없이 확장할 수 있었다.
  • 주소의 보존은 상태의 보존보다 폭이 좁았다. 확장을 위해서는 새로운 마스크, 서로 다른 마스크를 운반할 수 있는 도메인 내부 라우팅 프로토콜, 그리고 서브넷을 할당하는 당국과 호스트를 할당하는 당국 사이의 조율이 필요할 수 있었다.
  • 혼합된 마스크는 비대칭적으로 실패했다. 어떤 낡은 호스트는 로컬 트래픽을 게이트웨이로 보낼 수 있었고, 다른 호스트는 원격 목적지에 대해 ARP를 수행했지만 아무 응답도 받지 못할 수 있었다. 변하지 않은 주소가 분열된 포워딩 현실을 가려줄 수 있었다.

번호는 옳은 채로 남으면서도 그 경계는 움직일 수 있었다

RFC 1219,On the Assignment of Subnet Numbers는 1991년 4월 P. F. Tsuchiya의 이름으로 발표되었다.RFC Editor 목록은 이를 Informational로 기록한다. 문서 자체는 이 절차를 인터넷 표준이 아니라 지역적이고 재량적인 사안으로 규정하며,IETF Datatracker는 문서 기록을 보존할 뿐 배포의 증거를 제공하지 않는다.

문제는 서브네팅을 발명하는 방법이 아니었다.RFC 950은 이미 호스트가 인터넷 주소를 네트워크, 서브넷, 호스트 부분으로 나누게 하는 주소 마스크를 기술한 바 있었다. RFC 950은 인접한 서브넷 비트를 로컬 주소의 최상위 쪽에 두도록 권고했다. 서브넷 수와 서브넷당 호스트 수가 모두 불확실한 네트워크에 그것은 실용적인 질문을 남겼다. 사용되지 않은 주소 공간은 어느 쪽에 두어야 하는가?

예비 비트를 너무 일찍 서브넷 번호에 주면 바쁜 서브넷은 호스트 용량이 고갈될 수 있다. 호스트 번호에 주면 성장하는 조직은 서브넷이 부족해질 수 있다. 전통적인 계산 방식에서는 두 주장이 같은 방향으로 나아간다. RFC 1219는 승자를 예측하려 하지 않고 기하구조를 바꾸었다.

호스트 번호는 평소와 같은 방향, 즉 최하위 쪽에서 성장을 이어갔다. 서브넷 번호는 거울상으로 셈해져 1비트가 최상위 쪽에서 진행되었다. 호스트 비트(h비트)와 서브넷 비트(s비트) 사이에는 값이 0인 성장 비트(g비트)가 남아 있었다. 공동의 성장 예비분이었다.

어떤 서브넷에 더 많은 호스트가 필요하면 호스트 쪽에서 g비트 하나를 소비했다. 네트워크에 서브넷 하나가 더 필요하면 루트 할당이 서브넷 쪽에서 g비트를 소비했다. 이미 할당된 호스트 주소는 바뀔 필요가 없었다. 같은 비트열이 어느 쪽 확장이든 살아남을 수 있었다.

그것이 바로 정확한 성과였다. 비트열은 살아남았다. 그것을 해석하는 규칙은 그렇지 않을 수 있었다.

마스크는 당시의 합의를 담고 있었다

서브넷 마스크는 주소를 둘러싼 장식이 아니다. 마스크는 호스트에게 어떤 목적지가 직접 도달 가능한지, 어떤 목적지는 게이트웨이를 통해야 하는지를 알려준다. g비트가 s비트나 h비트가 되면, 모든 주소가 동일하게 유지되더라도 올바른 마스크는 바뀔 수 있었다.

RFC 1219는 두 방향을 모두 명시한다. 서브넷을 추가하면 서브넷 부분이 확장되어 기존 서브넷이 1비트가 하나 더 있는 마스크를 채택해야 할 수 있다. 호스트를 추가하면 성장 비트가 호스트 필드의 일부로 바뀌어 해당 서브넷의 모든 호스트가 마스크를 짧게 해야 할 수 있다. 이 전환의 절감은 재번호 부여의 회피이지, 재구성의 회피가 아니었다.

이 구분은 RFC 1219가 인용한 게이트웨이 요구사항 맥락인RFC 1009에서 더 선명해진다. RFC 1009는 서브네팅된 네트워크에서 여러 마스크를 허용하고 게이트웨이 인터페이스별로 서로 다른 마스크를 설정 가능하도록 요구했다. 그에 따라 RFC 1219는 여러 마스크를 처리할 수 있는 도메인 내부 라우팅 프로토콜을 요구했다.

그러나 "처리할 수 있다"는 것은 아키텍처상의 전제조건이지, 운영 결과가 아니다. 라우터는 그 기능을 지원하면서도 낡은 마스크를 운반할 수 있다. 데이터베이스는 의도된 할당을 담고 있으면서 인터페이스는 다른 마스크를 유지할 수 있다. 라우팅 업데이트가 발신되었는데 모든 피어가 이를 설치하지 않을 수도 있다. 주소 필드만으로는 이러한 상태들을 구분할 수 없다.

두 당국이 마지막 하나의 비트에서 만났다

공유 예비분은 또한 거버넌스 경계를 만들었다. RFC 1219는 서브넷 할당을 담당하는 루트 주소 당국(RootAA)을 명명한다. 각 서브넷 내부에서는 서브넷 주소 당국이 호스트 번호를 할당한다. 대부분의 성장에서 두 당국은 반대쪽 끝의 g비트를 소비하기 때문에 독립적으로 행동할 수 있다.

독립성은 마지막 g비트에서 끝난다. 루트가 그것을 새 서브넷에 쓰면, 서브넷 당국은 더 이상 로컬 성장을 위해 그것을 쓸 수 없다. 서브넷이 그것을 호스트에 쓰면, 루트는 그것으로 또 하나의 서브넷을 만들 수 없다. 그러므로 알고리즘은 희소성이 분할 불가능해지는 순간의 조율을 요구한다.

비트는 작다. 그러나 그 통제 결정은 작지 않다. 한 당국은 서브넷에 대한 총수요를 보고, 다른 당국은 호스트에 대한 지역적 압력을 본다. 각자는 자신의 대장 안에서는 옳을 수 있으나, 버전이나 시점이 어긋나면 서로 양립하지 않는 결정을 내릴 수 있다. 그 결과 발생하는 충돌은 "기존 주소는 모두 변하지 않았다"고 지적하는 것으로 수습되지 않는다.

또한 이 RFC는 실제로 어떤 조직이 RootAA와 서브넷-AA 운영을 기술된 그대로 구현했는지 증명하지 않는다. 이것들은 절차 속의 역할이다. 실제 조율의 증거가 되려면 날짜가 기록된 할당 기록, 행위자, 승인, 전파된 구성, 그리고 결과 네트워크의 관측이 필요하다.

낡은 마스크는 서로 반대 방향으로 실패했다

RFC 1219가 특히 유용한 이유는 부분적 배포를 두 가지 서로 다른 실패까지 추적해 보여주기 때문이다.

경계가 움직인 뒤 어떤 호스트가 1비트가 너무 많은 마스크를 유지한다고 가정해 보자. 그 호스트는 실제 로컬 서브넷의 일부를 원격으로 취급하고 패킷을 게이트웨이로 보낸다. 게이트웨이는 패킷을 같은 서브넷으로 되돌려 보낼 수 있고, ICMP Redirect를 보낼 수도 있다. 연결성은 우회로를 통해 살아남을 수 있다. 리다이렉트는 가능한 교정 신호이지, 발신지가 이를 수용했거나 경로가 무해했다는 증거가 아니다.

이번에는 1비트가 너무 적은 마스크를 유지하는 호스트를 가정해 보자. 그 호스트는 실제로 원격인 목적지를 로컬로 취급한다. 패킷을 게이트웨이에 주는 대신 로컬 링크에서 ARP를 수행한다. 원격 호스트는 그 로컬 브로드캐스트에 응답할 수 없다. 다른 경로가 시도되지 않으며, 통신은 그냥 끊길 수 있다. 서로 일치하지 않는 마스크는 서브넷 지정 브로드캐스트 동작 역시 혼란에 빠뜨릴 수 있다.

이 비대칭성은 단순한 마이그레이션 대시보드를 무력화한다. 두 대의 기계가 옛 IP 주소를 그대로 유지할 수 있다. 한 대는 게이트웨이를 통해 비효율적으로 피어에 도달하고, 다른 한 대는 피어에 전혀 도달하지 못한다. "변경된 주소: 0"이라는 수치는 성공을 보고하는 동안 포워딩은 최소 세 가지 상태로 갈라져 있다. 직접 로컬 전달, 게이트웨이 우회, 그리고 응답 없는 로컬 해석.

RFC의 예제들은 그 상태 모델의 결과를 보여줄 뿐이다. 특정 네트워크가 이 전환을 실제로 수행했는지, 리다이렉트가 그것을 복구했는지, 종단 간 애플리케이션이 계속 사용 가능했는지는 확립하지 않는다. 알고리즘, 적용된 구성, 수렴된 라우팅, 패킷 도달성, 사용자 결과는 서로 별개의 기록이다.

보존 주장에는 분모 전체가 필요하다

RFC 1219는 이 기법이 발표 당시 널리 알려지지도, 더 널리 구현되지도 않았다고 말한다. 이는 당시의 한정이지, 이후 몇 년간의 채택을 측정한 것이 아니다. 이 패킷에는 그 설계를 배포 역사로 격상시킬 운영자 보고서, 소프트웨어 릴리스, 트래픽 캡처 또는 종단 연구가 포함되어 있지 않다.

보안 역시 마찬가지로 한정된다. 문서는 보안 문제를 논하지 않는다고 명시한다. 할당 변경에 대한 인증, 마지막 g비트에서의 권한 부여, 마스크 배포의 무결성, 기밀성, 안전한 롤백에 대한 어떤 지지도 제공하지 않는다.

따라서 이 문서의 영구적 기여는 하나의 구분이다. 시스템은 그 식별자에 의미를 부여하는 통제 상태를 바꾸면서도 가시적 식별자를 보존할 수 있다. 주소는 자산 목록이 보는 것이고, 마스크는 호스트가 믿는 것이며, 경로는 네트워크가 수렴한 것이고, 도달성은 패킷이 증명하는 것이고, 결과는 애플리케이션이나 사용자가 경험하는 것이다.

RFC 1219는 이 다섯 가지 중 첫 번째 항목을 보존하기 쉽게 만들었다. 나머지 네 가지를 그것에 녹여 넣지는 않았다.

출처