콘텐츠로 이동

장치 프로비저닝 가이드

This translation was generated using artificial intelligence and has not been reviewed by a human translator. It may contain inaccuracies or errors and should not be relied upon.

이 가이드는 처음부터 끝까지 DoubleZero 장치(DZD) 프로비저닝을 안내합니다. 각 단계는 온보딩 체크리스트와 일치합니다.


전체 구성 이해

단계를 시작하기 전에 구축하는 것의 큰 그림을 살펴봅니다:

flowchart TB
    subgraph Onchain
        SC[DoubleZero 레저]
    end

    subgraph Your Infrastructure
        MGMT[관리 서버<br/>DoubleZero CLI]
        DZD[귀하의 DZD<br/>Arista 스위치]
        DZD ---|WAN 링크| DZD2[귀하의 다른 DZD]
    end

    subgraph Other Contributor
        OtherDZD[상대방 DZD]
    end

    subgraph Users
        VAL[검증자]
        RPC[RPC 노드]
    end

    MGMT -.->|장치,<br/>링크, 인터페이스 등록| SC
    DZD ---|DZX 링크| OtherDZD
    VAL ---|인터넷을 통해 연결| DZD
    RPC ---|인터넷을 통해 연결| DZD

1단계: 사전 요구사항

장치를 프로비저닝하기 전에 물리적 하드웨어 설정과 일부 IP 주소 할당이 필요합니다.

필요한 사항

요구사항 필요한 이유
DZD 하드웨어 Arista 7280CR3A 스위치 (하드웨어 사양 참조)
랙 공간 적절한 공기 흐름을 갖춘 4U
전원 이중 피드, ~4KW 권장
관리 액세스 스위치 구성을 위한 SSH/콘솔 액세스
인터넷 연결 메트릭 발행 및 컨트롤러에서 구성 가져오기
공개 IPv4 블록 DZ 프리픽스 풀을 위한 최소 /29 (아래 참조)

DoubleZero CLI 설치

DoubleZero CLI(doublezero)는 프로비저닝 전반에 걸쳐 장치 등록, 링크 생성 및 기여 관리에 사용됩니다. DZD 스위치가 아닌 관리 서버 또는 VM에 설치해야 합니다. 스위치는 Config Agent와 Telemetry Agent(4단계에서 설치됨)만 실행합니다.

Ubuntu / Debian:

curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.deb.sh | sudo -E bash
sudo apt-get install doublezero

Rocky Linux / RHEL:

curl -1sLf https://dl.cloudsmith.io/public/malbeclabs/doublezero/setup.rpm.sh | sudo -E bash
sudo yum install doublezero

데몬이 실행 중인지 확인합니다:

sudo systemctl status doublezerod

DZ 프리픽스 이해

DZ 프리픽스는 DoubleZero 프로토콜이 IP 할당을 위해 관리하는 공개 IP 주소 블록입니다.

flowchart LR
    subgraph "귀하의 /29 블록 (8개 IP)"
        IP1["첫 번째 IP<br/>장치용<br/>예약됨"]
        IP2["IP 2"]
        IP3["IP 3"]
        IP4["..."]
        IP8["IP 8"]
    end

    IP1 -->|할당됨| LO[귀하의 DZD의<br/>Loopback100]
    IP2 -->|할당됨| U1[사용자 1]
    IP3 -->|할당됨| U2[사용자 2]

DZ 프리픽스 사용 방법:

  • 첫 번째 IP: 장치용으로 예약됨 (Loopback100 인터페이스에 할당)
  • 나머지 IP: DZD에 연결하는 특정 유형의 사용자에게 할당됨:
    • IBRLWithAllocatedIP 사용자
    • EdgeFiltering 사용자
    • 멀티캐스트 발행자
  • IBRL 사용자: 이 풀을 소비하지 않음 (자신의 공개 IP 사용)

DZ 프리픽스 규칙

다음 용도로 사용할 수 없습니다:

  • 자신의 네트워크 장비
  • DIA 인터페이스의 점대점 링크
  • 관리 인터페이스
  • DZ 프로토콜 외부의 모든 인프라

