Desarrollo e integración de la API CrossConnnections de ExpressRoute

La API de Resource Manager de asociado de ExpressRoute permite a los asociados de ExpressRoute administrar la configuración de nivel 2 y nivel 3 de los circuitos ExpressRoute del cliente. La API de Resource Manager del asociado de ExpressRoute presenta un nuevo tipo de recurso, expressRouteCrossConnections. Los asociados usan este recurso para administrar los circuitos ExpressRoute de los clientes.

Flujo de trabajo

El recurso expressRouteCrossConnections es un recurso de propiedad reemplazada del circuito ExpressRoute. Cuando un cliente de Azure crea un circuito ExpressRoute y selecciona un asociado de ExpressRoute específico, Microsoft crea un recurso expressRouteCrossConnections en la suscripción de administración de Azure ExpressRoute del asociado. Al hacerlo, Microsoft define un grupo de recursos en el que se va a crear el recurso expressRouteCrossConnections. El estándar de nomenclatura para el grupo de recursos es CrossConnection-PeeringLocation, donde PeeringLocation es igual a la ubicación de ExpressRoute. Por ejemplo, si un cliente crea un circuito ExpressRoute en Denver, CrossConnection se creará en la suscripción de Azure del asociado en el siguiente grupo de recursos: CrossConnnection-Denver.

Los asociados de ExpressRoute administran la configuración de nivel 2 y nivel 3 emitiendo operaciones REST en el recurso expressRouteCrossConnections.

Ventajas

Ventajas de mover al recurso expressRouteCrossConnections:

  • Las futuras mejoras de los asociados de ExpressRoute estarán disponibles en el recurso ExpressRouteCrossConnection.

  • Los asociados pueden aplicar el control de acceso basado en rol de Azure (Azure RBAC) al recurso expressRouteCrossConnection. Estos controles pueden definir permisos para los que las cuentas de usuario pueden modificar el recurso expressRouteCrossConnection y agregar, actualizar o eliminar configuraciones de emparejamiento.

  • El recurso expressRouteCrossConnection expone las API que pueden ser útiles para solucionar problemas de conexiones de ExpressRoute. Esto incluye la tabla ARP, el resumen de la tabla de rutas BGP y los detalles de la tabla de rutas BGP. Esta capacidad no es compatible con las API de implementación clásica.

  • Los asociados también pueden buscar las comunidades anunciadas en el emparejamiento de Microsoft mediante el recurso RouteFilter.

Pasos de desarrollo e integración de API

Para desarrollar con Partner API, los asociados de ExpressRoute aprovechan la configuración de un cliente de prueba y un asociado de prueba. La configuración del cliente de prueba se usará para crear circuitos ExpressRoute en ubicaciones de emparejamiento de prueba que se asignan a puertos y dispositivos ficticios. La configuración del asociado de prueba se usa para administrar los circuitos ExpressRoute creados en la ubicación de emparejamiento de prueba.

1. Dar de alta suscripciones

Para solicitar la configuración del asociado de prueba y cliente de prueba, dé de alta dos suscripciones a Azure de Pago por uso para el contacto de ingeniería de ExpressRoute:

  • ExpressRoute_API_Dev_Provider_Sub: Esta suscripción se usará para administrar los circuitos ExpressRoute creados en las ubicaciones de emparejamiento de prueba en dispositivos y puertos ficticios.

  • ExpressRoute_API_Dev_Customer_Sub: Esta suscripción se usará para crear los circuitos ExpressRoute en las ubicaciones de emparejamiento de prueba que se asignan a dispositivos y puertos ficticios.

Ubicaciones de emparejamiento de prueba: los dispositivos y puertos ficticios no se exponen a los clientes de producción de forma predeterminada. Para crear circuitos ExpressRoute que se asignarán a la configuración de prueba, es necesario habilitar una marca de característica de suscripción.

2. Registrar la suscripción Dev_Provider para acceder a la API expressRouteCrossConnections

Para acceder a la API expressRouteCrossConnections, la suscripción de asociado debe inscribirse en el proveedor de recursos Microsoft.Network. Siga los pasos descritos del artículo Tipos y proveedores de recursos de Azure para completar el proceso de registro.

3. Configurar la autenticación para las llamadas de API de REST de Azure Resource Manager

La mayoría de los servicios de Azure requieren el código de cliente para autenticarse en Resource Manager, mediante credenciales válidas, antes de llamar a las API de servicio. La autenticación la coordina Azure AD entre los distintos actores y proporciona al cliente un token de acceso como prueba de autenticación.

