# Telnyx Compute: Virtual Cross Connect — Full Documentation > Complete page content for Virtual Cross Connect (Compute section) of the Telnyx developer docs (https://developers.telnyx.com). > This file: https://developers.telnyx.com/docs/development/llms/compute-virtual-cross-connect-llms-full-txt · Root index: https://developers.telnyx.com/llms.txt ## Guides ### VXC Introduction > Source: https://developers.telnyx.com/docs/network/vxc/intro.md This guide first gives an overview of the product’s availability, costs, and the general API structure. Subsequently, it branches into cloud provider specific guides. The reader should only concern themselves with the section about the cloud provider that’s relevant to their use case. --- ### Coverage & Availability > Source: https://developers.telnyx.com/docs/network/vxc/coverage.md Refer to the [coverage API](/docs/network/coverage) to ensure the desired resource is offered at the desired region. --- ### Pricing > Source: https://developers.telnyx.com/docs/network/vxc/cost.md A VXC is billed by both Telnyx and the user's cloud provider. Telnyx charges an MRC for each VXC according to the following schedule, which may change at our discretion according to the general T&C. Telnyx cannot interpret or advise on how the cloud provider charges the user's account. See the cloud provider's documentation. ## AWS | Virtual Cross Connects | Monthly Recurring Charge (USD) | |------------------------|---------------------------------| | 50 Mbps | 100 | | 100 Mbps | 125 | | 200 Mbps | 150 | | 300 Mbps | 175 | | 400 Mbps | 200 | | 500 Mbps | 225 | | 1 Gbps | 450 | ## GCP | Virtual Cross Connects | Monthly Recurring Charge (USD) | |------------------------|---------------------------------| | 50 Mbps | 100 | | 100 Mbps | 125 | | 200 Mbps | 150 | | 300 Mbps | 175 | | 400 Mbps | 200 | | 500 Mbps | 225 | | 1 Gbps | 450 | ## Azure | Virtual Cross Connects | Monthly Recurring Charge (USD) | |------------------------|---------------------------------| | 50 Mbps | 200 | | 100 Mbps | 250 | | 200 Mbps | 300 | | 300 Mbps | 400 | | 400 Mbps | 500 | | 500 Mbps | 600 | | 1 Gbps | 1000 | --- ### VXC API > Source: https://developers.telnyx.com/docs/network/vxc/api.md The API resource is `/v2/network_agents_gateway/vxc`. The following parameters are required for all cloud providers. | Parameter | Value | |-----------------|------------------------------------------------------------------------------------------------| | `customer_name` | Human readable identifier for the customer or connection; something meaningful to you. | | `network_id` | UUID of the Network, the user's virtual routing and forwarding (VRF) domain, that the VXC attaches to. Required on create. | | `type` | `single` for a single connection or `redundant` for a redundant pair. | | `csp` | Cloud service provider: `AWS`, `GCP`, or `AZU`. | | `region` | Cloud provider region, e.g. `us-east-1`. Use the coverage API to find available regions. | | `location` | Telnyx PoP location name, e.g. `Ashburn VA, US`. Resolved from the coverage API response. | | `speed` | Connection speed: `50M`, `100M`, `200M`, `500M`, or `1G`. | The following parameters are cloud provider specific: | Parameter | AWS | GCP | AZU | Description | |------------------------|----------|----------|----------|-------------| | `csp_account` | Required | Optional | Optional | AWS account ID; not needed for GCP/AZU. | | `cross_connect` | Required | Optional | Optional | P2P BGP peering CIDR(s). AWS uses `/30`; GCP uses `/29`. GCP/AZU CIDRs may be set on create or via PATCH after provisioning. | | `primary_pairing_key` | — | Required | — | GCP VLAN attachment pairing key. Format: `//`. | | `secondary_pairing_key`| — | Required (redundant) | — | GCP secondary pairing key, redundant connections only. | | `primary_service_key` | — | — | Required | Azure ExpressRoute circuit service key. | | `secondary_service_key`| — | — | Required (redundant) | Azure secondary service key, redundant connections only. | | `bgp_asn` | Optional | Optional | Optional | BGP ASN (0–65535). Defaults to CSP default if omitted. | | `bgp_key_primary` | Optional | Optional | Optional | MD5 BGP authentication key for primary connection. Omit for no authentication. | | `bgp_key_secondary`| Optional | Optional | Optional | MD5 BGP authentication key for secondary connection (redundant only). | ### Cross-connect CIDRs - **AWS**: `/30` subnet required on create — e.g. `{"primary": "169.254.0.0/30"}`. Add `secondary` for redundant. - **GCP**: `/29` subnet — e.g. `{"primary": "169.254.2.0/29", "secondary": "169.254.2.8/29"}`. Optional on create; can be set via PATCH. GCP takes the first usable IP, Telnyx takes the second. - **AZU**: `/30` subnet. Optional on create; can be set via PATCH. ### PATCH fields All fields are optional; omit to leave unchanged. | Field | Description | |------------------------|-------------| | `cross_connect` | Set or update P2P CIDRs (`{"primary": "..."}`, add `secondary` for redundant). GCP requires `/29`; AZU requires `/30`. | | `bgp_key_primary` | Update primary BGP MD5 auth key. | | `bgp_key_secondary` | Update secondary BGP MD5 auth key. | | `bgp_enabled` | `true` = enable routing (routes advertised). `false` = disable routing (BGP stays up, no routes). | | `private_ips` | Customer VPC IPs to add static NAT entries for. | ### Polling status After a create or update, poll `GET /v2/network_agents_gateway/vxc/{vxc_id}` to track provisioning status. The agent reports `pending` while work is in progress, then `created` on success or `failed` on error. ### Listing VXCs ```http request GET /v2/network_agents_gateway/vxc?filter[network_id]= HTTP/1.1 Host: api.telnyx.com Authorization: Bearer *** ``` Supports `filter[network_id]`, `filter[customer_name]`, `page[number]`, `page[size]`. ### Coverage ```http request GET /v2/network_agents_gateway/vxc/coverage?filter[cloud_provider]=gcp HTTP/1.1 Host: api.telnyx.com Authorization: Bearer *** ``` Returns available PoP locations per provider (`aws`, `gcp`, `azu`). Each entry includes `region`, `site`, `pop`, `name`, and `code`. Supported filters: `filter[cloud_provider]`, `filter[location.pop]`, `filter[location.code]`, `page[number]`, `page[size]`. Note: `filter[cloud_provider_region]` is not currently supported. --- ### AWS Direct Connect > Source: https://developers.telnyx.com/docs/network/vxc/aws.md ## Architecture We will construct the following architecture: ![AWS Architecture](/assets/images/vxc-aws-architecture.png "AWS Architecture") ## Prerequisites ### VPC This step is performed on AWS. ![AWS VPC](/assets/images/vxc-aws-vpc.png "AWS VPC") ⚠️ Note: Ensure the intended region is selected. In this example, we are using eu-central-1 as the region. ![AWS Create VPC](/assets/images/vxc-aws-create-vpc.png "AWS Create VPC") | Parameter | Value | |---------------------|-----------------------------| | Resources to create | VPC only | | IPv4 CIDR block | IPv4 CIDR manual input | | IPv4 CIDR | RFC1918, e.g. 10.10.11.0/24 | | IPv6 CIDR block | No IPv6 CIDR block | | Tenancy | Default | ### Virtual Private Gateway This step is performed on AWS. Create and attach a virtual private gateway to the VPC created. ![AWS Virtual Private Gateway](/assets/images/vxc-aws-virtual-private-gateway.png "AWS Virtual Private Gateway") ⚠️ Note: Ensure the intended region is selected. In this example, we are using eu-central-1 as the region. ![AWS Create Virtual Private Gateway](/assets/images/vxc-aws-create-virtual-private-gateway.png "AWS Create Virtual Private Gateway") ⚠️ Note: Amazon default ASN value is 64512. You will need this value for VXC creation. Next, attach the virtual private gateway to the VPC created in the first step. ![AWS Attach Virtual Private Gateway](/assets/images/vxc-aws-attach-virtual-private-gateway.png "AWS Attach Virtual Private Gateway") ![AWS Attach Virtual Private Gateway 2](/assets/images/vxc-aws-attach-virtual-private-gateway-2.png "AWS Attach Virtual Private Gateway 2") The state of the virtual private gateway will go from “Detached” to “Attaching” and finally “Attached”. ### VPC Route Table This step is performed on AWS. ![AWS VPC Route Table 1](/assets/images/vxc-aws-vpc-route-table-1.png "AWS VPC Route Table 1") ![AWS VPC Route Table 2](/assets/images/vxc-aws-vpc-route-table-2.png "AWS VPC Route Table 2") ![AWS VPC Route Table 3](/assets/images/vxc-aws-vpc-route-table-3.png "AWS VPC Route Table 3") ### Internet Gateway This step is performed on AWS. This is optional. Create and attach an internet gateway to the VPC created. ![AWS Internet Gateway 1](/assets/images/vxc-aws-internet-gateway-1.png "AWS Internet Gateway 1") ![AWS Internet Gateway 2](/assets/images/vxc-aws-internet-gateway-2.png "AWS Internet Gateway 2") ![AWS Internet Gateway 3](/assets/images/vxc-aws-internet-gateway-3.png "AWS Internet Gateway 3") ![AWS Internet Gateway 4](/assets/images/vxc-aws-internet-gateway-4.png "AWS Internet Gateway 4") ![AWS Internet Gateway 5](/assets/images/vxc-aws-internet-gateway-5.png "AWS Internet Gateway 5") ![AWS Internet Gateway 6](/assets/images/vxc-aws-internet-gateway-6.png "AWS Internet Gateway 6") ### Subnet This step is performed on AWS. Assuming you don’t have a subnet setup — Choose the VPC created. Subnet CIDR block should be chosen from within the VPC block. ![AWS Subnet](/assets/images/vxc-aws-subnet.png "AWS Subnet") ### EC2 This step is performed on AWS. Assuming you don’t have an EC2 instance — spin one up in the same region. Assign the VPC and Subnet created previously. Enable public IP on the instance so you can ssh into it. ![AWS EC2](/assets/images/vxc-aws-ec2.png "AWS EC2") ### Account ID This step is performed on AWS. ⚠️ You would need this number when you create the Telnyx VXC later. ![AWS Account ID](/assets/images/vxc-aws-account-id.png "AWS Account ID") ### Network This step is performed on Telnyx. If you don't have a network created already, you may follow [this guide](https://developers.telnyx.com/docs/network/networks) to create one. ## Procedure ### Create a VXC resource This step is performed on Telnyx. ```http request POST /v2/network_agents_gateway/vxc HTTP/1.1 Host: api.telnyx.com Content-Type: application/json Authorization: Bearer *** { "customer_name": "my-company", "network_id": "", "type": "single", "csp": "AWS", "csp_account": "", "region": "eu-central-1", "location": "Frankfurt, DE", "speed": "50M", "cross_connect": {"primary": "169.254.0.0/30"}, "bgp_asn": 64512, "bgp_key_primary": "" } ``` | Parameter | Value | |-----------------|-------------------------------------------------------------------| | `csp` | `AWS` | | `csp_account` | AWS account ID from the last step | | `region` | Match what you selected on AWS | | `location` | Telnyx PoP name from the coverage API, e.g. `Frankfurt, DE` | | `speed` | Chosen from available bandwidth in the VXC coverage API response | | `cross_connect` | A `/30` CIDR for the BGP session between Telnyx and AWS | | `bgp_asn` | BGP ASN of the user's AWS virtual private gateway (0–65535) | | `bgp_key_primary` | Optional MD5 BGP authentication key. Omit for no authentication. | | `bgp_key_secondary` | Optional, redundant connections only. | > **BGP auth key:** If you supply `bgp_key_primary`, configure the same MD5 key on the AWS Direct Connect virtual interface BGP peer — both sides must match. Take note of the VXC id returned in the response. ### Direct Connect This step is performed on AWS. If the connection is not accepted in the user's AWS account within 1 hour of VXC creation, the VXC is deleted and must be created again. ![AWS Direct Connect](/assets/images/vxc-aws-direct-connect.png "AWS Direct Connect") ![AWS Direct Connect 2](/assets/images/vxc-aws-direct-connect-2.png "AWS Direct Connect 2") ### Enable Routing This step is performed on Telnyx. The connection must be enabled to be used. ```http request PATCH /v2/network_agents_gateway/vxc/{vxc_id} HTTP/1.1 Host: api.telnyx.com Content-Type: application/json Authorization: Bearer *** { "bgp_enabled": true } ``` At this point, the connection on AWS will show as “available”. ![AWS Enable Primary Connection](/assets/images/vxc-aws-enable-primary-connection.png "AWS Enable Primary Connection") ### Virtual Interface This step is performed on AWS. The connection created above needs to have an interface to which to connect. ![AWS Virtual Interface 1](/assets/images/vxc-aws-virtual-interface-1.png "AWS Virtual Interface 1") ![AWS Virtual Interface 2](/assets/images/vxc-aws-virtual-interface-2.png "AWS Virtual Interface 2") Interface Parameters | Parameter | Value | |-----------------------------------|--------------------------------------------------------------------------------------------------------| | Type | Private | | Connection | Choose the Direct Connection you accepted previously. | | Virtual interface owner | My AWS account | | Gateway Type | Virtual Private Gateway and select the one you created in Prerequisite – AWS → Virtual Private Gateway | | BGP ASN | 63440 - Telnyx ASN | | Your router peer IP - optional | `primary_telnyx_ip` | | Amazon router peer IP - optional | `primary_cloud_ip` | | BGP authentication key - optional | `primary_bgp_key` | Lastly you should see the following – the interface is “available”. ![AWS Interface Parameters](/assets/images/vxc-aws-interface-parameters.png "AWS Interface Parameters") ### Validate Connection This step is performed on AWS. SSH into an EC2 instance in the VPC and either ping or traceroute to one of the IP in the route table of the VPC. You can see the route went over the VXC instead of the public internet. ![AWS Validate Connection](/assets/images/vxc-aws-validate-connection.png "AWS Validate Connection") --- ### Google Cloud Interconnect > Source: https://developers.telnyx.com/docs/network/vxc/gcp.md ## Architecture We will construct the following architecture on Google Cloud. ![GCP Architecture](/assets/images/vxc-gcp-architecture.png "GCP Architecture") ## Prerequisites ### VLAN Attachment This step is performed on Google. ![GCP VLAN Attachment](/assets/images/vxc-gcp-vlan-attachment.png "GCP VLAN Attachment") Parameters: - "Partner Interconnect Connection" - "Set up unencrypted Interconnect" ![GCP VLAN Attachment Parameters](/assets/images/vxc-gcp-attach-parameters-1.png "GCP VLAN Attachment Parameters") ![GCP VLAN Attachment Parameters 2](/assets/images/vxc-gcp-attach-parameters-2.png "GCP VLAN Attachment Parameters 2") - "Network": Choose the one you are connecting from - "Region": Choose the one that there is a Telnyx PoP in proximity - "MTU": 8896 ![GCP VLAN Attachment Parameters 3](/assets/images/vxc-gcp-attach-parameters-3.png "GCP VLAN Attachment Parameters 3") - Create a router or choose an existing one. ![GCP VLAN Attachment Parameters 4](/assets/images/vxc-gcp-attach-parameters-4.png "GCP VLAN Attachment Parameters 4") ![GCP VLAN Attachment Parameters 5](/assets/images/vxc-gcp-attach-parameters-5.png "GCP VLAN Attachment Parameters 5") ![GCP VLAN Attachment Parameters 6](/assets/images/vxc-gcp-attach-parameters-6.png "GCP VLAN Attachment Parameters 6") After creating the attachment, Google will display a **pairing key** — a string in the format `//` (e.g. `718639df-e02e-49ba-856b-0d86b17e77f4/us-central1/1`). Copy this — you will need it in the next step. For **redundant** connections, create two VLAN attachments and collect both pairing keys. ### Network This step is performed on Telnyx. If you don't have a network created already, you may follow [this guide](https://developers.telnyx.com/docs/network/networks) to create one. Note the `network_id` — it is required when creating a VXC. ## Procedure ### Create a VXC resource This step is performed on Telnyx. For a **single** connection: ```http request POST /v2/network_agents_gateway/vxc HTTP/1.1 Host: api.telnyx.com Content-Type: application/json Authorization: Bearer *** { "customer_name": "my-company", "network_id": "", "type": "single", "csp": "GCP", "region": "us-central1", "location": "Chicago IL, US", "speed": "50M", "primary_pairing_key": "//1", "bgp_key_primary": "" } ``` For a **redundant** connection: ```http request POST /v2/network_agents_gateway/vxc HTTP/1.1 Host: api.telnyx.com Content-Type: application/json Authorization: Bearer *** { "customer_name": "my-company", "network_id": "", "type": "redundant", "csp": "GCP", "region": "us-central1", "location": "Chicago IL, US", "speed": "50M", "primary_pairing_key": "//1", "secondary_pairing_key": "//2", "bgp_key_primary": "", "bgp_key_secondary": "" } ``` Key notes for GCP: - `csp_account` is **not required** for GCP (unlike AWS). - `cross_connect` P2P CIDRs are **optional** on create — GCP assigns the BGP peering IPs from the CSP side. You can supply `/29` CIDRs if you want to pre-configure them; otherwise set them via PATCH after the connection is up. - `primary_pairing_key` and `secondary_pairing_key` are the VLAN attachment pairing keys obtained from Google Cloud Console. - If you supply `bgp_key_primary`, configure the same MD5 key on the Google Cloud Router BGP session — both peers must use the same key. Poll `GET /v2/network_agents_gateway/vxc/{vxc_id}` to track provisioning status. The agent reports `pending` while work is in progress, then `created` on success or `failed` on error. ### Activate Connection This step is performed on Google. ![GCP Activate Connection](/assets/images/vxc-gcp-procedure-1.png "GCP Activate Connection") ![GCP Activate Connection 2](/assets/images/vxc-gcp-procedure-2.png "GCP Activate Connection 2") ![GCP Activate Connection 3](/assets/images/vxc-gcp-procedure-3.png "GCP Activate Connection 3") "Peer ASN": 63440 (Telnyx) ![GCP Activate Connection 4](/assets/images/vxc-gcp-procedure-4.png "GCP Activate Connection 4") ### Set Cross-Connect CIDRs (if not supplied on create) This step is performed on Telnyx. After activation, Google assigns BGP peering IP addresses to the VLAN attachment. Use these to configure the P2P `/29` subnets on the VXC: ```http request PATCH /v2/network_agents_gateway/vxc/{vxc_id} HTTP/1.1 Host: api.telnyx.com Content-Type: application/json Authorization: Bearer *** { "cross_connect": { "primary": "169.254.2.0/29", "secondary": "169.254.2.8/29" } } ``` > **Note:** GCP Dedicated Interconnect uses `/29` subnets (not `/30`). The first usable IP in the block is assigned to the GCP router; the second to Telnyx. ### Enable Routing This step is performed on Telnyx. Enable BGP routing to bring up the session: ```http request PATCH /v2/network_agents_gateway/vxc/{vxc_id} HTTP/1.1 Host: api.telnyx.com Content-Type: application/json Authorization: Bearer *** { "bgp_enabled": true } ``` At this point, on Google, the "Status" will show as "Up". ![GCP Update BGP Peering 3](/assets/images/vxc-gcp-update-bgp-peering-3.png "GCP Update BGP Peering 3") ### Validate Connection This step is performed on Google. - Under VPC networks, you should see the routes advertised over the cloud router created. - You can also SSH into a VM instance in the same VPC network and perform a traceroute. ![GCP Verify Connection](/assets/images/vxc-gcp-verify-connection.png "GCP Verify Connection") ```bash xxx@instance-20240503-154050:~$ traceroute sip.telnyx.com traceroute to sip.telnyx.com (192.76.120.10), 30 hops max, 60 byte packets 1 * * * 2 100.65.72.1 (100.65.72.1) 4.393 ms 4.367 ms 4.349 ms 3 64.16.254.51 (64.16.254.51) 114.732 ms 114.715 ms 114.698 ms 4 64.16.247.105 (64.16.247.105) 114.903 ms 114.877 ms 114.878 ms 5 192.76.120.160 (192.76.120.160) 114.843 ms 114.825 ms 114.825 ms 6 sip.telnyx.com (192.76.120.10) 114.857 ms 114.064 ms 114.038 ms ``` --- ### Azure ExpressRoute > Source: https://developers.telnyx.com/docs/network/vxc/azure.md ## Architecture We will construct the following architecture. ![Azure Architecture](/assets/images/vxc-azure-architecture.png "Azure Architecture") ## Prerequisites ### Create ExpressRoute Circuit This step is performed on Azure. ![Azure Prerequisite 1](/assets/images/vxc-azure-prerequisite-1.png "Azure Prerequisite 1") ![Azure Prerequisite 2](/assets/images/vxc-azure-prerequisite-2.png "Azure Prerequisite 2") | Parameter | Value | |------------------|----------------------------------------------------------------| | Region | Choose the matching available region from the VXC coverage API | | Port Type | Provider | | Provider | Equinix | | Peering location | matching available region from the VXC coverage API | | Bandwidth | Choose the available bandwidth from the VXC coverage API | | SKU | Standard | Choose the remaining parameters as needed. ![Azure Pre-requisite 3](/assets/images/vxc-azure-prerequisite-3.png "Azure Pre-requisite 3") At the end of this step, the “Provider status” should say “Not provisioned”. ### Network This step is performed on Telnyx. If you don't have a network created already, you may follow [this guide](https://developers.telnyx.com/docs/network/networks) to create one. ## Procedure ### Create a VXC resource This step is performed on Telnyx. ```http request POST /v2/network_agents_gateway/vxc HTTP/1.1 Host: api.telnyx.com Content-Type: application/json Authorization: Bearer *** { "customer_name": "my-company", "network_id": "", "type": "single", "csp": "AZU", "primary_service_key": "", "region": "germanywestcentral", "location": "Frankfurt, DE", "speed": "50M", "bgp_asn": 12076, "bgp_key_primary": "" } ``` | Parameter | Value | |-----------------|--------------------------------------------------------------------| | `csp` | `AZU` | | `primary_service_key` | Service key from the ExpressRoute circuit created previously | | `secondary_service_key` | Secondary service key, redundant connections only | | `region` | Choose the matching Azure region from the VXC coverage API | | `location` | Telnyx PoP name from the coverage API, e.g. `Frankfurt, DE` | | `speed` | Chosen from available bandwidth in the VXC coverage API response | | `bgp_asn` | BGP ASN of the Azure side of the session (0–65535). Azure's default is 12076. | | `bgp_key_primary` | Optional MD5 BGP authentication key. Omit for no authentication. | | `bgp_key_secondary` | Optional, redundant connections only. | > **BGP auth key:** If you supply `bgp_key_primary`, configure the same MD5 key on the Azure ExpressRoute private peering — both peers must use the same key. Take note of the following info in the response; you will need it later. - `id` - `primary_cloud_ip` - `primary_bgp_key` ### Enable Routing This step is performed on Telnyx. Enable BGP routing to bring up the session and start advertising routes. You must make sure routing is enabled before proceeding to the Azure Private Peering step. ```http request PATCH /v2/network_agents_gateway/vxc/{vxc_id} HTTP/1.1 Host: api.telnyx.com Content-Type: application/json Authorization: Bearer *** { "bgp_enabled": true } ``` Poll `GET /v2/network_agents_gateway/vxc/{vxc_id}` until `bgp_enabled` is `true` before proceeding to the next step. ### Azure Private Peering This step is performed on Azure. “Provider status” must show “Provisioned” before performing this step. ![Azure Private Peering 1](/assets/images/vxc-azure-private-peering-1.png "Azure Pre-requisite 1") ![Azure Private Peering 2](/assets/images/vxc-azure-private-peering-2.png "Azure Pre-requisite 2") ![Azure Private Peering 3](/assets/images/vxc-azure-private-peering-3.png "Azure Pre-requisite 3") | Parameter | Value | |-----------------------|-------------------------------------------------------| | Peer ASN | Telnyx’s BGP ASN which is 63440 | | Subnets | IPv4 | | IPv4 Primary subnet | Choose the /30 block that includes `primary_cloud_ip` | | IPv4 Secondary subnet | Choose the next /30 block | | VLAN ID | Choose any number from a valid VLAN range | | Shared key | primary bgp key | | Public IP address | Create new | | Public IP address SKU | Standard | After saving, you may need to wait for some time before performing the next step. ![Azure Private Peering 4](/assets/images/vxc-azure-private-peering-4.png "Azure Pre-requisite 4") At this point, you should see Telnyx IPs advertised in the result after you click into “View route table.” ![Azure Private Peering 5](/assets/images/vxc-azure-private-peering-5.png "Azure Pre-requisite 5") At this point, you are all set. Perform the following steps only if you are trying to test things out before putting it into production. ### Virtual Network ![Azure Virtual Network 1](/assets/images/vxc-azure-virtual-network-1.png "Azure Virtual Network 1") | Parameters | Value | |------------|------------------------------------------------------------------| | Region | Match that of the virtual network created from the previous step | Next, add a Gateway subnet. Keep all parameters as default. ![Azure Virtual Network 2](/assets/images/vxc-azure-virtual-network-2.png "Azure Virtual Network 2") ### Virtual Network Gateways ![Azure Virtual Network Gateways 1](/assets/images/vxc-azure-virtual-network-gateways-1.png "Azure Virtual Network Gateways 1") | Parameters | Value | |-----------------------|------------------------------------------------------------------| | Name | Something meaningful to you | | Region | Match that of the virtual network created from the previous step | | Gateway type | Express Route | | SKU | Standard | | Virtual network | Choose the one created from the previous step | | Public IP address | Create new | | Public IP address SKU | Standard | The gateway creation will take a while; upward of 20 minutes. In the meantime, you can proceed to the following step. ### Virtual Machines ![Azure Virtual Machines 1](/assets/images/vxc-azure-virtual-machines-1.png "Azure Virtual Machines 1") | Parameters | Value | |------------|------------------------------------------------------------------| | Region | Match that of the virtual network created from the previous step | ![Azure Virtual Machines 2](/assets/images/vxc-azure-virtual-machines-2.png "Azure Virtual Machines 2") | Parameters | Value | |-----------------|-----------------------------------------------| | Virtual network | Choose the one created from the previous step | Keep the remaining settings at their defaults or adjust them as needed. ### Add Gateway Connection This step is performed on Azure. The Virtual Gateway you created must be successfully deployed before this step is performed. ![Azure Add Gateway Connection 1](/assets/images/vxc-azure-add-gateway-connection-1.png "Azure Add Gateway Connection 1") ![Azure Add Gateway Connection 2](/assets/images/vxc-azure-add-gateway-connection-2.png "Azure Add Gateway Connection 2") | Parameters | Value | |-----------------|---------------| | Connection type | Express Route | ![Azure Add Gateway Connection 3](/assets/images/vxc-azure-add-gateway-connection-3.png "Azure Add Gateway Connection 3") | Parameters | Value | |-------------------------|-----------------------------------------------| | Virtual network gateway | Choose the one created from the previous step | | ExpressRoute circuit | Choose the one created from the previous step | | Routing weight | 0 | ### Validate Connection This step is performed on Azure. Ensure all of the following are successfully deployed: - ExpressRoute - Virtual network - Virtual network gateway & connection - Virtual machine SSH into the VM and perform a traceroute to sip.telnyx.com and sip.telnyx.eu. You can see the next hop is the next hop indicated on the Azure Private Peering under the express route. ![Azure Validate Connection](/assets/images/vxc-azure-verify-connection.png "Azure Validate Connection") --- ## API Reference (Virtual Cross Connect) ### Virtual Cross Connects - [List all Virtual Cross Connects](https://developers.telnyx.com/api-reference/virtual-cross-connects/list-all-virtual-cross-connects.md): Returns a paginated list of the virtual cross connects on your account, with support for filtering. - [Create a Virtual Cross Connect](https://developers.telnyx.com/api-reference/virtual-cross-connects/create-a-virtual-cross-connect.md): Create a new Virtual Cross Connect.

For AWS and GCE, you have the option of creating the primary connection first and the secondary connection later… - [Delete a Virtual Cross Connect](https://developers.telnyx.com/api-reference/virtual-cross-connects/delete-a-virtual-cross-connect.md): Deletes the specified virtual cross connect from your account. - [Retrieve a Virtual Cross Connect](https://developers.telnyx.com/api-reference/virtual-cross-connects/retrieve-a-virtual-cross-connect.md): Returns the details of a single virtual cross connect by its identifier. - [Update the Virtual Cross Connect](https://developers.telnyx.com/api-reference/virtual-cross-connects/update-the-virtual-cross-connect.md): Update the Virtual Cross Connect.

Cloud IPs can only be patched during the `created` state, as GCE will only inform you of your generated IP once th… - [List Virtual Cross Connect Cloud Coverage](https://developers.telnyx.com/api-reference/virtual-cross-connects/list-virtual-cross-connect-cloud-coverage.md): List Virtual Cross Connects Cloud Coverage.

This endpoint shows which cloud regions are available for the `location_code` your Virtual Cross Connect…