ExpressRoute CrossConnnections API 개발 및 통합

ExpressRoute Partner Resource Manager API를 사용하여 ExpressRoute 파트너는 고객 ExpressRoute 회로의 계층 2 및 계층 3 구성을 관리할 수 있습니다. ExpressRoute Partner Resource Manager API에는 새 리소스 종류인 expressRouteCrossConnections가 도입되었습니다. 파트너는 이 리소스를 사용하여 고객 ExpressRoute 회로를 관리합니다.

워크플로

expressRouteCrossConnections 리소스는 ExpressRoute 회로에 대한 섀도 리소스입니다. Azure 고객이 ExpressRoute 회로를 만들고 특정 ExpressRoute 파트너를 선택하는 경우 Microsoft는 파트너의 Azure ExpressRoute 관리 구독에 expressRouteCrossConnections 리소스를 만듭니다. 이 과정에서 Microsoft에서는 expressRouteCrossConnections 리소스를 만들 리소스 그룹을 정의합니다. 리소스 그룹에 대한 명명 표준은 *CrossConnection-PeeringLocation입니다. 여기서 PeeringLocation = ExpressRoute 위치입니다. 예를 들어 고객이 덴버에서 ExpressRoute 회로를 만드는 경우 다음 리소스 그룹 CrossConnnection-Denver에서 파트너의 Azure 구독에 CrossConnection이 생성됩니다.

ExpressRoute 파트너는 expressRouteCrossConnections 리소스에 대해 REST 작업을 발급하여 계층 2 및 계층 3 구성을 관리합니다.

이점

expressRouteCrossConnections 리소스로 이동할 경우의 이점:

  • ExpressRoute 파트너에 대한 향후 개선 사항은 ExpressRouteCrossConnection 리소스에서 제공될 예정입니다.

  • 파트너는 Azure RBAC(역할 기반 액세스 제어)를 expressRouteCrossConnection 리소스에 적용할 수 있습니다. 이 컨트롤은 사용자 계정이 expressRouteCrossConnection 리소스를 수정하고 피어링 구성을 추가/업데이트/삭제할 수 있는 권한을 정의할 수 있습니다.

  • expressRouteCrossConnection 리소스는 ExpressRoute 연결 문제를 해결하는 데 도움이 될 수 있는 API를 노출합니다. 여기에는 ARP 테이블, BGP 경로 테이블 요약 및 BGP 경로 테이블 세부 정보가 포함됩니다. 이 기능은 클래식 배포 API에서 지원되지 않습니다.

  • 파트너는 RouteFilter 리소스를 사용하여 Microsoft 피어링에 보급된 커뮤니티를 조회할 수도 있습니다.

API 개발 및 통합 단계

파트너 API에 대해 개발하기 위해 ExpressRoute 파트너는 테스트 고객 및 테스트 파트너 설정을 활용합니다. 테스트 고객 설정은 더미 디바이스 및 포트에 매핑되는 테스트 피어링 위치에서 ExpressRoute 회로를 만드는 데 사용됩니다. 테스트 파트너 설정은 테스트 피어링 위치에서 만든 ExpressRoute 회로를 관리하는 데 사용됩니다.

1. 구독 등록

테스트 파트너 및 테스트 고객 설정을 요청하려면 ExpressRoute 엔지니어링 담당자에게 두 개의 종량제 Azure 구독을 등록합니다.

  • ExpressRoute_API_Provider_Sub: 이 구독은 피어링 위치에서 만든 프로덕션 ExpressRoute 회로를 관리하는 데 사용됩니다.

  • ExpressRoute_API_Dev_Provider_Sub: 이 구독은 더미 디바이스 및 포트의 테스트 피어링 위치에서 만든 ExpressRoute 회로를 관리하는 데 사용됩니다.

  • ExpressRoute_API_Dev_Customer_Sub: 이 구독은 더미 디바이스 및 포트에 매핑되는 테스트 피어링 위치에서 ExpressRoute 회로를 만드는 데 사용됩니다.

