你当前正在访问 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"
}