除了执行基本的数据链路配置,您还可以使用 dladm 命令设置数据链路属性并根据您的网络要求对其进行定制。
下面三个 dladm 子命令用于管理数据链路属性:
显示数据链路的属性及其当前值。如果不使用 –p property 选项,则将显示数据链路的所有属性。如果不指定数据链路,则将显示所有数据链路的所有属性。
为数据链路的属性指定值。
将数据链路的特定属性重置为其缺省值。
您可以定制的数据链路属性取决于特定 NIC 驱动程序支持的属性。
可通过使用 dladm 命令配置的数据链路属性分为两个类别:
公共属性-这些属性可应用于给定介质类型的任何驱动程序,例如链路速度、以太网的自动协商,或可应用于所有数据链路驱动程序的最大传输单元 (maximum transmission unit, MTU) 大小。
专用属性-这些属性特定于给定介质类型的 NIC 驱动程序的特定子集。这些属性可能是特定于该子集的,因为它们与驱动程序相关联的硬件密切相关,或者与驱动程序实现本身的详细信息(如与调试相关的可调参数)密切相关。
链路属性通常具有缺省值。但是,在某些联网情况下,可能需要您更改特定属性值。例如,NIC 可能会与不能正确执行自动协商的旧交换机进行通信。或者,一个交换机可能已配置为支持巨型帧。或者,可能需要为特定驱动程序修改用于控制数据包传输或数据包接收的特定于驱动程序的属性。
MTU 定义协议可从系统中传输的最大包的大小。缺省情况下,大部分 NIC 驱动程序将 MTU 大小定义为 1500。但是,如果有巨型帧穿越网络,则缺省值将不够用。要支持巨型帧,MTU 大小至少需要为 9000。
如下所示更改 MTU 大小的缺省值:
# dladm set-linkprop -p mtu=new-size datalink
更改 MTU 大小后,您可以在数据链路上重新配置一个 IP 接口。
以下示例显示了如何启用对巨型帧的支持。此示例假定您已删除了数据链路上现有的任何 IP 接口配置。
# dladm show-linkprop -p mtu net1 LINK PROPERTY PERM VALUE EFFECTIVE DEFAULT POSSIBLE net1 mtu rw 1500 1500 1500 1500 # dladm set-linkprop -p mtu=9000 net1 # dladm show-link net1 LINK CLASS MTU STATE BRIDGE OVER web1 phys 9000 up -- --
大多数网络设置包含多个具有不同速度能力的系统。每个系统均会将速度能力通告给网络中的其他系统,网络将通知每个系统如何传输和接收网络通信。
以下成对的数据链路属性控制系统通告的速度能力:
adv_10gfdx_cap/en_10gfdx_cap
adv_1000fdx_cap/en_1000fdx_cap
adv_1000hdx_cap/en_1000hdx_cap
adv_100fdx_cap/en_100fdx_cap
adv_100hdx_cap/en_100hdx_cap
adv_10fdx_cap/en_10fdx_cap
adv_10hdx_cap/en_10hdx_cap
每个链路速度能力均涉及一对属性:通告速度 (adv_*_cap) 和支持的通告速度 (en_*_cap)。此外,还将为全双工和半双工能力提供数据链路速度信息,如属性名称中的 *fdx* 和 *hdx* 所指定。通告速度属性为只读属性,指示特定数据链路速度是否已通告。您可以通过设置相应的 en_*_cap 属性来确定是否通告了某个特定的数据链路速度。
缺省情况下,将通告数据链路的所有速度和双工能力。但是,可能会存在以下情况:新系统正在与旧系统通信,但是已禁用了或不支持自动协商。要启用这两个系统间的通信,较旧系统与较新系统之间的通告速度可能需要更改为较低的值。系统的千兆传输能力可能需要关闭,并且只通告较低的速度能力。在这种情况下,您应键入以下命令来为全双工能力和半双工能力关闭千兆传输能力的通告。
# dladm set-linkprop -p en_1000fdx_cap=0 datalink # dladm set-linkprop -p en_1000hdx_cap=0 datalink
要显示这些属性的新值,请如下所示使用 dladm show-linkprop 命令:
# dladm show-linkprop -p adv_10gfdx_cap datalink # dladm show-linkprop -p adv_1000hdx_cap datalink
通常情况下,给定的支持的速度属性和相应通告属性的值是相同的。不过,如果 NIC 支持一些高级功能(如电源管理),这些功能可能对主机和其链路伙伴之间实际通告的位设置限制。例如,使用电源管理时,adv_*_cap 属性的设置可能只是 en_*_cap 属性的设置的子集。
当数据链路处于打开状态时,可以设置将最多 8 个 STREAMS 模块推送到流。这些模块通常由第三方网络软件(如虚拟专用网络 (virtual private networks, VPN) 和防火墙)使用。软件供应商会提供有关此类网络软件的文档。
要在特定数据链路上推送的模块的列表是由 autopush 属性控制的。而 autopush 属性的值是通过使用 dladm set-linkprop 命令设置的。
可以使用单独的 autopush 命令基于每个驱动程序将模块推送到数据链路的流。此命令使用为每个驱动程序设置的配置文件,配置文件会告诉命令要推送的模块。然而,驱动程序始终绑定到 NIC。如果移除了数据链路的底层 NIC,则链路的 autopush 属性信息也会丢失。
因此,将 dladm 命令用于此目的比使用 autopush 命令更加可取。对于某个特定的数据链路,如果同时存在每驱动程序和每链路 autopush 配置,则将使用通过 dladm set-linkprop 命令设置的每链路信息,而忽略每驱动程序信息。
要在数据链路处于打开状态时将模块推送到 STREAMS,您可以使用相同的 dladm set-linkprop 命令为 autopush 属性指定模块。例如,可以如下所示在 net0 链路上推送 vpnmod 和 bufmod 模块:
# dladm set-linkprop -p autopush=vpnmod.bufmod net0
要获取有关数据链路属性的信息,可以使用以下任一命令:
dladm show-linkprop –p property datalink
dladm show-ether datalink
要显示数据链路属性的完整列表,请键入该命令而不指定属性,如以下示例中所示:
# dladm show-linkprop net1 LINK PROPERTY PERM VALUE EFFECTIVE DEFAULT POSSIBLE net1 speed r- 0 0 0 -- net1 autopush rw -- -- -- -- net1 zone rw -- -- -- -- net1 duplex r- unknown unknown unknown half,full net1 state r- up up up up,down net1 adv_autoneg_cap -- -- -- 0 1,0 net1 mtu rw 1500 1500 1500 1500 net1 flowctrl -- -- -- no no,tx,rx,bi, pfc,auto net1 adv_10gfdx_cap r- -- -- 0 1,0 net1 en_10gfdx_cap -- -- -- 0 1,0 net1 adv_1000fdx_cap r- -- -- 0 1,0 net1 en_1000fdx_cap -- -- -- 0 1,0 net1 adv_1000hdx_cap r- -- -- 0 1,0 net1 en_1000hdx_cap -- -- -- 0 1,0 net1 adv_100fdx_cap r- -- -- 0 1,0 net1 en_100fdx_cap -- -- -- 0 1,0 net1 adv_100hdx_cap r- -- -- 0 1,0 net1 en_100hdx_cap -- -- -- 0 1,0 net1 adv_10fdx_cap r- -- -- 0 1,0 net1 en_10fdx_cap -- -- -- 0 1,0 net1 adv_10hdx_cap r- -- -- 0 1,0 net1 en_10hdx_cap -- -- -- 0 1,0 net1 maxbw rw -- -- -- -- net1 cpus rw -- -- -- --
如果没有随 dladm show-ether 命令指定任何选项,则只会显示数据链路的当前以太网属性值。要获取缺省提供的内容之外的信息,请使用 –x 选项,如以下示例所示:
# dladm show-ether -x net1 LINK PTYPE STATE AUTO SPEED-DUPLEX PAUSE net1 current up yes 1G-f both -- capable -- yes 1G-fh,100M-fh,10M-fh both -- adv -- yes 100M-fh,10M-fh both -- peeradv -- yes 100M-f,10M-f both
如果使用 –x 选项,该命令还显示指定链路的内置能力,以及主机和链路伙伴之间当前通告的能力。
本例中显示了以下信息:
对于以太网设备的当前状态,该链路处于活动状态并在全双工模式下以每秒 1 Gb 速度工作。其自动协商功能已启用并采用双向流量控制,即主机和链路伙伴都可以发送和接收 PAUSE 帧。此信息显示在输出的第一行中。
示例输出中后面的行显示有关数据链路速度能力、已通告的实际数据链路速度以及来自对等方系统的信息,如下所示:
列出以太网设备的功能。协商类型可以设置为自动。此外,该设备可以支持的速度有每秒 1 Gb、每秒 100 Mb 和每秒 10 Mb(全双工和半双工)。同样,主机和链路伙伴之间可以双向接收或发送 PAUSE 帧。
net1 的功能按如下所示通告:自动协商、速度双工和 PAUSE 帧的流控制。
同样,net1 的链路或对等伙伴通告以下功能:自动协商、速度双工和 PAUSE 帧的流控制。