El proceso de autenticación implica dos pasos principales:

  1. Registrar el cliente.
  2. Crear la solicitud de acceso.

4. Proporcionar el permiso de colaborador de red a la aplicación cliente

Una vez que la autenticación se haya configurado correctamente, debe conceder acceso de colaborador de red a la aplicación cliente, en Dev_Provider_Sub. Para conceder permiso, inicie sesión en Azure Portal y complete estos pasos:

  1. Navegue hasta Suscripciones y seleccione Dev_Provider_Sub.
  2. Navegue hasta Control de acceso (IAM).
  3. Agregue la asignación de roles.
  4. Seleccione el rol Colaborador de red.
  5. Asigne acceso al usuario, grupo o entidad de servicio de Azure AD.
  6. Seleccione la aplicación cliente.
  7. Guardar cambios

5. Desarrollar

Desarrolle con la API expressRouteCrossConnections.

Flujo de trabajo de administración de conectividad

Una vez que reciba la clave de servicio de ExpressRoute del cliente de destino, siga las siguientes operaciones de API de ejemplo y flujo de trabajo para configurar la conectividad de ExpressRoute:

  1. Lista de expressRouteCrossConnection: para administrar la conectividad de ExpressRoute, debe identificar el valor de Name y de ResourceGroup del recurso expressRouteCrossConnection de destino. El valor de Name del recurso expressRouteCrossConnection es la clave de servicio de destino del circuito de ExpressRoute del cliente. Para buscar el elemento ResourceGroupName, debe enumerar todos los recursos expressRouteCrossConnections de la suscripción del proveedor y buscar los resultados de la clave de servicio de destino. Desde aquí, puede anotar el valor de ResourceGroupName y formar la llamada API GET expressRouteCrossConnection.
GET /subscriptions/<ProviderManagementSubscription>/providers/Microsoft.Network/expressRouteCrossConnections?api-version=2018-02-01 HTTP/1.1
Host: management.azure.com
Authorization: Bearer eyJ0eXAiOiJKV...
User-Agent: ARMClient/1.2.0.0
Accept: application/json
x-ms-request-id: f484de7d-6c19-412f-a5eb-e5c9dd247d3c


---------- Response (601 ms) ------------

HTTP/1.1 200 OK
Pragma: no-cache
x-ms-request-id: 620ec7bf-4fd1-446f-96e9-97fbae16722f
Strict-Transport-Security: max-age=31536000; includeSubDomains
Cache-Control: no-cache
Server: Microsoft-HTTPAPI/2.0; Microsoft-HTTPAPI/2.0
x-ms-ratelimit-remaining-subscription-reads: 14999
x-ms-correlation-request-id: 6e484d0b-2f2e-4cef-9e18-87a9b7441bc4
x-ms-routing-request-id: WESTUS:20180501T192531Z:6e484d0b-2f2e-4cef-9e18-87a9b7441bc4
X-Content-Type-Options: nosniff
Date: Tue, 01 May 2018 19:25:31 GMT

{
  "value": [
    {
      "name": "24e6ea2b-6940-4bec-b0b3-3a9e5471e512",
      "id": "/subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/24e6ea2b-6940-4bec-b0b3-3a9e5471e512",
      "etag": "W/\"19fa7ada-5189-4817-a9d6-499b02e379cc\"",
      "type": "Microsoft.Network/expressRouteCrossConnections",
      "location": "eastus2euap",
      "properties": {
        "provisioningState": "Succeeded",
        "expressRouteCircuit": {
          "id": "/subscriptions/<TargetCustomerSubscription>/resourceGroups/Karthikcrossconnectiontest/providers/Microsoft.Network/expressRouteCircuits/TestCircuit2"
        },
        "peeringLocation": "EUAP Test",
        "bandwidthInMbps": 200,
        "serviceProviderProvisioningState": "Provisioned",
        "peerings": []
      }
    },
    {
      "name": "9ee700ad-50b2-4b98-a63a-4e52f855ac24",
      "id": "/subscriptions/8030cec9-2c0c-4361-9949-1655c6e4b0fa/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/<ProviderManagementSubscription>",
      "etag": "W/\"f07a267f-4a5c-4538-83e5-de1fcb183801\"",
      "type": "Microsoft.Network/expressRouteCrossConnections",
      "location": "eastus2euap",
      "properties": {
        "provisioningState": "Succeeded",
        "expressRouteCircuit": {
          "id": "/subscriptions/<ProviderManagementSubscription>/resourceGroups/Karthikcrossconnectiontest/providers/Microsoft.Network/expressRouteCircuits/TestCircuitXYZ"
        },
        "peeringLocation": "EUAP Test",
        "bandwidthInMbps": 200,
        "serviceProviderProvisioningState": "NotProvisioned",
        "peerings": []
      }
    }
  ]
}
  1. GET expressRouteCrossConnection: una vez que haya identificado tanto el elemento Name como el elemento ResourceGroupName del recurso expressRouteCrossConnection de destino, debe realizar la llamada API GET expressRouteCrossConnection.
