Connect to Microsoft Azure

Establish a direct, layer 2 connection to Microsoft Azure to access the Azure Cloud Infrastructure and other Azure Cloud services.

Step 1: Create ExpressRoute Circuit

In the Microsoft Azure portal, create an ExpressRoute circuit and retrieve its service key.

Refer to https://docs.microsoft.com/en-us/azure/expressroute/expressroute-howto-circuit-portal-resource-manager for instructions on how to create an ExpressRoute circuit.

Step 2: Create Connection

1. Authenticate

Submit your user credentials, Client ID, and Client Secret for OAuth2 authentication.

Refer to Generating Client ID and Client Secret under the Getting Access Token section for instructions on how to create client ID and client secret and refer to Requesting Access and Refresh tokens section for instructions on how to call Oauth API to validate and authenticate your credentials.

If you are unaware of your user credentials for Equinix Fabric, contact your local Equinix Service Desk.

2. Determine A-side port information
Retrieve your Equinix Fabric ports information using the Get All Ports API request.

3. Choose Z-side metro location
Use the Get All Metros API request to find all metros where Equinix Fabric is available and determine destination location.

4. Identify service profile
Use the Retrieve Service Profiles API request to search for a specific service profile or use the Get Service Profiles API request to list all available service profiles, and identify the profile you want to connect to.

5. Validate your Authorization Key
Use the Validate Connection Authorization Key API request to verify that your Azure key can be used to create a connection to the selected service profile in the given metro.

6. Establish connection
Use the POST /fabric/v4/connections API request to create a connection with the pre-determined attributes.

POST /fabric/v4/connections
Method POST
Endpoint /fabric/v4/connections
Headers Authorization, Content-Type
Path Parameters Not applicable
Query Parameters Not applicable
Body Parameters type, name, order, bandwidth, redundancy, aSide, zSide, notifications

Use the Retrieve Pricing API request to retrieve connection price estimate.


Sample curl request - connection to Microsoft Azure ExpressRoute from a DOT1Q port

Copy
curl -X
POST 'https://api.equinix.com/fabric/v4/connections'
-H 'content-type: application/json'
-H 'authorization: Bearer qwErtY8zyW1abcdefGHI'
-d '{
    "type": "EVPL_VC",
    "name": "Conn-1",
    "order": {
        "purchaseOrderNumber": "1-129105284100"
    },
    "bandwidth": 1000,
    "aSide": {
        "accessPoint": {
            "type": "COLO",
            "port": {
                "uuid": "a867f685-41b0-1b07-6de0-320a5c00abdd"
            },
            "linkProtocol": {
                "type": "DOT1Q",
                "vlanTag": 1001
            }
        }
    },
    "zSide": {
        "accessPoint": {
            "type": "SP",
            "profile": {
                "uuid": "20d32a80-0d61-4333-bc03-707b591ae2f5"
            },
            "location": {
                "metroCode": "SV"
            },
            "linkProtocol": {
                "type": "QINQ",
                "vlanCTag": 1001
            },
            "authenticationKey": "xx-xx-xx",
            "peeringType": "PRIVATE"
        }
    },
    "notifications": [
        {
            "type": "ALL",
            "emails": [
                "test@equinix.com"
            ]
        }
    ]
}'

Sample curl request - connection to Microsoft Azure ExpressRoute from a QINQ port

Copy
curl -X
POST 'https://api.equinix.com/fabric/v4/connections'
-H 'content-type: application/json'
-H 'authorization: Bearer qwErtY8zyW1abcdefGHI'
-d '{
    "type": "EVPL_VC",
    "name": "Conn-1",
    "order": {
        "purchaseOrderNumber": "1-129105284100"
    },
    "bandwidth": 1000,
    "aSide": {
        "accessPoint": {
            "type": "COLO",
            "port": {
                "uuid": "a867f685-41b0-1b07-6de0-320a5c00abdd"
            },
            "linkProtocol": {
                "type": "QINQ",
                "vlanCTag": 1002,
                "vlanSTag": 1003
            }
        }
    },
    "zSide": {
        "accessPoint": {
            "type": "SP",
            "profile": {
                "uuid": "20d32a80-0d61-4333-bc03-707b591ae2f5"
            },
            "location": {
                "metroCode": "SV"
            },
            "linkProtocol": {
                "type": "QINQ",
                "vlanCTag": 1001
            },
            "authenticationKey": "xx-xx-xx"
        }
    },
    "notifications": [
        {
            "type": "ALL",
            "emails": [
                "test@equinix.com"
            ]
        }
    ]
}'

Body parameters

Parameter Mandatory Type Example values Applicable values Description
type yes string EVPL_VC EVPL_VC Connection type.

