你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
网络构造中的路由策略
路由策略为运营商提供了允许或拒绝有关网络结构中第 3 层隔离域的路由的功能。
利用路由策略,在通过边界网关协议 (BGP) 分发路由时,会通过社区值和扩展社区值标记路由的某些属性。 同样,在 BGP 侦听器端,可编写路由策略,根据社区值和扩展社区值属性放弃/允许路由。
路由策略使运营商能够控制通过 BGP 习得和分发的路由。
每个路由策略在 Microsoft.managednetworkfabric
下建模为单独的顶级 Azure 资源管理器 (ARM) 资源。
运营商可以创建、读取和删除路由策略资源。
运营商创建路由策略 ARM 资源,然后在所需的执行点设置 L3 隔离域中的 ID。
一个路由策略只能应用于单个执行点。
一个路由策略不能应用于多个执行点。
在网络结构中,可以在第 3 层隔离域的以下终结点强制实施路由策略:
外部网络(选项 A 和选项 B):
对于出口,将外部网络资源的 exportRoutePolicyId
属性设置为针对出口方向创建的路由策略资源 ID。
将外部网络资源的 importRoutePolicyId
属性设置为针对入口方向创建的路由策略资源 ID。
内部网络:
对于出口,将内部网络资源的 exportRoutePolicyId
属性设置为针对出口方向创建的路由策略资源 ID。
将内部网络资源的 importRoutePolicyId
属性设置为针对入口方向创建的路由策略资源 ID。
跨所有内部网络连接的子网:
对于出口,将 L3 隔离域的 connectedSubnetRoutePolicy
属性设置为针对出口方向创建的路由策略资源 ID。
路由策略的条件和操作
可以指定以下条件组合:
- IP 前缀
- IP 社区
- 扩展社区列表
操作
当条件匹配时,可以指定以下操作:
- 放弃路由
- 允许路由并应用以下特定操作之一
- 添加/移除指定的社区值和扩展社区值
- 覆盖指定的社区值和扩展社区值
IP 前缀
IP 前缀用于指定路由策略的匹配条件。 IP 前缀资源可让运营商基于 IP 前缀(IPv4 和 IPv6)操作路由。 IP 前缀资源让运营商能够删除某些前缀,使其不向上游或下游传播,或者用特定的社区或扩展社区值标记它们。 运营商必须通过提供带有序列号和操作的前缀列表来创建 IP 前缀类型的 ARM 资源。
列表中的前缀按升序处理,匹配过程在第一次匹配后停止。 如果第一个匹配条件为“拒绝”,则会删除路由,并且不会进一步传播。 如果第一个匹配条件为“允许”,则会中止进一步匹配,并根据路由策略的操作部分处理路由。
IP 前缀仅指定路由策略的匹配条件。 它们不指定路由策略的操作部分。
IP 前缀的参数
参数 | 说明 | 示例 | 必须 |
---|---|---|---|
resource-group | 专门为选择的 IP 前缀使用适当的资源组名称 | ResourceGroupName | True |
resource-name | IP 前缀的资源名称 | ipprefixv4-1204-cn1 | True |
location | 在创建 NFC 期间使用的 Azure 区域 | eastus | True |
action | 要对前缀执行的操作 - 允许 | 拒绝或允许 | True |
sequenceNumber | 处理前缀的顺序。 从最低的序列号开始评估前缀列表,并沿着列表继续向下进行,直到匹配为止。 匹配后,对网络应用允许或拒绝语句,并忽略列表的其余部分 | 100 | True |
networkPrefix | 指定要允许或拒绝的 IPv4/IPv6 数据包的网络前缀。 | 1.1.1.0/24 | True |
condition | 指定的前缀列表边界 - EqualTo | GreaterThanOrEqualTo | LesserThanOrEqualTo | EqualTo | |
subnetMaskLength | SubnetMaskLength 指定要匹配的最小 networkPrefix 长度。 指定条件时必须填写此项。 | 32 |
创建 IP 前缀
此命令创建使用 IPv4 前缀规则的 IP 前缀资源:
az networkfabric ipprefix create \
--resource-group "ResourceGroupName" \
--resource-name "ipprefixv4-1204-cn1" \
--location "eastus" \
--ip-prefix-rules '[{"action": "Permit", "sequenceNumber": 10, "networkPrefix": "10.10.10.0/28", "condition": "EqualTo", "subnetMaskLength": 28}, {"action": "Permit", "sequenceNumber": 12, "networkPrefix": "20.20.20.0/24", "condition": "EqualTo", "subnetMaskLength": 24}]'
预期输出:
{
"annotation": null,
"id": "/subscriptions/xxxx-xxxx/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/ipPrefixes/ipprefixv4-1204-cn1",
"ipPrefixRules": [
{
"action": "Permit",
"condition": "GreaterThanOrEqualTo",
"networkPrefix": "10.10.10.0/28",
"sequenceNumber": 10,
"subnetMaskLength": 28
}
],
"location": "eastus",
"name": " ipprefixv4-1204-cn1",
"provisioningState": "Succeeded",
"resourceGroup": "ResourceGroupName",
"systemData": {
"createdAt": "2023-XX-XXT09:34:19.095543+00:00",
"createdBy": "user@address.com",
"createdByType": "User",
"lastModifiedAt": "2023-XX-XXT09:34:19.095543+00:00",
"lastModifiedBy": "user@address.com",
"lastModifiedByType": "User"
},
"tags": null,
"type": "microsoft.managednetworkfabric/ipprefixes"
}
此命令创建使用 IPv6 前缀规则的 IP 前缀资源,
az networkfabric ipprefix create \
--resource-group "ResourceGroupName" \
--resource-name "ipprefixv6-2701-cn1" \
--location "eastus" \
--ip-prefix-rules '[{"action": "Permit", "sequenceNumber": 10, "networkPrefix": "fda0:d59c:da12:20::/64", "condition": "GreaterThanOrEqualTo", "subnetMaskLength": 68}]'
预期输出
{
"annotation": null,
"id": "/subscriptions/xxxx-xxxx/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/ipPrefixes/ipprefixv6-2701-cn1",
"ipPrefixRules": [
{
"action": "Permit",
"condition": "GreaterThanOrEqualTo",
"networkPrefix": "fda0:d59c:da12:20::/64",
"sequenceNumber": 10,
"subnetMaskLength": 68
}
],
"location": "eastus",
"name": "ipprefixv6-2701-cn1",
"provisioningState": "Succeeded",
"resourceGroup": "ResourceGroupName",
"systemData": {
"createdAt": "2023-XX-XXT09:34:19.095543+00:00",
"createdBy": "user@address.com",
"createdByType": "User",
"lastModifiedAt": "2023-XX-XXT09:34:19.095543+00:00",
"lastModifiedBy": "user@address.com",
"lastModifiedByType": "User"
},
"tags": null,
"type": "microsoft.managednetworkfabric/ipprefixes"
}
IP 社区
IP 社区资源允许运营商根据标记到路由的社区值来操作路由。 此社区资源使运营商能够指定在向上游/下游传播路由时添加/移除路由的条件和操作,或使用特定的社区值标记路由。 运营商必须创建 IP 社区类型的 ARM 资源。 运营商可指定在向上游/下游传播路由时添加/移除路由的条件和操作,或使用特定的社区值标记路由。
IP 社区的参数
参数 | 说明 | 示例 | 必须 |
---|---|---|---|
resource-group | 专门为 IP 前缀使用适当的资源组名称 | ResourceGroupName | True |
resource-name | IP 前缀的资源名称 | ipprefixv4-1204-cn1 | True |
location | 在创建 NFC 期间使用的 AzON Azure 区域 | eastus | True |
action | 要对 IP 社区执行的操作 - 允许 | 拒绝或允许 | True |
wellKnownCommunities | 支持的常见社区列表。Internet - 将路由播发到 Internet 社区。 LocalAS - 仅将路由播发到 localAS 对等方。 NoAdvertise - 不将路由播发到任何对等方。 NoExport - 不导出到下一个 AS。 GShut - 正常关机 (GSHUT) 在终止 BGP 连接之前撤回路由 |
LocalAS | True |
communityMembers | 列出 IP 社区的 communityMembers。 预期格式为“AA:nn”>> 例如“65535:65535”、<integer32>>> 例如 4294967040。 “AA:nn”的可能值为 0-65535,<integer32> 的可能值为 1-4294967040。 | 65535:65535 | True |
注意
创建 IP 社区资源时必须传递 wellKnownCommunities
或 communityMembers
参数。
创建 IP 社区
此命令用于创建 IP 社区资源:
az networkfabric ipcommunity create \
--resource-group "ResourceGroupName" \
--resource-name "ipcommunity-2701" \
--location "eastus" \
--action "Permit" \
--well-known-communities "Internet" "LocalAS" "GShut" \
--community-members "65500:12701"
预期输出:
{
"action": "Permit",
"annotation": null,
"communityMembers": [
"65500:12701"
],
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/ipCommunities/ipcommunity-2701",
"location": "eastus",
"name": "ipcommunity-2701",
"provisioningState": "Succeeded",
"resourceGroup": "ResourceGroupName",
"systemData": {
"createdAt": "2023-XX-XXT09:48:15.472935+00:00",
"createdBy": "user@address.com",
"createdByType": "User",
"lastModifiedAt": "2023-XX-XXT09:48:15.472935+00:00",
"lastModifiedBy": "user@address.com",
"lastModifiedByType": "User"
},
"tags": null,
"type": "microsoft.managednetworkfabric/ipcommunities",
"wellKnownCommunities": [
"Internet",
"LocalAS",
"GShut"
]
}
显示 IP 社区
此命令用于显示 IP 社区资源:
az networkfabric ipcommunity show --resource-group "ResourceGroupName" --resource-name "ipcommunity-2701"
预期输出:
{
"action": "Permit",
"annotation": null,
"communityMembers": [
"65500:12701"
],
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/ipCommunities/ipcommunity-2701",
"location": "eastus",
"name": "ipcommunity-2701",
"provisioningState": "Succeeded",
"resourceGroup": "ResourceGroupName",
"systemData": {
"createdAt": "2023-XX-XXT09:48:15.472935+00:00",
"createdBy": "user@address.com",
"createdByType": "User",
"lastModifiedAt": "2023-XX-XXT09:48:15.472935+00:00",
"lastModifiedBy": "user@address.com",
"lastModifiedByType": "User"
},
"tags": null,
"type": "microsoft.managednetworkfabric/ipcommunities",
"wellKnownCommunities": [
"Internet",
"LocalAS",
"GShut"
]
}
IP 扩展社区
IPExtendedCommunity
资源可让运营商基于路由目标操作路由。 运营商使用它指定在向上游/下游传播路由时添加/移除路由的条件和操作,或使用特定的社区值标记路由。 操作员必须通过提供社区值和特定属性的列表来创建 IPExtendedCommunityList
类型的 ARM 资源。 ExtendedCommunityLists 用于指定路由策略的匹配条件和操作属性。
IP 扩展社区的参数
参数 | 说明 | 示例 | 必须 |
---|---|---|---|
resource-group | 专门为 IP 前缀使用适当的资源组名称 | ResourceGroupName | True |
resource-name | ipPrefix 的资源名称 | ipprefixv4-1204-cn1 | True |
location | 在创建 NFC 期间使用的 AzON Azure 区域 | eastus | True |
action | 要对 IP 扩展社区执行的操作 - 允许 | 拒绝或允许 | True |
routeTargets | 路由目标列表。 预期格式为“ASN(plain):nn”>> 例如“4294967294:50”、“ASN.ASN:nn”>> 例如“65533.65333:40”、“IP-address:nn”>> 例如“10.10.10.10:65535”。 “nn”的可能值在“0-65535”范围内,“ASN(plain)”的可能值在“0-4294967295”范围内。 | “1234:5678” | True |
创建 IP 扩展社区
此命令用于创建 IP 扩展社区资源:
az networkfabric ipextendedcommunity create \
--resource-group "ResourceGroupName" \
--resource-name "ipextcommunity-2701" \
--location "eastus" \
--action "Permit" \
--route-targets "65046:45678"
预期输出:
{
"action": "Permit",
"annotation": null,
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/ipExtendedCommunities/ipextcommunity-2701",
"location": "eastus",
"name": "ipextcommunity-2701",
"provisioningState": "Succeeded",
"resourceGroup": "ResourceGroupName",
"routeTargets": [
"65046:45678"
],
"systemData": {
"createdAt": "2023-XX-XXT09:52:30.385929+00:00",
"createdBy": "user@address.com",
"createdByType": "User",
"lastModifiedAt": "2023-XX-XXT09:52:30.385929+00:00",
"lastModifiedBy": "user@address.com",
"lastModifiedByType": "User"
},
"tags": null,
"type": "microsoft.managednetworkfabric/ipextendedcommunities"
}
显示 IP 扩展社区
此命令用于显示 IP 扩展社区资源:
az networkfabric ipextendedcommunity show --resource-group "ResourceGroupName" --resource-name "ipextcommunity-2701"
预期输出:
{
"action": "Permit",
"annotation": null,
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/ipExtendedCommunities/ipextcommunity-2701",
"location": "eastus",
"name": "ipextcommunity-2701",
"provisioningState": "Succeeded",
"resourceGroup": "ResourceGroupName",
"routeTargets": [
"65046:45678"
],
"systemData": {
"createdAt": "2023-XX-XXT09:52:30.385929+00:00",
"createdBy": "user@address.com",
"createdByType": "User",
"lastModifiedAt": "2023-XX-XXT09:52:30.385929+00:00",
"lastModifiedBy": "user@address.com",
"lastModifiedByType": "User"
},
"tags": null,
"type": "microsoft.managednetworkfabric/ipextendedcommunities"
}
路由策略
路由策略资源使运营商能够根据 IP 前缀、IP 社区列表和 IP 扩展社区列表指定条件和操作。 每个路由策略由多个语句组成。 每个语句由序列号、条件和操作组成。 这些条件可以是 IP 前缀、IP 社区和 IP 扩展社区的组合,并按序列号的升序应用。 执行与第一个匹配条件对应的操作。 如果匹配条件的操作为“拒绝”,则会放弃路由,并且不会进行进一步处理。 如果路由策略中与匹配条件对应的操作为“允许”,则允许以下操作组合:
- 更新本地首选项
- 添加/删除或设置 IpCommunityLists
- 添加/删除或设置 IpExtendedCommunityLists
路由策略的参数
参数 | 说明 | 示例 | 必须 |
---|---|---|---|
resource-group | 专门为 IP 前缀使用适当的资源组名称 | ResourceGroupName | True |
resource-name | IP 前缀的资源名称 | ipprefixv4-1204-cn1 | True |
location | 在创建 NFC 期间使用的 AzON Azure 区域 | eastus | True |
statements | 一个或多个路由策略语句的列表 | True | |
sequenceNumber | 处理路由策略语句的顺序。 从最低的序列号开始评估语句,并沿着列表继续向下进行,直到满足匹配条件。 匹配后,应用相关操作,并忽略列表的其余部分 | 1 | True |
condition | 路由策略条件属性。 其中包含 IP 社区 ARM ID、ipExtendedCommunity ARM ID 或 ipPrefix ARM ID 列表。 条件中需要三者(ipCommunityIds、ipCommunityIds、ipPrefixId)之一。 如果指定了多个资源,则只要有任何一个资源有匹配项,就表示条件匹配。 | 1234:5678 | True |
ipCommunityIds | IP 社区资源 ID 列表 | False | |
ipExtendedCommunityIds | IPExtendedCommunity 资源 ID 列表 | False | |
ipPrefixId | IpPrefix 的 ARM 资源 ID | False | |
action | 路由策略操作属性。 此属性描述语句中有条件匹配时要执行的操作。 至少需要启用 localPreference、ipCommunityProperties 或 ipExtendedCommunityProperties 中的一个 | 许可 | True |
localPreference | 要设置为操作的一部分的本地首选项 | 10 | False |
ipCommunityProperties | 需要添加、移除或设置为操作的一部分的 IP 社区的详细信息 | False | |
add | 在操作是添加 IP 社区或 IP 扩展社区时适用 | ||
delete | 在操作是删除 IP 社区或 IP 扩展社区时适用 | ||
set | 在操作是设置 IP 社区或 IP 扩展社区时适用 | ||
ipCommunityIds | 需要添加、删除或设置的 IP 社区 ARM 资源 ID | ||
ipExtendedCommunityProperties | 需要添加、移除或设置为操作的一部分的 IP 扩展社区的详细信息 | ||
ipExtendedCommunityIDs | 需要添加、删除或设置的 IP 扩展社区 ARM 资源 ID |
创建路由策略
此命令用于创建路由策略:
az networkfabric routepolicy create \
--resource-group "ResourceGroupName" \
--resource-name "rcf-Fab3-l3domain-v6-connsubnet-ext-policy" \
--location "eastus" \
--statements '[ \{"sequenceNumber": 10, "condition":{"ipPrefixId": "/subscriptions/<subscription-id>/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/ipPrefixes/ipprefixv6-2701-staticsubnet"}, \
"action": {"actionType": "Permit", "ipCommunityProperties": {"set": \
{"ipCommunityIds": ["/subscriptions/<subscription-id>/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/ipCommunities/ipcommunity-2701-staticsubnet"]}}}}, \
{"sequenceNumber": 30, "condition":{"ipPrefixId": "/subscriptions/<subscription-id>/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/ipPrefixes/ipprefixv6-2701-connsubnet"}, \
"action": {"actionType": "Permit", "ipCommunityProperties": {"set": \
{"ipCommunityIds": ["/subscriptions/<subscription-id>/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/ipCommunities/ipcommunity-connsubnet-2701"]}}}},\
]'
预期输出:
{
"annotation": null,
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/routePolicies/rcf-Fab3-l3domain-v6-connsubnet-ext-policy",
"location": "eastus",
"name": "rcf-Fab3-l3domain-v6-connsubnet-ext-policy",
"provisioningState": "Accepted",
"resourceGroup": "ResourceGroupName",
"statements": [
{
"action": {
"actionType": "Permit",
"ipCommunityProperties": {
"add": null,
"delete": null,
"set": {
"ipCommunityIds": [
"/subscriptions/<subscription-id>/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/ipCommunities/ipcommunity-2701-staticsubnet"
]
}
},
"ipExtendedCommunityProperties": null,
"localPreference": null
},
"annotation": null,
"condition": {
"ipCommunityIds": null,
"ipExtendedCommunityIds": null,
"ipPrefixId": "/subscriptions/<subscription-id>/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/ipPrefixes/ipprefixv6-2701-staticsubnet"
},
"sequenceNumber": 10
},
{
"action": {
"actionType": "Permit",
"ipCommunityProperties": {
"add": null,
"delete": null,
"set": {
"ipCommunityIds": [
"/subscriptions/<subscription-id>/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/ipCommunities/ipcommunity-connsubnet-2701"
]
}
},
"ipExtendedCommunityProperties": null,
"localPreference": null
},
"annotation": null,
"condition": {
"ipCommunityIds": null,
"ipExtendedCommunityIds": null,
"ipPrefixId": "/subscriptions/<subscription-id>/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/ipPrefixes/ipprefixv6-2701-connsubnet"
},
"sequenceNumber": 30
}
],
"systemData": {
"createdAt": "2023-XX-XXT10:10:21.123560+00:00",
"createdBy": "user@address.com",
"createdByType": "User",
"lastModifiedAt": "2023-XX-XXT10:10:21.123560+00:00",
"lastModifiedBy": "user@address.com",
"lastModifiedByType": "User"
},
"tags": null,
"type": "microsoft.managednetworkfabric/routepolicies"
}
显示路由策略
此命令用于显示路由策略:
az networkfabric routepolicy show --resource-group "ResourceGroupName" --resource-name "rcf-Fab3-l3domain-v6-connsubnet-ext-policy"
预期输出:
{
"annotation": null,
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/routePolicies/rcf-Fab3-l3domain-v6-connsubnet-ext-policy",
"location": "eastus",
"name": "rcf-Fab3-l3domain-v6-connsubnet-ext-policy",
"provisioningState": "Succeeded",
"resourceGroup": "ResourceGroupName",
"statements": [
{
"action": {
"actionType": "Permit",
"ipCommunityProperties": {
"add": null,
"delete": null,
"set": {
"ipCommunityIds": [
"/subscriptions/<subscription-id>/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/ipCommunities/ipcommunity-2701-staticsubnet"
]
}
},
"ipExtendedCommunityProperties": null,
"localPreference": null
},
"annotation": null,
"condition": {
"ipCommunityIds": null,
"ipExtendedCommunityIds": null,
"ipPrefixId": "/subscriptions/<subscription-id>/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/ipPrefixes/ipprefixv6-2701-staticsubnet"
},
"sequenceNumber": 10
},
{
"action": {
"actionType": "Permit",
"ipCommunityProperties": {
"add": null,
"delete": null,
"set": {
"ipCommunityIds": [
"/subscriptions/<subscription-id>/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/ipCommunities/ipcommunity-connsubnet-2701"
]
}
},
"ipExtendedCommunityProperties": null,
"localPreference": null
},
"annotation": null,
"condition": {
"ipCommunityIds": null,
"ipExtendedCommunityIds": null,
"ipPrefixId": "/subscriptions/<subscription-id>/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/ipPrefixes/ipprefixv6-2701-connsubnet"
},
"sequenceNumber": 30
}
],
"systemData": {
"createdAt": "2023-XX-XXT10:10:21.123560+00:00",
"createdBy": "user@address.com",
"createdByType": "User",
"lastModifiedAt": "2023-XX-XXT10:10:21.123560+00:00",
"lastModifiedBy": "user@addresscom",
"lastModifiedByType": "User"
},
"tags": null,
"type": "microsoft.managednetworkfabric/routepolicies"
}
删除路由策略
此命令用于删除路由策略:
az networkfabric routepolicy delete --resource-group "ResourceGroupName" --resource-name "rcf-Fab3-l3domain-v6-connsubnet-ext-policy"
预期输出:
{
"status": "Succeeded",
"message": "The route policy 'rcf-Fab3-l3domain-v6-connsubnet-ext-policy' in resource group 'ResourceGroupName' has been successfully deleted."
}