요약

  • RFC 1157은 오류 조건을 통과한 후, SetRequest 할당을 메시지 기준으로 동시에 설정된 것처럼 실행하도록 요구합니다. 응답은 특정 사람, 영구 저장, 값이 발동할 수 있는 작용의 완료를 증명하지 않습니다.
  • RFC 1905는 검증과 커밋을 구분합니다. 검증 오류는 할당을 적용하지 않으며,commitFailed와undoFailed는 커밋 또는 롤백 중에 발생한 실패를 드러냅니다. 따라서 모든 오류가 '아무것도 바뀌지 않았다'를 의미하지는 않습니다.
  • Marshall T. Rose는 RFC 1157의 저자가 아닙니다. 저자는 J. D. Case, M. S. Fedor, M. L. Schoffstall, J. R. Davin입니다. Rose의 이름은 IETF SNMP Extensions Working Group 의장으로서 감사의 말에 등장하며, 초기 SMI와 MIB 문서의 공동 저술에 참여했습니다.

심야 유지보수 창구에서 관리자가 한 메시지 안에 라우팅 제어, 타이머, 관리 상태 변경을 요청한다고 상상해 봅시다. 에이전트는 변수 바인딩과 함께noError를 돌려줍니다. 운영 로그는 이 장면을 '운영자가 변경을 완료했다'라는 문구로 요약할 수 있습니다. 그러나 이 문구는 프로토콜 처리, 신원, 승인, 지속성, 결과를 하나로 묶어 버리며, 응답이 실제 관찰한 것은 그중 일부일 뿐입니다.

RFC 1157은 더 좁은 범위를 따릅니다. 에이전트는 먼저 이름의 존재, 값의 수용 가능성, 응답 크기, 기타 오류 조건을 검사합니다. 어느 것도 해당하지 않으면 각 변수에 대응하는 값을 할당합니다. 그리고 할당이 메시지를 기준으로 동시에 설정된 것처럼 적용되어야 한다고 명시합니다. 이 속성은 요청 내부의 쓰기 사이의 관계를 규율할 뿐, 운영 환경에 대한 일반적 판단은 내리지 않습니다.

그렇기 때문에noError는 콘솔 앞에 앉아 있는 직원의 이름을 담고 있지 않습니다. 티켓 시스템이 유지보수를 승인했다는 뜻도, 설정이 재시작 후에도 남을 것이라는 뜻도, 네트워크가 실제로 원하는 동작에 도달했다는 뜻도 아닙니다. 에이전트는 자신이 관리하는 변수 공간에 대해 응답할 뿐입니다.

초기 SNMP 모델은 이 한계의 이유를 설명해 줍니다. RFC 1157은 관리를 변수의 검사와 수정으로 구성하지, 열린 형태의 직접 명령 집합으로 구성하지 않습니다. 명령과 유사한 효과는 나중에 작용을 발동하는 매개변수를 설정함으로써 표현될 수 있고, 텍스트에는 재시작 전 타이머를 설정한다는 개념이 등장합니다. 이때 매개변수의 쓰기와 장치의 작용은 모니터링 관점에서 서로 다른 두 순간이 됩니다. 첫 번째는 성공하더라도 두 번째는 대기 중이거나 실패하거나 다른 하위 시스템에서만 나타날 수 있습니다.

아이디어의 귀속도 같은 정확성을 요구합니다. RFC 1157에 서명한 이름은 J. D. Case, M. S. Fedor, M. L. Schoffstall, J. R. Davin입니다. Rose는 그중에 없습니다. 그는 감사의 말 단락에 언급되어 있으며, The Wollongong Group 소속으로 IETF SNMP Extensions 그룹의 의장이었습니다. 한편 관리 정보의 구조와 정의에 관한 RFC 1155는 Rose와 Keith McCloghrie가 썼고, MIB 문서들은 각자의 저작 경계를 유지하고 있습니다. IETF 기록은 Rose의 네트워크 관리 분야 방대한 업적을 남기고, 그의 경력은 SNMP 그룹 의장직과 IETF 네트워크 관리 영역 디렉터 역할을 언급합니다. 이러한 역할을 인정하는 일이, 그가 서명하지 않은 문서에 서명을 부여하는 것과 같을 필요는 없습니다.

RFC 1905는 후속 SetRequest의 경계를 더 명확히 검증 가능하게 만듭니다. 어떤 수정도 하기 전에, 에이전트는 접근 가능성, 쓰기 가능 여부, 유형, 길이, 인코딩, 값, 일관성, 생성 조건, 자원 등을 검사합니다. 검증이 실패하면 적절한 오류를 반환하고 요청의 어떤 할당도 적용하지 않습니다. 여기서는 요청이 커밋 단계에 들어가지 않았다고 확신할 수 있습니다.

검증이 성공한 뒤 에이전트는 할당을 동시에 적용된 것처럼 적용하려 시도합니다. 그러나 RFC 1905는 이 단계의 실패에 이름을 붙입니다.commitFailed는 어떤 할당이 완료되지 않았음을 뜻하며, 에이전트는 나머지 수정을 되돌리려 해야 합니다.undoFailed는 이전 상태로의 완전한 복원을 보장할 수 없음을 뜻합니다. 전자는 상태를 다시 읽어야 하고, 후자는 독립적인 모니터링이 확인할 때까지 상태를 잠재적으로 혼재된 것으로 취급하도록 요구합니다. 모든 오류를 '영향 없는 거절'로 바꾸면 이 중요한 경고가 지워집니다.

RFC 1905는 또한 같은 변수를 다른 값으로 반복하는 경우를 경고합니다. 그 동작은 구현에 따라 다릅니다. 하나의 목록이 클라이언트에게 상충하는 요청에 대한 보호적 순서를 보장하지는 않습니다.

신원과 권한 위임은 인접하지만 독립적인 증거 표면에 놓여 있습니다. RFC 3411은 메시지 처리, 보안, 접근 제어를 구분하고, 안전한 SET를 SNMPv3의 근본 진화 과제로 꼽습니다. RFC 3414의 USM은 프로토콜 주체의 신원을 인증하고 메시지를 보호할 수 있습니다. RFC 3415의 VACM은 보안 모델, 이름, 수준, 컨텍스트, 뷰 유형, 변수 이름을 평가합니다. 이 요소들은 프로토콜 정책이 접근을 허용한 기술적 주체를 입증하는 데 도움을 줍니다. 그러나 그 주체를 사용한 사람이 누구인지, 변경 권한을 준 조직적 승인이 무엇인지를 자동으로 정의하지는 않습니다.

따라서 견고한 운영 기록은 서로 연결 가능하되 분리된 증표를 유지합니다. 요청과 변수 순서, 응답, 오류 상태와 그 색인, 인증된 주체, 접근 결정, 즉시 읽기 검증, 이후의 지속성 테스트, 발동된 각 하위 시스템의 결과가 그것입니다. SetRequest의 의미는, 그것이 보지 못한 사실에 대한 증언을 요구하지 않을 때 비로소 강력하게 유지됩니다.

Sources