원문 캡처 · interrupt.memfault.com
원문 캡처 · interrupt.memfault.com

Thread 1.4는 IPv6 전용 기기가 IPv4 서버와 통신할 수 있도록 NAT64를 규격에 포함했다. Memfault의 프랑수아 발다사리(François Baldassari)는 이 기능을 이용해 nRF54LM20 개발 키트에서 UDP 메시지를 보내는 방법과 필요한 조건을 설명한다.

Matter 기기는 보통 로컬 네트워크에서 동작하고, 인터넷 통신은 허브가 맡는다. 하지만 클라우드로 원격 측정 데이터를 보내거나 자체 서버에 접속하려면 기기가 직접 인터넷에 연결해야 할 수 있다. Thread 기기는 대개 공용 인터넷에서 라우팅할 수 있는 IPv6 주소를 받지 않으므로, Thread 경계 라우터가 NAT64를 지원해야 한다.

NAT64를 이용하면 기기는 Thread 네트워크의 DNS 서버를 통해 서버의 IPv4 주소를 조회하고, 그 주소가 포함된 IPv6 주소로 패킷을 보낸다. 경계 라우터가 주소를 IPv4로 변환해 서버에 전달하며, 응답은 같은 경로를 거쳐 돌아온다. 원문에 따르면 Apple의 HomePod mini와 Apple TV 4K는 NAT64를 지원하지만 모든 Thread 경계 라우터가 지원하는 것은 아니다. NAT64는 Thread 1.4 규격의 요구 사항이므로, 더 많은 허브가 업데이트되면 지원이 늘어날 것으로 전망한다.

예제는 nRF54LM20 DK에서 Nordic Semiconductor의 공개 UDP 에코 서버(udp-echo.nordicsemi.academy:2444)로 메시지를 보내고 응답을 받는다. 기기를 Matter 컨트롤러로 Thread 네트워크에 등록한 뒤 UART 콘솔에서 테스트를 실행한다. 설명된 시험에서는 HomePod를 경계 라우터로 사용했고, 서버가 메시지 앞에 타임스탬프를 붙여 응답했다.

이 통신 방식에는 제약이 있다. Matter는 UDP를 사용하므로 TCP에 의존하는 HTTP·HTTPS·WebSockets를 그대로 쓸 수 없고, Thread의 작은 프레임과 분할 전송을 고려하면 안정적으로 보낼 수 있는 UDP 페이로드는 메시지당 1,200바이트보다 훨씬 작게 잡아야 한다. 암호화에는 TLS 대신 UDP용 DTLS를 사용할 수 있다. 원문은 애플리케이션 프로토콜로 CoAP를 제안하며, CoAP over DTLS가 저전력 기기에 적합한 암호화 통신 방식이라고 설명한다.

개발 예제는 nRF Connect SDK의 Matter 템플릿에서 시작하며, OpenThread DNS 클라이언트를 켜 호스트 이름을 조회한다. 발다사리는 HomePod mini를 사용한 시험에서 일부 호스트 이름의 CNAME 연결을 DNS 프록시가 따라가지 못했다고 덧붙인다. 조회가 실패하면 IPv4 주소를 직접 지정한 뒤 otNat64SynthesizeIp6Address로 NAT64 IPv6 주소를 만들 수 있다.

원문과 nRF54LM20 UDP 예제

참고 자료: Matter 사양, Thread 소개, CSA Distributed Compliance Ledger, Thread 1.4.0 기능, nRF54LM20, nRF54LM20-DK, nRF Connect SDK, CoAP RFC 7252, nRF Cloud CoAP API.