요약

  • RFC 1595는 SONET/SDH 성능 근거를 섹션(Section), 라인(Line), 경로(Path), 가상 트리뷰터리(Virtual Tributary)별로, 근단과 원단별로, 현재 또는 완료된 15분 구간별로 구분했다. 맨 정수 하나에는 그 의미를 부여하던 좌표가 담겨 있지 않았다.
  • 사용 불가 시간은 10초 연속 심각 오류 초(severely errored second) 중 첫 번째 초에서 시작했다. 그 연속 구간이 900초 경계를 넘으면, 이후의 폴링이 이전 구간의 SES와 UAS 값을 정당하게 바꿀 수 있었다.
  • RFC 2558과 RFC 3592는 두 가지 구현 선택을 드러냈다. 성능 카운트를 즉시 공개하고 나중에 소급 수정하거나, 1초 관측을 10단계 지연 라인에 보관하거나. 즉시성과 최종성을 둘 다 공짜로 얻을 수는 없었다.

근거에는 열려 있던 닫힌 창

SONET 경로가 심각 오류 연속 구간을 일부만 쌓은 채 15분 성능 구간이 끝나는 상황을 상상해 보자. 다음 구간이 시작된다. 관리자가 구간 1의 행(방금 닫힌 구간)을 폴링하여 카운트 집합을 받는다. 몇 초 뒤, 10번째 연속 심각 오류 초가 도착한다.

물리적 초는 움직이지 않았다. 그러나 그들의 분류는 움직였다.

RFC 1595가 담은 규칙에 따르면, 사용 불가 시간은 10번째 초가 아니라 10초 연속 심각 오류 초의 시작 시점에 시작된다. 10초 전부가 사용 불가 시간에 속한다. 연속 구간이 15분 경계 이전에 시작했다면, 새로 분류된 사용 불가 초 중 일부는 완료된 구간에 속한다. 그래서 이 RFC는 새 창의 첫 몇 초 안에 첫 읽기가 이루어졌을 때, 이전 경로·라인·VT 구간에 대한 연속 GET이 서로 다른 SES와 UAS 값을 반환할 수 있다고 경고했다.

이는 불완전한 하드웨어에 대한 막연한 단서가 아니었다. 이는 객체 모델 자체에서 도출되는 결과였다. 에이전트는 자기 마지막 초들의 상태를 확정할 미래 관측을 아직 확보하지 않은 상태에서도, 행을 '가장 최근에 완료된' 것으로 노출할 수 있었다.

10초가 거슬러 올라갔다

사용 불가 시간 규칙은 양방향으로 작동했다. 라인, 경로, VT 계층에서 10초 연속 심각 오류 초는 그 첫 초부터 인터페이스를 사용 불가로 만들었다. 사용 불가 상태에서 SES 없이 10초가 연속되면 가용성은 첫 깨끗한 초부터 복원되었고, 그 10초는 사용 불가 시간에서 제외되었다.

계층이 가용 상태에 있는 동안에는 해당 계층의 적용 가능한 오류 카운터가 증가했다. 사용 불가 상태 동안에는 그 계층에서 사용 불가 초 카운터만 증가했다. 따라서 10초 시퀀스는 단순한 알람 디바운스가 아니었다. 그것은 선행하는 초들이 어떤 장부에 기록될지 결정했다.

이 구분이 중요하다. 관리 시스템은 오류 초를 즉시 볼 수 있었지만, 그 초가 ES 또는 SES 관측으로 남을지, 아니면 나중에 사용 불가 시간 안으로 들어갈지는 즉시 알 수 없었다. '지금 관측됨'과 '지금 최종 분류됨'은 서로 다른 명제였다.

900초 롤오버 시점에서 그 차이는 저장 경계를 넘었다. 구간 1은 이미 역사로 접근 가능했다. 그러나 상태 머신은 계속 작동했다. 카운터가 롤오버되어도 리셋되지 않았다. 이전 행은 새 구간에서 완료된 시퀀스의 결과를 여전히 상속할 수 있었다.

카운트는 의미보다 먼저 계층을 가졌다

RFC 1595는 오류가 어디에 존재하는지에 신중했다. SONET/SDH 장비는 모든 지점에서 모든 계층을 종단하지 않았다. 리제너레이터는 섹션만 종단하고 그 위에서는 투명할 수 있었다. 애드드롭 멀티플렉서와 디지털 크로스커넥트는 라인을 종단했다. 단말 멀티플렉서는 경로와 가상 트리뷰터리 또는 가상 컨테이너까지 종단할 수 있었다.

MIB는 이 아키텍처를 인터페이스 항목과 그 스택으로 반영했다. 섹션 코딩 위반은 B1 바이트에서 나왔다. 라인 위반은 B2에서, 경로 위반은 B3에서 나왔다. 플로팅 VT는 V5의 BIP 정보를 사용했다. 섹션 상태는 신호 손실이나 프레임 손실을 노출할 수 있었고, 라인과 경로 표면에는 자체적인 알람 및 원격 결함(remote-defect) 조건이 있었다.

