Skip to content

Configuration Reference

Tommaso Caiazzi edited this page Apr 7, 2026 · 1 revision

Configuration Reference

This page provides a reference for the ixp.conf file used by IXP Digital Twin.

Configuration File Format

The digital twin uses a JSON configuration file. You can edit it manually or through the dashboard.

Configuration file location: ixp-digital-twin/ixp.conf

Top-Level Structure

The configuration has these top-level keys:

  • scenario_name
  • host_interface
  • peering_lan
  • peering_configuration
  • rib_dumps
  • route_servers
  • rpki
  • quarantine

Basic Settings

scenario_name

Type: String
Description: Scenario name of the IXP.

{
  "scenario_name": "Production IXP Digital Twin"
}

host_interface

Type: String
Description: Host interface where the external LAN is attached.

{
  "host_interface": "eth0"
}

peering_lan

Type: Object
Description: Peering LAN subnets.

{
  "peering_lan": {
    "4": "192.0.2.0/24",
    "6": "2001:db8::/64"
  }
}

Peering Configuration

peering_configuration

Type: Object
Description: Source and path for member peering data.

{
  "peering_configuration": {
    "type": "raw_json",
    "path": "peerings.json"
  }
}

Supported type values:

  • raw_json
  • ixp_manager

See Download Peerings List From IXP Manager for IXP Manager export details.

RIB Dumps

rib_dumps

Type: Object
Description: RIB dump format and dump files.

{
  "rib_dumps": {
    "type": "bird",
    "dumps": {
      "4": "rsv4.dump",
      "6": "rsv6.dump"
    }
  }
}

Supported type values:

  • bird
  • open_bgpd

Creating BIRD RIB dumps:

birdc show route all > rsv4.dump

Creating OpenBGPD RIB dumps:

bgpctl show rib > rsv4.dump

Route Servers

route_servers

Type: Object (map)
Description: Route servers keyed by route server device name.

{
  "route_servers": {
    "rsv4": {
      "type": "bird",
      "image": "kathara/bird2-birdwatcher:2.0.8",
      "as_num": 64500,
      "config": "bird.conf",
      "address": "192.0.2.254",
      "options": {
        "birdwatcher": {
          "port": 29184,
          "config": "birdwatcher.conf"
        }
      }
    }
  }
}

Route Server Fields

  • type: bird or open_bgpd
  • image: Docker image
  • as_num: AS number (integer)
  • config: Route server configuration file or directory path
  • address: Route server IP address without netmask
  • options: Optional additional settings
  • options.birdwatcher.port: Birdwatcher TCP port
  • options.birdwatcher.config: Birdwatcher config file in resources

RPKI

rpki

Type: Array of objects
Description: List of RPKI servers.

{
  "rpki": [
    {
      "type": "external",
      "address": "192.0.2.10",
      "port": 3323,
      "protocol": "rtr"
    }
  ]
}

RPKI server fields:

  • type: external or internal
  • address: RPKI server address
  • port: RPKI service port
  • protocol: RPKI service protocol

Quarantine

quarantine

Type: Object
Description: Quarantine checks configuration.

{
  "quarantine": {
    "actions": [
      "connectivity.CheckPingAction",
      "connectivity.CheckPingMtuAction",
      "connectivity.CheckProxyArpAction",
      "bgp.CheckBgpSessionAction",
      "bgp.CheckBgpRibAction",
      "security.CheckServicesAction",
      "security.CheckTrafficAction"
    ],
    "proxy_arp_ips": ["192.0.2.254"],
    "max_rib_prefixes": {
      "4": 5000,
      "6": 2000
    },
    "traffic_dump_mins": 1,
    "probe_ips": {
      "4": "192.0.2.10",
      "6": "2001:db8::10"
    },
    "dns_name": "kathara.org"
  }
}

Quarantine fields:

  • actions: List of check classes
  • proxy_arp_ips: IP list used by Proxy ARP check
  • max_rib_prefixes.4: Max IPv4 prefixes
  • max_rib_prefixes.6: Max IPv6 prefixes
  • traffic_dump_mins: Traffic capture duration in minutes
  • probe_ips.4: Probe IPv4 address
  • probe_ips.6: Probe IPv6 address
  • dns_name: DNS name used by DNS service check

Complete Configuration Example

{
  "scenario_name": "Production IXP",
  "host_interface": "eth0",
  "peering_lan": {
    "4": "192.0.2.0/24",
    "6": "2001:db8::/64"
  },
  "peering_configuration": {
    "type": "ixp_manager",
    "path": "peerings.json"
  },
  "rib_dumps": {
    "type": "bird",
    "dumps": {
      "4": "rsv4.dump",
      "6": "rsv6.dump"
    }
  },
  "route_servers": {
    "rsv4": {
      "type": "bird",
      "image": "kathara/bird2-birdwatcher:2.0.8",
      "as_num": 64500,
      "config": "bird.conf",
      "address": "192.0.2.254",
      "options": {
        "birdwatcher": {
          "port": 29184,
          "config": "birdwatcher.conf"
        }
      }
    },
    "rsv6": {
      "type": "bird",
      "image": "kathara/bird2-birdwatcher:2.0.8",
      "as_num": 64500,
      "config": "birdv6.conf",
      "address": "2001:db8::254"
    }
  },
  "rpki": [
    {
      "type": "external",
      "address": "192.0.2.10",
      "port": 3323,
      "protocol": "rtr"
    }
  ],
  "quarantine": {
    "actions": [
      "connectivity.CheckPingAction",
      "bgp.CheckBgpSessionAction",
      "bgp.CheckBgpRibAction"
    ],
    "proxy_arp_ips": [
      "192.0.2.254"
    ],
    "max_rib_prefixes": {
      "4": 5000,
      "6": 2000
    },
    "traffic_dump_mins": 1,
    "probe_ips": {
      "4": "192.0.2.10",
      "6": "2001:db8::10"
    },
    "dns_name": "kathara.org"
  }
}

Manual Configuration

To manually edit the configuration:

  1. Stop the digital twin
  2. Edit ixp-digital-twin/ixp.conf
  3. Validate JSON syntax
  4. Restart the digital twin
  5. Verify in dashboard

Next Steps