使用 API 创建 MCR VXC
本主题介绍使用 API 创建 MCR VXC 的流程。第一个示例在 US 市场创建一个 AWS Hosted Connection——这是较为复杂的配置之一。其他 CSP 的模板稍后在本主题中提供。
有关更多信息,请参见 API 参考中的 POST Validate MCR VXC Order (v3)。
使用 Hosted Connection 在 MCR 与 AWS 间创建 VXC
此示例在 US 市场创建一个 AWS Hosted Connection。步骤包括:
- 获取 MCR 的产品 ID
- 查找可用 US 市场的位置 ID
- 验证并订购 VXC
- 配置两个静态路由
- 配置 BGP边界网关协议(BGP)是一种标准化的路由协议,用于在互联网中的自治系统(AS)之间交换路由与可达性信息。
连接 – 一个包含 MED多出口鉴别符 (MED) 是一种 BGP 路径属性,当候选路由由同一自治系统 (AS) 通告且该 AS 存在多个入口时,可影响 BGP 邻居选择首选路由。较小的 MED 度量值优先于较大的度量值。
详细信息,另一个不包含。
开始之前,请获取有效的访问令牌。有关更多信息,请参见 创建 API Key。
要创建 VXC,我们需要 MCR 的 productUid。
获取 MCR 的 productUid
-
获取产品列表。
GET {baseUrl}/v2/products/ -
从返回的产品详情中,找到要连接的 MCR 的
productUid值。本示例使用以下值:fee85cc0-f06f-4ad7-bce7-36aef7dbe0d0
接下来,查找支持 AWS Hosted Connections 的目标 US 市场的 location ID。
在 US 市场中查找可用 AWS Hosted Connections 的 locationId
-
获取 Megaport 与云服务提供商的所有接口列表。
GET {baseUrl}/v2/dropdowns/partner/megaports可以按
connectType和vxcPermitted筛选结果。GET {baseUrl}/v2/dropdowns/partner/megaports?connectType=AWSHC&vxcPermitted=true -
点击放大镜,按位置条件在响应中搜索匹配的站点。
在本示例中,选择 “US West (Oregon) (us-west-2) [DZ-RED]”,其 “locationId”: 57。
{
"connectType": "AWSHC",
"productUid": "f274bd09-1796-43af-8837-28fa4fa2a1ab",
"vxcPermitted": true,
"companyUid": "605cb850-dfb4-4a05-a171-8bf17757b3a2",
"companyName": "AWS",
"title": "US West (Oregon) (us-west-2) [DZ-RED]",
"locationId": 57,
"speed": 10000,
"rank": 275,
"lag_id": 5,
"lag_primary": true,
"aggregation_id": 106462
},
注意
[DZ-RED] 表示红色多样性区(Red diversity zone)。每个 AWS Hosted Connection 站点都提供两个多样性区以实现冗余:DZ-Red 和 DZ-Blue。
通过 MCR ID 和 AWS 位置 ID,您可以创建一个 VXC。
创建 VXC
-
使用以下 URL 创建请求:
POST {baseUrl}/v3/networkdesign/buy提示
若要在下单前测试您的请求,您可以使用: POST {baseUrl}/v3/networkdesign/validate
-
在请求中添加以下头信息:
- Content-Type: application/json
- Authorization: Bearer {your accessToken}
-
根据配置详情创建请求的 Body。
此示例采用 MCR 产品 ID,B 端的 AWS 位置 ID,创建了两条静态路由,并配置了 BGP 连接——一个连接带有 MED 详情,另一个没有。以下章节将详细介绍静态路由和 BGP 连接。
[
{
"productUid": "fee85cc0-f06f-4ad7-bce7-36aef7dbe0d0",
"associatedVxcs": [
{
"rateLimit": 100,
"productName": "awshc",
"term": 12,
"shutdown": false,
"promoCode": "promox3mnthfree2",
"aEnd": {
"locationId": 320,
"vlan": 0,
"partnerConfig": {
"connectType": "VROUTER",
"interfaces": [
{
"vlan": null,
"ipMtu": 5000,
"ipAddresses": [
"10.191.0.25/29",
],
"bgpConnections": [
{
"peerAsn": 62512,
"localIpAddress": "10.191.0.25",
"peerIpAddress": "10.191.0.26",
"password": "cnn6eaeaETSjvjvjvjv",
"importWhitelist": null,
"importBlacklist": null,
"exportWhitelist": null,
"exportBlacklist": null,
"shutdown": false,
"description": "BGP with MED and BFD enabled",
"medIn": 100,
"medOut": 100,
"bfdEnabled": true
},
{
"peerAsn": 62511,
"localIpAddress": "10.191.0.27",
"peerIpAddress": "10.191.0.28",
"password": "cnn23049asdkfj",
"importWhitelist": null,
"importBlacklist": null,
"exportWhitelist": null,
"exportBlacklist": null,
"shutdown": false,
"description": "BGP without MED or BFD",
"medIn": null,
"medOut": null,
"bfdEnabled": false
}
],
"ipRoutes": [
{
"prefix": "10.0.0.0/24",
"nextHop": "10.191.0.26",
"description": "test static route 1"
},
{
"prefix": "10.0.1.9/24",
"nextHop": "10.191.0.27",
"description": "test static route 2"
}
],
"natIpAddresses": []
}
]
}
},
"bEnd": {
"locationId": 57,
"ownerUid": "605cb850-dfb4-4a05-a171-8bf17757b3a2",
"productUid": "d5518ee1-e915-4e3d-a4e1-a2c7e04f2fdd",
"vlan": 0,
"partnerConfig": {
"name": "awshc",
"ownerAccount": "XXXXXXXXXXXX",
"connectType": "AWSHC"
}
},
"productType": "VXC",
"connectType": "AWSHC"
}
]
}
]
静态路由
您可以通过在 A 端合作伙伴配置对象的 interfaces 数组中添加 ipRoutes 数组,为每个界面创建多条静态路由:
"ipRoutes": [
{
"prefix": "10.0.0.0/24",
"nextHop": "10.191.0.26",
"description": "test static route 1"
},
{
"prefix": "10.0.1.9/24",
"nextHop": "10.191.0.27",
"description": "test static route 2"
}
],
| 属性 | 描述 | 必须 | 有效输入 |
|---|---|---|---|
| prefix | 需要路由到 nextHop 的 IP 前缀(IPv4 和 IPv6) | 是 | IP 前缀 v4/v6 - 如未提供掩码,则地址视为主机地址(/32) |
| nextHop | 下一跳地址 | 是 | IP 地址 v4/v6 - 必须与界面处于同一子网,但不能是界面 IP |
| description | 静态路由的可选描述 | 否 | 字符串 - 最长100个字符 |
BGP 连接
您可以通过在 A 端合作伙伴配置对象的 interfaces 数组中添加 bgpConnections 数组,为每个界面创建多个 BGP 连接:
"bgpConnections": [
{
"peerAsn": 62512,
"localIpAddress": "10.191.0.25",
"peerIpAddress": "10.191.0.26",
"password": "cnn6eaeaETSjvjvjvjv",
"importWhitelist": null,
"importBlacklist": null,
"exportWhitelist": null,
"exportBlacklist": null,
"shutdown": false,
"description": "BGP with MED and BFD enabled",
"medIn": 100,
"medOut": 100,
"bfdEnabled": true
},
{
"peerAsn": 62511,
"localIpAddress": "10.191.0.27",
"peerIpAddress": "10.191.0.28",
"password": "cnn23049asdkfj",
"importWhitelist": null,
"importBlacklist": null,
"exportWhitelist": null,
"exportBlacklist": null,
"shutdown": false,
"description": "BGP without MED or BFD",
"asPathPrependCount": "3",
"bfdEnabled": false
}
],
| 属性 | 描述 | 必须 | 有效输入 |
|---|---|---|---|
| peerAsn | 远程 BGP 对等体的 ASN。 | 是 | 合法 ASN - 整数范围 1 - 4294967294 |
| localAsn | 本地 ASN 可用于此 BGP 对等体覆盖 MCR 的 ASN。大多数情况下建议保持默认。 | 否 | 合法 ASN - 整数范围 1 - 4294967294 若 peerAsn == mcrAsn,则不可设置 localAsn 若 peerAsn != mcrAsn,localAsn 不能与 peerAsn 相同 |
| localIpAddress | 本界面用于与 BGP 对等体通信的 IPv4 或 IPv6 地址。 | 是 | 合法 IP 地址 v4/v6。必须是该界面的 IP 地址 |
| peerIpAddress | BGP 对等体的 IP 地址。 | 是 | 合法 IP 地址 v4/v6 |
| password | 用于对 BGP 对等体进行身份验证的共享密钥,最多32个字符。 | 否 | 0-32个字符 |
| importWhitelist | 入方向前缀过滤(permit)。MCR 对邻居入站 BGP 路由通告应用前缀过滤。未匹配到此列表中前缀的路由将被最早拒绝且永远不会被 MCR 使用。 | 否 | 1-100个字符 |
| importBlacklist | 入方向前缀过滤(deny)。MCR 对邻居入站 BGP 路由通告应用前缀过滤。匹配到此列表中前缀的路由将被阻止,其他前缀允许进入 MCR 路由表。 | 否 | 1-100个字符 |
| exportWhitelist | 出方向前缀过滤(permit)。MCR 对出口路由应用前缀过滤。匹配前缀列表的路由通告给 BGP 邻居,其它路由被过滤。 | 否 | 1-100个字符 |
| exportBlacklist | 出方向前缀过滤(deny)。MCR 对出口路由应用前缀过滤。匹配前缀列表的路由不会通告给 BGP 邻居,其它路由将被通告。 | 否 | 1-100个字符 |
| shutdown | 默认情况下,BGP 连接是启用的,会主动尝试连接对等体。选择 shutdown 可暂时禁用 BGP 会话而无需移除,此功能适用于排错或测试故障切换场景。 | 否 | true/false - 默认值为 false |
| description | BGP 连接的可选描述 | 否 | 0-100个字符 |
| medIn | 该 MED 会应用于此 BGP 连接接收到的所有路由。不填写将使用 BGP 对等体提供的值。数值越小,路由优先级越高。 | 否 | 支持 0 至 4,294,967,295 之间的值 |
| medOut | 该 MED 会应用于此 BGP 连接发出的所有路由。邻近自治系统可选择性优先数值较小的路由。 | 否 | 支持 0 至 4,294,967,295 之间的值 |
| asPathPrependCount | asPathPrependCount 是一个整数,表示本地 AS 号在对等体出站 BGP 通告中的重复次数。 | 否 | 可接受范围为 1-10 |
| bfdEnabled | 双向转发检测(BFD)可为此 BGP 连接实现快速故障检测。当连接中断时,BGP 会话会立即终止,无需等待 BGP 保持计时器到期。当有多条路由可用时,BFD 可能提升故障切换速度。 | 否 | true/false - 默认值为 false 可选 |
双向转发检测 (BFD)
bfd 配置对象适用于界面上所有 bfdEnabled = true 的 BGP 连接。
BFD 设置不可编辑。启用 BFD 时配置的默认值如下:
- Transmit IntervalBGP 邻居向对端发送用于存活检测的 BFD 报文的最小发送间隔。
: 300 milliseconds - Receive IntervalBGP 邻居向该接口发送用于存活检测的 BFD 报文的最小发送间隔。
: 300 milliseconds - MultiplierBGP 会话被判定为中断前允许丢失的 BFD 报文最小数量。
: 3
注意
这些设置将应用于该 VXC 上启用了 BFD 的所有 BGP 连接。
AWS、Azure 和 Google 的自动配置
对于 Azure、AWS Hosted VIF 和 Google,Megaport 可以为 MCR 与 CSP 侧配置 IP 地址和 BGP 详情,确保 BGP 能够正常运行。这也最大程度减少了 CSP 和 Megaport 门户之间的切换次数。
虽然 Portal 默认执行自动配置,您也可以通过 API 触发 BGP 自动配置。 当 partnerConfig 中的 interfaces 键不存在或为 null 时,将触发该功能。
为 CSP 配置 BGP 对等
-
使用以下 URL 创建请求:
POST {baseUrl}/v3/networkdesign/buy -
在请求中添加以下头信息:
- Content-Type: application/json
- Authorization: Bearer {your accessToken}
-
使用配置详细信息创建请求正文。
此处为最常用的云服务提供商提供了不同的模板。
AWS 托管 VIF
{
"productUid": "{{mcrid}}",
"associatedVxcs": [
{
"productName": "Test AWS VIF VXC",
"rateLimit": 100,
"term": 12,
"aEnd": {
"vlan": 0
},
"bEnd": {
"productUid": "{{awsPortUid}}",
"partnerConfig": {
"connectType": "AWS",
"type": "private",
"ownerAccount": "{{yourAWSAccountNumber}}"
}
}
}
]
}
Google Cloud
{
"productUid": "{{mcrid}}",
"associatedVxcs": [
{
"productName": "Test Google VXC",
"rateLimit": 100,
"term": 12,
"aEnd": {
"vlan": 0
},
"bEnd": {
"productUid": "{{googlePortUid}}",
"partnerConfig": {
"connectType": "GOOGLE",
"pairingKey": "{{googlekey}}"
}
},
"productType": "VXC"
}
]
}
Microsoft Azure
有关 Azure 配置详情,请参见使用 API 在 MCR 与 Microsoft Azure 之间创建 VXC。