코딩 위반, 오류 초, 심각 오류 초 같은 공통 명칭이 이러한 기원을 지우지는 않았다. 두 값은 수치로는 같아도, 서로 다른 계층·속도·종단 지점에 속해 운영적으로 비교 불가능할 수 있었다. 압축된 '회선 오류' 총계는 편리할 수 있지만, 표준에 내재된 위치 특정성을 보존할 수는 없었다.

같은 주의는ifOperStatus에도 적용된다. RFC 1595는 결합된 매체/섹션/라인 항목의 down 상태를 섹션 또는 라인 결함에 연결하고, 경로 항목의 down 상태를 경로 상태에 연결했다. 'Down'은 인터페이스 테이블에 유용한 투영이었다. 그 자체로 결함의 물리적 위치는 아니었다.

원단은 다른 증인이었다

MIB는 근단(near-end) 통계와 원단(far-end) 통계를 분리했다. 원단 경로 성능은 G1 경로 오버헤드 바이트의 원단 블록 오류 표시로부터 도출되었다. 익숙한 지표 이름을 사용했지만, 측정은 다른 경로를 통해 도착했으며 원격 측의 보고를 기술했다.

RFC 2558은 나중에 부재 규칙을 명시했다. 동일 계층 또는 하위 계층에서 수신 결함이 존재하는 초 동안에는 원단 1초 통계를 '부재'로 표시해야 했다. 하위 계층의 결함이 원격 증거가 해석 가능해지는 경로 자체를 파괴할 수 있었기 때문이다.

0과 부재는 같은 값이 아니다. 0은 관련 카운터가 자신의 규칙에 따라 해당하는 이벤트를 관측하지 못했다고 말할 수 있다. 부재는 그 초에 관측이 이용 가능하지 않았다고 말한다. 부재를 0으로 대체하면, 가시성이 가장 약한 순간에 장애가 원격이 깨끗하다는 증거처럼 보이게 만든다.

답을 수정하거나 지연하라

1999년 RFC 1595를 대체한 RFC 2558은 이 타이밍 문제를 더 명시적으로 기술했다. 성능 통계를 실시간으로 갱신하는 에이전트는 10초 가용성 분류가 밝혀지면 이전의 ES, SES, SEFS, CV, UAS 값을 정정할 준비가 되어 있어야 했다. 시퀀스가 15분 경계를 넘으면 그 정정은 이전 구간까지 미칠 수 있었다.

대안은 10요소 지연 라인이었다. 매초의 근단·원단 위반 카운트와 알람 플래그가 라인에 들어가고, 그 관측과 결부된 상태가 알려진 후에야 성능 카운터가 갱신되었다. 이는 나중의 수정 없이 공개된 배분을 정확하게 유지했지만, 카운터를 물리 시간보다 10초 느리게 만들었다.

어느 표현도 본질적으로 부정직하지 않았다. 하나는 낮은 지연과 잠정적 특성을 제공했다. 다른 하나는 명시적 지연과 함께 안정적인 배분을 제공했다. 위험한 설계는 둘 다 문서화하지 않고 한 번만 샘플링하고, 폴링 시각을 벗겨내고, 나중에 저장된 정수를 불변의 이벤트 총계처럼 비교하는 수집기였다.

RFC 2493은 15분 이력을 둘러싼 장부 관리를 일반화했다. 현재, 과거, 선택적 집계 테이블을 구분하고, 경과 시간과 유효/무효 구간 개념을 포함했으며, 재시작 후나 프록시 데이터를 사용할 수 없는 곳에서 더 적은 수의 완료된 행을 허용했다. 따라서 '직전 24시간'은 용량 상한이었지, 96개의 완전하고 유효한 구간이 항상 존재한다는 약속이 아니었다. RFC 1595 자체도 최소 4개의 완료된 구간을 요구하고 자기 테이블의 기본값으로 32를 제시했다.

함정은 더 이른 시각을 가리킬 수 있었다

후속 SONET MIB 텍스트는 동일한 시간 구분을 통지(notifications)에도 반영했다. 링크 다운 트랩은 에이전트가 사용 불가 상태 진입을 확실히 아는 뒤에만 보내야 했다. 그러나 그 실효 시각(effective time)은 10초 이전의 첫 사용 불가 초를 가리켰다. 링크 업도 같은 논리를 따랐다.

발신 시각과 이벤트 실효 시각은 둘 다 참이었고, 서로 다른 질문에 답했다. 하나는 에이전트가 언제 통지할 만큼 충분한 증거를 갖게 되었는지 보여준다. 다른 하나는 상태 머신이 전이를 어느 시점에 둔지 보여준다. 수집기가 도착 시각만 보관하면 장애를 앞으로 당겨온다. 실효 시각만 보관하면 에이전트가 전이를 즉시 알고 즉시 보고한 것처럼 거짓으로 함축할 수 있다.

