Поделиться через


Разработка и интеграция API ExpressRoute CrossConnections

API ExpressRoute Partner Resource Manager позволяет партнерам ExpressRoute управлять конфигурацией каналов ExpressRoute уровня 2 и уровня 3 клиента ExpressRoute. API ExpressRoute Partner Resource Manager представляет новый тип ресурса expressRouteCrossConnections. Партнеры используют этот ресурс для управления каналами ExpressRoute клиента.

Workflow

Ресурс ExpressRouteCrossConnections — это теневой ресурс для канала ExpressRoute. Когда клиент Azure создает канал ExpressRoute и выбирает конкретного партнера ExpressRoute, корпорация Майкрософт создает ресурс expressRouteCrossConnections в подписке на управление Azure ExpressRoute партнера. При этом корпорация Майкрософт определяет группу ресурсов для создания ресурса expressRouteCrossConnections. Стандарт именования для группы ресурсов — CrossConnection-PeeringLocation; где PeeringLocation = местоположение ExpressRoute. Например, если клиент создает канал ExpressRoute в Денвере, кросссоединение будет создано в подписке Azure партнера в следующей группе ресурсов : CrossConnection-Denver.

Партнеры ExpressRoute управляют конфигурацией уровня 2 и уровня 3 путем выдачи операций REST в ресурсе expressRouteCrossConnections.

Преимущества

Преимущества перехода на ресурс expressRouteCrossConnections:

  • Любые будущие улучшения для партнеров ExpressRoute будут доступны в ресурсе ExpressRouteCrossConnection.

  • Партнеры могут применять управление доступом на основе ролей Azure (Azure RBAC) к ресурсу expressRouteCrossConnection. Эти элементы управления могут определять разрешения, для которых учетные записи пользователей могут изменять ресурс expressRouteCrossConnection и добавлять или обновлять или удалять конфигурации пиринга.

  • Ресурс expressRouteCrossConnection предоставляет API, которые могут быть полезны при устранении неполадок подключений ExpressRoute. Сюда входят таблица ARP, сводка по таблице маршрутов BGP и сведения о таблице маршрутов BGP. Эта возможность не поддерживается классическими API развертывания.

  • Партнеры также могут искать объявленные сообщества в пирингах Майкрософт с помощью ресурса RouteFilter .

Этапы разработки и интеграции API

Для работы с API партнёра, партнёры ExpressRoute используют тестового клиента и тестовую среду партнёра. Тестовая настройка клиента будет использоваться для создания каналов ExpressRoute в тестовых участках пиринга, которые сопоставляют с фиктивными устройствами и портами. Настройка конфигурации тестового партнера используется для управления каналами ExpressRoute, созданными в локации сетевого пиринга.

1. Перечислите подписки

Чтобы запросить настройку тестового партнера и тестового клиента, предоставьте две подписки Azure с оплатой по мере использованияYou-Go вашему контакту в инженерной команде ExpressRoute:

  • ExpressRoute_API_Provider_Sub: Эта подписка будет использоваться для управления производственными каналами ExpressRoute, созданными в расположениях пиринга.

  • ExpressRoute_API_Dev_Provider_Sub: Эта подписка будет использоваться для управления каналами ExpressRoute, созданными в тестовых узлах пиринга на фиктивных устройствах и портах.

  • ExpressRoute_API_Dev_Customer_Sub: Эта подписка будет использоваться для создания каналов ExpressRoute в тестовых точках пиринга, которые сопоставляются с фиктивными устройствами и портами.

Тестовые расположения пиринга: фиктивные устройства и порты по умолчанию не экспонируются пользователям в продакшене. Чтобы создать каналы ExpressRoute, соответствующие тестовой настройке, необходимо включить флаг функции подписки.

2. Регистрация подписки Dev_Provider для доступа к API expressRouteCrossConnections

Чтобы получить доступ к API expressRouteCrossConnections, подписка партнера должна быть зарегистрирована в поставщике ресурсов Microsoft.Network. Выполните действия, описанные в статье поставщиков ресурсов и типов Azure , чтобы завершить процесс регистрации.

3. Настройка проверки подлинности для вызовов REST API Azure Resource Manager

Большинству служб Azure требуется код клиента для проверки подлинности с помощью Resource Manager с использованием допустимых учетных данных перед вызовом API-интерфейсов службы. Проверка подлинности координируется между различными субъектами с помощью идентификатора Microsoft Entra и предоставляет клиенту маркер доступа в качестве подтверждения проверки подлинности.

Процесс проверки подлинности состоит из двух основных этапов:

  1. Зарегистрируйте клиент.
  2. Создайте запрос доступа.

4. Предоставление разрешения участника сети клиентскому приложению

После успешной настройки проверки подлинности необходимо предоставить участнику сети доступ к клиентскому приложению в Dev_Provider_Sub. Чтобы предоставить разрешение, войдите на портал Azure и выполните следующие действия.

  1. Перейдите к подпискам и выберите Dev_Provider_Sub
  2. Перейдите к Управлению доступом (IAM)
  3. Добавить назначение роли
  4. Выберите роль участника сети
  5. Назначение доступа пользователю, группе или принципалу службы Microsoft Entra
  6. Выбор клиентского приложения
  7. Сохранение изменений

