노드 릴레이
주소가 없는 기계를 대신해 공인 주소를 들어 주는 것. NAT 뒤의 노드가 포트를 하나도 열지 않고 도달될 수 있게 한다.
노드 릴레이는 기여자의 기계에 네트워크가 걸 수 있는 주소를 준다. p4는 노드*에게* 연결을 열어 일을 전달하는데, NAT 뒤의 가정용 기계에는 연결을 열 주소가 없다. 릴레이가 공인 주소를 대신 들고, 노드는 릴레이로 나가는 연결 하나만 유지하며, 그 공인 주소로 들어온 일감은 노드가 이미 들고 있던 연결을 타고 내려온다.
p4의 어느 쪽 끝도 릴레이의 존재를 알지 못한다. 거는 쪽은 평범한 주소를 보고, 노드의 에이전트는 여전히 127.0.0.1에만 묶여 그 밖으로는 아무것도 듣지 않는다.
포트포워딩이 아니라 터널인 이유
p4에는 인증이 없다 — 에이전트의 포트에 닿는 누구나 NODE_LOAD·NODE_UNLOAD·INSPECT를 보낼 수 있다. 가정용 공유기의 포트를 그쪽으로 열면 그것을 찾아낸 누구에게나 기계가 노출된다. 릴레이 뒤에서 노드는 아무것도 듣지 않고, 연결이 무언가를 나르기 전에 정산 게이트웨이와 같은 서명 방식으로 운영자 지갑을 증명한다. 도달성과 인증이 하나의 기제로 함께 풀린다.
하지 않는 것
- 트래픽을 읽지 않는다. 페이로드는 바이트 단위로 지나가며 절대 파싱되지 않으므로 릴레이는 명령을 구분하지 못한다 — 그리고 구분해서도 안 된다. 트래픽을 이해하면 바꿀 수 있는 물건이 되기 때문이다.
- 배치를 정하지 않는다. 배치는 운영자의 계획에 남는다. 릴레이에게 노드는 주소일 뿐 그 이상이 아니다.
- 작업의 증거가 아니다. 릴레이를 지나간 바이트는 수행된 추론에 대해 아무 말도 하지 않으며, 기여도로 집계되지 않는다.
관련 항목
기여자의 기계가 돌리는 프로세스인 p4 에이전트, 그리고 릴레이가 주소를 내주기 전에 인증하는 지갑인 노드 운영자도 함께 보라.