요약

  • RFC 1157은agent-addr를 트랩을 생성한 주체의 네트워크 주소로 정의했으나, RFC 1298은 IPX 기반 SNMP에 대해 이 필드에0.0.0.0을 넣도록 규정했다.
  • 발신지는 전송 계층이 제공하는 정보에서 추론해야 했다. IPX 네트워크, 노드, 소켓이 PDU 외부의 귀속 컨텍스트를 이루었다.
  • SNMP는 Packet Type 4를 사용했고, 요청에는 소켓 36879, 트랩에는 소켓 36880을 썼다. 이 값들은 중계 역할을 나타낼 뿐, 장치의 지속적 신원을 나타내지 않았다.
  • 546옥텟 권고값, 12옥텟으로 이루어진 주소, 그리고 IPX라는 선택은 매핑을 작동 가능하게 만들었지만, 애플리케이션 수신, 실제 사건, 보안, 범용 상호운용성을 증명하지는 않았다.

빈 필드는 명령이지 무지의 고백이 아니었다

SNMP의 초기 정의에서 RFC 1157은 Trap-PDU 안에서agent-addr에 정확한 의미를 부여했다. 트랩을 생성한 주체의 네트워크 주소였다. 따라서 읽는 사람은 메시지 자체에서 발신지에 대한 단서를 기대할 수 있었다.

RFC 1298은 IPX 전송에 대해 이 방식을 바꿨다. 필드에는0.0.0.0이 들어가야 했다. 그 자리에 임시로 만든 IPX 주소를 넣어서도, 0들을 발신지를 아는 사람이 없다는 증거로 해석해서도 안 되었다. 매핑은 SNMP 관리자가 전송 계층이 제공하는 정보에서 발신지를 추론하도록 요구했다.

이렇게 해서 메시지와 봉투는 서로 보완하는 두 조각이 되었다. PDU는 SNMP 구조를 유지했지만, 발신지 단서는 관리자에게 패킷을 운반해 온 패킷에 속했다. PDU의 옥텟만 보관하는 것은 주소 지정을 위해 규격이 택한 봉투를 버리고 편지지만 남기는 일이었다.

이 선택이 봉투에 무한한 권한을 준 것은 아니었다. 봉투는 관찰된 전송 기준으로 교환이 어디서 왔는지를 나타냈다. 그러나 장치의 지속적 신원도, 장치를 통제하는 조직도, 운영하는 사람도 보증하지 않았다. 기술적 귀속과 인증은 별개의 질문으로 남았다.

응답을 약속하지 않는 데이터그램

1992년 3월에 발표된 RFC 1298은 SNMP를 Internet Packet Exchange에 매핑하는 Informational 문서였으며, 인터넷 표준이 아니었다. IPX는 연결 없고, 응답 확인도 없는 데이터그램 서비스로 기술되었다. IPX는 연결을 수립하지 않고 메시지를 전달할 수 있었고, 그 자체로 수신 애플리케이션이 메시지를 받았거나 처리했다는 증거를 만들어 내지 않았다.

SNMP 메시지는 IPX의 Packet Type 4, 즉 Packet Exchange Packet으로 흘러갔다. 이 값은 서비스 안에서 패킷의 예상 성격을 식별했다. 그러나 발신지 뒤에 어떤 지속적 장치가 있는지 말해 주지 않았고, ASN.1 내용이 이해될 것이라고 보장하지도 않았다.

트랩의 경우 발신, 전송, 수신, 행동의 구분이 중요하다. 에이전트는 PDU를 만들 수 있고, 스택은 패킷을 네트워크에 넘길 수 있으며, 인터페이스는 그것을 관찰할 수 있고, 관리자는 파싱할 수 있으며, 그다음 애플리케이션이 경보를 열 수 있다. 이 동사들 중 어느 것도 자동으로 다음을 포함하지 않는다.

트랩 자체는 관리 조건을 보고한다. 수신되고 디코딩되더라도, 그것은 선언에 불과하다. 인터페이스가 다운되었거나, 전원이 끊겼거나, 서비스가 영향을 받았다고 결론 내리려면 그 현상에 대한 독립적인 관찰이 필요하다. RFC 1298은 경보의 물질적 진실이 아니라 운반을 정의했다.

두 소켓이 역할을 나누었다

매핑은 목적지를 구분했다. GetRequest, GetNextRequest, SetRequest는 IPX 소켓 36879, 즉0x900F로 보내졌다. Trap 메시지는 소켓 36880, 즉0x9010으로 보내졌다. 숫자 하나가 요청되는 교환의 수신 지점과 알림의 수신 지점을 가르고 있었다.

이 구분은 두 개의 신원을 만들지 않았다. 소켓 36880은 이 매핑 안에서 "트랩 전용 목적지"를 뜻했지, "사건을 겪은 장치"를 뜻하지 않았다. 소켓 36879 역시 읽거나 변경할 권한을 가진 관리자를 인증하지 않았다. 이것들은 다수의 참여자가 재사용할 수 있는 중계 역할이었다.

응답은 대칭적이지만 컨텍스트에 의존하는 규칙을 따랐다. 에이전트는 대응하는 요청이 도착한 IPX 주소와 소켓으로 GetResponse를 보냈다. 그러므로 돌아가는 경로는 요청 봉투에서 관찰된 소스 튜플에 달려 있었다. 요청 식별자, 수신 메시지, 원래 튜플이 없다면, 어떤 주소로 보낸 응답도 그것이 올바른 작업에 대한 응답임을 증명하지 못했다. 그리고 돌아오는 응답을 관찰하지 않았다면, 계산된 목적지는 어떤 전달도 증명하지 못했다.

