혼잡 제한

Proposal 162
Open
Author dr|z3d, idk, orignal, zzz
Created 2023-01-24
Last Updated 2023-02-01
Target Version 0.9.59

개요

발행된 라우터 정보(RI)에 혼잡 지표를 추가합니다.

동기

대역폭 “캡”(성능)은 공유 대역폭 한계와 접근 가능성을 나타내지만 혼잡 상태는 나타내지 않습니다. 혼잡 지표는 라우터가 혼잡한 라우터를 통해 빌드하려는 시도를 피하는 데 도움을 주어, 더 많은 혼잡을 유발하고 터널 빌드 성공률을 감소시키는 것을 방지합니다.

디자인

혼잡 또는 용량 문제의 다양한 수준을 나타내는 새로운 캡을 정의합니다. 이들은 주소 캡이 아닌 상위 레벨 RI 캡에 들어갑니다.

혼잡 정의

일반적으로 혼잡은 피어가 터널 빌드 요청을 수신하고 수락할 가능성이 낮음을 의미합니다. 혼잡 수준을 정의하거나 분류하는 것은 구현에 따라 다릅니다.

구현은 다음 중 하나 이상을 고려할 수 있습니다:

  • 대역폭 한계에 다다르거나 근처에 있을 때
  • 최대 참여 터널 수에 다다르거나 근처에 있을 때
  • 하나 이상의 전송에서 최대 연결 수에 다다르거나 근처에 있을 때
  • 대기열 깊이, 지연, CPU 사용량의 임계값 초과; 내부 대기열 오버플로우
  • 기본 플랫폼 / OS CPU 및 메모리 능력
  • 인지된 네트워크 혼잡
  • 방화벽 또는 대칭 NAT 또는 숨겨지거나 프록시된 네트워크 상태
  • 터널을 수락하지 않도록 구성됨

혼잡 상태는 몇 분에 걸친 평균 조건에 기반해야 하며, 순간 측정은 아닙니다.

명세

NETDB를 다음과 같이 업데이트합니다:

D: 중간 혼잡, 또는 저성능 라우터 (예: 안드로이드, 라즈베리 파이)
     다른 라우터는 이 라우터의
     명백한 터널 용량을 프로필에서 다운그레이드하거나 제한해야 합니다.

  E: 높은 혼잡, 이 라우터는 어떤 한계에 근접하거나 도달했으며,
     대부분의 터널 요청을 거부하거나 드롭하고 있습니다.
     이 RI가 최근 15분 내에 발행된 경우, 다른 라우터들은
     이 라우터의 용량을 심하게 다운그레이드하거나 제한해야 합니다.
     이 RI가 15분보다 오래된 경우, 'D'로 취급합니다.

  G: 이 라우터는 모든 터널을 일시적으로 또는 영구적으로 거부합니다.
     새로운 RI를 'G' 없이 받을 때까지 이 라우터를 통해 터널을 빌드하려 하지 마세요.

일관성을 위해, 구현은 모든 혼잡 캡을 끝에 추가해야 합니다 (R 또는 U 뒤에).

보안 분석

발행된 피어 정보는 신뢰할 수 없습니다. 캡은 라우터 정보의 다른 것들처럼 스푸핑될 수 있습니다. 우리는 절대 라우터 정보에서 라우터의 인식된 용량을 증가시키기 위한 것을 사용하지 않습니다.

피어들에게 이 라우터를 피하도록 지시하는 혼잡 지표 발행은 더 많은 터널을 요청하는 포용적 또는 용량 지표보다 본질적으로 훨씬 더 안전합니다.

현재 대역폭 용량 지표 (L-P, X)는 매우 낮은 대역폭 라우터를 피하기 위해서만 신뢰됩니다. “U” (접근 불가) 캡은 비슷한 효과가 있습니다.

발행된 혼잡 지표는 터널 빌드 요청을 거부하거나 드롭하는 것과 같은 효과를 가져야 하고, 비슷한 보안 속성을 가져야 합니다.

참고

피어들은 ‘D’ 라우터를 완전히 피하지 않고, 단지 등급을 낮춰야 합니다.

‘E’ 라우터를 완전히 피하지 않도록 주의해야 하며, 그래서 네트워크 전체가 혼잡하고 ‘E’를 발행하는 경우, 모든 것이 완전히 파괴되지 않도록 해야 합니다.

라우터들은 ‘D’와 ‘E’ 라우터를 통해 어떤 유형의 터널을 빌드할지를 각기 다른 전략을 사용할 수 있습니다. 예로 탐색 vs. 클라이언트 또는 높은 vs. 낮은 대역폭 클라이언트 터널 등이 있습니다.

라우터들은 아마도 기본적으로 시작 또는 종료 시 혼잡 캡을 발행해서는 안 되며, 네트워크 상태가 알려지지 않았더라도, 피어들에 의한 재시작 감지를 방지해야 합니다.

호환성

문제 없음, 모든 구현은 알 수 없는 캡을 무시합니다.

마이그레이션

구현은 언제든지 지원을 추가할 수 있으며, 조정이 필요 없습니다.

예비 계획: 0.9.58 (2023년 4월)에 캡 발행; 0.9.59 (2023년 7월)에 발행된 캡에 따라 행동합니다.

참조