IPv6 피어 테스트

Proposal 126
Closed
Author zzz
Created 2016-05-02
Last Updated 2018-03-19
Target Version 0.9.27
Implemented In 0.9.27

개요

이 제안은 IPv6에 대한 SSU 피어 테스트를 구현하는 것입니다. 0.9.27에 구현되었습니다.

동기

우리의 IPv6 주소가 방화벽에 의해 차단되는지 신뢰할 수 있는 방법으로 판단하고 추적할 수 없습니다.

몇 년 전 IPv6 지원을 추가했을 때, IPv6는 절대 방화벽에 의해 차단되지 않을 것이라고 가정했습니다.

더 최근에, 0.9.20 (2015년 5월)에서는 내부적으로 v4/v6 접근 가능 상태를 분리했습니다 (티켓 #1458). 자세한 정보와 링크는 해당 티켓을 참조하세요.

v4와 v6 모두 방화벽에 차단된 경우, /confignet의 TCP 구성 섹션에서 방화벽을 강제로 설정할 수 있습니다.

v6를 위한 피어 테스트는 없습니다. 이는 SSU 스펙에서 금지되어 있습니다. 우리가 정기적으로 v6 접근성을 테스트할 수 없다면, v6 접근 가능한 상태로의 전환이 어려워집니다. 결국 인바운드 연결이 있을 경우 접근 가능하다고 추측하고, 인바운드 연결이 일정 시간 동안 없으면 접근 불가능하다고 추측하게 됩니다. 문제는 일단 접근 불가능하다고 선언하면, v6 IP를 게시하지 않게 되고, 그러면 아무도 더 이상 연결을 시도하지 않는다는 것입니다 (모든 네트워크 DB에서 RI가 만료된 후).

설계

IPv6를 위한 피어 테스트를 구현합니다. 이전의 IPv4에만 피어 테스트를 허용하던 제한을 제거합니다. 피어 테스트 메시지에는 이미 IP 길이를 위한 필드가 있습니다.

명세

SSU 개요의 기능 섹션에 다음 추가 사항을 만듭니다:

0.9.26까지는 IPv6 주소에 대한 피어 테스트가 지원되지 않았으며, IPv6 주소에 ‘B’ 기능이 존재한다면 무시해야 합니다. 0.9.27부터는 IPv6 주소에 대한 피어 테스트가 지원되며, IPv6 주소에 ‘B’ 기능이 있는 경우 지원 여부를 나타냅니다 (또는 지원이 없음).

SSU 개요 및 SSU 명세의 피어 테스트 섹션에서 다음 변경 사항을 만듭니다:

IPv6 비고: 0.9.26 버전까지는 IPv4 주소만 테스트 지원되었습니다. 따라서, 모든 Alice-Bob 및 Alice-Charlie 통신은 IPv4를 통해 이루어져야 합니다. 단, Bob-Charlie 통신은 IPv4 또는 IPv6를 통해 이루어질 수 있습니다. PeerTest 메시지에서 지정된 Alice의 주소는 4바이트여야 합니다. 0.9.27 버전부터는 IPv6 주소의 테스트가 지원되며, Alice-Bob 및 Alice-Charlie 통신은 IPv6를 통해 이루어질 수 있습니다, Bob과 Charlie가 공개된 IPv6 주소에 ‘B’ 기능을 표시한 경우 지원합니다.

Alice는 테스트를 원하는 전송 (IPv4 또는 IPv6)을 통해 Bob에게 기존 세션을 사용하여 요청을 보냅니다. Bob이 Alice로부터 IPv4를 통한 요청을 받을 때, Bob은 IPv4 주소를 광고하는 Charlie를 선택해야 합니다. Bob이 Alice로부터 IPv6를 통한 요청을 받을 때, Bob은 IPv6 주소를 광고하는 Charlie를 선택해야 합니다. 실제 Bob-Charlie 통신은 IPv4 또는 IPv6를 통해 이루어질 수 있습니다 (즉, Alice 주소 유형과 무관).

마이그레이션

라우터는 다음 중 하나를 수행할 수 있습니다:

  1. 버전을 0.9.27 또는 그 이상으로 증가시키지 않음

  2. 게시된 IPv6 SSU 주소에서 ‘B’ 기능을 제거

  3. IPv6 피어 테스트 구현