5. Разработка

Разработка с использованием API expressRouteCrossConnections.

Рабочий процесс управления подключением

Получив ключ службы ExpressRoute от целевого клиента, следуйте приведенным ниже рабочим процессам и примерам операций API, чтобы настроить подключение ExpressRoute:

  1. Список expressRouteCrossConnection: Чтобы управлять подключением ExpressRoute, необходимо определить имя и группу ресурсов целевого ресурса expressRouteCrossConnection. Имя expressRouteCrossConnection — это ключ целевой службы канала ExpressRoute клиента. Чтобы найти ResourceGroupName, необходимо перечислить все expressRouteCrossConnections в подписке поставщика и найти в результатах целевой ключ службы. Здесь вы можете зафиксировать ResourceGroupName и сформировать вызов 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": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
      "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": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
      "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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: После определения имени и resourceGroupName целевого ресурса expressRouteCrossConnection необходимо выполнить вызов API GET expressRouteCrossConnection.
GET /subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f?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": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
  "id": "/subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
  "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: После настройки соединения уровня 2 обновите ServiceProviderProvisioningState на Provisioned. На этом этапе клиент может настроить Microsoft или Частный Пиринг и создать подключение от контура ExpressRoute к шлюзу виртуальной сети, развернутого в подписке клиента.
PUT /subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f?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: cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a
Azure-AsyncOperation: https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Network/locations/eastus2euap/operations/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a?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": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
  "id": "/subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
  "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\Admin\Documents\Expressroute\Partner APIs\ARMClient-master\ARMClient-master>armclient get https://management.azure.com/subscriptions/<ProviderManagementSubscription>/providers/Microsoft.Network/locations/eastus2euap/operations/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a?api-version=2018-02-01
{
  "status": "Succeeded"
}
  1. (Необязательно) Используйте команду PUT expressRouteCrossConnection для настройки частного пиринга Если вы управляете соединением уровня 3 BGP, вы можете включить частный пиринг
PUT /subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/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: dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b
Azure-AsyncOperation: https://management.azure.com/subscriptions/<ProviderManagementSubscription>/providers/Microsoft.Network/locations/eastus2euap/operations/dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b?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/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/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/dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b?api-version=2018-02-01
{
  "status": "Succeeded"
}
  1. (Необязательно) PUT expressRouteCrossConnection для настройки пиринга Майкрософт При управлении подключением уровня 3 BGP можно включить пиринг Майкрософт
PUT /subscriptions/<ProviderManagementSubscription>/resourceGroups/CrossConnection-EUAPTest/providers/Microsoft.Network/expressRouteCrossConnections/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/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": "203.0.113.0/30",
    "secondaryPeerAddressPrefix": "203.0.113.4/30",
    "vlanId": 300,
    "microsoftPeeringConfig": {
      "advertisedPublicPrefixes": [
        "203.0.113.128/25"
      ],
      "customerASN": 45,
      "routingRegistryName": "ARIN"
    }
  },
  "name": "MicrosoftPeering"
}
---------- Response (2530 ms) ------------

HTTP/1.1 201 Created
Pragma: no-cache
Retry-After: 10
x-ms-request-id: eeee4efe-ff5f-aa6a-bb7b-cccccc8c8c8c
Azure-AsyncOperation: https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Network/locations/eastus2euap/operations/eeee4efe-ff5f-aa6a-bb7b-cccccc8c8c8c?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/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/peerings/MicrosoftPeering",
  "properties": {
    "provisioningState": "Updating",
    "peeringType": "MicrosoftPeering",
    "azureASN": 0,
    "peerASN": 900,
    "primaryPeerAddressPrefix": "203.0.113.0/30",
    "secondaryPeerAddressPrefix": "203.0.113.4/30",
    "state": "Disabled",
    "vlanId": 300,
    "lastModifiedBy": "",
    "microsoftPeeringConfig": {
      "advertisedPublicPrefixes": [
        "203.0.113.128/25"
      ],
      "advertisedPublicPrefixesState": "NotConfigured",
      "customerASN": 45,
      "legacyMode": 0,
      "routingRegistryName": "ARIN"
    }
  }
}

C:\Users\Admin\Documents\Expressroute\Partner APIs\ARMClient-master\ARMClient-master>armclient get https://management.azure.com/subscriptions/<ProviderManagementSubscription>/providers/Microsoft.Network/locations/eastus2euap/operations/eeee4efe-ff5f-aa6a-bb7b-cccccc8c8c8c?api-version=2018-02-01
{
  "status": "Succeeded"
}

REST API

См. документацию по REST API ExpressRoute CrossConnections.

API размещения каналов

API размещения канала ExpressRoute позволяет партнерам ExpressRoute подготавливать подключение к каналу для определенной пары портов. Ознакомьтесь с API размещения каналов для документации по API.

Дальнейшие шаги

Дополнительные сведения обо всех REST API ExpressRoute см. в разделе REST API ExpressRoute.