|
| 1 | +--- |
| 2 | +title: How To Configure Azure ExpressRoute Direct using CLI | Microsoft Docs |
| 3 | +description: This page helps you configure ExpressRoute Direct using CLI (Preview) |
| 4 | +services: expressroute |
| 5 | +author: cherylmc |
| 6 | + |
| 7 | +ms.service: expressroute |
| 8 | +ms.topic: conceptual |
| 9 | +ms.date: 10/18/2018 |
| 10 | +ms.author: cherylmc |
| 11 | + |
| 12 | +--- |
| 13 | + |
| 14 | +# How to configure ExpressRoute Direct using CLI (Preview) |
| 15 | + |
| 16 | +ExpressRoute Direct gives you the ability to connect directly into Microsoft’s global network at peering locations strategically distributed across the world. For more information, see [About ExpressRoute Direct Connect](expressroute-erdirect-about.md). |
| 17 | + |
| 18 | +> [!IMPORTANT] |
| 19 | +> ExpressRoute direct is currently in Preview. |
| 20 | +> |
| 21 | +> This Public Preview is provided without a service level agreement and should not be used for production workloads. Certain features may not be supported, may have constrained capabilities, or may not be available in all Azure locations. See the [Supplemental Terms of Use for Microsoft Azure Previews](https://azure.microsoft.com/support/legal/preview-supplemental-terms/) for details. |
| 22 | +
|
| 23 | +## <a name="resources"></a>Create the resource |
| 24 | + |
| 25 | +1. Sign in to Azure and select the subscription. The ExpressRoute Direct resource and ExpressRoute circuits must be in the same subscription. |
| 26 | + |
| 27 | + ```azurecli |
| 28 | + az login |
| 29 | + ``` |
| 30 | + |
| 31 | + Check the subscriptions for the account. |
| 32 | + |
| 33 | + ```azurecli |
| 34 | + az account list |
| 35 | + ``` |
| 36 | + |
| 37 | + Select the subscription for which you want to create an ExpressRoute circuit. |
| 38 | + ```azurecli |
| 39 | + az account set --subscription "<subscription ID>" |
| 40 | + ``` |
| 41 | +2. List all locations where ExpressRoute Direct is supported. |
| 42 | + |
| 43 | + ```azurecli |
| 44 | + az network express-route port location list |
| 45 | + ``` |
| 46 | + |
| 47 | + **Example output** |
| 48 | + |
| 49 | + ```azurecli |
| 50 | + [ |
| 51 | + { |
| 52 | + "address": "21715 Filigree Court, DC2, Building F, Ashburn, VA 20147", |
| 53 | + "availableBandwidths": [], |
| 54 | + |
| 55 | + "id": "/subscriptions/<subscriptionID>/providers/Microsoft.Network/expressRoutePortsLocations/Equinix-Ashburn-DC2", |
| 56 | + "location": null, |
| 57 | + "name": "Equinix-Ashburn-DC2", |
| 58 | + "provisioningState": "Succeeded", |
| 59 | + "tags": null, |
| 60 | + "type": "Microsoft.Network/expressRoutePortsLocations" |
| 61 | + }, |
| 62 | + { |
| 63 | + "address": "1950 N. Stemmons Freeway, Suite 1039A, DA3, Dallas, TX 75207", |
| 64 | + "availableBandwidths": [], |
| 65 | + |
| 66 | + "id": "/subscriptions/<subscriptionID>/providers/Microsoft.Network/expressRoutePortsLocations/Equinix-Dallas-DA3", |
| 67 | + "location": null, |
| 68 | + "name": "Equinix-Dallas-DA3", |
| 69 | + "provisioningState": "Succeeded", |
| 70 | + "tags": null, |
| 71 | + "type": "Microsoft.Network/expressRoutePortsLocations" |
| 72 | + }, |
| 73 | + { |
| 74 | + "address": "111 8th Avenue, New York, NY 10011", |
| 75 | + "availableBandwidths": [], |
| 76 | + |
| 77 | + "id": "/subscriptions/<subscriptionID>/providers/Microsoft.Network/expressRoutePortsLocations/Equinix-New-York-NY5", |
| 78 | + "location": null, |
| 79 | + "name": "Equinix-New-York-NY5", |
| 80 | + "provisioningState": "Succeeded", |
| 81 | + "tags": null, |
| 82 | + "type": "Microsoft.Network/expressRoutePortsLocations" |
| 83 | + }, |
| 84 | + { |
| 85 | + "address": "11 Great Oaks Blvd, SV1, San Jose, CA 95119", |
| 86 | + "availableBandwidths": [], |
| 87 | + |
| 88 | + "id": "/subscriptions/<subscriptionID>/providers/Microsoft.Network/expressRoutePortsLocations/Equinix-San-Jose-SV1", |
| 89 | + "location": null, |
| 90 | + "name": "Equinix-San-Jose-SV1", |
| 91 | + "provisioningState": "Succeeded", |
| 92 | + "tags": null, |
| 93 | + "type": "Microsoft.Network/expressRoutePortsLocations" |
| 94 | + }, |
| 95 | + { |
| 96 | + "address": "2001 Sixth Ave., Suite 350, SE2, Seattle, WA 98121", |
| 97 | + "availableBandwidths": [], |
| 98 | + |
| 99 | + "id": "/subscriptions/<subscriptionID>/providers/Microsoft.Network/expressRoutePortsLocations/Equinix-Seattle-SE2", |
| 100 | + "location": null, |
| 101 | + "name": "Equinix-Seattle-SE2", |
| 102 | + "provisioningState": "Succeeded", |
| 103 | + "tags": null, |
| 104 | + "type": "Microsoft.Network/expressRoutePortsLocations" |
| 105 | + } |
| 106 | + ] |
| 107 | + ``` |
| 108 | +3. Determine if a location listed above has available bandwidth |
| 109 | + |
| 110 | + ```azurecli |
| 111 | + az network express-route port location show -l "Equinix-Ashburn-DC2" |
| 112 | + ``` |
| 113 | + |
| 114 | + **Example output** |
| 115 | + |
| 116 | + ```azurecli |
| 117 | + { |
| 118 | + "address": "21715 Filigree Court, DC2, Building F, Ashburn, VA 20147", |
| 119 | + "availableBandwidths": [ |
| 120 | + { |
| 121 | + "offerName": "100 Gbps", |
| 122 | + "valueInGbps": 100 |
| 123 | + } |
| 124 | + ], |
| 125 | + |
| 126 | + "id": "/subscriptions/<subscriptionID>/providers/Microsoft.Network/expressRoutePortsLocations/Equinix-Ashburn-DC2", |
| 127 | + "location": null, |
| 128 | + "name": "Equinix-Ashburn-DC2", |
| 129 | + "provisioningState": "Succeeded", |
| 130 | + "tags": null, |
| 131 | + "type": "Microsoft.Network/expressRoutePortsLocations" |
| 132 | + } |
| 133 | + ``` |
| 134 | +4. Create an ExpressRoute Direct resource based on the location chosen above |
| 135 | + |
| 136 | + ExpressRoute Direct supports both QinQ and Dot1Q encapsulation. If QinQ is selected, each ExpressRoute circuit will be dynamically assigned an S-Tag and will be unique throughout the ExpressRoute Direct resource. Each C-Tag on the circuit must be unique on the circuit, but not across the ExpressRoute Direct. |
| 137 | + |
| 138 | + If Dot1Q encapsulation is selected, you must manage uniqueness of the C-Tag (VLAN) across the entire ExpressRoute Direct resource. |
| 139 | + |
| 140 | + > [!IMPORTANT] |
| 141 | + > ExpressRoute Direct can only be one encapsulation type. Encapsulation cannot be changed after ExpressRoute Direct creation. |
| 142 | + > |
| 143 | + |
| 144 | + ```azurecli |
| 145 | + az network express-route port create -n $name -g $RGName --bandwidth 100 gbps --encapsulation QinQ | Dot1Q --peering-location $PeeringLocationName -l $AzureRegion |
| 146 | + ``` |
| 147 | + |
| 148 | + > [!NOTE] |
| 149 | + > The Encapsulation attribute could also be set to Dot1Q. |
| 150 | + > |
| 151 | +
|
| 152 | + **Example output:** |
| 153 | + |
| 154 | + ```azurecli |
| 155 | + { |
| 156 | + "allocationDate": "Wednesday, October 17, 2018", |
| 157 | + "bandwidthInGbps": 100, |
| 158 | + "circuits": null, |
| 159 | + "encapsulation": "Dot1Q", |
| 160 | + "etag": "W/\"<etagnumber>\"", |
| 161 | + "etherType": "0x8100", |
| 162 | + "id": "/subscriptions/<subscriptionID>/resourceGroups/Contoso-Direct-rg/providers/Microsoft.Network/expressRoutePorts/Contoso-Direct", |
| 163 | + "links": [ |
| 164 | + { |
| 165 | + "adminState": "Disabled", |
| 166 | + "connectorType": "LC", |
| 167 | + "etag": "W/\"<etagnumber>\"", |
| 168 | + "id": "/subscriptions/<subscriptionID>/resourceGroups/Contoso-Direct-rg/providers/Microsoft.Network/expressRoutePorts/Contoso-Direct/links/link1", |
| 169 | + "interfaceName": "HundredGigE2/2/2", |
| 170 | + "name": "link1", |
| 171 | + "patchPanelId": "PPID", |
| 172 | + "provisioningState": "Succeeded", |
| 173 | + "rackId": "RackID", |
| 174 | + "resourceGroup": "Contoso-Direct-rg", |
| 175 | + "routerName": "tst-09xgmr-cis-1", |
| 176 | + "type": "Microsoft.Network/expressRoutePorts/links" |
| 177 | + }, |
| 178 | + { |
| 179 | + "adminState": "Disabled", |
| 180 | + "connectorType": "LC", |
| 181 | + "etag": "W/\"<etagnumber>\"", |
| 182 | + "id": "/subscriptions/<subscriptionID>/resourceGroups/Contoso-Direct-rg/providers/Microsoft.Network/expressRoutePorts/Contoso-Direct/links/link2", |
| 183 | + "interfaceName": "HundredGigE2/2/2", |
| 184 | + "name": "link2", |
| 185 | + "patchPanelId": "PPID", |
| 186 | + "provisioningState": "Succeeded", |
| 187 | + "rackId": "RackID", |
| 188 | + "resourceGroup": "Contoso-Direct-rg", |
| 189 | + "routerName": "tst-09xgmr-cis-2", |
| 190 | + "type": "Microsoft.Network/expressRoutePorts/links" |
| 191 | + } |
| 192 | + ], |
| 193 | + "location": "westus", |
| 194 | + "mtu": "1500", |
| 195 | + "name": "Contoso-Direct", |
| 196 | + "peeringLocation": "Equinix-Ashburn-DC2", |
| 197 | + "provisionedBandwidthInGbps": 0.0, |
| 198 | + "provisioningState": "Succeeded", |
| 199 | + "resourceGroup": "Contoso-Direct-rg", |
| 200 | + "resourceGuid": "02ee21fe-4223-4942-a6bc-8d81daabc94f", |
| 201 | + "tags": null, |
| 202 | + "type": "Microsoft.Network/expressRoutePorts" |
| 203 | + } |
| 204 | + ``` |
| 205 | + |
| 206 | +## <a name="state"></a>Change Admin State of links |
| 207 | + |
| 208 | +This process should be used to conduct a Layer 1 test, ensuring that each cross-connection is properly patched into each router for primary and secondary. |
| 209 | + |
| 210 | +1. Set Link to Enabled. Repeat this step to set each link to enabled. |
| 211 | + |
| 212 | + Links[0] is the primary port and Links[1] is the secondary port. |
| 213 | + |
| 214 | + ```azurecli |
| 215 | + az network express-route port update -n Contoso-Direct -g Contoso-Direct-rg --set links[0].adminState="Enabled" |
| 216 | + ``` |
| 217 | + ```azurecli |
| 218 | + az network express-route port update -n Contoso-Direct -g Contoso-Direct-rg --set links[1].adminState="Enabled" |
| 219 | + ``` |
| 220 | + **Example output:** |
| 221 | + |
| 222 | + ```azurecli |
| 223 | + { |
| 224 | + "allocationDate": "Wednesday, October 17, 2018", |
| 225 | + "bandwidthInGbps": 100, |
| 226 | + "circuits": null, |
| 227 | + "encapsulation": "Dot1Q", |
| 228 | + "etag": "W/\"<etagnumber>\"", |
| 229 | + "etherType": "0x8100", |
| 230 | + "id": "/subscriptions/<subscriptionID>/resourceGroups/Contoso-Direct-rg/providers/Microsoft.Network/expressRoutePorts/Contoso-Direct", |
| 231 | + "links": [ |
| 232 | + { |
| 233 | + "adminState": "Enabled", |
| 234 | + "connectorType": "LC", |
| 235 | + "etag": "W/\"<etagnumber>\"", |
| 236 | + "id": "/subscriptions/<subscriptionID>/resourceGroups/Contoso-Direct-rg/providers/Microsoft.Network/expressRoutePorts/Contoso-Direct/links/link1", |
| 237 | + "interfaceName": "HundredGigE2/2/2", |
| 238 | + "name": "link1", |
| 239 | + "patchPanelId": "PPID", |
| 240 | + "provisioningState": "Succeeded", |
| 241 | + "rackId": "RackID", |
| 242 | + "resourceGroup": "Contoso-Direct-rg", |
| 243 | + "routerName": "tst-09xgmr-cis-1", |
| 244 | + "type": "Microsoft.Network/expressRoutePorts/links" |
| 245 | + }, |
| 246 | + { |
| 247 | + "adminState": "Enabled", |
| 248 | + "connectorType": "LC", |
| 249 | + "etag": "W/\"<etagnumber>\"", |
| 250 | + "id": "/subscriptions/<subscriptionID>/resourceGroups/Contoso-Direct-rg/providers/Microsoft.Network/expressRoutePorts/Contoso-Direct/links/link2", |
| 251 | + "interfaceName": "HundredGigE2/2/2", |
| 252 | + "name": "link2", |
| 253 | + "patchPanelId": "PPID", |
| 254 | + "provisioningState": "Succeeded", |
| 255 | + "rackId": "RackID", |
| 256 | + "resourceGroup": "Contoso-Direct-rg", |
| 257 | + "routerName": "tst-09xgmr-cis-2", |
| 258 | + "type": "Microsoft.Network/expressRoutePorts/links" |
| 259 | + } |
| 260 | + ], |
| 261 | + "location": "westus", |
| 262 | + "mtu": "1500", |
| 263 | + "name": "Contoso-Direct", |
| 264 | + "peeringLocation": "Equinix-Ashburn-DC2", |
| 265 | + "provisionedBandwidthInGbps": 0.0, |
| 266 | + "provisioningState": "Succeeded", |
| 267 | + "resourceGroup": "Contoso-Direct-rg", |
| 268 | + "resourceGuid": "<resourceGUID>", |
| 269 | + "tags": null, |
| 270 | + "type": "Microsoft.Network/expressRoutePorts" |
| 271 | + } |
| 272 | + ``` |
| 273 | + |
| 274 | + Use the same procedure with `AdminState = “Disabled”` to turn down the ports. |
| 275 | + |
| 276 | +## <a name="circuit"></a>Create a circuit |
| 277 | + |
| 278 | +By default, you can create 10 circuits in the subscription where the ExpressRoute Direct resource is. This can be increased by support. You are responsible for tracking both Provisioned and Utilized Bandwidth. Provisioned bandwidth is the sum of bandwidth of all circuits on the ExpressRoute Direct resource and utilized bandwidth is the physical usage of the underlying physical interfaces. |
| 279 | + |
| 280 | +There are additional circuit bandwidths that can be utilized on ExpressRoute Direct only to support the scenarios outlined above. These are: 40Gbps and 100Gbps. |
| 281 | + |
| 282 | +Standard or premium circuits can be created. Standard circuits are included in the cost, while premium circuits have a cost based on the bandwidth selected. Circuits can only be created as metered, as unlimited is not supported on ExpressRoute Direct. |
| 283 | + |
| 284 | +Create a circuit on the ExpressRoute Direct resource. |
| 285 | + |
| 286 | + ```azurecli |
| 287 | + az network express-route create --express-route-port "/subscriptions/<subscriptionID>/resourceGroups/Contoso-Direct-rg/providers/Microsoft.Network/expressRoutePorts/Contoso-Direct" -n "Contoso-Direct-ckt" -g "Contoso-Direct-rg" --sku-family MeteredData --sku-tier Standard --bandwidth 100 Gbps |
| 288 | + ``` |
| 289 | + |
| 290 | + Other bandwidths include: 1.0, 2.0, 5.0, 10.0, and 40.0 |
| 291 | + |
| 292 | + **Example output:** |
| 293 | + |
| 294 | + ```azurecli |
| 295 | + { |
| 296 | + "allowClassicOperations": false, |
| 297 | + "allowGlobalReach": false, |
| 298 | + "authorizations": [], |
| 299 | + "bandwidthInGbps": 100.0, |
| 300 | + "circuitProvisioningState": "Enabled", |
| 301 | + "etag": "W/\"<etagnumber>\"", |
| 302 | + "expressRoutePort": { |
| 303 | + "id": "/subscriptions/<subscriptionID>/resourceGroups/Contoso-Direct-rg/providers/Microsoft.Network/expressRoutePorts/Contoso-Direct", |
| 304 | + "resourceGroup": "Contoso-Direct-rg" |
| 305 | + }, |
| 306 | + "gatewayManagerEtag": "", |
| 307 | + "id": "/subscriptions/<subscriptionID>/resourceGroups/Contoso-Direct-rg/providers/Microsoft.Network/expressRouteCircuits/ERDirect-ckt-cli", |
| 308 | + "location": "westus", |
| 309 | + "name": "ERDirect-ckt-cli", |
| 310 | + "peerings": [], |
| 311 | + "provisioningState": "Succeeded", |
| 312 | + "resourceGroup": "Contoso-Direct-rg", |
| 313 | + "serviceKey": "<serviceKey>", |
| 314 | + "serviceProviderNotes": null, |
| 315 | + "serviceProviderProperties": null, |
| 316 | + "serviceProviderProvisioningState": "Provisioned", |
| 317 | + "sku": { |
| 318 | + "family": "MeteredData", |
| 319 | + "name": "Standard_MeteredData", |
| 320 | + "tier": "Standard" |
| 321 | + }, |
| 322 | + "stag": null, |
| 323 | + "tags": null, |
| 324 | + "type": "Microsoft.Network/expressRouteCircuits" |
| 325 | + } |
| 326 | + ``` |
| 327 | + |
| 328 | +## Next steps |
| 329 | + |
| 330 | +For more information about ExpressRoute Direct, see the [Overview](expressroute-erdirect-about.md). |
0 commit comments