Skip to content
Intermediate 25 minutes

Internet Exchange

Attach an Internet Exchange peering connection to a Megaport port — discover IX network services, buy, update peering details, and decommission

Prerequisites

  • Megaport CLI installed and authenticated
  • An existing Megaport port (see the Port Lifecycle tutorial)
  • A registered ASN — public or private
  • Basic BGP knowledge recommended

An Internet Exchange (IX) connection lets you peer with hundreds of other networks at a regional fabric point — public peering for content delivery, transit, and direct route exchange without paying per-bit transit costs.

On Megaport, an IX is a virtual connection that attaches to an existing port. You bring your own ASN and MAC address; Megaport delivers a tagged VLAN onto the exchange.


Step 1 — Find the right exchange

IX availability is per-metro. List existing IX connections on your account to see what's been deployed, or check the Megaport portal for available exchanges per region.

bash
# List all IX connections in your account
megaport-cli ix list

# Filter by exchange (partial match on network-service-type)
megaport-cli ix list --network-service-type "Sydney"

# Filter by ASN — useful if you've deployed peering across multiple ports
megaport-cli ix list --asn 65000

The --network-service-type value (e.g. "Sydney IX", "Los Angeles IX") is the identifier you'll pass when buying a new IX. Use the exact string from existing connections, or pick it from the portal's IX list.


Step 2 — Pick your port

The IX attaches to one of your existing ports. Pick one with available VLAN capacity at the right location:

bash
# List ports and note the UID at the IX's metro
megaport-cli ports list --output json | jq '.[] | {uid, name, locationId}'

# Before buying, check the VLAN you plan to use is free
megaport-cli ports check-vlan <PORT-UID> 100
💡

Pre-flight check

check-vlan returns true if the VLAN is available. Running it before ix buy avoids the failure mode of provisioning against a VLAN already taken by another VXC or IX.


Step 3 — Validate before buying

Run ix validate to confirm the order will be accepted without provisioning or billing:

bash
megaport-cli ix validate \
  --product-uid <PORT-UID> \
  --name "Sydney IX Peering" \
  --network-service-type "Sydney IX" \
  --asn 65000 \
  --mac-address "00:11:22:33:44:55" \
  --rate-limit 1000 \
  --vlan 100

ix validate takes the same flags as ix buy. If validation fails, fix the inputs (wrong ASN format, MAC conflict, VLAN in use) before continuing.


Step 4 — Buy the IX

Flags

bash
megaport-cli ix buy \
  --product-uid <PORT-UID> \
  --name "Sydney IX Peering" \
  --network-service-type "Sydney IX" \
  --asn 65000 \
  --mac-address "00:11:22:33:44:55" \
  --rate-limit 1000 \
  --vlan 100

Interactive

bash
megaport-cli ix buy --interactive

JSON

bash
megaport-cli ix buy --json '{
  "productUid": "port-uid-here",
  "productName": "Sydney IX Peering",
  "networkServiceType": "Sydney IX",
  "asn": 65000,
  "macAddress": "00:11:22:33:44:55",
  "rateLimit": 1000,
  "vlan": 100,
  "shutdown": false
}'

Parameter reference

ParameterRequiredDescription
--product-uidYesUID of the port the IX attaches to
--nameYesDisplay name (1–64 chars)
--network-service-typeYesExchange identifier (e.g. "Sydney IX", "Los Angeles IX")
--asnYesYour BGP ASN — either a registered public ASN or a 16-bit private ASN in the 64512–65534 range (32-bit private 4200000000–4294967294 also works)
--mac-addressYesMAC address for the IX interface (e.g. 00:11:22:33:44:55)
--rate-limitYesRate limit in Mbps
--vlanYesVLAN ID (2–4093) on the parent port
--shutdownNoProvision in shutdown state — bring up later
--promo-codeNoPromotional code
--no-waitNoReturn immediately instead of waiting for provisioning
⚠️

MAC address uniqueness

The MAC address you supply must be unique on the exchange. Most networks use a locally-administered MAC (second hex digit 2, 6, A, or E). Don't reuse a MAC from another port or another IX on the same exchange.


Step 5 — Verify and check status

bash
# Full IX details
megaport-cli ix get <IX-UID>

# Lightweight provisioning status
megaport-cli ix status <IX-UID>

# See it in your IX list
megaport-cli ix list

The IX starts as CONFIGURED and transitions to LIVE once the exchange has accepted your interface. BGP sessions to peers come up separately once you configure them on your router — Megaport delivers the interface, not the BGP sessions themselves.


Step 6 — Update peering details

The ix update command modifies BGP, naming, and network-side fields without re-provisioning:

bash
# Change rate limit
megaport-cli ix update <IX-UID> --rate-limit 2000

# Change ASN or MAC address
megaport-cli ix update <IX-UID> --asn 65001 --mac-address "00:11:22:33:44:66"

# Move to a different VLAN
megaport-cli ix update <IX-UID> --vlan 200

# Add BGP MD5 password and a billing cost centre
megaport-cli ix update <IX-UID> --password "supersecret" --cost-centre "PEERING-AU"

# Make usage stats publicly visible on the IX portal
megaport-cli ix update <IX-UID> --public-graph

# Temporarily shut down the IX without deleting it
megaport-cli ix update <IX-UID> --shutdown
megaport-cli ix update <IX-UID> --shutdown=false

Move the IX to a different port

bash
megaport-cli ix update <IX-UID> --a-end-product-uid <NEW-PORT-UID>
ℹ️

Cross-port moves

--a-end-product-uid is useful when retiring an old port — move the IX to its replacement without deleting and re-buying. The new port must be in the same metro.


Step 7 — Delete

ix delete is immediate by default. Use --later to schedule the cancellation at the end of the billing cycle instead.

bash
# Immediate
megaport-cli ix delete <IX-UID>
megaport-cli ix delete <IX-UID> --force

# End-of-billing-cycle
megaport-cli ix delete <IX-UID> --later
💡

Cost discipline

For production peering, prefer --later so traffic continues to the end of the billing period you've already paid for. Use immediate delete for test/staging IXs.


Best practices

ASN and MAC discipline

  • Use a registered public ASN if you're peering for transit; a private ASN (16-bit 64512–65534 or 32-bit 4200000000–4294967294) is fine for closed peering arrangements
  • Pick a deterministic, locally-administered MAC scheme per port and document it — debugging "which IX has this MAC" is painful otherwise

Pre-provisioning checks

  • Run ix validate and ports check-vlan before every ix buy to catch errors before they cost money
  • Keep a VLAN allocation table per port — IXs and VXCs share the same VLAN space

Lifecycle

  • Provision IXs with --shutdown if the peering side isn't ready yet — flip --shutdown=false when both sides are configured
  • For paused-but-not-deleted IXs, use --shutdown rather than deleting and re-buying

Cost allocation

  • Use ix update --cost-centre <code> to tag IX connections for billing reports — useful when a single account hosts peering for several teams

What's next?