이 규칙들은 전송 엔드포인트가 자신의 동사를 유지해야 하는 이유를 보여 준다. 하나의 엔드포인트는 요청의 목적지, 그 요청의 관찰된 발신지, 응답의 계산된 목적지, 트랩의 발신지일 수 있다. 이 네 위치에 같은 단어 "에이전트"를 쓰면 각 기록의 방향과 기능이 사라진다.

12옥텟은 엔드포인트를 이루었지 사람을 이루지 않았다

RFC 1298은IpxTransportAddress를 12옥텟으로 정의했다. 처음 4옥텟은 네트워크 번호를, 다음 6옥텟은 노드의 물리 주소를, 마지막 2옥텟은 소켓을 담았다. 이 값은 성격이 다른 세 좌표를 하나의 옥텟 열에 모았다.

이 구성은 IPX 주소 지정 모델에 부응한 것이었다. 범용 식별자가 아니었다. 노드는 컨텍스트를 바꿀 수 있고, 주소는 재사용될 수 있으며, 소켓은 소유자보다 서비스를 기술한다. 튜플을 재고 기록과 연결하려면 시점이 있는 해석이 필요하다. 어떤 관찰이, 어떤 테이블이, 어떤 유효 기간이, 어떤 신뢰도로 이 엔드포인트를 한 장치에 연결했는가?

증거 사슬은 이 해석을 따로 보관해야 한다. 12옥텟은 패킷에 속한다. 지속적 이름은 디렉터리나 재고에 속한다. 신원 증명은 보안 메커니즘에 속한다. 이들을 한 열에 합치면, 어떤 귀속이 네트워크에서 왔는지, 관례에서 왔는지, 실제 인증에서 왔는지 알 수 없게 된다.

agent-addr=0.0.0.0사례는 이 규율을 특히 잘 드러낸다. 0은 PDU 안에서 규정된 값이고, IPX 튜플은 전송에 대한 관찰이며, 사람이 읽을 수 있는 이름은 그 뒤의 결론이다. 셋 중 어느 것도 다른 것을 대체하지 않는다.

546옥텟은 모든 경로를 측정하지 않았다

RFC 1298은 구현이 546옥텟까지의 SNMP 메시지를 수용할 것을 권고했다. 이 크기는 단편화하지 않는 라우터를 통과할 수 있어야 했다. 더 큰 메시지는 경로를 따라 최대 크기가 알려져 있는 경우, 라우터와 그 아래 데이터 링크를 포함해서만 합리적이었다.

따라서 이 숫자는 보수적인 상호운용성 규칙이었지, 범용적인 측정 결과가 아니었다. 547옥텟 패킷이 정의상 불가능한 것은 아니었다. 다만 경로에 대해 더 많은 지식이 필요했다. 반대로 546옥텟 적합성은 특정 패킷이 자신의 관리자에게 도달했다는 증명이 아니었다. 경로의 한계, 장애, 정책은 별도로 관찰되어야 했다.

전송의 선택은 단편화 기능과 도달 가능한 집단의 위치도 바꿔 놓았다. RFC 1270은 네트워크 및 전송 서비스가 서로 다른 최대 크기와 동작을 제공한다고 설명했다. 네이티브 전송은 비(非)인터넷 환경에서 의미를 가질 수 있었지만, 통신할 수 있는 관리자와 에이전트의 수를 줄일 수도 있었다.

로컬 편의에는 상호운용성 비용이 따랐다

RFC 1270은 UDP를 당시 정규화된 유일한 SNMP 전송이자 완전한 적합성에 필요한 전송으로 제시했다. UDP/IP를 가장 넓은 범위와 수용력에 연결하면서도, 네이티브 전송이 다른 곳에서 적절할 수 있음을 부정하지 않았다. RFC 1298의 편집자 주는 상호운용성을 위해 IPX보다 UDP/IP를 강하게 권장했다.

이 선호가 IPX 매핑을 비논리적으로 만든 것은 아니다. RFC 1298은 정확히 네이티브 데이터그램 서비스 위에 관리 프로토콜이 존재하기 위해 필요한 일을 했다. 패킷 타입, 소켓, 응답 규칙, 크기, 주소 형태, 트랩의 특별 처리가 그것이다. 그러나 각각의 적응은 교환을 가장 넓은 SNMP 공동체가 공유하는 기반에서 멀어지게 했다.

이 딜레마는 참된 전송과 거짓된 전송을 대립시킨 것이 아니었다. 주어진 환경에서의 편의와 더 많은 구현과 대화할 수 있는 능력을 대립시킨 것이다. 보편성은 공통 관례에서 나왔고, 로컬 조정은 네이티브 통합에서 나왔다.

마지막으로, RFC 1298과 RFC 1270은 보안 문제를 다루지 않았다. 소스 튜플은 귀속에 필요하다고 해서 인증의 증거가 되지 않는다. 권한 부여, 무결성, 기밀성, 위장 저항성 중 어느 것도 입증하지 못한다. 정확히 주소 지정된 메시지는 언제든 거짓 주장을 실을 수 있고, 이 문서들이 확립하지 않은 행위자에게서 올 수도 있다.

출처와 증거의 한계

이 글은RFC 1157 —A Simple Network Management Protocol (SNMP),RFC 1270 —SNMP Communications Services,RFC 1298 —SNMP over IPX에 근거한다. 이 문서들은agent-addr의 초기 의미, 전송을 둘러싼 논쟁, IPX 매핑의 규칙을 확립한다. 그러나 실제 장치, 인증된 신원, 수신된 트랩, 운영상 사건, 응답, 복구 조치, 현재의 배포 중 어느 것도 확립하지 않는다.