요약
draft-ietf-netconf-yang-notifications-versioning-14는 구독자가 YANG-Push 구독을 모듈 리비전 또는 호환 가능한 시맨틱 버전으로 제한할 수 있게 하고,subscription-started및subscription-modified알림에 모듈 컨텍스트를 추가한다.- 리비전, 선택적 버전 및
yang-library-content-id는 게시자의 스키마 컨텍스트를 드러낸다. 이들은 대기 중인 레코드, 수신 측 디코더, 저장 매핑 또는 다운스트림 모델이 손실이나 의미 드리프트 없이 같은 경계를 넘었음을 증명하지는 않는다. - Daniel Kade는 정확한 알림을 이전 및 새 모듈 세트 지문, 마지막/첫 번째로 디코딩된 레코드, 큐 및 재생 처리, 디코더 테스트, 다운스트림 보류, 책임 소재가 분명한 릴리스 결정과 연결하는 텔레메트리 스키마 인계 기록을 제안한다. 이는 IETF 요구사항이 아니다.
이미 전송 중이던 기록
인터페이스 상태를 전달하는 구성된 YANG-Push 구독을 상상해 보자. 01:57:42에 게시자는ietf-interfaces의 한 리비전 아래에서 업데이트를 내보낸다. 01:57:43에 업그레이드가 사용 가능한 모듈 세트를 변경한다. 이어서 구독 ID, 필터, 모듈 이름, 리비전, 존재하는 경우 시맨틱 버전, 그리고 다른 YANG 라이브러리 콘텐츠 ID를 담은subscription-modified알림이 온다. 01:57:44에 또 다른 업데이트가 도착한다.
이 순서는 다이어그램 위에서는 질서 정연해 보인다. 실제 수집기에는 여러 큐가 있을 수 있다. 상태 변경 알림이 제어 프로세스에 도달할 때 첫 번째 업데이트는 여전히 전송 버퍼에서 압축되어 있을 수 있다. 이전 디코더를 사용하는 워커가 두 번째 워커가 새 디코더를 로드한 뒤에 작업을 끝낼 수 있다. 저장 매퍼는 몇 초 늦게 배포될 수 있다. 경보 규칙은 단위, 범위 또는 존재 조건이 바뀌었는데도 같은 필드 이름을 읽을 수 있다.
어느 이벤트가 인계인가?
게시자의 스키마 변경, 알림의eventTime, 수신 측의 도착 시간, 디코더 활성화, 내구성 저장, 다운스트림 자동화의 해제는 서로 다른 이벤트다. 리비전 14는 수신 측에 훨씬 나은 의미 참조를 제공한다. 그러나 이 시계들을 하나의 권위 있는 순간으로 합치지는 않는다.
초안이 해결하는 것
이 초안은 현재 구독 워크플로의 구체적인 약점을 다룬다. RFC 8641에 따르면, 수신 측은 참조된 모듈의 의미가 변경되었는지 알아내기 위해 구독 상태 변경 알림 후 게시자의ietf-yang-library를 조회해야 할 수 있다. 이 추가 조회는 지연과 컨텍스트 드리프트의 또 다른 기회를 만든다.
제안된ietf-yang-push-revision모듈은 두 가지 유용한 제어를 추가한다. 첫째, 구독자는 모듈을 지정하고 특정 리비전 또는 시맨틱 버전을 요구할 수 있다. 서버가 요청을 지원하지 않으면 RPC 오류를 반환해야 한다. 구성된 구독의 요청 리비전 또는 버전이 더 이상 YANG 라이브러리와 일치하지 않으면 게시자는 알림을 보내면 안 된다.
둘째,subscription-started및subscription-modified는 관련 모듈 목록, 해당 리비전, 선택적 시맨틱 버전, 선택적yang-library-content-id를 담을 수 있다. 수신 측은 상태가 바뀔 때마다 전체 라이브러리를 무작정 다시 조회하지 않고도 변경된 모듈 컨텍스트를 감지할 수 있다. 기능 발견도 이 확장에 대한 지원을 드러낼 수 있다.
이는 의미 있는 개선이다. 구독자는 데이터를 수락하기 전에 받아들일 수 없는 버전을 거부할 수 있다. 수신 측은 스트림에 대해 광고된 스키마를 식별할 수 있다. 운영자는 변경되지 않은 구독 식별자와 변경된 의미 환경을 구별할 수 있다.
이 초안은 수집기의 운영 전환을 증명한다고 주장하지 않는다. 그것이 거버넌스가 보존해야 하는 경계다.
콘텐츠 식별자는 신호이지 이식 가능한 지문이 아니다
YANG 라이브러리 콘텐츠 ID는 서버의 현재 라이브러리 정보를 나타내며 구현별로 다르다. 변경은 해당 서버의 하나 이상의 모듈이 변경되었음을 뜻한다. 따라서 구독에서 선택한 경로보다 더 넓을 수 있다. 수집기가 사용한 정확한 모듈 바이트의 전 세계적으로 비교 가능한 다이제스트로 정의되지는 않는다.
알림의 모듈 목록은 더 집중적이지만, 수신 측에는 여전히 할 일이 있다. 해당 스키마를 보유하고, 임포트, 기능, 편차를 해석하고, 의도한 디코더를 로드하고, 내부 저장 매핑이 변경된 데이터를 어떻게 처리하는지 알아야 한다. 게시자에서 정직한 모듈 식별은 수신 측의 그러한 사실을 보증하지 않는다.
또한 “호환 가능”은 보편적인 결과가 아니다. 전통적인 YANG 리비전은 호환성을 보존할 것으로 기대된다. YANG 시맨틱 버전 관리는 비하위 호환 변경을 명시적으로 표시할 수 있다. 명목상 호환되는 변경조차 한 파서의 버그를 드러내거나, 오래된 매핑과 충돌하거나, 경보의 가정을 바꾸거나, 다운스트림 모델이 조용히 무시하는 노드를 도입할 수 있다.
호환성은 변경에 대해 주장되는 속성이다. 안전한 사용은 특정 소비자와 목적에 대해 관찰된 결과다.
알림은 데이터 플레인을 울타리로 막지 않는다
상태 변경 알림은 어떤 이벤트가 보고되었다는 증거다. 그 자체로 관련 텔레메트리를 운반하는 모든 큐를 가로지르는 트랜잭션 장벽은 아니다.
레코드 A와 B가 이전 스키마 아래에서 생성되었고, 알림 C가 새 리비전을 보고하며, 레코드 D가 새 스키마를 사용한다고 하자. 수신 측은 전송, 처리, 제어 큐가 다르기 때문에 A, C, B, D를 관찰할 수 있다. A, C, D를 관찰하고 나중에 B를 재생할 수도 있다. C를 잃고 나중의 시작 알림에서 새 모듈 컨텍스트를 복구할 수도 있다. C를 올바르게 받았지만 디코더를 활성화하지 못할 수도 있다.
초안의 규범적 작업이 그러한 운영 사례를 모두 해결할 필요는 없다. 프로토콜 확장을 좁게 유지하는 것은 미덕이다. 실수는 다른 곳에서 발생할 것이다. 대시보드가 변경된 리비전을 보고 “마이그레이션 완료”를 기록하거나, 분석 팀이 알림 타임스탬프 이후의 모든 레코드가 새 의미를 사용한다고 가정하거나, 자동화 소유자가 스키마 인벤터리가 정상으로 표시된다는 이유로 제어를 재개하는 경우다.
그런 결론에는 게시만이 아니라 수신, 순서, 처리, 의존에 관한 증거가 필요하다.
불일치 이후의 침묵에는 여러 의미가 있다
구성된 리비전 또는 버전 제약이 더 이상 일치하지 않을 때 게시자가 알림을 보내서는 안 된다는 규칙은 보호적이다. 게시자가 구독자가 명시한 정책 밖에서 데이터를 계속 스트리밍하는 것을 막는다.
그러나 그 결과로 생기는 침묵은 스스로 설명되지 않는다. 변경 시 구독이 조용한 것은 단순히 변경이 없기 때문일 수 있다. 전송이 실패했을 수 있다. 수집기를 사용할 수 없을 수 있다. 접근 제어가 변경되었을 수 있다. 또는 모듈 제약이 더 이상 충족되지 않아 게시자가 올바르게 알림을 보류하고 있을 수 있다.
모든 침묵을 “안정적인 네트워크”로 해석하는 운영자는 보호를 무력화한다. 모든 침묵을 스키마 실패로 해석하는 운영자는 인시던트를 만들어 낸다. 스키마 인계 기록은 전달이 왜 멈췄는지, 어느 당사자가 그 조건을 관찰했는지, 어떤 증거가 재개를 정당화했는지를 보존해야 한다.
최소 인계 기록
추가 기록은 텔레메트리를 복제하거나 IETF 초안에 배포 시스템이 되라고 요구해서는 안 된다. 서로 다른 시스템이 이미 통제하는 명제들을 연결해야 한다.
- 게시자 신원, 구독 ID, 정확한 XPath 또는 서브트리 선택, 구성된 리비전/버전 제약
- 정확히 획득한 스키마, 임포트, 기능, 편차로 구성된 이전 및 새 모듈 세트 지문. 단, 게시자의 콘텐츠 ID는 별도 증거로 보존
- 인증된 상태 변경 알림의 해시, 게시자 이벤트 시간, 수신 측 수신 시간, 수집기 처리 시간
- 이전 세트 아래에서 성공적으로 디코딩된 마지막 레코드와 새 세트 아래에서 성공적으로 디코딩된 첫 번째 레코드
- 대기, 폐기, 격리 또는 재처리된 구간을 포함한 시퀀스, 재생 및 재동기화 증거
- 디코더 및 저장 매퍼 빌드, 테스트 벡터, 실패, 변경된 노드에 적용된 매핑
- 일시 중지, 재계산 또는 재검증 없이 명시적으로 수용된 경보, 자동화, 보고서, 학습된 모델
- 결정 소유자, 예외, 불확실성, 롤백 대상, 종료가 발생했다는 증거
이전/새 지문은 운영자 산출물이다. 초안의yang-library-content-id로 잘못 표시되어서는 안 된다. 두 값을 모두 유지하면 로컬에서 계산된 다이제스트가 서버가 정의한 식별자를 사칭하는 것을 막을 수 있다.
마지막/첫 번째 레코드에도 신중한 표현이 필요하다. 이는 수집기가 각 세트 아래에서 디코딩했음을 증명할 수 있는 마지막 및 첫 번째 레코드이지, 반드시 게시자가 생성한 마지막 및 첫 번째 레코드는 아니다. 전송 증거가 그 간극을 메울 수 없다면, 수신 기록은 그렇게 말해야 한다.
보안은 해석이 아니라 채널을 보호한다
리비전 14는 새 쓰기 가능 구독 제어를 민감한 것으로 올바르게 취급한다. NETCONF와 RESTCONF에는 보안 전송과 상호 인증이 필요하며, NACM은 누가 버전 정책을 수립하거나 변경할 수 있는지 제한한다. 제약을 변경하는 공격자 또는 권한 없는 운영자는 피드를 중단시키거나 예상치 못한 컨텍스트를 강제할 수 있다.
강력한 인증은 누가 교환에 참여했는지 증명하고 알림이 변경되지 않도록 보호하는 데 도움을 준다. 수집기가 올바른 디코더를 선택했는지, 오래된 큐가 비워졌는지, 비즈니스 규칙이 여전히 소유자가 생각하는 의미를 갖는지는 증명하지 않는다. 이들은 별도의 소유자가 있는 별도의 제어다.
그 구분은 더 큰 프로토콜을 위한 주장이 아니다. 프로토콜 메타데이터를 통해 다운스트림 책임을 세탁하지 말자는 주장이다.
유용한 알림은 규율 있는 일시 중지를 촉발해야 한다
변경된 리비전에 대한 가장 성숙한 반응은 공황도 자동 수용도 아니다. 유지보수 기간이 시작되기 전에 종료 기준이 알려진 제한된 일시 중지다.
수집기는 모호한 레코드를 격리하고, 정확한 모듈 세트를 가져와 지문을 생성하고, 디코더 픽스처를 실행하고, 이전 및 새 프로젝션을 비교하고, 시퀀스 또는 재생 증거를 조정할 수 있다. 자동화 소유자는 그 변경이 관찰만 영향을 주는지 아니면 제어 입력의 의미를 바꾸는지 결정할 수 있다. 서비스 소유자는 중대한 결과를 낳는 조치가 중단된 상태에서 어떤 저하된 사용이 여전히 허용 가능한지 선언할 수 있다.
모든 것이 호환된다면 기록은 작고 종료는 빠를 수 있다. 관련 없는 모듈 때문에 콘텐츠 ID가 변경되었다면 증거가 그것도 보여줄 수 있다. 거버넌스는 무해한 전환을 저렴하게 만들되, 증명되지 않은 전환을 보이지 않게 만들어서는 안 된다.
리비전 14는 빠져 있던 알림을 제공한다. 책임 있는 운영자는 여전히 인계를 증명해야 한다.
출처
회원 브리핑
프로필 심층 컨텍스트
올바른 멤버십 등급으로 로그인하면 전체 브리핑과 출처 노트를 볼 수 있습니다.
Strategic Circle 전용
Strategic Circle
모든 독자에게 공개됩니다. 가입 후 로그인하면 프로필 브리핑를 열람할 수 있습니다.
Strategic Circle 가입하기Leadership Alliance 전용
Leadership Alliance
자격을 갖춘 IP 자산 소유자 및 운영진을 위한 콘텐츠입니다. 로그인하면 Leadership Alliance 브리핑을 열람할 수 있습니다.
Leadership Alliance 가입하기





