Entwicklung und Integration der ExpressRoute CrossConnnections-API

Die ExpressRoute Partner Resource Manager-API ermöglicht es den ExpressRoute-Partnern, die Layer-2- und Layer-3-Konfiguration der ExpressRoute-Kundenleitungen zu verwalten. Die ExpressRoute Partner Resource Manager-API führt einen neuen Ressourcentyp ein, expressRouteCrossConnections. Partner verwenden diese Ressource zur Verwaltung von ExpressRoute-Leitungen von Kunden.

Workflow

Die expressRouteCrossConnections-Ressource ist eine Schattenressource für die ExpressRoute-Leitung. Wenn ein Azure-Kunde eine ExpressRoute-Leitung erstellt und einen bestimmten ExpressRoute-Partner auswählt, erstellt Microsoft eine expressRouteCrossConnections-Ressource im Azure ExpressRoute-Verwaltungsabonnement des Partners. Dabei definiert Microsoft eine Ressourcengruppe, in der die expressRouteCrossConnections-Ressource erstellt wird. Der Benennungsstandard für die Ressourcengruppe ist CrossConnection-PeeringLocation, wobei „PeeringLocation“ der ExpressRoute-Standort ist. Wenn ein Kunde z. B. eine ExpressRoute-Leitung in Denver erstellt, wird die CrossConnection im Azure-Abonnement des Partners in der folgenden Ressourcengruppe erstellt: CrossConnnection-Denver.

ExpressRoute-Partner verwalten die Layer-2- und Layer-3-Konfiguration, indem sie REST-Vorgänge für die expressRouteCrossConnections-Ressource ausgeben.

Vorteile

Vorteile des Wechsels zur expressRouteCrossConnections-Ressource:

  • Alle zukünftigen Verbesserungen für ExpressRoute-Partner werden über die ExpressRouteCrossConnection-Ressource zur Verfügung gestellt.

  • Partner können die rollenbasierte Zugriffssteuerung von Azure (Role-Based Access Control, RBAC) auf die Ressource expressRouteCrossConnection anwenden. Diese Steuerelemente können Berechtigungen definieren, für die Benutzerkonten die expressRouteCrossConnection-Ressource ändern und Peeringkonfigurationen hinzufügen/aktualisieren/löschen können.

  • Die expressRouteCrossConnection-Ressource legt APIs offen, die bei der Problembehandlung von ExpressRoute-Verbindungen hilfreich sein können. Dazu gehören die ARP-Tabelle, die Zusammenfassung der BGP-Routentabelle und die Details der BGP-Routentabelle. Diese Funktion wird von den klassischen Bereitstellungs-APIs nicht unterstützt.

  • Partner können auch in den beworbenen Communitys nach Microsoft-Peering suchen, indem sie die RouteFilter-Ressource verwenden.

Schritte der API-Entwicklung und -Integration

Um mithilfe der Partner-API zu entwickeln, nutzen ExpressRoute-Partner ein Testkunden- und Testpartnersetup. Das Testkundensetup wird zur Erstellung von ExpressRoute-Leitungen an Testpeeringstandorten verwendet, die zu Dummy-Geräten und -Ports zugeordnet werden. Das Testpartnersetup wird zur Verwaltung der am Testpeeringstandort erstellten ExpressRoute-Leitungen verwendet.

1. Eintragen von Abonnements

Um den Testpartner und das Testkundensetup anzufordern, melden Sie zwei Azure-Abonnements mit nutzungsbasierter Zahlung bei Ihrem technischen Ansprechpartner für ExpressRoute an:

  • ExpressRoute_API_Provider_Sub: Dieses Abonnement wird zum Verwalten von ExpressRoute-Produktionsverbindungen verwendet, die an Peeringstandorten erstellt wurden.

  • ExpressRoute_API_Dev_Provider_Sub: Dieses Abonnement wird zur Verwaltung von ExpressRoute-Leitungen verwendet, die an Testpeeringstandorten für Dummy-Geräte und -Ports erstellt wurden.

  • ExpressRoute_API_Dev_Customer_Sub: Dieses Abonnement wird zur Erstellung von ExpressRoute-Leitungen an Testpeeringstandorten verwendet, die Dummy-Geräten und -Ports zugeordnet werden.

Die Dummy-Geräte und -Ports der Testpeeringstandorte sind standardmäßig nicht den Kunden in der Produktionsumgebung ausgesetzt. Um ExpressRoute-Leitungen zu erstellen, die dem Testsetup zugeordnet werden, muss ein Abonnementfeatureflag aktiviert werden.

