Vai al contenuto

Guida al Provisioning dei Dispositivi

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.

Questa guida illustra il provisioning di un DoubleZero Device (DZD) dall'inizio alla fine. Ogni fase corrisponde alla Checklist di Onboarding.


Come Si Incastra Tutto

Prima di entrare nei dettagli, ecco il quadro generale di ciò che stai costruendo:

flowchart TB
    subgraph Onchain
        SC[DoubleZero Ledger]
    end

    subgraph Your Infrastructure
        MGMT[Management Server<br/>DoubleZero CLI]
        DZD[Your DZD<br/>Arista Switch]
        DZD ---|WAN Link| DZD2[Your other DZD]
    end

    subgraph Other Contributor
        OtherDZD[Their DZD]
    end

    subgraph Users
        VAL[Validators]
        RPC[RPC Nodes]
    end

    MGMT -.->|Registers devices,<br/>links, interfaces| SC
    DZD ---|DZX Link| OtherDZD
    VAL ---|Connect via Internet| DZD
    RPC ---|Connect via Internet| DZD

Fase 1: Prerequisiti

Prima di poter effettuare il provisioning di un dispositivo, è necessario che l'hardware fisico sia configurato e alcuni indirizzi IP allocati.

Cosa Ti Serve

Requisito Perché È Necessario
Hardware DZD Switch Arista 7280CR3A (vedi specifiche hardware)
Spazio Rack 4U con adeguato flusso d'aria
Alimentazione Alimentazioni ridondanti, ~4KW raccomandato
Accesso di Gestione Accesso SSH/console per configurare lo switch
Connettività Internet Per la pubblicazione di metriche e per recuperare la configurazione dal controller
Blocco IPv4 Pubblico Minimo /29 per il pool di prefissi DZ (vedi sotto)

Installa la CLI DoubleZero