EVPL_VC - Ethernet virtual private line connection type used for tagged layer 2 connections.
name yes string Conn-1 Maximum: 24 characters
Allowed characters: alpha-numeric, hyphens ('-') and underscores ('_')
Connection name.
order no object - - Order details.
order.purchaseOrderNumber no string 1-129105284100 - Subscriber's purchase order identifier.
bandwidth no integer 1000 50
200
500
1000
2000
5000
10000
Connection bandwidth in Mbps.
redundancy Conditional object - - Redundancy details. This object is not mandatory for primary connections. However, you must provide the redundancy details for secondary connections.
redundancy.group Conditional string m167f685-41b0-1b07-6de0-320a5c00abeu - Unique Id of the redundancy group. This is only required for secondary connections. If you are creating a secondary connection, enter the group of the PRIMARY. You can find the group of the primary connection by calling Get Specified Connection or by checking the "group" field in the response you receive when creating primary connection.
redundancy.priority Conditional string PRIMARY PRIMARY
SECONDARY
Whether the connection is PRIMARY or SECONDARY. Don't provide a redundancy group for a PRIMARY connection.
aSide yes object - - Source port definition.
accessPoint yes object - - Connection endpoint configuration.
accessPoint.type yes string COLO COLO Connection endpoint type.

COLO - Colocation space in an IBX data center.
accessPoint.port yes object - - Port associated with the connection.
port.uuid yes string a867f685-41b0-1b07-6de0-320a5c00abdd - Equinix-assigned port identifier.
accessPoint.linkProtocol yes object - - Link protocol configuration.
linkProtocol.type yes string DOT1Q DOT1Q
QINQ
Link protocol type.
linkProtocol.vlanTag yes integer 1001 Range: 2-4094 DOT1Q protocol VLAN tag.
linkProtocol.vlanCTag yes integer 1002 Range: 2-4094 QINQ protocol, inner virtual local area network (VLAN) customer frame tag used to identify packets as they traverse trunk lines.
linkProtocol.vlanSTag yes integer 1003 Range: 2-4094 QINQ protocol, outer virtual local area network (VLAN) service frame tag used to identify packets as they traverse trunk lines.
zSide yes object - - Connection destinatino definition.
zSide.accessPoint yes object - Connection endpoint configuration.
accessPoint.type yes string SP SP Connection endpoint type.

SP - Service profile defining connection details.
accessPoint.profile yes object - - The service profile associated with this access point.
profile.uuid yes string 20d32a80-0d61-4333-bc03-707b591ae2f5 - Unique identifier assigned to the service profile associated with this access point.
accessPoint.location yes object - - Attributes associated with the specified asset location.
location.metroCode yes string SV - Metropolitan area identifier.
accessPoint.linkProtocol yes object - - Link protocol configuration.
linkProtocol.type yes string QINQ QINQ Link protocol type.
linkProtocol.vlanCTag yes integer 1001 Range: 2-4094 QINQ protocol, inner virtual local area network (VLAN) customer frame tag used to identify packets as they traverse trunk lines.
accessPoint.authenticationKey yes string xx-xx-xx - Access point authentication key.
accessPoint.peeringType yes string PRIVATE PRIVATE
PUBLIC
MICROSOFT
Access point peering type. Applicable to connections originating from DOT1Q ports.

PRIVATE - Azure private peering for connecting your colocated assets to your Microsoft cloud resources over a secure, private connection.
PUBLIC - Connection to Azure services over a public network.
MICROSOFT - Connection to Microsoft online services (Microsoft 365 and Azure PaaS services).

Note that public peering has been depracated for new ExpressRoute circuits.

notifications yes array[object] - - Subscriber preferences for notification of changes in asset configuration or status.
notifications.type yes string ALL ALL Notification preferences for a specified asset, such as a service token, port, access point, or profile.
notifications.emails yes array[string] ["test@equinix.com"] Minimum: 1
Maximum: 12
List of up to 12 recipients.

If you get "Access Denied" error, contact your local Equinix Service Desk for Equinix Fabric Portal access.


Sample response - connection to Microsoft Azure ExpressRoute from a DOT1Q port