요구사항:

  • 전 세계적으로 라우팅 가능한(공개) IPv4 주소여야 합니다
  • 사설 IP 범위(10.x, 172.16-31.x, 192.168.x)는 스마트 계약에서 거부됩니다
  • 최소 크기: /29 (8개 주소), 더 큰 프리픽스 권장 (예: /28, /27)
  • 전체 블록이 사용 가능해야 합니다 — 어떤 주소도 사전 할당하지 마세요

자신의 장비(DIA 인터페이스 IP, 관리 등)를 위한 주소가 필요한 경우 별도의 주소 풀을 사용하세요.


2단계: 계정 설정

이 단계에서는 네트워크에서 귀하와 장치를 식별하는 암호화 키를 생성합니다.

CLI 실행 위치

스위치에 CLI를 설치하지 마세요

DoubleZero CLI(doublezero)는 Arista 스위치가 아닌 관리 서버 또는 VM에 설치해야 합니다.

flowchart LR
    subgraph "관리 서버/VM"
        CLI[DoubleZero CLI]
        KEYS[귀하의 키쌍]
    end

    subgraph "귀하의 DZD 스위치"
        CA[Config Agent]
        TA[Telemetry Agent]
    end

    CLI -->|장치, 링크 생성| BC[블록체인]
    CA -->|구성 가져오기| CTRL[컨트롤러]
    TA -->|메트릭 제출| BC
관리 서버에 설치 스위치에 설치
doublezero CLI Config Agent
서비스 키쌍 Telemetry Agent
메트릭 발행자 키쌍 메트릭 발행자 키쌍 (복사)

키란 무엇인가?

키를 안전한 로그인 자격 증명으로 생각하세요:

  • 서비스 키: 기여자 신원 - CLI 명령 실행에 사용
  • 메트릭 발행자 키: 텔레메트리 데이터 제출을 위한 장치 신원

둘 다 암호화 키쌍입니다(공유하는 공개 키와 비밀로 유지하는 개인 키).

flowchart LR
    subgraph "귀하의 키"
        SK[서비스 키<br/>~/.config/solana/id.json]
        MK[메트릭 발행자 키<br/>~/.config/doublezero/metrics-publisher.json]
    end

    SK -->|사용됨| CLI[CLI 명령<br/>doublezero device create<br/>doublezero link create]
    MK -->|사용됨| TEL[Telemetry Agent<br/>온체인 메트릭 제출]

2.1단계: 서비스 키 생성

이것이 DoubleZero와 상호 작용하기 위한 주요 신원입니다.

doublezero keygen

이는 기본 위치에 키쌍을 생성합니다. 출력은 공개 키를 보여줍니다 — 이것이 DZF와 공유할 것입니다.

2.2단계: 메트릭 발행자 키 생성

이 키는 Telemetry Agent가 메트릭 제출에 서명하는 데 사용됩니다.

doublezero keygen -o ~/.config/doublezero/metrics-publisher.json

2.3단계: DZF에 키 제출

DoubleZero Foundation 또는 Malbec Labs에 연락하여 다음을 제공합니다:

  1. 서비스 키 공개 키
  2. GitHub 사용자 이름 (저장소 액세스용)

그들은:

  • 온체인에서 기여자 계정을 생성합니다
  • 비공개 기여자 저장소에 대한 액세스를 부여합니다

2.4단계: 계정 확인

확인이 완료되면 기여자 계정이 존재하는지 확인합니다:

doublezero contributor list

목록에 기여자 코드가 표시되어야 합니다.

2.5단계: 기여자 저장소 액세스

malbeclabs/contributors 저장소에는 다음이 포함됩니다:

  • 기본 장치 구성
  • TCAM 프로필
  • ACL 구성
  • 추가 설정 지침

장치별 구성을 위해 해당 지침을 따르세요.


3단계: 장치 프로비저닝

이제 블록체인에 물리적 장치를 등록하고 인터페이스를 구성합니다.

장치 유형 이해

flowchart TB
    subgraph "엣지 장치"
        E[엣지 DZD]
        EU[사용자가 여기에 연결]
        EU --> E
        E <-->|DZX 링크| ED[다른 DZD]
    end

    subgraph "트랜짓 장치"
        T[트랜짓 DZD]
        T <-->|WAN 링크| T2[다른 DZD]
        T <-->|DZX 링크| TD[다른 DZD]
    end

    subgraph "하이브리드 장치"
        H[하이브리드 DZD]
        HU[사용자가 여기에 연결]
        HU --> H
        H <-->|WAN 링크| H2[다른 DZD]
        H <-->|DZX 링크| HD[다른 DZD]
    end