GET /subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/9ee700ad-50b2-4b98-a63a-4e52f855ac24?api-version=2018-02-01 HTTP/1.1
Host: management.azure.com
Authorization: Bearer eyJ0eXAiOiJKV...
User-Agent: ARMClient/1.2.0.0
Accept: application/json
x-ms-request-id: d17924c4-f977-4c82-b933-d66c5fa334dd


---------- Response (3317 ms) ------------

HTTP/1.1 200 OK
Pragma: no-cache
x-ms-request-id: 41621c90-2e59-4220-9a32-3b29b1198bf5
Strict-Transport-Security: max-age=31536000; includeSubDomains
Cache-Control: no-cache
Server: Microsoft-HTTPAPI/2.0; Microsoft-HTTPAPI/2.0
x-ms-ratelimit-remaining-subscription-reads: 14999
x-ms-correlation-request-id: 85e08ce4-5a8f-4fe4-a434-e3fddef250d4
x-ms-routing-request-id: WESTUS:20180501T193230Z:85e08ce4-5a8f-4fe4-a434-e3fddef250d4
X-Content-Type-Options: nosniff
Date: Tue, 01 May 2018 19:32:29 GMT

{
  "name": "9ee700ad-50b2-4b98-a63a-4e52f855ac24",
  "id": "/subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/9ee700ad-50b2-4b98-a63a-4e52f855ac24",
  "etag": "W/\"f07a267f-4a5c-4538-83e5-de1fcb183801\"",
  "type": "Microsoft.Network/expressRouteCrossConnections",
  "location": "eastus2euap",
  "properties": {
    "provisioningState": "Succeeded",
    "expressRouteCircuit": {
      "id": "/subscriptions/<TargetCustomerSubscription>/resourceGroups/Karthikcrossconnectiontest/providers/Microsoft.Network/expressRouteCircuits/TestCircuitXYZ"
    },
    "peeringLocation": "EUAP Test",
    "bandwidthInMbps": 200,
    "serviceProviderProvisioningState": "NotProvisioned",
    "primaryAzurePort": "EUAP-ARMTEST-06GMR-CIS-1-PRI-A",
    "secondaryAzurePort": "EUAP-ARMTEST-06GMR-CIS-2-SEC-A",
    "sTag": 3,
    "peerings": []
  }
}
  1. PUT expressRouteCrossConnection: una vez que aprovisione la conectividad de capa 2, actualice el valor de ServiceProviderProvisioningState a Aprovisionado. En este punto, el cliente puede configurar el emparejamiento privado o de Microsoft y crear una conexión desde el circuito de ExpressRoute a una puerta de enlace de red virtual implementada en la suscripción del cliente.
PUT /subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/9ee700ad-50b2-4b98-a63a-4e52f855ac24?api-version=2018-02-01 HTTP/1.1
Host: management.azure.com
Authorization: Bearer eyJ0eXAiOiJKV...
User-Agent: ARMClient/1.2.0.0
Accept: application/json
x-ms-request-id: d867c3c9-2acf-4c54-a0f0-d7ca50fc7b9b

{
  "properties": {
    "serviceProviderProvisioningState": "Provisioned",
    "peeringLocation": "EUAP Test",
    "expressRouteCircuit": {
      "id": "/subscriptions/<ProviderManagementSubscription>/resourceGroups/Karthikcrossconnectiontest/providers/Microsoft.Network/expressRouteCircuits/TestCircuitXYZ"
    },
    "bandwidthInMbps": 200
  },
  "location": "East US 2 EUAP"
}
---------- Response (1740 ms) ------------

