你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
网络构造中的路由策略
路由策略为操作员提供允许或拒绝网络构造中第 3 层隔离域的路由的功能。
使用路由策略时,路由通过社区值标记特定属性,并在路由通过边界网关协议(BGP)分发时使用扩展社区值进行标记。 同样,在 BGP 侦听器端,可以编写路由策略,以便根据社区值和扩展的社区值属性取消卡/允许路由。
路由策略使操作员能够控制通过 BGP 学习/分发的路由。
每个路由策略都建模为单独的顶级 Azure 资源管理器 (ARM) 资源。Microsoft.managednetworkfabric
操作员可以创建、读取和删除路由策略资源。
操作员创建路由策略 ARM 资源,然后在所需的强制点设置 L3 隔离域中的 ID。
路由策略只能在单个强制点应用。
不能在多个强制点应用路由策略。
在网络构造中,可以在第 3 层隔离域的以下终结点强制实施路由策略:
外部网络(选项 A 和选项 B):
对于出口,请将 exportRoutePolicyId
外部网络资源的属性设置为为出口方向创建的路由策略资源 ID。
将 importRoutePolicyId
外部网络资源的属性设置为为入口方向创建的路由策略资源 ID。
内部网络:
对于出口,请将 exportRoutePolicyId
内部网络资源的属性设置为为出口方向创建的路由策略资源 ID。
将 importRoutePolicyId
内部网络资源的属性设置为为入口方向创建的路由策略资源 ID。
跨所有内部网络连接子网:
对于出口,请将 connectedSubnetRoutePolicy
L3 隔离域的属性设置为为出口方向创建的路由策略资源 ID。
路由策略的条件和操作
可以指定以下条件组合:
- IP 前缀
- IP 社区
- 扩展社区列表
操作
当条件匹配时,可以指定以下操作:
- Dis卡路由
- 允许路由并应用以下特定操作之一
- 添加/删除指定的社区值和扩展社区值
- 覆盖指定的社区值和扩展社区值
IP 前缀
IP 前缀用于指定路由策略的匹配条件。 IP 前缀资源允许操作员基于 IP 前缀(IPv4 和 IPv6)操作路由。 IP 前缀使操作员能够删除某些前缀,使其从向上流/下流传播,或使用特定的社区或扩展社区值标记它们。 操作员必须创建 IP 前缀类型的 ARM 资源,方法是提供带有序列号和操作的前缀列表。
列表中的前缀按升序处理,匹配进程在第一次匹配后停止。 如果第一个匹配条件为“deny”,则会删除路由,并且不会进一步传播。 如果第一个匹配条件为“允许”,则会中止进一步的匹配,并根据路由策略的操作部分处理路由。
IP 前缀仅指定路由策略的匹配条件。 它们不指定路由策略的操作部分。
IP 前缀的参数
参数 | 说明 | 示例 | 必须 |
---|---|---|---|
resource-group | 为所选 IP 前缀专门使用适当的资源组名称 | ResourceGroupName | True |
resource-name | IP 前缀的资源名称 | ipprefixv4-1204-cn1 | True |
location | 在 NFC 创建期间使用的 Azure 区域 | 美国东部 | True |
action | 要对前缀执行的操作 – 允许 | 拒绝或允许 | True |
sequenceNumber | 处理前缀的顺序。 前缀列表从最低序列号开始计算,然后继续向下列表,直到进行匹配。 进行匹配后,许可或拒绝语句将应用于该网络,并忽略列表的其余部分 | 100 | True |
networkPrefix | 指定允许或拒绝 IPv4/IPv6 数据包的网络前缀。 | 1.1.1.0/24 | True |
条件 | 指定的前缀列表边界 - 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-Community 类型的 ARM 资源。 运算符指定添加/删除路由的条件和操作,因为它们传播上流/下流或标记具有特定社区值。
IP 社区的参数
参数 | 说明 | 示例 | 必须 |
---|---|---|---|
resource-group | 为 IP 前缀专门使用适当的资源组名称 | ResourceGroupName | True |
resource-name | IP 前缀的资源名称 | ipprefixv4-1204-cn1 | True |
location | AzON Azure 区域在 NFC 创建期间使用 | 美国东部 | True |
action | 为 IP 社区采取的操作 - 许可证 | 拒绝或允许 | True |
wellKnown 社区 | 支持的已知社区列表。Internet - 播发到 Internet 社区的路由。 LocalAS - 仅将路由播发到 localAS 对等方。 NoAdvertise - 不要将路由播发到任何对等方。 NoExport - 不要导出到下一个 AS。 GShut - 正常关闭 (GSHUT) 在终止 BGP 连接之前撤回路由 |
LocalAS | True |
communityMembers | 列出 IP 社区的 communityMembers。 预期格式为“AA:nn” >> 示例“65535:65535”, <整数32>>> 示例4294967040。 “AA:nn”的可能值为 0-65535,整数 <32> 1-4294967040。 | 65535:65535 | True |
注意
wellKnownCommunities
必须传递参数communityMembers
来创建 IP 社区资源。
创建 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/9531faa8-8c39-4165-b033-48697fe943db/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/9531faa8-8c39-4165-b033-48697fe943db/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 | AzON Azure 区域在 NFC 创建期间使用 | 美国东部 | 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/9531faa8-8c39-4165-b033-48697fe943db/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/9531faa8-8c39-4165-b033-48697fe943db/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 | AzON Azure 区域在 NFC 创建期间使用 | 美国东部 | True |
statements | 一个或多个路由策略语句的列表 | True | |
sequenceNumber | 处理路由策略语句的顺序。 从最低序列号开始计算语句,然后继续向下列表,直到满足匹配条件。 完成匹配后,将应用该操作,并忽略列表的其余部分 | 1 | True |
条件 | 路由策略条件属性。 其中包含 IP 社区 ARM ID 或 ipExtendedCommmunicty 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/9531faa8-8c39-4165-b033-48697fe943db/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/9531faa8-8c39-4165-b033-48697fe943db/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"
}