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

API размещения партнерских каналов ExpressRoute позволяет партнерам ExpressRoute настраивать подключение каналов на определенной паре портов. В частности, если партнер ExpressRoute управляет несколькими парами портов в одном расположении пиринга, он может использовать этот API, чтобы выбрать, какая пара портов упростит канал ExpressRoute.

Этот API использует тип ресурса expressRouteCrossConnection. Дополнительные сведения см. в статье Разработка и интеграция API crossConnection в ExpressRoute.

Регистрация подписки поставщика для типа ресурса expressRouteProviderPort

Чтобы использовать API размещения каналов, сначала необходимо зарегистрировать подписку для доступа к типу ресурса порта.

  1. Выполните вход в свою учетную запись Azure и план подписки, которую планируете зарегистрировать.

    Connect-AzAccount 
    
    Select-AzSubscription -Subscription "<SubscriptionID or SubscriptionName>"
    
  2. Зарегистрируйте подписку.

    Register-AzProviderFeature -FeatureName AllowExpressRoutePorts -ProviderNamespace Microsoft.Network
    

После регистрации убедитесь, что поставщик ресурсов Microsoft.Network зарегистрирован в вашей подписке. Регистрация поставщика ресурсов настраивает подписку для работы с поставщиком ресурсов.

Рабочий процесс

  1. Клиенты ExpressRoute совместно могут делиться ключом обслуживания целевого канала ExpressRoute.

  2. Партнер ExpressRoute выполняет операцию GET с помощью API expressRouteProviderPorts, чтобы определить PortPairDescription для пары целевых портов. Партнер ExpressRoute может запросить список PortPairDescriptions для всех пар портов в подписке или ограничить область запроса для определенного расположения пиринга.

  3. После идентификации целевого PortPairDescription партнер ExpressRoute выполнит операцию GET/PUT expressRouteCrossConnection, чтобы переместить канал ExpressRoute в пару целевых портов.

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

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

Операция GET с использованием API expressRouteProviderPorts для вывода списка пар портов

Партнер ExpressRoute может перечислить все пары портов в подписке целевого поставщика или перечислить пары портов в определенном расположении пиринга.

Получение списка всех пар портов для поставщика

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteProviderPorts?api-version={api-version}
{
    "parameters": {
      "api-version": "2021-12-01",
      "subscriptionId": "subid"
    },
    "responses": {
        "200": {
          "body": {
            "value": [
              {
                "portPairDescriptor": "bvtazureixpportpair1",
                "id": "/subscriptions/subid/providers/Microsoft.Network/ExpressRouteProviderPort/bvtazureixpportpair1",
                "type": "Microsoft.Network/expressRouteProviderPort",
                "location": "uswest",
                "etag": "W/\"c0e6477e-8150-4d4f-9bf6-bb10e6acb63a\"",
                "properties": {
                    "portPairDescriptor": "bvtazureixpportpair",
                    "primaryAzurePort": "bvtazureixp01a",
                    "secondaryAzurePort": "bvtazureixp01b",
                    "peeringLocation": "SiliconValley",
                    "overprovisionFactor": 4,
                    "portBandwidthInMbps": 4000,
                    "usedBandwidthInMbps": 2500,
                    "remainingBandwidthInMbps": 1500
                }
              },
              {
                "portPairDescriptor": "bvtazureixpportpair2",
                "id": "/subscriptions/subid/providers/Microsoft.Network/ ExpressRouteProviderPort/bvtazureixpportpair2",
                "type": "Microsoft.Network/expressRouteProviderPort",
                "location": "uswest",
                "etag": "W/\"c0e6477e-8150-4d4f-9bf6-bb10e6acb63a\"",
                "properties": {
                    "portPairDescriptor": "bvtazureixpportpair2",
                    "primaryAzurePort": "bvtazureixp02a",
                    "secondaryAzurePort": "bvtazureixp02b",
                    "peeringLocation": "seattle",
                    "overprovisionFactor": 4,
                    "portBandwidthInMbps": 4000,
                    "usedBandwidthInMbps": 1200,
                    "remainingBandwidthInMbps": 1800
                }
              }
            ]
          }
        }
      }
    }
  }
}

Код состояния ответа

  • 200 (ОК) Запрос успешен. Он получит список портов.
  • 4XX (Ошибка запроса) Одна из проверок не удалась, например: subid поставщика не является допустимым.