HTTP/1.1 200 OK
Pragma: no-cache
Retry-After: 10
x-ms-request-id: 0a8d458b-8fe3-44e6-89c9-1b156b946693
Azure-AsyncOperation: https://management.azure.com/subscriptions/8030cec9-2c0c-4361-9949-1655c6e4b0fa/providers/Microsoft.Network/locations/eastus2euap/operations/0a8d458b-8fe3-44e6-89c9-1b156b946693?api-version=2018-02-01
Strict-Transport-Security: max-age=31536000; includeSubDomains
Cache-Control: no-cache
Server: Microsoft-HTTPAPI/2.0; Microsoft-HTTPAPI/2.0
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id: d2d38c28-0dbe-4b40-8824-c74968c46b50
x-ms-routing-request-id: WESTUS:20180501T222105Z:d2d38c28-0dbe-4b40-8824-c74968c46b50
X-Content-Type-Options: nosniff
Date: Tue, 01 May 2018 22:21:04 GMT

{
  "name": "9ee700ad-50b2-4b98-a63a-4e52f855ac24",
  "id": "/subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/9ee700ad-50b2-4b98-a63a-4e52f855ac24",
  "etag": "W/\"ecdcb1a4-873b-4dad-ae56-a4b17795a84a\"",
  "type": "Microsoft.Network/expressRouteCrossConnections",
  "location": "eastus2euap",
  "properties": {
    "provisioningState": "Updating",
    "expressRouteCircuit": {
      "id": "/subscriptions/<TargetCustomerSubscription>/resourceGroups/Karthikcrossconnectiontest/providers/Microsoft.Network/expressRouteCircuits/TestCircuitXYZ"
    },
    "peeringLocation": "EUAP Test",
    "bandwidthInMbps": 200,
    "serviceProviderProvisioningState": "Provisioned",
    "primaryAzurePort": "",
    "secondaryAzurePort": "",
    "sTag": 0,
    "peerings": []
  }
}

C:\Users\kaanan\Documents\Expressroute\Partner APIs\ARMClient-master\ARMClient-master>armclient get https://management.azure.com/subscriptions/<ProviderManagementSubscription>/providers/Microsoft.Network/locations/eastus2euap/operations/0a8d458b-8fe3-44e6-89c9-1b156b946693?api-version=2018-02-01
{
  "status": "Succeeded"
}
  1. (Opcional) PUT expressRouteCrossConnection para configurar el emparejamiento privado: si administra la conectividad BGP de capa 3, puede habilitar el emparejamiento privado.
PUT /subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/9ee700ad-50b2-4b98-a63a-4e52f855ac24/peerings/AzurePrivatePeering?api-version=2018-02-01 HTTP/1.1
Host: management.azure.com
Authorization: Bearer eyJ0eXAiOiJKV...
User-Agent: ARMClient/1.2.0.0
Accept: application/json
x-ms-request-id: 9c1413a5-6d27-4e87-b075-1fedb15d63a3

{
  "properties": {
    "peeringType": "AzurePrivatePeering",
    "peerASN": 500,
    "primaryPeerAddressPrefix": "10.0.0.0/30",
    "secondaryPeerAddressPrefix": "10.0.0.4/30",
    "sharedKey": "A1B2C3D4",
    "vlanId": 200
  },
  "name": "AzurePrivatePeering"
}
---------- Response (2354 ms) ------------

HTTP/1.1 201 Created
Pragma: no-cache
Retry-After: 10
x-ms-request-id: 344eccc8-2958-4958-aa6f-3958f3fd5648
Azure-AsyncOperation: https://management.azure.com/subscriptions/<ProviderManagementSubscription>/providers/Microsoft.Network/locations/eastus2euap/operations/344eccc8-2958-4958-aa6f-3958f3fd5648?api-version=2018-02-01
Strict-Transport-Security: max-age=31536000; includeSubDomains
Cache-Control: no-cache
Server: Microsoft-HTTPAPI/2.0; Microsoft-HTTPAPI/2.0
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id: b5d08e36-339c-423a-ac2c-b6ec2063c8a6
x-ms-routing-request-id: WESTUS:20180501T194026Z:b5d08e36-339c-423a-ac2c-b6ec2063c8a6
X-Content-Type-Options: nosniff
Date: Tue, 01 May 2018 19:40:26 GMT

{
  "name": "AzurePrivatePeering",
  "id": "/subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/9ee700ad-50b2-4b98-a63a-4e52f855ac24/peerings/AzurePrivatePeering",
  "properties": {
    "provisioningState": "Updating",
    "peeringType": "AzurePrivatePeering",
    "azureASN": 0,
    "peerASN": 500,
    "primaryPeerAddressPrefix": "10.0.0.0/30",
    "secondaryPeerAddressPrefix": "10.0.0.4/30",
    "sharedKey": "A1B2C3D4",
    "state": "Disabled",
    "vlanId": 200,
    "lastModifiedBy": ""
  }
}