테스트 피어링 위치: 더미 디바이스 및 포트는 기본적으로 프로덕션 고객에게 노출되지 않습니다. 테스트 설정에 매핑되는 ExpressRoute 회로를 만들려면 구독 기능 플래그를 사용하도록 설정해야 합니다.

2. Dev_Provider 구독을 등록하여 expressRouteCrossConnections API에 액세스

expressRouteCrossConnections API에 액세스하려면 파트너 구독을 Microsoft.Network 리소스 공급자에 등록해야 합니다. Azure 리소스 공급자 및 종류 문서의 단계에 따라 등록 프로세스를 완료합니다.

3. Azure Resource Manager REST API 호출에 대한 인증 설정

대부분의 Azure 서비스는 서비스 API를 호출하기 전에 유효한 자격 증명을 사용하여 Resource Manager에 인증하는 클라이언트 코드가 필요합니다. 인증은 Microsoft Entra ID의 다양한 행위자 간에 조정되며 인증 증명으로 클라이언트에 액세스 토큰을 제공합니다.

인증 프로세스에는 두 가지 주요 단계가 포함됩니다.

  1. 클라이언트를 등록합니다.
  2. 액세스 요청을 만듭니다.

4. 클라이언트 애플리케이션에 대한 네트워크 기여자 권한 제공

인증이 구성되면 Dev_Provider_Sub에서 클라이언트 애플리케이션에 대한 네트워크 기여자 액세스 권한을 부여해야 합니다. 사용 권한을 부여하려면 Azure Portal에 로그인하고 다음 단계를 완료합니다.

  1. 구독으로 이동하고 Dev_Provider_Sub을 선택합니다.
  2. 엑세스 제어(IAM)로 이동합니다.
  3. 역할 할당을 추가합니다.
  4. 네트워크 기여자 역할을 선택합니다.
  5. Microsoft Entra 사용자, 그룹 또는 서비스 주체에 액세스 할당
  6. 클라이언트 애플리케이션을 선택합니다.
  7. 변경 내용 저장

5. 개발

expressRouteCrossConnections API를 기반으로 하여 개발합니다.

연결 관리 워크플로

대상 고객으로부터 ExpressRoute 서비스 키를 받으면 아래 워크플로 및 샘플 API 작업에 따라 ExpressRoute 연결을 구성합니다.

  1. expressRouteCrossConnection 나열: ExpressRoute 연결을 관리하려면 대상 expressRouteCrossConnection 리소스의 이름ResourceGroup을 식별해야 합니다. expressRouteCrossConnection의 이름은 고객의 ExpressRoute 회로의 대상 서비스 키입니다. ResourceGroupName을 찾으려면 공급자 구독의 모든 expressRouteCrossConnections를 나열하고 대상 서비스 키에 대한 결과를 검색해야 합니다. 여기에서 ResourceGroupName을 기록하고 GET expressRouteCrossConnection API 호출을 구성할 수 있습니다.
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: 대상 expressRouteCrossConnection 리소스의 이름ResourceGroupName을 모두 식별했으면 GET expressRouteCrossConnection API 호출을 수행해야 합니다.
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: 레이어 2 연결을 프로비저닝한 후 ServiceProviderProvisioningStateProvisioned로 업데이트합니다. 이 시점에서 고객은 Microsoft 또는 개인 피어링을 구성하고 ExpressRoute 회로에서 고객의 구독에 배포된 가상 네트워크 게이트웨이로의 연결을 만들 수 있습니다.
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. (선택 사항) PUT expressRouteCrossConnection을 사용하여 개인 피어링 구성 레이어 3 BGP 연결을 관리하는 경우 개인 피어링을 사용하도록 설정할 수 있습니다.
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. (선택 사항) PUT expressRouteCrossConnection을 사용하여 Microsoft 피어링 구성 레이어 3 BGP 연결을 관리하는 경우 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"
}

REST API

REST API 설명서의 ExpressRoute CrossConnections REST API를 참고하세요.

다음 단계

모든 ExpressRoute REST API에 대한 자세한 내용은 ExpressRoute REST API를 참고하세요.