유형 기능 사용 시기
엣지 사용자 연결만 허용 단일 위치, 사용자 대면만
트랜짓 장치 간 트래픽 이동 백본 연결, 사용자 없음
하이브리드 사용자 연결 및 백본 모두 가장 일반적 - 모든 것 수행

3.1단계: 위치 및 Exchange 찾기

장치를 생성하기 전에 데이터 센터 위치와 가장 가까운 exchange의 코드를 조회합니다:

# 사용 가능한 위치(데이터 센터) 목록
doublezero location list

# 사용 가능한 exchange(상호 연결 지점) 목록
doublezero exchange list

3.2단계: 온체인에서 장치 생성

블록체인에 장치를 등록합니다:

doublezero device create \
  --code <YOUR_DEVICE_CODE> \
  --contributor <YOUR_CONTRIBUTOR_CODE> \
  --device-type hybrid \
  --location <LOCATION_CODE> \
  --exchange <EXCHANGE_CODE> \
  --public-ip <DEVICE_PUBLIC_IP> \
  --dz-prefixes <YOUR_DZ_PREFIX>

예시:

doublezero device create \
  --code nyc-dz001 \
  --contributor acme \
  --device-type hybrid \
  --location EQX-NY5 \
  --exchange nyc \
  --public-ip "203.0.113.10" \
  --dz-prefixes "198.51.100.0/28"

예상 출력:

Signature: 4vKz8H...truncated...7xPq2

장치가 생성되었는지 확인합니다:

doublezero device list | grep nyc-dz001

파라미터 설명:

파라미터 의미
--code 장치의 고유 이름 (예: nyc-dz001)
--contributor 기여자 코드 (DZF가 제공)
--device-type hybrid, transit 또는 edge
--location location list의 데이터 센터 코드
--exchange exchange list의 가장 가까운 exchange 코드
--public-ip 사용자가 인터넷을 통해 장치에 연결하는 공개 IP
--dz-prefixes 사용자를 위해 할당된 IP 블록

3.3단계: 필요한 루프백 인터페이스 생성

모든 장치에는 내부 라우팅을 위해 두 개의 루프백 인터페이스가 필요합니다:

# VPNv4 루프백
doublezero device interface create <DEVICE_CODE> Loopback255 --loopback-type vpnv4

# IPv4 루프백
doublezero device interface create <DEVICE_CODE> Loopback256 --loopback-type ipv4

예상 출력 (각 명령):

Signature: 3mNx9K...truncated...8wRt5

3.4단계: 물리적 인터페이스 생성

사용할 물리적 포트를 등록합니다:

# 기본 인터페이스
doublezero device interface create <DEVICE_CODE> Ethernet1/1

예상 출력:

Signature: 7pQw2R...truncated...4xKm9

3.5단계: CYOA 인터페이스 생성 (엣지/하이브리드 장치의 경우)

하이브리드 및 엣지 DZD에는 사용자가 GRE 터널을 종료하는 두 개의 공개 IP 주소가 필요합니다. 사용자는 유니캐스트, 멀티캐스트 또는 둘 다를 통해 연결할 수 있으며, 어떤 IP가 어떤 목적으로 사용되는지는 사용자별로 순환됩니다.

두 IP 모두 물리적 인터페이스 또는 루프백에서 --user-tunnel-endpoint true로 등록해야 합니다. 이는 장치 생성 시 제공한 IP도 포함되며, 해당 IP도 여기서 명시적으로 등록해야 합니다.

IP가 부족한 경우 DZ 프리픽스의 첫 번째 /32를 두 IP 중 하나로 사용할 수 있습니다.

CYOA 및 DIA

유형 플래그 목적
DIA --interface-dia dia 포트를 직접 인터넷 접근으로 표시
CYOA --interface-cyoa <서브타입> 사용자가 장치에 GRE 터널을 연결하는 방법 선언

CYOA 플래그는 항상 물리적 인터페이스(이더넷 포트 또는 포트 채널)에 설정됩니다. 루프백에는 절대 설정하지 않습니다.

