요약
- OSPFv2는 하나의 LSA 인스턴스를 32비트 부호 있는 시퀀스 번호, 즉
0x80000001부터0x7fffffff까지로 정렬합니다. 살아남은 최댓값 사본이 새로 발행된 최솟값 사본을 이겨 버리기 때문에 직접 순환(wrap)은 불가능합니다. - 따라서 발신자는 최댓값 인스턴스를 MaxAge로 플러딩하고, 철회가 확인되어 안전하게 제거될 때까지 기다린 후에야 새로운 초기 인스턴스를 발행합니다. 이것이 두 시퀀스 에포크 사이의 명시적 경계입니다.
OSPF가 제거한 원
최초의 공개된 OSPF 사양은 시퀀스 카운터를 단순한 선으로 취급하지 않았습니다. 1989년 10월에 발행된RFC 1131은 롤리팝(lollipop) 형태를 그렸습니다. 즉, 시작 줄기가 원형 시퀀스 공간으로 이어지는 구조였습니다. 이 형태는 두 문제를 동시에 풀려 했습니다. 새로 살아난 라우터는 이전 인스턴스가 남긴 상태를 능가할 수 있는 값을 필요로 했고, 계속 살아 있는 라우터는 새로운 링크 스테이트 광고를 계속 발행해야 했습니다.
2년 뒤 OSPF 버전 2는 이 원을 버렸습니다.RFC 1247은 롤리팝 공간을 버전 1에서 수정된 문제 목록에 넣었습니다. 그 대체물은 32비트 부호 있는 정수의 선이었습니다. 예약된 값0x80000000은 제외되었고,0x80000001이 첫 번째이자 가장 오래된 사용 가능한 값이 되었으며,0x7fffffff가 마지막이자 가장 새로운 값이 되었습니다.
선형 순서는 비교를 놀랍도록 단순하게 만들었습니다. 동일한 링크 스테이트 광고의 두 인스턴스에 대해 더 큰 부호 있는 시퀀스 번호가 더 최신이었습니다. 그러나 선에는 끝이 있습니다. LSA가 최댓값에 도달하면, 프로토콜은 다음 증분이 아무 부작용 없이 처음으로 돌아온다고 가장할 수 없었습니다.
산술적 순환이 진실을 뒤집는 이유
OSPF LSA는 유형(type), Link State ID, Advertising Router로 식별됩니다. 시퀀스 번호는 링크 스테이트 데이터베이스 전체를 정렬하는 것이 아니라, 그 식별 내에서 연속된 버전들을 정렬합니다.0x7fffffff를 가진 이웃은0x80000001로 번호가 매겨진 사본보다 자신의 사본을 선호해야 합니다.
이 비교는 발신자가 카운터를 소진한 뒤에도 여전히 올바릅니다. 만약 발신자가 단순히 순환하여 변경된 LSA를 초기 값으로 보낸다면, 여전히 최댓값 사본을 보유한 모든 라우터는 오래된 내용이 더 최신이라고 판단합니다. 발신자가 이전 내용을 교체하려던 정확한 순간에 플러딩은 과거를 보존하게 됩니다.
클록 시간은 조용히 이 분쟁을 해결할 수 없습니다. LS age는 광고가 이동하고 대기하는 동안 증가하며, 라우터들은 서로 다른 로컬 메모리로 재시작할 수 있습니다. 침묵이 최댓값 사본이 사라졌음을 증명할 수도 없습니다. 이웃은 그것을 보존하거나, 재전송하거나, 데이터베이스 동기화 중에 제시할 수 있습니다.
따라서 OSPFv2는 영리한 순환 산술을 정의하지 않았습니다. 에포크 경계를 정의했습니다.
철회가 플러딩되는 대상이 되다
MaxSequenceNumber이후에 또 다른 버전이 필요해질 때,RFC 2328은 발신자가 기존 최댓값 인스턴스를 가져와 LS age를MaxAge로 설정하도록 합니다. 라우터는 그 인스턴스를 라우팅 도메인 전체로 다시 플러딩합니다. 이 의도적인 조기 만료를 premature aging이라고 부릅니다.
이 행위는 좁게 허가되어 있습니다. 라우터는 자신이 발신한 LSA를 조기 노화시킬 수 있으며, 다른 라우터의 광고를 지울 일반적 권리를 얻지 못합니다. 식별자는 그대로이고, 최대 시퀀스와 내용 체크섬도 그대로입니다. 바뀌는 것은 age 필드뿐인데, 이 필드는 전송 중 반드시 증가해야 하므로 LSA 체크섬에서 제외됩니다.
이 맥락에서 MaxAge는 수동적 붕괴가 아닙니다. 그 외에는 동일한 두 인스턴스가 같은 시퀀스와 체크섬을 가진다면, MaxAge 인스턴스는 MaxAge가 아닌 사본보다 더 최신으로 간주됩니다. 따라서 묘비(tombstone)는 모든 사본의 독립적 클록이 1시간에 도달하기를 기다리는 대신, 아직 살아 있는 사본을 밀어낼 수 있습니다.
철회에는 정확한 범위도 있습니다. 이것은 이 LSA 인스턴스를 OSPF의 플러딩 데이터베이스에서 제거합니다. 물리적 링크가 다운되었음을, 라우터에 도달할 수 없음을, 또는 다른 LSA가 목적지로 가는 경로를 지원할 수 없음을 증명하지는 않습니다.
잊는 것은 입증되어야 했다
묘비를 발행하는 것은 전환의 절반에 불과했습니다. OSPF 라우터는 MaxAge LSA가 이웃의 링크 스테이트 재전송 목록에 남아 있는 동안 그것을 폐기할 수 없습니다. 또한 어느 이웃이라도 Exchange 또는 Loading 상태인 동안에는 기다립니다. 진행 중인 데이터베이스 동기화가 떠나는 에포크를 되살려 놓을 수 있기 때문입니다.
시퀀스가 소진되면 발신자는 모든 인접 이웃이 플러시된 최댓값 인스턴스를 확인(acknowledge)할 때까지 기다립니다. 오래된 LSA를 제거할 수 있게 된 후에야InitialSequenceNumber로 그 식별을 다시 발신합니다.
이렇게 하면 겉보기 시퀀스 감소가 의미 있게 됩니다. 낮은 값은 같은 세대에서 높은 값과 경쟁하는 것이 아닙니다. 높은 세대는 명시적으로 철회되어, 관련 인접 관계를 통해 전달되고, 동기화에서 은퇴되었습니다. 첫 번째 낮은 값은 새 에포크에 속합니다.
RFC 1247의 변경 로그는 이 경합을 드러내게 만들었습니다. OSPFv2는 이웃이 여전히 그 광고를 참조하는 데이터베이스 요약을 배우는 중일 때 광고가 플러시되지 않도록 데이터베이스 설명 처리를 수정했습니다. 프로토콜은 하나의 동시 글로벌 커밋을 주장하지 않았습니다. 대신 두 에포크가 서로를 모르고 지나치지 않도록 충분한 인접 관계 증거를 만들었습니다.
재부팅한 라우터는 자신의 과거를 만날 수 있다
같은 규칙은 카운터가 자연히 소진되기 훨씬 전에도 중요합니다. 라우터가 재시작하며 휘발성 상태를 잃었다고 상상해 보십시오. 이웃은 여전히 재부팅 이전에 발신된, 새로 초기화된 값보다 훨씬 위인 시퀀스를 가진 자기발신 LSA를 보유하고 있을 수 있습니다. 이웃의 관점에서 내구성 있는 오래된 사본이 실제로 더 최신입니다.
RFC 2328은 돌아온 발신자에게 그 증거를 경청하도록 요구합니다. 그 LSA를 여전히 발신하고 싶다면, 수신된 자기발신 사본보다 한 단계 앞선 시퀀스의 인스턴스를 발행합니다. 더 이상 그 식별을 발신하지 않는다면, 수신된 식별을 MaxAge로 설정하고 철회를 다시 플러딩합니다. 반환된 사본이 이미 시퀀스 최댓값이라면, 라우터는 그것을 순환하여 통과하는 대신 플러시 후 재시작 절차를 사용합니다.
이 동작은 흔히 LSA fight-back이라고 불립니다. 이 이름은 적대적으로 들릴 수 있지만, 평범한 원인은 메모리 비대칭입니다. 이웃이 반드시 공격자인 것은 아니고, 재부팅된 라우터가 Router ID를 소유한다고 해서 무조건 권위적인 것도 아닙니다. 발신 권한이 누가 LSA를 갱신하거나 플러시할 수 있는지를 결정하고, 분산된 증거가 발신자가 이겨야 할 시퀀스를 결정합니다.
'더 최신'은 여러 필드로 결정되었다
시퀀스 번호는 첫 번째 최신성 검사이지 유일한 검사가 아닙니다. 동일한 LSA의 두 인스턴스가 같은 시퀀스를 가지면, OSPF는 체크섬을 비교하여 더 큰 부호 없는 체크섬을 더 최신으로 취급합니다. 시퀀스와 체크섬이 모두 일치하면, MaxAge 여부와 정의된 age 차이가 어느 인스턴스가 이기는지 결정할 수 있습니다. 나이가 충분히 가까운 사본들은 같은 인스턴스로 취급됩니다.
이 규칙들은 서로 다른 고장 경계를 위해 존재합니다. 시퀀스는 의도적 재발신을 표현합니다. 체크섬은 우연히 같은 시퀀스를 공유하게 된 서로 다른 내용을 구분합니다. age는 명시적 플러시가 살아 있는 쌍둥이보다 우선하도록 하고, 평범한 전파 지연이 끝없이 새 버전을 만들어 내는 것을 막습니다.
어느 것도 서로 관련 없는 정보에 대한 타임스탬프가 아닙니다.0x7fffffff를 “이 네트워크의 가장 최신 상태”로 읽는 것은 LSA 식별을 버리고, 그 필드가 결코 갖지 못한 권위를 발명하는 일입니다.
갱신 감소가 철회를 폐지하지는 않았다
일반적인 OSPFv2는 자기발신 LSA를 30분마다 갱신하여, 자연히 1시간 MaxAge 한도에 도달하지 않도록 합니다. 이 주기적 재발신은 토폴로지가 변하지 않아도 시퀀스를 앞당깁니다. 요구 회선(demand circuit)에서는 그런 트래픽이 비쌌기 때문에RFC 1793이 DoNotAge 동작을 도입했습니다.RFC 4136은 나중에 안정적 토폴로지를 위한 갱신 및 플러딩 감소를 일반화했습니다.
DoNotAge는 일상적 갱신의 필요성을 바꾸었지만, LSA를 불멸의 권리로 만들지는 않았습니다. 내용 변경은 여전히 재발신과 플러딩을 유발합니다. 정당한 철회는 여전히 MaxAge를 사용합니다. 발신 권한, 최신성 비교, 오래된 상태와 새로운 상태를 구분할 필요성은 그대로 남습니다.
RFC 5340은 IPv6를 위한 OSPFv3로 근본적인 플러딩 및 최신성 기계 장치를 옮겨 가면서 주소 지정과 LSA 범위 세부사항을 바꾸었습니다. 이 문제는 특정 주소 형식에 고유한 것이 아니었습니다. 분산 링크 스테이트 데이터베이스라면 어디서든 복제본은 오래된 최댓값을 보존할 수 있습니다.
하나의 시퀀스 번호가 모든 시퀀스 번호는 아니었다
OSPF 패킷에는 다른 카운터도 있습니다. Database Description 패킷은 이웃이 동기화하는 동안 자체 시퀀싱을 사용합니다. 암호적으로 인증된 패킷은 안티 리플레이 시퀀스 상태를 운반할 수 있습니다.RFC 6863은 패킷 리플레이 보호를 각 LSA에 내장된 시퀀스와 별개로 다룹니다.
이 구분은 운영상 중요합니다. LSA 시퀀스는 “이 라우팅 주장의 어떤 버전이 이겨야 하는가?”에 답합니다. 인증 시퀀스는 “이 보호된 패킷이 이 보안 컨텍스트에서 재생되는 오래된 패킷인가?”를 답하는 데 도움이 됩니다. 그들의 소유자, 수명, 롤오버 실패 양상은 서로 다릅니다. 하나를 고쳐도 다른 하나는 고쳐지지 않습니다.
소멸 그 자체가 프로토콜이었다
시퀀스 소진에 대한 OSPF의 답은 더 큰 숫자나 경과 시간에 대한 추측이 아니었습니다. 그것은 명시적이고, 발신자가 귀속되는, 생성이 재개되기 전에 전파되어야만 하는 삭제였습니다. 최댓값 LSA는 자신의 철회가 되었습니다. 확인 응답과 동기화 상태가 오래된 에포크가 더 이상 유통되지 않는 시점을 보여주었고, 그때에야 가장 오래된 합법적 번호가 다시 “새로움”을 의미할 수 있었습니다.
이 설계는 인터넷 역사에서 오래 지속되는 교훈을 드러냅니다. 분산 시스템에서 잊는 것은 메시지의 부재가 아닙니다. 그것은 소유자, 전파 경로, 완료의 증거를 갖춘 상태 전이입니다. OSPF는 두 시퀀스 에포크 사이의 빈 공간이 실제 프로토콜 작업을 수행하도록 만들었습니다.
출처와 근거의 한계
- RFC 1131 — OSPF specification
- RFC 1247 — OSPF Version 2
- RFC 1793 — Extending OSPF to Support Demand Circuits
- RFC 2178 — OSPF Version 2
- RFC 2328 — OSPF Version 2
- RFC 4136 — OSPF Refresh and Flooding Reduction in Stable Topologies
- RFC 5340 — OSPF for IPv6
- RFC 6863 — Analysis of OSPF Security
이 표준들은 상태 기계와 그 진화를 확립합니다. 그러나 현재 구현이 시퀀스 소진에 얼마나 자주 도달하는지, 특정 벤더의 기본값이나 결함을 식별하거나, 특정 장애를 설명하지는 않습니다. MaxAge는 OSPF 내부의 LSA 철회일 뿐, 링크·라우터·목적지의 글로벌 상실 증거가 아닙니다. 자기발신 LSA 응답은 평범한 재시작 뒤에 일어날 수 있으며, 그것만으로 적대적 주입이 확립되지 않습니다.
회원 브리핑
프로필 심층 컨텍스트
올바른 멤버십 등급으로 로그인하면 전체 브리핑과 출처 노트를 볼 수 있습니다.
Strategic Circle 전용
Strategic Circle
모든 독자에게 공개됩니다. 가입 후 로그인하면 프로필 브리핑를 열람할 수 있습니다.
Strategic Circle 가입하기Leadership Alliance 전용
Leadership Alliance
자격을 갖춘 IP 자산 소유자 및 운영진을 위한 콘텐츠입니다. 로그인하면 Leadership Alliance 브리핑을 열람할 수 있습니다.
Leadership Alliance 가입하기





