管理员在数据链路之上创建 IP 接口。每个数据链路代表开放系统互连 (Open Systems Interconnection, OSI) 模型的第二层中的一个链路对象。数据链路可以表示许多不同的 L2 实体,例如物理网络设备(称为物理链路)、物理数据链路的聚合、虚拟网络接口卡 (virtual network interface card, VNIC) 等。
链路名称是在自动创建关联的链路对象时指定的,也可以在创建数据链路时显式指定链路名称。物理链路(与物理网络设备关联的链路)是在添加设备时或者在安装之后首次引导 Oracle Solaris 系统时自动创建的。在此 Oracle Solaris 发行版中,物理数据链路的命名不再绑定到与网络设备关联的底层硬件。缺省情况下,为数据链路指定的名称以 net 为前缀,以反映数据链路在系统中物理位置的数字为后缀。例如,将为第一个板载网络设备 e1000g0 指定名称 net0,为下一个 e1000g1 设备指定名称 net1,依此类推。对于您显式创建的数据链路,例如链路聚合,您可以指定任意名称。此外,如果需要,您可以显式重命名为数据链路缺省指定的 netN 名称。
通用或灵活链路名称为网络配置提供了以下优点:
在单个系统内,动态重新配置 (dynamic reconfiguration, DR) 变得更容易。给定 NIC 的网络配置可以由不同的更换 NIC 继承。
区域迁移的网络设置不再过于复杂。如果目的地系统的链路与在迁移之前为区域指定的链路具有相同的名称,则在迁移后的系统中,该区域将保留其网络配置。因此,在迁移后无需对区域进行任何额外的网络配置。
通用命名约定使得在安装期间使用的系统配置 (System Configuration, SC) 清单中指定的网络配置不再过于复杂。由于所有系统的主网络数据链路通常都命名为 net0,对于为 net0 指定配置的多个系统,您可以使用一个通用 SC 清单。
数据链路管理也变得很灵活。您可以进一步定制数据链路的名称,例如,用来反映数据链路提供的特定功能。
下表说明了硬件 (NIC)、设备实例、链路名称以及链路上的接口之间的新对应关系。数据链路的名称由 OS 自动提供。
|
如此表中所示,虽然设备实例名称仍基于硬件,但在安装之后,OS 对数据链路进行了重命名。
要显示数据链路、其通用名称以及对应设备实例之间的映射,请如下所示使用 dladm show-phys 命令:
# dladm show-phys LINK MEDIA STATE SPEED DUPLEX DEVICE net2 Ethernet up 1000 full bge2 net0 Ethernet up 1000 full e1000g0 net3 Ethernet up 1000 full nge3 net1 Ethernet up 1000 full e1000g1
物理网络设备是根据介质类型确定次序的,其中某些类型优先于其他类型。介质类型按优先级降序排序,如下所示:
以太网
InfiniBand 设备
基于 IB 的以太网
WiFi
在设备分组并按介质类型排序后,这些设备会根据其物理位置进一步排序,其中板载设备优先于外围设备。
对基于其介质类型和位置具有较高优先级的设备,会指定较低的实例编号。
在基于 SPARC 的系统上,将指定 netN 名称以匹配在 OpenBoot PROM (OBP) 中使用的 netN 设备别名。在基于 x86 的系统上,将使用 SMBIOS 数据(在可用时)来标识板载以太网设备并将其分配给 net0、net1 等。除了这些信息源之外(或者未在这些信息源中),位于较低的主板、IO 板、主桥、PCIe 根联合体、总线、设备和功能上的设备将排在其他设备前面,并且与位于较高的主板、主桥等等上的设备相比,将被分配较低的 net 实例。
要显示链路名称、设备和位置之间的对应关系,请如下所示使用 dladm show-phys 命令和 –L 选项:
# dladm show-phys -L LINK DEVICE LOCATION net0 e1000g0 MB net1 e1000g1 MB net2 e1000g2 MB net3 e1000g3 MB net4 ibp0 MB/RISER0/PCIE0/PORT1 net5 ibp1 MB/RISER0/PCIE0/PORT2 net6 eoib2 MB/RISER0/PCIE0/PORT1/cloud-nm2gw-2/1A-ETH-2 net7 eoib4 MB/RISER0/PCIE0/PORT2/cloud-nm2gw-2/1A-ETH-2
注意 - 对自动指定通用链路名称的方式进行定制必须在安装 Oracle Solaris 之前进行。安装完成后,将无法在不删除现有配置的情况下定制缺省链路名称。 |
Oracle Solaris 使用前缀 net 来指定链路名称。不过,您可以使用您喜欢的任何定制前缀,例如 eth。您还可以禁用通用链路名称自动分配。
要禁用链路自动命名,或要定制链路名称前缀,请在系统配置 (System Configuration, SC) 清单中设置以下属性。SC 清单由 Oracle Solaris 的自动化安装程序 (Automated Installer, AI) 使用。
<service name="network/datalink-management" version="1" type="service"> <instance name="default enabled="true"> <property_group name='linkname-policy' type='application'> <propval name='phys-prefix' type='astring' value='net'/> </property_group> </instance> </service
缺省情况下,phys-prefix 属性的值设置为 net,如上一个输出中的粗体文本所示。
要禁用自动命名,请将 phys-prefix 属性的值设置为空字符串,例如:
<propval name='phys-prefix' type='astring' value=''/>
如果禁用了自动命名,数据链路名称将基于与其关联的硬件驱动程序,如 bge0、e1000g0 等。
要使用不同于 net 的前缀,请指定新前缀作为 phys-prefix 的值,如 eth。
如果为 phys-prefix 属性提供的值无效,则会忽略该值。数据链路将根据与其关联的硬件驱动程序来命名,如 bge0、e1000g0 等。有关有效链路名称的规则,请参见有效链路名称的规则。
在全新安装的系统上,数据链路将自动命名为 net0 到 netN-1,其中 N 表示网络设备的总数。
与此相反,如果是从其他 Oracle Solaris 11 发行版升级而来,则数据链路将保留在升级之前为其设置的名称。这些名称要么是缺省的基于硬件的名称,要么是在升级前由管理员为数据链路指定的定制名称。而且,在这些升级的系统上,随后添加的新网络设备也保留缺省的基于硬件的名称,而不是获得通用名称。升级后系统的这种行为确保不会有 OS 指定的通用名称与其他基于硬件的名称或管理员在升级前指定的定制名称混合使用。
您可以将基于硬件的名称和 OS 提供的链路名称替换为您喜欢使用的其他名称。通常情况下,由 OS 指定的缺省链路名称足够用于创建系统的网络配置。但是,在更改链路名称之前,请考虑以下信息。
如果您系统的链路具有基于硬件的名称,至少要将这些链路重命名为通用名称。如果保留基于硬件的名称,以后在移除或更换这些物理设备时可能会出现混乱。
例如,您保留与设备 bge0 相关联的链路名称 bge0。并且在执行所有链路配置时都引用了该链路名称。之后,您可能将 NIC bge 更换为 NIC e1000g。要将以前设备的链路配置重新应用于新的 NIC e1000g0,您需要将链路名称 bge0 重新指定给 e1000g0。由于基于硬件的链路名称 bge0 与关联的 NIC e1000g0 不同,这种组合可能导致混乱。通过使用不基于硬件的名称,您可以更好地将链路与相关联的设备进行区分。
尽管替换基于硬件的链路名称是最佳做法,但在重命名链路之前,仍然必须进行周密的规划。更改设备的链路名称不会将新名称自动传播到所有现有的相关联配置。以下示例说明了更改链路名称时的风险:
IP 过滤器配置中的一些规则应用于特定链路。更改链路名称时,这些过滤器规则会继续引用链路的原始名称。因此,在重命名链路之后,这些规则不再发挥预期的作用。您需要使用新链路名称调整过滤器规则,使其应用于链路。
请考虑导出网络配置信息的可能性。如前文所述,通过使用 OS 提供的 net# 缺省名称,您可以轻松地迁移区域并将网络配置导出到另一个系统。如果目标系统的网络设备是使用通用名称命名的,如 net0、net1 等,则区域将仅继承与指定给该区域的数据链路的名称相匹配的那些数据链路的网络配置。
因此,作为一般规则,不要随机地重命名数据链路。当重命名数据链路时,确保在更改链路名称后链路的所有关联配置继续适用。
一些可能会受链路重命名影响的配置如下:
IP 过滤器规则
使用 ipadm 命令指定的 IP 配置
Oracle Solaris 11 区域
autopush 配置
指定链路名称时,请遵守以下规则:
链路名称必须包括一个字符串和一个物理连接点 (physical point of attachment, PPA) 编号。
链路名称必须遵守以下约束:
名称最好包含 3 到 8 个字符。但是,名称最多可以有 16 个字符。
名称的有效字符有字母数字 (a-z, 0–9) 和下划线 ('_')。
注意 - 不要在链路名称中使用大写字母。 |
每个数据链路在某一时刻只能有一个链路名称。
每个数据链路在系统内必须具有唯一的链路名称。
指定链路名称时,链路在网络设置中的作用可能是很有用的参考信息。例如,可以将 netmgt0 指定给专用于网络管理的链路。将 Upstream2 用于连接到 ISP 的链路。作为一般规则,为了避免混淆,不要将已知设备的名称指定给您的链路。