2. Registrieren des Dev_Provider-Abonnements für den Zugriff auf die expressRouteCrossConnections-API

Um auf die expressRouteCrossConnections-API zugreifen zu können, muss das Partnerabonnement beim Ressourcenanbieter „Microsoft.Network“ registriert sein. Befolgen Sie die Schritte im Artikel Azure-Ressourcenanbieter und -typen, um den Registrierungsprozess abzuschließen.

3. Einrichten der Authentifizierung für Azure Resource Manager-REST-API-Aufrufe

Für die meisten Azure-Dienste ist es erforderlich, dass sich der Clientcode vor dem Aufruf der Dienst-APIs bei Resource Manager unter Verwendung gültiger Anmeldeinformationen authentifiziert. Die Authentifizierung zwischen den verschiedenen Akteuren wird von Microsoft Entra ID koordiniert. Der Client erhält ein Zugriffstoken als Nachweis der Authentifizierung.

Der Authentifizierungsprozess umfasst zwei Hauptschritte:

  1. Registrieren des Clients.
  2. Erstellen der Zugriffsanforderung.

4. Bereitstellen der Berechtigung des Netzwerkmitwirkendem für die Clientanwendung

Nachdem die Authentifizierung erfolgreich konfiguriert wurde, müssen Sie dem Netzwerkmitwirkendem Zugriff auf Ihre Clientanwendung unter dem Dev_Provider_Sub gewähren. Um die Berechtigung zu gewähren, melden Sie sich am Azure-Portal an, und führen Sie die folgenden Schritte aus:

  1. Navigieren Sie zu „Abonnements“, und wählen Sie die Registerkarte „Dev_Provider_Sub“ aus.
  2. Navigieren Sie zur Zugriffssteuerung (IAM).
  3. Fügen Sie die Rollenzuweisung hinzu.
  4. Wählen Sie die Rolle „Netzwerkmitwirkender“ aus.
  5. Zugriff auf Microsoft Entra-Benutzer, -Gruppe oder -Dienstprinzipal zuweisen
  6. Wählen Sie Ihre Clientanwendung aus.
  7. Speichern der Änderungen

5. Entwickeln

Entwickeln Sie für die expressRouteCrossConnections-API.

Workflow für die Konnektivitätsverwaltung

Nachdem Sie den ExpressRoute-Dienstschlüssel vom Zielkunden erhalten haben, führen Sie den unten dargestellten Workflow und API-Beispielvorgänge aus, um die ExpressRoute-Konnektivität zu konfigurieren:

  1. Liste expressRouteCrossConnection: Zum Verwalten der ExpressRoute-Konnektivität müssen Sie den Namen und die Ressourcengruppe der Zielressource expressRouteCrossConnection identifizieren. Der Name der expressRouteCrossConnection ist der Zieldienstschlüssel der ExpressRoute-Verbindung des Kunden. Zum Ermitteln des ResourceGroupName müssen Sie alle expressRouteCrossConnections im Anbieterabonnement mit LIST auflisten und die Ergebnisse nach dem Zieldienstschlüssel durchsuchen. Hier können Sie den ResourceGroupName aufzeichnen und mit GET den expressRouteCrossConnection-API-Aufruf bilden.
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: Nachdem Sie den Namen und den ResourceGroupName der ExpressRouteCrossConnection-Zielressource identifiziert haben, müssen Sie per GET den epressRouteCrossConnection-API-Aufruf ausführen.
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: Nachdem Sie Layer-2-Konnektivität bereitgestellt haben, aktualisieren Sie den ServiceProviderProvisioningState auf Provisioned. An diesem Punkt kann der Kunde Microsoft- oder privates Peering konfigurieren und eine Verbindung von der ExpressRoute-Leitung zu einem virtuellen Netzwerkgateway herstellen, das im Abonnement des Kunden bereitgestellt wird.
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. (Optional) PUT expressRouteCrossConnection zum Konfigurieren von privatem Peering Wenn Sie die BGP-Layer-3-Konnektivität verwalten, können Sie privates Peering aktivieren.
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. (Optional) PUT expressRouteCrossConnection zum Konfigurieren von Microsoft-Peering Wenn Sie die BGP-Layer-3-Konnektivität verwalten, können Sie Microsoft-Peering aktivieren.
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"
}

REST-API

Eine REST-API-Dokumentation finden Sie unter ExpressRoute CrossConnections-REST-API.

Nächste Schritte

Weitere Informationen zu allen ExpressRoute-REST-APIs finden Sie unter ExpressRoute-REST-APIs.