스레드가 네트워크에서 각 기기를 식별하는 방법과 서로 통신하는 데 사용하는 주소 유형을 살펴보겠습니다.
범위
스레드 네트워크에는 유니캐스트 주소 지정에 사용되는 세 가지 범위가 있습니다.
- 링크-로컬: 단일 무선 전송으로 연결할 수 있는 모든 인터페이스
- 메시 로컬: 동일한 스레드 네트워크 내에서 연결할 수 있는 모든 인터페이스
- 글로벌 - 스레드 네트워크 외부에서 연결할 수 있는 모든 인터페이스
처음 두 범위는 스레드 네트워크에서 지정한 접두사에 해당합니다.
링크-로컬은 fe80::/16 프리픽스를 사용하고 메시-로컬은 fd00::/8 프리픽스를 사용합니다.
유니캐스트
단일 스레드 기기를 식별하는 IPv6 유니캐스트 주소가 여러 개 있습니다. 각각 범위와 사용 사례에 따라 기능이 다릅니다.
각 유형을 자세히 알아보기 전에 라우팅 로케이터 (RLOC)라는 일반적인 유형을 자세히 알아보겠습니다. RLOC는 네트워크 토폴로지에서의 위치를 기반으로 스레드 인터페이스를 식별합니다.
라우팅 로케이터가 생성되는 방식
모든 기기에는 라우터 ID와 하위 ID가 할당됩니다. 각 상위 요소는 모든 하위 요소의 표를 유지하며, 이 표의 조합은 토폴로지 내에서 기기를 고유하게 식별합니다. 예를 들어 다음 토폴로지에서 강조 표시된 노드를 고려해 보세요. 여기서 메시 익스텐더 (오각형)의 숫자는 라우터 ID이고 최종 기기 (원)의 숫자는 하위 ID입니다.
각 하위 요소의 라우터 ID는 상위 요소 (메시 익스텐더)에 해당합니다. 메시 익스텐더는 하위 요소가 아니므로 메시 익스텐더의 하위 요소 ID는 항상 0입니다. 이러한 값은 스레드 네트워크의 각 기기에 대해 고유하며 RLOC의 마지막 16비트를 나타내는 RLOC16을 만드는 데 사용됩니다.
예를 들어 왼쪽 상단 노드 (라우터 ID = 1, 하위 ID = 1)의 RLOC16은 다음과 같이 계산됩니다.
RLOC16은 인터페이스 식별자 (IID)의 일부이며 IPv6 주소의 마지막 64비트에 해당합니다. 일부 IID는 일부 유형의 스레드 인터페이스를 식별하는 데 사용할 수 있습니다. 예를 들어 RLOC의 IID는 항상 다음 형식입니다.
0000:00ff:fe00:RLOC16
IID는 메시 로컬 접두사와 결합되어 RLOC를 생성합니다. 예를 들어 메쉬 로컬 접두사 fde5:8dba:82e1:1::/64를 사용하는 경우 RLOC16 = 0x401인 노드의 RLOC는 다음과 같습니다.
위 샘플 토폴로지에서 강조 표시된 모든 노드의 RLOC를 확인하는 데 동일한 로직을 사용할 수 있습니다.
하지만 RLOC는 토폴로지에서 노드의 위치를 기반으로 하므로 토폴로지가 변경되면 노드의 RLOC가 변경될 수 있습니다.
예를 들어 노드 0x400가 스레드 네트워크에서 삭제될 수 있습니다. 노드 0x401와 0x402는 서로 다른 메시 익스텐더에 대한 새 링크를 설정하므로 각각 새 RLOC16과 RLOC가 할당됩니다.
유니캐스트 주소 유형
RLOC는 스레드 기기가 가질 수 있는 여러 IPv6 유니캐스트 주소 중 하나일 뿐입니다. 또 다른 주소 카테고리는 엔드포인트 식별자 (EID)라고 하며, 이는 스레드 네트워크 파티션 내에서 고유한 스레드 인터페이스를 식별합니다. EID는 스레드 네트워크 토폴로지와 독립적입니다.
일반적인 유니캐스트 유형은 아래에 자세히 설명되어 있습니다.
링크-로컬 주소 (LLA) |
|
|---|---|
| 단일 무선 전송으로 도달할 수 있는 스레드 인터페이스를 식별하는 EID입니다. | |
| 예 | fe80::54db:881c:3845:57f4 |
| IID | 802.15.4 확장 주소 기반 |
| 범위 | 링크-로컬 |
| 세부정보 |
|
메시 로컬 EID (ML-EID) |
|
|---|---|
| 네트워크 토폴로지와 관계없이 스레드 인터페이스를 식별하는 EID입니다. 동일한 스레드 파티션 내에서 스레드 인터페이스에 도달하는 데 사용됩니다. 고유 로컬 주소 (ULA)라고도 합니다. | |
| 예 | fde5:8dba:82e1:1:416:993c:8399:35ab |
| IID | 무작위, 커미셔닝이 완료된 후 선택됨 |
| 범위 | 메시 로컬 |
| 세부정보 |
|
라우팅 로케이터 (RLOC) |
|
|---|---|
| 네트워크 토폴로지에서의 위치를 기반으로 스레드 인터페이스를 식별합니다. | |
| 예 | fde5:8dba:82e1:1::ff:fe00:1001 |
| IID | 0000:00ff:fe00:RLOC16 |
| 범위 | 메시 로컬 |
| 세부정보 |
|
애니캐스트 로케이터 (ALOC) |
|
|---|---|
| 목적지의 RLOC를 알 수 없는 경우 RLOC 조회를 통해 스레드 인터페이스를 식별합니다. | |
| 예 | fde5:8dba:82e1:1::ff:fe00:fc01 |
| IID | 0000:00ff:fe00:fcXX |
| 범위 | 메시 로컬 |
| 세부정보 |
|
전역 유니캐스트 주소 (GUA) |
|
|---|---|
| 스레드 네트워크를 넘어 전역 범위에서 스레드 인터페이스를 식별하는 EID입니다. | |
| 예 | 2000::54db:881c:3845:57f4 |
| IID |
|
| 범위 | 전역 |
| 세부정보 |
|
멀티캐스트
멀티캐스트는 여러 기기에 한 번에 정보를 전달하는 데 사용됩니다. 스레드 네트워크에서는 범위에 따라 서로 다른 기기 그룹에서 멀티캐스트를 사용할 수 있도록 특정 주소가 예약됩니다.
| IPv6 주소 | 범위 | 받는사람: |
|---|---|---|
ff02::1 |
링크-로컬 | 모든 FTD 및 MED |
ff02::2 |
링크-로컬 | 모든 FTD |
ff03::1 |
메시 로컬 | 모든 FTD 및 MED |
ff03::2 |
메시 로컬 | 모든 FTD |
위의 멀티캐스트 표에는 절전 모드 종료 기기 (SED)가 수신자로 포함되지 않습니다. 대신 스레드는 SED를 포함한 모든 스레드 노드에 사용되는 링크-로컬 및 영역-로컬 범위 유니캐스트 프리픽스 기반 IPv6 멀티캐스트 주소를 정의합니다. 이러한 멀티캐스트 주소는 유니캐스트 메시 로컬 프리픽스를 기반으로 빌드되므로 스레드 네트워크에 따라 다릅니다 (유니캐스트 프리픽스 기반 IPv6 멀티캐스트 주소에 관한 자세한 내용은 RFC 3306 참고).
이미 나열된 범위를 벗어나는 임의 범위도 스레드 기기에서 지원됩니다.
Anycast
애니캐스트는 대상의 RLOC를 알 수 없는 경우 트래픽을 스레드 인터페이스로 라우팅하는 데 사용됩니다. 애니캐스트 위치 식별자 (ALOC)는 스레드 파티션 내 여러 인터페이스의 위치를 식별합니다. ALOC의 마지막 16비트(ALOC16이라고 함)는 ALOC 유형을 나타내는 0xfcXX 형식입니다.
예를 들어 0xfc01와 0xfc0f 사이의 ALOC16은 DHCPv6 에이전트용으로 예약됩니다. 특정 DHCPv6 에이전트 RLOC를 알 수 없는 경우 (예: 네트워크 토폴로지가 변경된 경우) DHCPv6 에이전트 ALOC에 메시지를 전송하여 RLOC를 가져올 수 있습니다.
스레드는 다음 ALOC16 값을 정의합니다.
| ALOC16 | 유형 |
|---|---|
0xfc00 |
리더 |
0xfc01~0xfc0f |
DHCPv6 에이전트 |
0xfc10~0xfc2f |
서비스 |
0xfc30~0xfc37 |
협회 회장 |
0xfc40~0xfc4e |
Neighbor Discovery Agent |
0xfc38 – 0xfc3f0xfc4f – 0xfcff |
예약됨 |
요약
지금까지 학습한 내용은 다음과 같습니다.
- 스레드 네트워크는 링크 로컬, 메시 로컬, 전역의 세 가지 범위로 구성됩니다.
- 스레드 기기에는 여러 유니캐스트 IPv6 주소가 있습니다.
- RLOC는 스레드 네트워크에서 기기의 위치를 나타냅니다.
- ML-EID는 파티션 내 스레드 기기에 고유하며 애플리케이션에서 사용해야 합니다.
- 스레드는 멀티캐스트를 사용하여 노드 그룹에 데이터를 전달합니다.
- 스레드는 대상의 RLOC를 알 수 없는 경우 애니캐스트를 사용합니다.
스레드의 IPv6 주소 지정에 대해 자세히 알아보려면 스레드 사양의 섹션 5.2와 5.3을 참고하세요.
이해도 테스트
ff03::2 멀티캐스트 주소를 구독합니다. 이를 통해 기기에 대해 알 수 있는 것은 무엇인가요?ff03::2 멀티캐스트 주소를 구독합니다. 이러한 작업은 Mesh-Local 범위에서 실행됩니다.