감사 추적에는 둘 다, 그리고 그 차이를 만든 정책이 함께 필요했다.

'심각'조차 출처가 필요했다

표준의 진화는 카운터를 그 의미론에서 떼어내지 말아야 할 또 다른 이유를 추가했다. RFC 2558은 여러 표준이 심각 오류 초 선언에 서로 다른 임계값을 사용한다는 사실을 기록했다. 그리고sonetSESthresholdSet을 추가해 에이전트가 어느 해석이 적용 중인지 식별할 수 있게 했다. 에이전트는 모든 임계값 집합을 지원할 필요가 없었고, 선택 집합을 바꾸면 이전에 수집한 SES 통계는 무효화되었다.

숫자가 덜 정확해진 것이 아니라, 그 범주가 바뀐 것이다. 역사 비교에는 임계값 선택과 그것이 적용된 시각이 필요했다. 그 필드들이 없으면 추세선은 광 신호의 변화가 아니라 의미론적 변화로 인한 가짜 개선 또는 악화를 보여줄 수 있었다.

RFC 3592는 2003년 RFC 2558을 대체하면서 중심 구조를 유지했다. 계층별 관측, 근단/원단 성능, 15분 이력, 그리고 수정 대 지연 문제. 계보가 중요한 이유는 그 불편함이 조용히 잊힌 편집 사고가 아니었다는 점을 보여주기 때문이다. 후속 표준은 그 트레이드오프를 설명하고 보존했다.

기록이 입증할 수 있는 것

방어 가능한 SONET 성능 스냅샷은 관리 대상 인스턴스와 스택 위치, 섹션·라인·경로·VT 계층, 근단/원단, 지표 정의, 임계값 집합, 현재 또는 과거 구간 번호, 구간 시작과 롤오버, 경과 시간, 유효/무효 구간 카운트, 에이전트 에포크, 폴링 시각, 그리고 값이 잠정·정정 가능·지연 중 어느 것인지를 식별한다.

그 기록은 명명된 표준과 구성 하에서 에이전트가 무엇을 노출했는지 입증할 수 있다. 그 자체로 고장 부품, 고객 영향, 복구 조치, 벤더 적합성 또는 단말 간 복구를 증명할 수는 없다. 이후의 정정은 에이전트가 그 창을 재분류했음을 입증할 수 있지만, 광섬유에서 실제로 일어난 일을 다시 쓰지는 않는다. 10초 지연은 선택된 보고 방식을 입증할 수 있지만, 장치가 느리거나 결함이 있다는 증거는 아니다.

Lu Heng의Running-Code Primacy는 운영적 검증을 구체화한다. 관리 심볼은 구현된 에이전트가 관측하고, 분류하고, 노출한 것에 계속 묶여 있어야 한다.Minimum Initial Specification은 공통 계층이 얇은 접수증만 표준화하고, 폴링·보존·대응 선택은 지역 결정으로 가시적으로 남겨야 하는 이유를 설명한다.Why BTW.Media Exists는 편집 의무를 제시한다. 최초의 가용한 숫자를 캠페인으로 만들지 말고, 정정·지연·결손 증거를 보도하라.

15분 구간이 유용했던 이유는 그것이 끝났기 때문이다. 그것이 신뢰할 수 있게 되는 조건은 시스템이 그 종료 시점의 값이 최종인지 여부도 함께 말할 때였다.

출처와 증거의 한계

이 기술 서술은 RFC 1595와 그전체 사양, RFC 2558와 그전체 사양, RFC 3592와 그전체 사양, 그리고 RFC 2493과 그15분 성능 이력 관례에 대한 RFC Editor 기록과 텍스트에 근거한다. Lu Heng의 세 편의 글은 SONET 사실이 아니라 해석의 규율을 제공한다.

문서 계보는 명확하다. RFC 1595는 1994년 3월에 Standards Track으로 발행되었고, RFC 2558가 1999년 3월에 이를 대체했으며, RFC 3592가 2003년 9월에 RFC 2558을 대체했다. 보안 처리도 달라졌다. RFC 1595는 보안을 논의하지 않았지만, RFC 2558은 GET과 SET 접근이 민감한 구성 및 제어 정보를 노출할 수 있다고 경고했다.

이 출처들은 문서 정체성, 표준 계보, 객체 의미론을 확립한다. 그러나 특정 구현, 배포 보급률, 회선 상태, 중단, 고객 영향, 통지 전달, 수집기 동작, 보안 자세 또는 성공적인 복구를 확립하지는 않는다. 도입부는 명시된 타이밍 규칙의 논리적 재구성이지 보고된 사건이 아니다.