Copy
{
    "href": "https://api.equinix.com/fabric/v4/connections/3a58dd05-f46d-4b1d-a154-2e85c396ea62",
    "type": "EVPL_VC",
    "uuid": "3a58dd05-f46d-4b1d-a154-2e85c396ea62",
    "name": "Conn-1",
    "state": "PROVISIONING",
    "order": {
        "purchaseOrderNumber": "1-129105284100",
        "billingTier": "Up to 1 Gbps"
    },
    "bandwidth": 1000,
    "redundancy": {
        "group": "b767f685-41b0-1b07-6de0-320a5c00abdd",
        "priority": "SECONDARY"
    },
    "aSide": {
        "accessPoint": {
            "type": "COLO",
            "port": {
                "href": "https://api.equinix.com/fabric/v4/ports/a867f685-41b0-1b07-6de0-320a5c00abdd",
                "type": "XF_PORT",
                "uuid": "a867f685-41b0-1b07-6de0-320a5c00abdd"
            },
            "linkProtocol": {
                "type": "DOT1Q",
                "vlanTag": 1001
            }
        }
    },
    "zSide": {
        "accessPoint": {
            "type": "SP",
            "profile": {
                "href": "https://api.equinix.com/fabric/v4/services/serviceProfiles/20d32a80-0d61-4333-bc03-707b591ae2f5",
                "type": "L2_PROFILE",
                "uuid": "20d32a80-0d61-4333-bc03-707b591ae2f5"
            },
            "location": {
                "href": "https://api.equinix.com/v4/metros/SV"
                "metroCode": "SV",
                "region": "AMER"
            },
            "linkProtocol": {
                "type": "QINQ",
                "vlanCTag": 1001
            },
            "authenticationKey": "xx-xx-xx",
            "peeringType": "PRIVATE"
        }
    },
    "notifications": [
        {
            "type": "ALL",
            "emails": [
                "test@equinix.com",
                "test2@equinix.com"
            ]
        }
    ],
    "operation": {
        "equinixStatus": "PROVISIONING",
        "providerStatus": "PROVISIONING"
    },
    "changeLog": {
        "createdDateTime": "2021-07-15T19:30:29.526Z"
    }
}

Response payload body description

Response payload includes configuration parameters defined in the request body. The following table contains descriptions of additional information included in the response payload. For descriptions of the remaining fields, refer to the Body parameters section.

Parameter Type Example values Description
href string https://api.equinix.com/fabric/v4/connections/3a58dd05-f46d-4b1d-a154-2e85c396ea62 An absolute URL that returns the specified connection.
uuid string 3a58dd05-f46d-4b1d-a154-2e85c396ea62 Equinix-assigned connection identifier.
state string PROVISIONING Lifecycle stage of a connection.
order.billingTier string Up to 1 Gbps Billing tier for connection bandwidth.
port.href string https://api.equinix.com/fabric/v4/ports/a867f685-41b0-1b07-6de0-320a5c00abdd An absolute URL that returns the specified port.
port.type string XF_PORT Type of port.

XF_PORT - Equinix Fabric port used as a Fabric connection endpoint.
profile.href string https://api.equinix.com/fabric/v4/services/serviceProfiles/20d32a80-0d61-4333-bc03-707b591ae2f5 An absolute URL that returns the specified service profile.
profile.type string L2_PROFILE Service profile type.

L2_PROFILE - layer 2 service profile for establishing connections in layer 2 of the OSI networking model.
location.href string https://api.equinix.com/v4/metros/SV An absolute URL that returns the specified metro.
location.region string AMER Broad geographic area in which a specified Equinix asset is located.
operation object - Access point operational data.
operation.equinixStatus string PROVISIONING Progress towards provisioning a specified connection.
operation.providerStatus string PROVISIONING Provider's progress towards provisioning a specified connection.
changeLog object - A permanent record of asset creation, modification, or deletion.
changeLog.createdDateTime string 2021-07-15T19:30:29.526Z Connection creation timestamp in the IETF ISO 8601 extended date/time format:

YYYY-MM-DDTHH:MM:SS.000+0000
redundancy object Redundancy details.
redundancy.group string 7a58dd05-f46d-4b1d-a154-2e85c396ea63 Unique Id of the redundancy group.
redundancy.priority string PRIMARY Whether the connection is PRIMARY or SECONDARY.

Use the Get Specified Connection API request to monitor connection status.

Equinix Connection States Azure States
equinixStatus
attribute values
providerStatus
attribute values
Provider Status Peerings Status Description
PROVISIONING PROVISIONING Not provisioned Not provisioned Connection request has not been sent to Microsoftyet.
PENDING_BGP_PEERING PENDING_BGP Provisioned Not provisioned The connection has been approved and awaits for the customer to configure Microsoft peering on the Microsoft Azure portal.

Note that the status will remain PENDING_BGP_PEERINGuntil peering is completed in the Microsoft Azure portal and the status will only change to PROVISIONEDonce Equinix Fabric syncs with Microsoft. If you want to synchronize the BGP peering instantly, you may use the Equinix Fabric Portal.
PROVISIONING PROVISIONED Provisioning completed at Microsoft's end and the connection is provisioning at Equinix's end.
PROVISIONED PROVISIONED Connection established.

Step 3: Set Up Microsoft Peering

Log in to the Microsoft Azure portal and configure BGP peering. Once peering configuration is synchronized, the connection status retrieved via the GET Connections{uuid} should change from "Pending-BGP-Peering" to "Provisioned". Alternatively, you can synchronize peering settings using the Equinix Fabric portal or the Manage Connection API request.

Refer to https://docs.microsoft.com/en-us/azure/expressroute/expressroute-howto-routing-portal-resource-manager for instructions on how to configure peering for an ExpressRoute connection.