你当前正在访问 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 社区资源时必须传递 wellKnownCommunitiescommunityMembers 参数。

创建 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."
}