私有 VLAN (PVLAN) 机制可用于将某个常规 VLAN 划分成多个子 VLAN 以隔离网络通信。PVLAN 机制在 RFC 5517 中定义。通常,一个常规 VLAN 是一个单广播域,但当配置了 PVLAN 属性时,该单广播域会被分区为更小的广播子域,同时保留现有的第 3 层配置。在配置 PVLAN 时,常规 VLAN 称为主要 VLAN,而子 VLAN 则称为辅助 VLAN。
当两个虚拟网络在某个物理链路上使用同一个 VLAN ID 时,则将在这两个虚拟网络之间传递所有广播通信。但是,在创建使用 PVLAN 属性的虚拟网络时,包转发行为可能不适用于所有情况。
下表展示了隔离的 PVLAN 和社区 PVLAN 的广播包转发规则。
|
例如,当在 net0 上隔离 vnet0 和 vnet1 虚拟网络时,net0 不在两个虚拟网络之间传递广播通信。但是,当 net0 网络收到来自隔离的 VLAN 的通信时,该通信不会传递到与该 VLAN 相关的隔离端口。出现这种情况的原因在于隔离的虚拟网络仅接受主要 VLAN 的通信。
inter-vnet-links 功能支持对隔离的 PVALN 和社区 PVLAN 的通信限制。已为隔离的 PVLAN 禁用 inter-vnet-links,仅为在社区 PVLAN 的同一个社区中的虚拟网络启用 inter-vnet-links。不允许来自社区外部的其他虚拟网络的直接通信。
可以使用 ldm add-vnet 和 ldm set-vnet 命令配置 PVLAN。使用这些命令配置 pvlan 属性。请注意,还必须指定 pvid 属性才能成功配置 PVLAN。
此功能至少需要 Oracle Solaris 11.2 SRU 4 OS。
要配置 PVLAN,必须指定以下信息:
主要 VLAN ID。主要 VLAN ID 是用于配置单个虚拟网络设备的 PVLAN 的端口 VLAN ID (PVID)。此配置可确保来宾域收到 VLAN 包。请注意,不能用 PVLAN 配置 VID。此值由 pvid 属性表示。
辅助 VLAN ID。特定 VLAN 使用辅助 VLAN ID 来提供 PVLAN 功能。将此信息指定为 pvlan 值的 secondary-vid 部分。secondary-vid 是介于 1-4094 范围的整数值。主要 VLAN 可以有多个辅助 VLAN,但有以下限制:
主要 VLAN ID 和辅助 VLAN ID 都不能与缺省 VLAN ID 相同。
主要 VLAN ID 和辅助 VLAN ID 不能有相同的隔离 PVLAN 类型和社区 PVLAN 类型值。
每个主要 VLAN 仅能配置一个隔离 PVLAN。所以,不能创建使用相同主要 VLAN ID 的两个隔离 PVLAN。
主要 VLAN 可以有多个社区 VLAN,但有以下限制:
主要 VLAN ID 不能用作辅助 VLAN ID 来创建其他社区 PVLAN。
例如,如果有一个主要 VLAN ID 为 3、辅助 VLAN ID 为 100 的社区 PVLAN,则无法创建使用 3 作为辅助 VLAN ID 的其他社区 PVLAN。
辅助 VLAN ID 不能用作主要 VLAN ID 来创建社区 PVLAN。
例如,您有一个主要 VLAN ID 为 3、辅助 VLAN ID 为 100 的社区 PVLAN,则无法创建使用 100 作为主要 VLAN ID 的其他社区 PVLAN。
辅助 VLAN ID 不能用作常规虚拟网络或 VNIC 的 VLAN ID。
注意 - Logical Domains Manager 只能验证特定虚拟交换机上的虚拟网络的配置。如果为同一个后端设备上的 Oracle Solaris VNIC 设置了 PVLAN 配置,请确保在所有 VNIC 和虚拟网络中满足相同的要求。 |
PVLAN 类型。将此信息指定为 pvlan 值的 pvlan-type 部分。pvlan-type 是以下值之一:
隔离的 PVLAN。与隔离的 PVLAN 关联的端口与所有对等虚拟网络以及后端网络设备上的 Oracle Solaris 虚拟 NIC 隔离。包仅根据为 PVLAN 指定的值到达外部网络。
社区 PVLAN。与社区 PVLAN 关联的端口可以与同一个社区 PVLAN 中的其他端口通信,但与其他所有端口隔离。包根据为 PVLAN 指定的值到达外部网络。
本节包括介绍如何创建 PVLAN 并列出 PVLAN 信息的任务。
可以使用 ldm add-vnet 或 ldm set-vnet 命令设置 pvlan 属性值,从而配置 PVLAN。请参见 ldm(1M) 手册页。
可以使用以下命令创建或删除 PVLAN:
使用 ldm add-vnet 创建 PVLAN:
ldm add-vnet pvid=port-VLAN-ID pvlan=secondary-vid,pvlan-type \ if-name vswitch-name domain-name
以下命令展示了如何创建具有以下 PVLAN 的虚拟网络:主要 vlan-id 为 4,辅助 vlan-id 为 200,pvlan-type 为 isolated。
primary# ldm add-vnet pvid=4 pvlan=200,isolated vnet1 primary-vsw0 ldg1
使用 ldm set-vnet 创建 PVLAN:
ldm set-vnet pvid=port-VLAN-ID pvlan=secondary-vid,pvlan-type if-name domain-name
以下命令展示了如何创建具有以下 PVLAN 的虚拟网络:主要 vlan-id 为 3,辅助 vlan-id 为 300,pvlan-type 为 community。
primary# ldm add-vnet pvid=3 pvlan=300,community vnet1 primary-vsw0 ldg1
使用 ldm set-vnet 删除 PVLAN:
ldm set-vnet pvlan= if-name vswitch-name domain-name
以下命令将删除 vnet0 虚拟网络的 PVLAN 配置。此命令的结果是:指定的虚拟网络是一个常规 VLAN,该 VLAN 使用在配置 PVLAN 时指定的 vlan-id。
primary# ldm set-vnet pvlan= vnet0 primary-vsw0 ldg1
可以通过使用多个 Logical Domains Manager 列表子命令来查看有关 PVLAN 的信息。请参见 ldm(1M) 手册页。
可以使用以下命令查看 PVLAN 信息。
使用 ldm list-domain -o network 列出 PVLAN 信息:
ldm list-domain [-e] [-l] -o network [-p] [domain-name...]
以下示例通过使用 ldm list-domain -o network 命令展示了有关 ldg1 域上的 PVLAN 配置的信息。
以下 ldm list-domain 命令展示了有关 ldg1 域上的 PVLAN 配置的信息。
primary# ldm list-domain -o network ldg1 NAME ldg1 MAC 00:14:4f:fa:bf:0f NETWORK NAME SERVICE ID DEVICE MAC vnet0 primary-vsw0@primary 0 network@0 00:14:4f:f8:03:ed MODE PVID VID MTU MAXBW LINKPROP 1 3 1500 1700 PVLAN : 200,community
以下 ldm list-domain 命令以可解析形式展示了 ldg1 域的 PVLAN 配置信息。
primary# ldm list-domain -o network -p ldg1 VERSION 1.13 DOMAIN|name=ldg1| MAC|mac-addr=00:14:4f:fa:bf:0f VNET|name=vnet0|dev=network@0|service=primary-vsw0@primary |mac-addr=00:14:4f:f8:03:ed|mode=|pvid=1|vid=3|mtu=1500|linkprop=|id=0 |alt-mac-addrs=|maxbw=1700|protect=|priority=|cos=|pvlan=200,community
使用 ldm list-bindings 列出 PVLAN 信息:
ldm list-bindings [-e] [-p] [domain-name...]
以下示例通过使用 ldm list-bindingsnetwork 命令展示了有关 ldg1 域上的 PVLAN 配置的信息。
以下 ldm list-bindings 命令展示了有关 ldg1 域上的 PVLAN 配置的信息。
primary# ldm list-bindings ... NETWORK NAME SERVICE ID DEVICE MAC vnet0 primary-vsw0@primary 0 network@0 00:14:4f:f8:03:ed MODE PVID VID MTU MAXBW LINKPROP 1 3 1500 1700 PVLAN :200,community PEER MAC MODE PVID VID MTU MAXBW LINKPROP primary-vsw0@primary 00:14:4f:f8:fe:5e 1
以下 ldm list-bindings 命令以可解析形式展示了 ldg1 域的 PVLAN 配置信息。
primary# ldm list-bindings -p ... VNET|name=vnet0|dev=network@0|service=primary-vsw0@primary |mac-addr=00:14:4f:f8:03:ed|mode=|pvid=1|vid=3|mtu=1500|linkprop= |id=0|alt-mac-addrs=|maxbw=1700|protect=|priority=|cos=|pvlan=200,community |peer=primary-vsw0@primary|mac-addr=00:14:4f:f8:fe:5e|mode=|pvid=1|vid= |mtu=1500|maxbw=
使用 ldm list-constraints 列出 PVLAN 信息:
ldm list-constraints [-x] [domain-name...]
下面展示了通过运行 ldm list-constraints 命令生成的输出:
primary# ldm list-constraints -x ldg1 ... <Section xsi:type="ovf:VirtualHardwareSection_Type"> <Item> <rasd:OtherResourceType>network</rasd:OtherResourceType> <rasd:Address>auto-allocated</rasd:Address> <gprop:GenericProperty key="vnet_name">vnet0</gprop:GenericProperty> <gprop:GenericProperty key="service_name">primary-vsw0</gprop:GenericProperty> <gprop:GenericProperty key="pvid">1</gprop:GenericProperty> <gprop:GenericProperty key="vid">3</gprop:GenericProperty> <gprop:GenericProperty key="pvlan">200,community</gprop:GenericProperty> <gprop:GenericProperty key="maxbw">1700000000</gprop:GenericProperty> <gprop:GenericProperty key="device">network@0</gprop:GenericProperty> <gprop:GenericProperty key="id">0</gprop:GenericProperty> </Item>