La CLI DoubleZero (doublezero) viene utilizzata durante tutto il provisioning per registrare dispositivi, creare link e gestire il contributo. Deve essere installata su un server di gestione o VM — non sullo switch DZD stesso. Lo switch esegue solo il Config Agent e il Telemetry Agent (installati nella Fase 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

Verifica che il daemon sia in esecuzione:

sudo systemctl status doublezerod

Comprendere il Tuo Prefisso DZ

Il tuo prefisso DZ è un blocco di indirizzi IP pubblici che il protocollo DoubleZero gestisce per l'allocazione degli IP.

flowchart LR
    subgraph "Your /29 Block (8 IPs)"
        IP1["First IP<br/>Reserved for<br/>your device"]
        IP2["IP 2"]
        IP3["IP 3"]
        IP4["..."]
        IP8["IP 8"]
    end

    IP1 -->|Assigned to| LO[Loopback100<br/>on your DZD]
    IP2 -->|Allocated to| U1[User 1]
    IP3 -->|Allocated to| U2[User 2]

Come vengono usati i prefissi DZ:

  • Primo IP: Riservato per il tuo dispositivo (assegnato all'interfaccia Loopback100)
  • IP Rimanenti: Allocati a specifici tipi di utenti che si connettono al tuo DZD:
    • Utenti IBRLWithAllocatedIP
    • Utenti EdgeFiltering
    • Publisher multicast
  • Utenti IBRL: NON consumano da questo pool (usano il proprio IP pubblico)

Regole del Prefisso DZ

NON PUOI usare questi indirizzi per:

  • La tua infrastruttura di rete
  • Link point-to-point sulle interfacce DIA
  • Interfacce di gestione
  • Qualsiasi infrastruttura al di fuori del protocollo DZ

Requisiti:

  • Devono essere indirizzi IPv4 globalmente instradabili (pubblici)
  • Gli intervalli IP privati (10.x, 172.16-31.x, 192.168.x) vengono rifiutati dallo smart contract
  • Dimensione minima: /29 (8 indirizzi), prefissi più grandi preferiti (es. /28, /27)
  • L'intero blocco deve essere disponibile — non pre-allocare alcun indirizzo

Se hai bisogno di indirizzi per la tua infrastruttura (IP di interfaccia DIA, gestione, ecc.), usa un pool di indirizzi separato.


Fase 2: Configurazione dell'Account

In questa fase, crei le chiavi crittografiche che identificano te e i tuoi dispositivi sulla rete.

Dove Eseguire la CLI

NON installare la CLI sul tuo switch

La CLI DoubleZero (doublezero) deve essere installata su un server di gestione o VM, non sullo switch Arista.

flowchart LR
    subgraph "Management Server/VM"
        CLI[DoubleZero CLI]
        KEYS[Your Keypairs]
    end

    subgraph "Your DZD Switch"
        CA[Config Agent]
        TA[Telemetry Agent]
    end

    CLI -->|Creates devices, links| BC[Blockchain]
    CA -->|Pulls config| CTRL[Controller]
    TA -->|Submits metrics| BC
Installare sul Server di Gestione Installare sullo Switch
CLI doublezero Config Agent
La tua service keypair Telemetry Agent
La tua metrics publisher keypair Metrics publisher keypair (copia)

Cosa Sono le Chiavi?

Pensa alle chiavi come credenziali di accesso sicure:

  • Service Key: La tua identità come contributore - usata per eseguire i comandi CLI
  • Metrics Publisher Key: L'identità del tuo dispositivo per l'invio di dati di telemetria

Entrambe sono keypair crittografiche (una chiave pubblica che condividi, una chiave privata che mantieni segreta).

flowchart LR
    subgraph "Your Keys"
        SK[Service Key<br/>~/.config/solana/id.json]
        MK[Metrics Publisher Key<br/>~/.config/doublezero/metrics-publisher.json]
    end

    SK -->|Used for| CLI[CLI Commands<br/>doublezero device create<br/>doublezero link create]
    MK -->|Used for| TEL[Telemetry Agent<br/>Submits metrics onchain]

Passo 2.1: Genera la Tua Service Key

Questa è la tua identità principale per interagire con DoubleZero.

doublezero keygen

Questo crea una keypair nella posizione predefinita. L'output mostra la tua chiave pubblica - questa è quella che condividerai con DZF.

Passo 2.2: Genera la Tua Metrics Publisher Key

Questa chiave viene utilizzata dal Telemetry Agent per firmare le submission delle metriche.

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

Passo 2.3: Invia le Chiavi a DZF

Contatta la DoubleZero Foundation o Malbec Labs e fornisci:

  1. La tua chiave pubblica della service key
  2. Il tuo username GitHub (per l'accesso al repository)

Loro provvederanno a:

  • Creare il tuo account contributore on-chain
  • Concedere l'accesso al repository contributori privato

Passo 2.4: Verifica il Tuo Account

Una volta confermato, verifica che il tuo account contributore esista:

doublezero contributor list

Dovresti vedere il tuo codice contributore nell'elenco.

Passo 2.5: Accedi al Repository Contributori

Il repository malbeclabs/contributors contiene:

  • Configurazioni base dei dispositivi
  • Profili TCAM
  • Configurazioni ACL
  • Istruzioni di configurazione aggiuntive

Segui le istruzioni lì per la configurazione specifica del dispositivo.


Fase 3: Provisioning del Dispositivo

Ora registrerai il tuo dispositivo fisico sulla blockchain e configurerai le sue interfacce.

Comprendere i Tipi di Dispositivo

flowchart TB
    subgraph "Edge Device"
        E[Edge DZD]
        EU[Users connect here]
        EU --> E
        E <-->|DZX Link| ED[Other DZD]
    end

    subgraph "Transit Device"
        T[Transit DZD]
        T <-->|WAN Link| T2[Another DZD]
        T <-->|DZX Link| TD[Other DZD]
    end

    subgraph "Hybrid Device"
        H[Hybrid DZD]
        HU[Users connect here]
        HU --> H
        H <-->|WAN Link| H2[Another DZD]
        H <-->|DZX Link| HD[Other DZD]
    end
Tipo Cosa Fa Quando Usarlo
Edge Accetta solo connessioni utente Singola posizione, solo rivolto agli utenti
Transit Sposta il traffico tra dispositivi Connettività backbone, nessun utente
Hybrid Connessioni utente E backbone Il più comune - fa tutto

Passo 3.1: Trova la Tua Posizione e l'Exchange

Prima di creare il tuo dispositivo, cerca i codici per la posizione del tuo data center e l'exchange più vicino:

# List available locations (data centers)
doublezero location list

# List available exchanges (interconnect points)
doublezero exchange list

Passo 3.2: Crea il Tuo Dispositivo On-Chain

Registra il tuo dispositivo sulla blockchain:

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>

Esempio:

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"

Output atteso:

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

Verifica che il tuo dispositivo sia stato creato:

doublezero device list | grep nyc-dz001

Parametri spiegati:

Parametro Cosa Significa
--code Un nome univoco per il tuo dispositivo (es. nyc-dz001)
--contributor Il tuo codice contributore (fornito da DZF)
--device-type hybrid, transit, o edge
--location Codice del data center da location list
--exchange Codice dell'exchange più vicino da exchange list
--public-ip L'IP pubblico dove gli utenti si connettono al tuo dispositivo via internet
--dz-prefixes Il tuo blocco IP allocato per gli utenti

Passo 3.3: Crea le Interfacce Loopback Richieste

Ogni dispositivo ha bisogno di due interfacce loopback per il routing interno:

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

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

Output atteso (per ogni comando):

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

Passo 3.4: Crea Interfacce Fisiche

Registra le porte fisiche che utilizzerai:

# Basic interface
doublezero device interface create <DEVICE_CODE> Ethernet1/1

Output atteso:

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

Passo 3.5: Crea l'Interfaccia CYOA (per dispositivi Edge/Hybrid)

I DZD ibridi e edge necessitano di due indirizzi IP pubblici su cui gli utenti terminano i loro tunnel GRE. Gli utenti possono connettersi tramite unicast, multicast, o entrambi, e quale IP serve quale scopo viene ruotato per utente.

Entrambi gli IP devono essere registrati con --user-tunnel-endpoint true, su un'interfaccia fisica o su un loopback. Questo include l'IP fornito al momento della creazione del dispositivo; quell'IP deve ancora essere registrato esplicitamente qui.

Se sei vincolato da IP, puoi usare il primo /32 del tuo prefisso DZ come uno dei due IP.

CYOA e DIA

Tipo Flag Scopo
DIA --interface-dia dia Marca la porta come accesso internet diretto
CYOA --interface-cyoa <sottotipo> Dichiara come gli utenti connettono tunnel GRE al tuo dispositivo

Il flag CYOA è sempre impostato su un'interfaccia fisica (porta Ethernet o port channel). Mai su un loopback.

Sottotipo CYOA Quando usare
gre-over-dia Gli utenti si connettono tramite internet pubblico. Il più comune.
gre-over-private-peering Gli utenti si connettono tramite cross-connect diretto o circuito privato
gre-over-public-peering Gli utenti fanno peering con te a un Internet Exchange (IX)
gre-over-fabric Gli utenti sono co-locati e si connettono tramite un fabric locale
gre-over-cable Connessione cavo diretta a un singolo utente dedicato

Scenario A: Interfaccia fisica singola

Un uplink fisico all'ISP. Ethernet1/1 è l'interfaccia CYOA e DIA e porta uno dei due IP pubblici. Loopback100 porta il secondo IP pubblico.

flowchart LR
    USERS(["Utenti Finali"])

    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["Router ISP
    203.0.113.2/30"]

    ISP -- "10GbE" --- E1
    USERS -. "Tunnel GRE" .-> E1
    USERS -. "Tunnel GRE" .-> LO
Interfaccia --interface-cyoa --interface-dia --ip-net --bandwidth --cir --routing-mode --user-tunnel-endpoint
Ethernet1/1 gre-over-dia dia IP/sottorete assegnata dal contributore velocità porta tariffa impegnata bgp o static true
Loopback100 tuo /32 pubblico 0bps true

Esempio di comandi per lo Scenario 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

Scenario B: Port channel (LAG)

Il DZD si connette al dispositivo upstream tramite un port channel con un IP. Il port channel porta un IP pubblico ed è l'endpoint CYOA. Loopback100 porta il secondo IP pubblico.

flowchart LR
    USERS(["Utenti Finali"])

    subgraph SW["Router/Switch Upstream"]
        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 -. "Tunnel GRE" .-> PC
    USERS -. "Tunnel GRE" .-> LO
Interfaccia --interface-cyoa --interface-dia --ip-net --bandwidth --cir --routing-mode --user-tunnel-endpoint
Port-Channel1 gre-over-dia dia IP/sottorete assegnata dal contributore velocità LAG combinata tariffa impegnata bgp o static true
Loopback100 tuo /32 pubblico 0bps true

Esempio di comandi per lo Scenario 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

Ogni interfaccia fisica si connette a un router upstream diverso. I due IP pubblici si trovano su Loopback100 e Loopback101, entrambi registrati come endpoint di tunnel utente.

flowchart LR
    USERS(["Utenti Finali"])

    RA["Router A
    203.0.113.2/30"]
    RB["Router 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 -. "Tunnel GRE" .-> LO0
    USERS -. "Tunnel GRE" .-> LO1
Interfaccia --interface-cyoa --interface-dia --ip-net --bandwidth --cir --routing-mode --user-tunnel-endpoint
Ethernet1/1 gre-over-dia dia IP/sottorete assegnata dal contributore velocità porta tariffa impegnata bgp o static
Ethernet2/1 gre-over-dia dia IP/sottorete assegnata dal contributore velocità porta tariffa impegnata bgp o static
Loopback100 tuo /32 pubblico 0bps true
Loopback101 tuo /32 pubblico 0bps true

Esempio di comandi per lo Scenario 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

Passo 3.6: Verifica il Tuo Dispositivo

doublezero device list

Output di esempio:

 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...

Il tuo dispositivo dovrebbe apparire con stato activated.


I link connettono il tuo dispositivo al resto della rete DoubleZero.

flowchart LR
    subgraph "Your Network"
        D1[Your DZD 1<br/>NYC]
        D2[Your DZD 2<br/>LAX]
    end

    subgraph "Other Contributor"
        O1[Their DZD<br/>NYC]
    end

    D1 ---|WAN Link<br/>Same contributor| D2
    D1 ---|DZX Link<br/>Different contributors| O1
Tipo di Link Connette Accettazione
WAN Link Due dei TUOI dispositivi Automatica (possiedi entrambi)
DZX Link Il tuo dispositivo a quello di UN ALTRO contributore Richiede la loro accettazione

I WAN link connettono i tuoi dispositivi:

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

Esempio:

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

Output atteso:

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

I DZX link connettono il tuo dispositivo direttamente al DZD di un altro contributore:

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>

Output atteso:

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

Dopo aver creato un DZX link, l'altro contributore deve accettarlo:

# The OTHER contributor runs this
doublezero link accept \
  --code <LINK_CODE> \
  --side-z-interface <THEIR_INTERFACE>

Output atteso (per il contributore che accetta):

Signature: 6vQt9L...truncated...3wPm4
doublezero link list

Output di esempio:

 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...

I link dovrebbero mostrare lo stato activated una volta che entrambi i lati sono configurati.


Installazione degli Agent

Due software agent vengono eseguiti sul tuo DZD:

flowchart TB
    subgraph "Your DZD"
        CA[Config Agent]
        TA[Telemetry Agent]
        HW[Switch Hardware/Software]
    end

    CA -->|Polls for config| CTRL[Controller Service]
    CA -->|Applies config| HW

    HW -->|Metrics| TA
    TA -->|Submits onchain| BC[DoubleZero Ledger]
Agent Cosa Fa
Config Agent Recupera la configurazione dal controller, la applica al tuo switch
Telemetry Agent Misura latenza/perdita verso altri dispositivi, riporta le metriche on-chain

Passo 4.4: Installa il Config Agent

Abilita l'API sul tuo switch

Aggiungi alla configurazione EOS:

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

Nota VRF

Sostituisci default con il nome del tuo VRF di gestione se diverso (es. management).

Scarica e installa l'agent

# Enter bash on the switch
switch# bash
$ sudo bash
# cd /mnt/flash
# wget AGENT_DOWNLOAD_URL
# exit
$ exit

# Install as EOS extension
switch# copy flash:AGENT_FILENAME extension:
switch# extension AGENT_FILENAME
switch# copy installed-extensions boot-extensions

Verifica l'estensione

switch# show extensions

Lo stato dovrebbe essere "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

Configura e avvia l'agent

Aggiungi alla configurazione EOS:

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

Nota VRF

Se il tuo VRF di gestione non è default (cioè il namespace non è ns-default), anteponi al comando exec exec /sbin/ip netns exec ns-<VRF>. Ad esempio, se il tuo VRF è management:

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

Ottieni la pubkey del tuo dispositivo da doublezero device list (la colonna account).

Verifica che sia in esecuzione

switch# show agent doublezero-agent logs

Dovresti vedere "Starting doublezero-agent" e connessioni riuscite al controller.

Passo 4.5: Installa il Telemetry Agent

Copia la metrics publisher key sul tuo dispositivo

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

Registra il metrics publisher on-chain

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

Ottieni la pubkey dal tuo file metrics-publisher.json.

Scarica e installa l'agent

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

# Install as EOS extension
switch# copy flash:TELEMETRY_FILENAME extension:
switch# extension TELEMETRY_FILENAME
switch# copy installed-extensions boot-extensions

Verifica l'estensione

switch# show extensions

Lo stato dovrebbe essere "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

Configura e avvia l'agent

Aggiungi alla configurazione 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

Nota VRF

Se il tuo VRF di gestione non è default (cioè il namespace non è ns-default), aggiungi --management-namespace ns-<VRF> al comando exec. Ad esempio, se il tuo 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

Verifica che sia in esecuzione

switch# show agent doublezero-telemetry logs

Dovresti vedere "Starting telemetry collector" e "Starting submission loop".


Tutti i nuovi link devono completare il burn-in prima di trasportare traffico

I nuovi link devono essere drenati per almeno 24 ore prima di essere attivati per il traffico di produzione. Questo requisito di burn-in è definito in RFC12: Network Provisioning, che specifica ~200.000 slot del DZ Ledger (~20 ore) di metriche pulite prima che un link sia pronto per il servizio.

Con gli agent installati e in esecuzione, monitora i tuoi link su metrics.doublezero.xyz per almeno 24 ore consecutive:

  • Dashboard "DoubleZero Device-Link Latencies" — verifica zero perdita di pacchetti sul link nel tempo
  • Dashboard "DoubleZero Network Metrics" — verifica zero errori sui tuoi link

Sblocca il link solo quando il periodo di burn-in mostra un link pulito con zero perdite e zero errori.


Fase 6: Verifica e Attivazione

Esegui questa checklist per confermare che tutto funzioni.

Il tuo dispositivo inizia bloccato (max_users = 0)

Quando viene creato un dispositivo, max_users è impostato a 0 per impostazione predefinita. Ciò significa che nessun utente può ancora connettersi ad esso. Questo è intenzionale — devi verificare che tutto funzioni prima di accettare traffico utente.

Prima di impostare max_users sopra 0, devi:

  1. Confermare che tutti i link abbiano completato il burn-in di 24 ore con zero perdite/errori su metrics.doublezero.xyz
  2. Coordinarsi con DZ/Malbec Labs per eseguire un test di connettività:
    • Un utente di test può connettersi al tuo dispositivo?
    • L'utente riceve route tramite la rete DZ?
    • L'utente può instradare il traffico tramite la rete DZ end-to-end?
  3. Solo dopo che DZ/ML conferma che i test sono passati, imposta max_users a 96:
doublezero device update --pubkey <DEVICE_ACCOUNT> --max-users 96

Controlli del Dispositivo

# Your device should appear with status "activated"
doublezero device list | grep <YOUR_DEVICE_CODE>

Output atteso:

 7xKm9pQw2R4vHt3... | nyc-dz001 | acme | EQX-NY5 | nyc | hybrid | 203.0.113.10 | 198.51.100.0/28 | 0 | 14 | activated | pending | | 5FMtd5Woq5XAAg54...
# Your interfaces should be listed
doublezero device interface list | grep <YOUR_DEVICE_CODE>

Output atteso:

 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
# Links should show status "activated"
doublezero link list | grep <YOUR_DEVICE_CODE>

Output atteso:

 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...

Controlli degli Agent

Sullo switch:

# Config agent should show successful config pulls
switch# show agent doublezero-agent logs | tail -20

# Telemetry agent should show successful submissions
switch# show agent doublezero-telemetry logs | tail -20

Diagramma di Verifica Finale

flowchart TB
    subgraph "Verification Checklist"
        D[Device Status: activated?]
        I[Interfaces: registered?]
        L[Links: activated?]
        CA[Config Agent: pulling config?]
        TA[Telemetry Agent: submitting metrics?]
    end

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

    PASS[All Checks Pass] --> NOTIFY[Notify DZF/Malbec Labs<br/>You are technically ready!]

Risoluzione dei Problemi

Creazione del dispositivo fallisce

  • Verifica che la tua service key sia autorizzata (doublezero contributor list)
  • Controlla che i codici di posizione e exchange siano validi
  • Assicurati che il prefisso DZ sia un intervallo IP pubblico valido
  • I DZX link richiedono l'accettazione dall'altro contributore
  • Contattali per eseguire doublezero link accept

Config Agent non si connette

  • Verifica che la rete di gestione abbia accesso a internet
  • Controlla che la configurazione VRF corrisponda alla tua configurazione
  • Assicurati che la pubkey del dispositivo sia corretta

Telemetry Agent non invia

  • Verifica che la metrics publisher key sia registrata on-chain
  • Controlla che il file keypair esista sullo switch
  • Assicurati che la pubkey dell'account del dispositivo sia corretta

Prossimi Passi

  • Consulta la Guida Operativa per gli aggiornamenti degli agent e la gestione dei link
  • Consulta il Glossario per le definizioni dei termini
  • Contatta DZF/Malbec Labs se riscontri problemi