跳过导航链接 | |
退出打印视图 | |
在 Oracle Solaris 11.1 中使用固定网络配置连接系统 Oracle Solaris 11.1 Information Library (简体中文) |
除了执行基本的数据链路配置,您还可以使用 dladm 命令设置数据链路属性并根据您的网络要求对其进行定制。
有以下三个用于数据链路属性的 dladm 子命令:
dladm show-linkprop [-p property ] [datalink] 显示数据链路属性及属性的当前值。如果不使用 -p property 选项,则会列出数据链路的所有属性。如果不指定数据链路,则会列出所有数据链路的所有属性。
dladm set-linkprop -p property =value datalink 为数据链路的属性赋值。
dladm reset-linkprop -p property datalink 将特定属性重置为其缺省值。
可定制的数据链路属性取决于特定 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 VALUE DEFAULT POSSIBLE net1 mtu 1500 1500 -- # dladm set-linkprop -p mtu=9000 net1 # dladm show-link web1 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 属性来确定特定数据链路速度是否已通告。
缺省情况下,通告数据链路的所有速度和双工能力。但是,可能会存在以下情况:新系统正在与旧系统通信且自动协商已禁用或不受支持。要启用这两个系统间的通信,较旧系统与较新系统之间的通告速度可能需要更改为较低的值。系统的 GB 能力可能需要关闭,并且只通告较低的速度能力。在这种情况下,您可以为全双工能力和半双工能力键入以下内容。
# dladm set-linkprop -p en_1000fdx_cap=0 datalink # dladm set-linkprop -p en_1000hdx_cap=0 datalink
该命令为全双工能力和半双工能力关闭对系统的 GB 能力的通告。
要显示这些属性的新值,请使用 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 命令更可取。如果特定数据链路的 autoputsh 配置的每驱动程序类型和每链路类型都存在,则使用通过 dladm set-linkprop 设置的每链路信息,而忽略每驱动程序信息。
要在数据链路处于打开状态时将模块推送到 STREAMS,您可以使用相同的 dladm set-linkprop 命令为 autopush 属性指定模块。例如,要将 vpnmod 和 bufmod 模块推送到 net0 链路上,应键入:
# dladm set-linkprop -p autopush=vpnmod.bufmod net0
本节和下一节显示如何配置专用属性。这两节适用于特定于 e1000g 驱动程序的属性。不过,这两节中的常规信息也适用于配置其他 NIC 驱动程序的专用属性。
大容量通信,例如文件传输,通常涉及通过网络的大数据包的协商。在此类情况下,您可以通过将 e1000g 驱动程序配置为自动使用直接内存访问 (Direct Memory Access, DMA) 绑定(其中为数据包段大小定义阈值),从该驱动程序获得更好的性能。如果一个段大小超过阈值,则使用 DMA 绑定传输包。如果一个段大小在阈值内,则使用 bcopy 模式,其中段数据被复制到预分配的传输缓冲区。
# dladm set-linkprop -p _tx_bcopy_threshold=value datalink
对于此属性,阈值的有效值范围为 60 到 2048。
注 - 所有数据链路均自动命名为通用名称。必须确保该专用属性是在底层 NIC 为 e1000g 的数据链路上配置的。设置该属性前使用 dladm show-phys 验证。
与配置公共属性一样,也必须先删除所有 IP 接口,然后才能修改专用属性值。
您可能会执行类似于以下内容的步骤:
# dladm show-phys LINK MEDIA STATE SPEED DUPLEX DEVICE net0 Ethernet up 100Mb full nge0 net1 Ethernet up 100Mb full e1000g0 # dladm set-linkprop -p _tx_bcopy_threshold=1024 net1
控制由 e1000g 驱动程序提供中断的速率的属性也会影响网络和系统性能。通常,通过为每个数据包生成一个中断来将网络数据包传送到栈的上层。进而,缺省情况下,中断率由内核中的 GLD 层自动调整。但是,这种模式可能并非对所有的网络通信流量情况都是适宜的。有关此问题的讨论,请参阅 1996 年 USENIX 技术会议上发表的文档 (http://www.stanford.edu/class/cs240/readings/mogul.pdf)。因此,在某些情况下,必须手动设置中断率以获得更好的性能。
要定义中断率,需要设置以下属性:
_intr_throttling_rate 确定中断断言之间的延迟,而不管网络通信流量情况如何。
_intr_adaptive 确定是否启用中断限制率的自动调优。缺省情况下,此属性处于启用状态。
首先关闭中断限制率的自动调优。然后,手动设置中断限制率属性。
假设您拥有一个基于 x86 的系统,且该系统的 e1000g NIC 的中断限制率需要修改。进一步假设 e1000g0 的数据链路名称为 net1。应键入以下命令。
# dladm set-linkprop -p _intr_adaptive=0 net1 # dladm set-linkprop -p _intr-throttling_rate=1024 net1
要获取有关数据链路属性的信息,可以使用以下任一命令:
dladm show-linkprop [-p property ] [datalink]
dladm show-ether datalink
此方法在定制数据链路属性中有所介绍。要显示数据链路属性的完整列表,请键入该命令,而不指定属性。例如:
# dladm show-linkprop net1 LINK PROPERTY VALUE DEFAULT POSSIBLE net1 speed 1000 -- -- net1 autopush -- -- -- net1 zone -- -- -- net1 duplex half -- half,full net1 state unknown up up,down net1 adv_autoneg_cap 1 1 1,0 net1 mtu 1500 1500 -- net1 flowctrl no bi no,tx,rx,bi net1 adv_1000fdx_cap 1 1 1,0 net1 en_1000fdx_cap 1 1 1,0 net1 adv_1000hdx_cap 1 1 1,0 net1 en_1000hdx_cap 1 1 1,0 net1 adv_100fdx_cap 0 0 1,0 net1 en_100fdx_cap 0 0 1,0 net1 adv_100hdx_cap 0 0 1,0 net1 en_100hdx_cap 0 0 1,0 net1 adv_10fdx_cap 0 0 1,0 net1 en_10fdx_cap 0 0 1,0 net1 adv_10hdx_cap 0 0 1,0 net1 en_10hdx_cap 0 0 1,0
如果没有随 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 帧的流控制。