CYOA 서브타입 사용 시기
gre-over-dia 사용자가 공개 인터넷을 통해 연결. 가장 일반적.
gre-over-private-peering 사용자가 직접 크로스 커넥트 또는 전용 회선으로 연결
gre-over-public-peering 사용자가 인터넷 익스체인지(IX)에서 피어링
gre-over-fabric 사용자가 공동 배치되어 로컬 패브릭을 통해 연결
gre-over-cable 단일 전용 사용자에 대한 직접 케이블 연결

시나리오 A: 단일 물리적 인터페이스

ISP로의 물리적 업링크 하나. Ethernet1/1이 CYOA 및 DIA 인터페이스이며 두 공개 IP 중 하나를 가집니다. Loopback100이 두 번째 공개 IP를 가집니다.

flowchart LR
    USERS(["최종 사용자"])

    subgraph DZD["DZD"]
        E1["Eth1/1
        203.0.113.1/30
        CYOA · DIA · user tunnel endpoint"]
        LO["Loopback100
        198.51.100.1/32\n        user tunnel endpoint"]
        E1 --- LO
    end

    ISP["ISP 라우터
    203.0.113.2/30"]

    ISP -- "10GbE" --- E1
    USERS -. "GRE 터널" .-> E1
    USERS -. "GRE 터널" .-> LO
인터페이스 --interface-cyoa --interface-dia --ip-net --bandwidth --cir --routing-mode --user-tunnel-endpoint
Ethernet1/1 gre-over-dia dia 기여자 할당 IP/서브넷 포트 속도 약정 속도 bgp 또는 static true
Loopback100 공개 /32 0bps true

시나리오 A 기반 명령 예시:

doublezero device interface create mydzd-nyc01 Ethernet1/1 \
  --interface-cyoa gre-over-dia \
  --interface-dia dia \
  --ip-net 203.0.113.1/30 \
  --bandwidth 10Gbps \
  --cir 1Gbps \
  --routing-mode bgp \
  --user-tunnel-endpoint true

doublezero device interface create mydzd-nyc01 Loopback100 \
  --ip-net 198.51.100.1/32 \
  --bandwidth 0bps \
  --user-tunnel-endpoint true

시나리오 B: 포트 채널 (LAG)

DZD가 IP가 있는 포트 채널을 통해 업스트림 장치에 연결됩니다. 포트 채널이 공개 IP 하나를 가지며 CYOA 엔드포인트입니다. Loopback100이 두 번째 공개 IP를 가집니다.

flowchart LR
    USERS(["최종 사용자"])

    subgraph SW["업스트림 라우터/스위치"]
        SWPC(["bond0
        203.0.113.2/30"])
    end

    subgraph DZD["DZD"]
        subgraph PC["Port-Channel1 · 203.0.113.1/30 · CYOA · DIA · user tunnel endpoint"]
            E1["Eth1/1"]
            E2["Eth2/1"]
        end
        LO["Loopback100
        198.51.100.1/32\n        user tunnel endpoint"]
        PC --- LO
    end

    SWPC -- "2x 10GbE" --- PC
    USERS -. "GRE 터널" .-> PC
    USERS -. "GRE 터널" .-> LO
인터페이스 --interface-cyoa --interface-dia --ip-net --bandwidth --cir --routing-mode --user-tunnel-endpoint
Port-Channel1 gre-over-dia dia 기여자 할당 IP/서브넷 결합 LAG 속도 약정 속도 bgp 또는 static true
Loopback100 공개 /32 0bps true

시나리오 B 기반 명령 예시:

doublezero device interface create mydzd-fra01 Port-Channel1 \
  --interface-cyoa gre-over-dia \
  --interface-dia dia \
  --ip-net 203.0.113.1/30 \
  --bandwidth 20Gbps \
  --cir 2Gbps \
  --routing-mode bgp \
  --user-tunnel-endpoint true

doublezero device interface create mydzd-fra01 Loopback100 \
  --ip-net 198.51.100.1/32 \
  --bandwidth 0bps \
  --user-tunnel-endpoint true

시나리오 C: 별도 라우터로의 이중 물리적 업링크

각 물리적 인터페이스가 다른 업스트림 라우터에 연결됩니다. 두 공개 IP는 Loopback100과 Loopback101에 있으며, 모두 사용자 터널 엔드포인트로 등록됩니다.

flowchart LR
    USERS(["최종 사용자"])

    RA["라우터 A
    203.0.113.2/30"]
    RB["라우터 B
    203.0.113.6/30"]

    subgraph DZD["DZD"]
        E1["Eth1/1
        203.0.113.1/30
        CYOA · DIA"]
        E2["Eth2/1
        203.0.113.5/30
        CYOA · DIA"]
        LO0["Loopback100
        198.51.100.1/32\n        user tunnel endpoint"]
        LO1["Loopback101
        198.51.100.2/32\n        user tunnel endpoint"]
        E1 --> LO0
        E2 --> LO1
    end

    RA -- "10GbE" --- E1
    RB -- "10GbE" --- E2
    USERS -. "GRE 터널" .-> LO0
    USERS -. "GRE 터널" .-> LO1
인터페이스 --interface-cyoa --interface-dia --ip-net --bandwidth --cir --routing-mode --user-tunnel-endpoint
Ethernet1/1 gre-over-dia dia 기여자 할당 IP/서브넷 포트 속도 약정 속도 bgp 또는 static
Ethernet2/1 gre-over-dia dia 기여자 할당 IP/서브넷 포트 속도 약정 속도 bgp 또는 static
Loopback100 공개 /32 0bps true
Loopback101 공개 /32 0bps true

시나리오 C 기반 명령 예시:

doublezero device interface create mydzd-ams01 Ethernet1/1 \
  --interface-cyoa gre-over-dia \
  --interface-dia dia \
  --ip-net 203.0.113.1/30 \
  --bandwidth 10Gbps \
  --cir 1Gbps \
  --routing-mode bgp

doublezero device interface create mydzd-ams01 Ethernet2/1 \
  --interface-cyoa gre-over-dia \
  --interface-dia dia \
  --ip-net 203.0.113.5/30 \
  --bandwidth 10Gbps \
  --cir 1Gbps \
  --routing-mode bgp

doublezero device interface create mydzd-ams01 Loopback100 \
  --ip-net 198.51.100.1/32 \
  --bandwidth 0bps \
  --user-tunnel-endpoint true

doublezero device interface create mydzd-ams01 Loopback101 \
  --ip-net 198.51.100.2/32 \
  --bandwidth 0bps \
  --user-tunnel-endpoint true

3.6단계: 장치 확인

doublezero device list

예시 출력:

 account                                      | code      | contributor | location | exchange | device_type | public_ip    | dz_prefixes     | users | max_users | status    | health  | mgmt_vrf | owner
 7xKm9pQw2R4vHt3...                          | nyc-dz001 | acme        | EQX-NY5  | nyc      | hybrid      | 203.0.113.10 | 198.51.100.0/28 | 0     | 14        | activated | pending |          | 5FMtd5Woq5XAAg54...

장치가 activated 상태로 표시되어야 합니다.


4단계: 링크 설정 및 에이전트 설치

링크는 장치를 나머지 DoubleZero 네트워크에 연결합니다.

링크 이해

flowchart LR
    subgraph "귀하의 네트워크"
        D1[귀하의 DZD 1<br/>NYC]
        D2[귀하의 DZD 2<br/>LAX]
    end

    subgraph "다른 기여자"
        O1[상대방 DZD<br/>NYC]
    end

    D1 ---|WAN 링크<br/>동일 기여자| D2
    D1 ---|DZX 링크<br/>다른 기여자| O1
링크 유형 연결 수락
WAN 링크 귀하의 두 장치 자동 (둘 다 소유)
DZX 링크 귀하의 장치 대 다른 기여자 상대방 수락 필요

4.1단계: WAN 링크 생성 (여러 장치가 있는 경우)

WAN 링크는 귀하의 자체 장치를 연결합니다:

doublezero link create wan \
  --code <LINK_CODE> \
  --contributor <YOUR_CONTRIBUTOR> \
  --side-a <DEVICE_1_CODE> \
  --side-a-interface <INTERFACE_ON_DEVICE_1> \
  --side-z <DEVICE_2_CODE> \
  --side-z-interface <INTERFACE_ON_DEVICE_2> \
  --bandwidth 10000 \
  --mtu 9000 \
  --delay-ms 20 \
  --jitter-ms 1

예시:

doublezero link create wan \
  --code nyc-lax-wan01 \
  --contributor acme \
  --side-a nyc-dz001 \
  --side-a-interface Ethernet3/1 \
  --side-z lax-dz001 \
  --side-z-interface Ethernet3/1 \
  --bandwidth 10000 \
  --mtu 9000 \
  --delay-ms 65 \
  --jitter-ms 1

예상 출력:

Signature: 5tNm7K...truncated...9pRw2

4.2단계: DZX 링크 생성

DZX 링크는 장치를 다른 기여자의 DZD에 직접 연결합니다:

doublezero link create dzx \
  --code <DEVICE_CODE_A:DEVICE_CODE_Z> \
  --contributor <YOUR_CONTRIBUTOR> \
  --side-a <YOUR_DEVICE_CODE> \
  --side-a-interface <YOUR_INTERFACE> \
  --side-z <OTHER_DEVICE_CODE> \
  --bandwidth <BANDWIDTH in Kbps, Mbps, or Gbps> \
  --mtu <MTU> \
  --delay-ms <DELAY> \
  --jitter-ms <JITTER>

예상 출력:

Signature: 8mKp3W...truncated...2nRx7

DZX 링크를 생성한 후 다른 기여자가 이를 수락해야 합니다:

# 다른 기여자가 이것을 실행합니다
doublezero link accept \
  --code <LINK_CODE> \
  --side-z-interface <THEIR_INTERFACE>

예상 출력 (수락하는 기여자):

Signature: 6vQt9L...truncated...3wPm4

4.3단계: 링크 확인

doublezero link list

예시 출력:

 account                                      | code          | contributor | side_a_name | side_a_iface_name | side_z_name | side_z_iface_name | link_type | bandwidth | mtu  | delay_ms | jitter_ms | delay_override_ms | tunnel_id | tunnel_net      | status    | health  | owner
 8vkYpXaBW8RuknJq...                         | nyc-dz001:lax-dz001 | acme        | nyc-dz001   | Ethernet3/1       | lax-dz001   | Ethernet3/1       | WAN       | 10Gbps    | 9000 | 65.00ms  | 1.00ms    | 0.00ms            | 42        | 172.16.0.84/31  | activated | pending | 5FMtd5Woq5XAAg54...

양쪽이 구성되면 링크는 activated 상태를 표시해야 합니다.


에이전트 설치

두 개의 소프트웨어 에이전트가 DZD에서 실행됩니다:

flowchart TB
    subgraph "귀하의 DZD"
        CA[Config Agent]
        TA[Telemetry Agent]
        HW[스위치 하드웨어/소프트웨어]
    end

    CA -->|구성 폴링| CTRL[컨트롤러 서비스]
    CA -->|구성 적용| HW

    HW -->|메트릭| TA
    TA -->|온체인 제출| BC[DoubleZero 레저]
에이전트 기능
Config Agent 컨트롤러에서 구성을 가져와 스위치에 적용
Telemetry Agent 다른 장치에 대한 대기 시간/손실 측정, 온체인으로 메트릭 보고

4.4단계: Config Agent 설치

스위치에서 API 활성화

EOS 구성에 추가:

management api eos-sdk-rpc
    transport grpc eapilocal
        localhost loopback vrf default
        service all
        no disabled

VRF 참고

관리 VRF 이름이 다른 경우(예: management) default를 해당 이름으로 교체하세요.

에이전트 다운로드 및 설치

# 스위치에서 bash 입력
switch# bash
$ sudo bash
# cd /mnt/flash
# wget AGENT_DOWNLOAD_URL
# exit
$ exit

# EOS 확장으로 설치
switch# copy flash:AGENT_FILENAME extension:
switch# extension AGENT_FILENAME
switch# copy installed-extensions boot-extensions

확장 확인

switch# show extensions

상태는 "A, I, B"여야 합니다:

Name                                        Version/Release     Status     Extension
------------------------------------------- ------------------- ---------- ---------
AGENT_FILENAME    MAINNET_CLIENT_VERSION/1             A, I, B    1

A: available | NA: not available | I: installed | F: forced | B: install at boot

에이전트 구성 및 시작

EOS 구성에 추가:

daemon doublezero-agent
    exec /usr/local/bin/doublezero-agent -pubkey <YOUR_DEVICE_PUBKEY>
    no shut

VRF 참고

관리 VRF가 default가 아닌 경우(즉, 네임스페이스가 ns-default가 아닌 경우) exec 명령 앞에 exec /sbin/ip netns exec ns-<VRF>를 붙입니다. 예를 들어 VRF가 management인 경우:

daemon doublezero-agent
    exec /sbin/ip netns exec ns-management /usr/local/bin/doublezero-agent -pubkey <YOUR_DEVICE_PUBKEY>
    no shut

장치 공개 키를 doublezero device listaccount 열에서 가져옵니다.

실행 확인

switch# show agent doublezero-agent logs

"Starting doublezero-agent" 및 성공적인 컨트롤러 연결이 표시되어야 합니다.

4.5단계: Telemetry Agent 설치

메트릭 발행자 키를 장치에 복사

scp ~/.config/doublezero/metrics-publisher.json <SWITCH_IP>:/mnt/flash/metrics-publisher-keypair.json

온체인에 메트릭 발행자 등록

doublezero device update \
  --pubkey <DEVICE_ACCOUNT> \
  --metrics-publisher <METRICS_PUBLISHER_PUBKEY>

metrics-publisher.json 파일에서 공개 키를 가져옵니다.

에이전트 다운로드 및 설치

switch# bash
$ sudo bash
# cd /mnt/flash
# wget TELEMETRY_DOWNLOAD_URL
# exit
$ exit

# EOS 확장으로 설치
switch# copy flash:TELEMETRY_FILENAME extension:
switch# extension TELEMETRY_FILENAME
switch# copy installed-extensions boot-extensions

확장 확인

switch# show extensions

상태는 "A, I, B"여야 합니다:

Name                                        Version/Release     Status     Extension
------------------------------------------- ------------------- ---------- ---------
TELEMETRY_FILENAME    MAINNET_CLIENT_VERSION/1             A, I, B    1

A: available | NA: not available | I: installed | F: forced | B: install at boot

에이전트 구성 및 시작

EOS 구성에 추가:

daemon doublezero-telemetry
    exec /usr/local/bin/doublezero-telemetry --local-device-pubkey <DEVICE_ACCOUNT> --env mainnet --keypair /mnt/flash/metrics-publisher-keypair.json
    no shut

VRF 참고

관리 VRF가 default가 아닌 경우(즉, 네임스페이스가 ns-default가 아닌 경우) exec 명령에 --management-namespace ns-<VRF>를 추가합니다. 예를 들어 VRF가 management인 경우:

daemon doublezero-telemetry
    exec /usr/local/bin/doublezero-telemetry --management-namespace ns-management --local-device-pubkey <DEVICE_ACCOUNT> --env mainnet --keypair /mnt/flash/metrics-publisher-keypair.json
    no shut

실행 확인

switch# show agent doublezero-telemetry logs

"Starting telemetry collector" 및 "Starting submission loop"가 표시되어야 합니다.


5단계: 링크 번인

모든 새 링크는 트래픽을 전달하기 전에 번인해야 합니다

새 링크는 프로덕션 트래픽을 활성화하기 전에 최소 24시간 동안 드레인되어야 합니다. 이 번인 요구사항은 링크가 서비스 준비가 되기 전에 약 20만 DZ 레저 슬롯(~20시간)의 클린 메트릭을 지정하는 RFC12: 네트워크 프로비저닝에 정의되어 있습니다.

에이전트가 설치 및 실행되면 최소 24시간 연속으로 metrics.doublezero.xyz에서 링크를 모니터링합니다:

  • "DoubleZero Device-Link Latencies" 대시보드 — 시간에 따른 링크의 제로 패킷 손실 확인
  • "DoubleZero Network Metrics" 대시보드 — 링크의 제로 오류 확인

번인 기간이 제로 손실 및 제로 오류의 클린 링크를 보여준 후에만 링크의 드레인을 해제합니다.


6단계: 검증 및 활성화

모든 것이 작동하는지 확인하기 위해 이 체크리스트를 실행합니다.

장치는 잠금 상태로 시작됩니다 (max_users = 0)

장치가 생성되면 max_users가 기본적으로 0으로 설정됩니다. 즉, 아직 사용자가 연결할 수 없습니다. 이는 의도적인 것입니다 — 사용자 트래픽을 허용하기 전에 모든 것이 작동하는지 확인해야 합니다.

max_users를 0 이상으로 설정하기 전에 다음을 완료해야 합니다:

  1. 모든 링크가 metrics.doublezero.xyz에서 제로 손실/오류로 24시간 번인을 완료했는지 확인
  2. DZ/Malbec Labs와 조율하여 연결 테스트 실행:
    • 테스트 사용자가 장치에 연결할 수 있는가?
    • 사용자가 DZ 네트워크를 통해 경로를 수신하는가?
    • 사용자가 DZ 네트워크를 통해 엔드-투-엔드로 트래픽을 라우팅할 수 있는가?
  3. DZ/ML이 테스트 통과를 확인한 후에만 max_users를 96으로 설정합니다:
doublezero device update --pubkey <DEVICE_ACCOUNT> --max-users 96

장치 확인

# 장치가 "activated" 상태로 표시되어야 합니다
doublezero device list | grep <YOUR_DEVICE_CODE>

예상 출력:

 7xKm9pQw2R4vHt3... | nyc-dz001 | acme | EQX-NY5 | nyc | hybrid | 203.0.113.10 | 198.51.100.0/28 | 0 | 14 | activated | pending | | 5FMtd5Woq5XAAg54...
# 인터페이스가 나열되어야 합니다
doublezero device interface list | grep <YOUR_DEVICE_CODE>

예상 출력:

 nyc-dz001 | Loopback255 | loopback | vpnv4 | none | none | 0 | 0 | 1500 | static | 0 | 172.16.1.91/32  | 56 | false | activated
 nyc-dz001 | Loopback256 | loopback | ipv4  | none | none | 0 | 0 | 1500 | static | 0 | 172.16.1.100/32 | 0  | false | activated
 nyc-dz001 | Ethernet1/1 | physical | none  | none | none | 0 | 0 | 1500 | static | 0 |                 | 0  | false | activated

링크 확인

# 링크가 "activated" 상태를 표시해야 합니다
doublezero link list | grep <YOUR_DEVICE_CODE>

예상 출력:

 8vkYpXaBW8RuknJq... | nyc-lax-wan01 | acme | nyc-dz001 | Ethernet3/1 | lax-dz001 | Ethernet3/1 | WAN | 10Gbps | 9000 | 65.00ms | 1.00ms | 0.00ms | 42 | 172.16.0.84/31 | activated | pending | 5FMtd5Woq5XAAg54...

에이전트 확인

스위치에서:

# Config Agent가 성공적인 구성 가져오기를 표시해야 합니다
switch# show agent doublezero-agent logs | tail -20

# Telemetry Agent가 성공적인 제출을 표시해야 합니다
switch# show agent doublezero-telemetry logs | tail -20

최종 검증 다이어그램

flowchart TB
    subgraph "검증 체크리스트"
        D[장치 상태: activated?]
        I[인터페이스: 등록됨?]
        L[링크: activated?]
        CA[Config Agent: 구성 가져오는 중?]
        TA[Telemetry Agent: 메트릭 제출 중?]
    end

    D --> PASS
    I --> PASS
    L --> PASS
    CA --> PASS
    TA --> PASS

    PASS[모든 확인 통과] --> NOTIFY[DZF/Malbec Labs에 통지<br/>기술적으로 준비됨!]

문제 해결

장치 생성 실패

  • 서비스 키가 승인되었는지 확인합니다 (doublezero contributor list)
  • 위치 및 exchange 코드가 유효한지 확인합니다
  • DZ 프리픽스가 유효한 공개 IP 범위인지 확인합니다

"requested" 상태에서 멈춘 링크

  • DZX 링크는 다른 기여자의 수락이 필요합니다
  • 상대방에게 doublezero link accept 실행 요청

Config Agent가 연결되지 않음

  • 관리 네트워크에 인터넷 액세스가 있는지 확인합니다
  • VRF 구성이 설정과 일치하는지 확인합니다
  • 장치 공개 키가 올바른지 확인합니다

Telemetry Agent가 제출하지 않음

  • 메트릭 발행자 키가 온체인에 등록되었는지 확인합니다
  • 스위치에 키쌍 파일이 존재하는지 확인합니다
  • 장치 계정 공개 키가 올바른지 확인합니다

다음 단계

  • 에이전트 업그레이드 및 링크 관리에 대한 운영 가이드 검토
  • 용어 정의는 용어집 확인
  • 문제가 발생하면 DZF/Malbec Labs에 문의