Получение списка всех пар портов для расположения

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteProviderPorts?location={locationName}&api-version={api-version}
{
  "parameters": {
    "api-version": "2021-12-01",
    "locationName": "SiliconValley",
    "subscriptionId": "subid"
  },
  "responses": {
    "200": {
      "body": {
        "value": [
          {
            "portPairDescriptor": "bvtazureixpportpair1",
            "id": "/subscriptions/subid/providers/Microsoft.Network/ ExpressRouteProviderPort /bvtazureixpportpair1",
            "type": "Microsoft.Network/expressRouteProviderPort",
            "location": "uswest",
            "etag": "W/\"c0e6477e-8150-4d4f-9bf6-bb10e6acb63a\"",
            "properties": {
              "portPairDescriptor": "bvtazureixpportpair",
              "primaryAzurePort": "bvtazureixp01a",
              "secondaryAzurePort": "bvtazureixp01b",
              "peeringLocation": "SiliconValley",
              "overprovisionFactor": 4,
              "portBandwidthInMbps": 4000,
              "usedBandwidthInMbps": 2500,
              "remainingBandwidthInMbps": 1500
            }
          }
        ]
      }
    }
  }
}

Код состояния ответа

  • 200 (ОК) Запрос успешен. Он получит список портов.
  • 4XX (Ошибка запроса) Одна из проверок не удалась, например: subid поставщика не является допустимым или неверное расположение.

Получение определенной пары портов с помощью идентификатора дескриптора для пары портов.

https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Network/expressRouteProviderPorts/{portPairDescriptor}?api-version={api-version}

{
  "parameters": {
    "api-version": "2021-12-01",
    "portPairDescriptor": " bvtazureixpportpair1",
    "subscriptionId": "subid"
  },
  "responses": {
    "200": {
      "body": {
        "value": [
          {
            "portPairDescriptor": "bvtazureixpportpair1",
            "id": "/subscriptions/subid/providers/Microsoft.Network/ExpressRouteProviderPort/bvtazureixpportpair1",
            "type": "Microsoft.Network/expressRouteProviderPort",
            "location": "uswest",
            "etag": "W/\"c0e6477e-8150-4d4f-9bf6-bb10e6acb63a\"",
            "properties": {
              "portPairDescriptor": "bvtazureixpportpair",
              "primaryAzurePort": "bvtazureixp01a",
              "secondaryAzurePort": "bvtazureixp01b",
              "peeringLocation": "SiliconValley",
              "overprovisionFactor": 4,
              "portBandwidthInMbps": 4000,
              "usedBandwidthInMbps": 2500,
              "remainingBandwidthInMbps": 15
            }
          }
        ]
      }
    }
  }
}

Описание кода состояния

  • 200 (ОК) Запрос успешен. Будет извлечена информация о порте.
  • 204 Пара портов с указанным идентификатором дескриптора недоступна.
  • 4XX (Ошибка запроса) Одна из проверок не удалась, например: subid поставщика не является допустимым.

Перемещение целевого канала ExpressRoute в определенную пару портов

После определения portPairDescriptor пары целевых портов партнер ExpressRoute может использовать API ExpressRouteCrossConnection для перемещения канала ExpressRoute на определенную пару портов.

В настоящее время поставщики используют этот API для обновления состояния канала. Этот же API будет использоваться поставщиками для обновления пары портов канала.

В настоящее время основные свойства AzurePort и secondaryAzurePort являются свойствами только для чтения. Теперь мы отключили свойства только для чтения для этих портов.

https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/expressRouteCrossConnections/{crossConnectionName}?api-version={api-version}
{
"parameters": {
    "api-version": "2021-12-01",
    "crossConnectionName": "The name of the cross connection",
    "subscriptionId": "subid"
  }
},
{
Request   "body": {
    " primaryAzurePort ": " bvtazureixp03a"
     "secondaryAzurePort": "bvtazureixp03b",
  }
}
Response:
{
  "name": "<circuitServiceKey>",
  "id": "/subscriptions/subid/resourceGroups/CrossConnectionSiliconValley/providers/Microsoft.Network/expressRouteCrossConnections/<circuitServiceKey>",
  "type": "Microsoft.Network/expressRouteCrossConnections",
  "location": "brazilsouth",
  "properties": {
    "provisioningState": "Enabled",
    "expressRouteCircuit": {
      "id": "/subscriptions/subid/resourceGroups/ertest/providers/Microsoft.Network/expressRouteCircuits/er1"
    },
    "peerings": [],
    "peeringLocation": "SiliconValley",
    "bandwidthInMbps": 1000,
    "primaryAzurePort": "bvtazureixp03a",
    "secondaryAzurePort": "bvtazureixp03b",
    "sTag": 2,
    "serviceProviderProvisioningState": "NotProvisioned"
  }
}

Дальнейшие действия

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