C:\Users\kaanan\Documents\Expressroute\Partner APIs\ARMClient-master\ARMClient-master>armclient get https://management.azure.com/subscriptions/<ProviderManagementSubscription>/providers/Microsoft.Network/locations/eastus2euap/operations/344eccc8-2958-4958-aa6f-3958f3fd5648?api-version=2018-02-01
{
  "status": "Succeeded"
}
  1. (Opcional) PUT expressRouteCrossConnection para configurar el emparejamiento de Microsoft: si administra la conectividad BGP de capa 3, puede habilitar el emparejamiento de Microsoft.
PUT /subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/9ee700ad-50b2-4b98-a63a-4e52f855ac24/peerings/MicrosoftPeering?api-version=2018-02-01 HTTP/1.1
Host: management.azure.com
Authorization: Bearer eyJ0eXAiOiJKV...
User-Agent: ARMClient/1.2.0.0
Accept: application/json
x-ms-request-id: af4527eb-7b68-4a50-b953-c0606524d8f3

{
  "properties": {
    "peeringType": "MicrosoftPeering",
    "peerASN": 900,
    "primaryPeerAddressPrefix": "123.0.0.0/30",
    "secondaryPeerAddressPrefix": "123.0.0.4/30",
    "vlanId": 300,
    "microsoftPeeringConfig": {
      "advertisedPublicPrefixes": [
        "123.1.0.0/24"
      ],
      "customerASN": 45,
      "routingRegistryName": "ARIN"
    }
  },
  "name": "MicrosoftPeering"
}
---------- Response (2530 ms) ------------

HTTP/1.1 201 Created
Pragma: no-cache
Retry-After: 10
x-ms-request-id: e3aa0bbd-4709-4092-a1f1-aa78080929d0
Azure-AsyncOperation: https://management.azure.com/subscriptions/8030cec9-2c0c-4361-9949-1655c6e4b0fa/providers/Microsoft.Network/locations/eastus2euap/operations/e3aa0bbd-4709-4092-a1f1-aa78080929d0?api-version=2018-02-01
Strict-Transport-Security: max-age=31536000; includeSubDomains
Cache-Control: no-cache
Server: Microsoft-HTTPAPI/2.0; Microsoft-HTTPAPI/2.0
x-ms-ratelimit-remaining-subscription-writes: 1199
x-ms-correlation-request-id: 8e26bc5d-f1cd-4305-a373-860aaf7bb694
x-ms-routing-request-id: WESTUS:20180501T213857Z:8e26bc5d-f1cd-4305-a373-860aaf7bb694
X-Content-Type-Options: nosniff
Date: Tue, 01 May 2018 21:38:56 GMT

{
  "name": "MicrosoftPeering",
  "id": "/subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/9ee700ad-50b2-4b98-a63a-4e52f855ac24/peerings/MicrosoftPeering",
  "properties": {
    "provisioningState": "Updating",
    "peeringType": "MicrosoftPeering",
    "azureASN": 0,
    "peerASN": 900,
    "primaryPeerAddressPrefix": "123.0.0.0/30",
    "secondaryPeerAddressPrefix": "123.0.0.4/30",
    "state": "Disabled",
    "vlanId": 300,
    "lastModifiedBy": "",
    "microsoftPeeringConfig": {
      "advertisedPublicPrefixes": [
        "123.1.0.0/24"
      ],
      "advertisedPublicPrefixesState": "NotConfigured",
      "customerASN": 45,
      "legacyMode": 0,
      "routingRegistryName": "ARIN"
    }
  }
}

C:\Users\kaanan\Documents\Expressroute\Partner APIs\ARMClient-master\ARMClient-master>armclient get https://management.azure.com/subscriptions/<ProviderManagementSubscription>/providers/Microsoft.Network/locations/eastus2euap/operations/e3aa0bbd-4709-4092-a1f1-aa78080929d0?api-version=2018-02-01
{
  "status": "Succeeded"
}

API DE REST

Consulte API de REST de CrossConnections de ExpressRoute para obtener documentación de la API de REST.

Pasos siguientes

Para más información sobre todas las API de REST de ExpressRoute, consulte API de REST de ExpressRoute.