跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 管理:网络接口和网络虚拟化 Oracle Solaris 11 Information Library (简体中文) |
除了执行基本的数据链路配置,您还可以使用 dladm 命令设置数据链路属性并根据您的网络需要对其进行定制。
注 - 只要链路的网络驱动程序已转换为 GLDv3 框架,如 e1000g,就可以使用 dladm 命令定制数据链路属性。要确认您的特定驱动程序是否支持此功能,请参阅驱动程序的手册页。
可定制的数据链路属性取决于特定 NIC 驱动程序支持的属性。可通过使用 dladm 命令配置的数据链路属性分为两个类别:
公共属性:可应用于给定介质类型的任何驱动程序,例如链路速度、以太网的自动协商,或可应用于数据链路所有驱动程序的 MTU 大小。
专用属性:仅属于给定介质类型的 NIC 驱动程序的特定子集。这些属性可能是特定于该子集的,因为它们与驱动程序相关联的硬件密切相关,或者与驱动程序实现本身的详细信息(如与调试相关的可调参数)密切相关。
链路属性通常具有缺省设置。但是,在某些网络情况下,可能需要您更改数据链路的特定属性设置。这些属性设置可以是公共或专用属性。例如,NIC 可能与不能正确执行自动协商的旧交换机进行通信。或者,一个交换机可能已配置为支持巨型帧。或者,可能需要针对给定驱动程序修改用于控制数据包传输或数据包接收的驱动程序特定属性。在 Oracle Solaris 中,现在可通过单一管理工具 dladm 重置所有这些设置。
下一节提供了设置特定数据链路属性的过程示例。所选属性是公共属性,适用于所有 NIC 驱动程序。特定于驱动程序的数据链路属性单独用一节来介绍。本节之后是配置 e1000g 驱动程序的所选专用属性的过程。
在网络设置中启用对巨型帧的支持是大多数网络方案的一项常见任务。支持巨型帧需要增加数据链路的最大传输单元 (maximum transmission unit, MTU) 的大小。以下过程包括使用定制名称来标识数据链路。有关定制名称及其在网络配置中的使用的概述,请参见Oracle Solaris 中的网络栈。
有关更多信息,请参见《Oracle Solaris 管理:安全服务》中的"如何获取管理权限"。
# dladm show-phys
执行此步骤,尤其是如果您的网络配置使用数据链路的定制名称。使用定制名称时,数据链路不再必须由其基于硬件的名称标识。例如,以太网设备是 bge0。然而,该设备上的数据链路重命名为 net0。因此,您需要配置 net0 的 MTU 大小。请参阅IP 接口配置(任务),了解在使用定制名称的数据链路上的配置任务示例。
dladm show-linkprop -p property datalink
此命令显示您指定的属性的设置。
# dladm show-link datalink
此命令显示数据链路信息,包括 MTU 大小。
# ipadm delete-ip interface
# dladm set-linkprop -p mtu=9000 datalink
# ipadm create-ip interface
# ipadm create-addr -T addr-type [-a address] addrobj
有关 ipadm 命令的更多信息,请参见ipadm(1M)。
# dladm show-linkprop -p mtu datalink
# dladm show-ether datalink
示例 8-5 启用巨型帧支持
以下启用巨型帧支持的示例是在以下方案中进行的:
系统有两个 bge NIC:bge0 和 bge1。
设备 bge0 用作主接口,设备 bge1 用于测试目的。
您要在 bge1 上启用巨型帧支持,同时保留主接口的缺省 MTU 大小。
网络配置使用数据链路的定制名称。bge0 的链路名称是 net0。bge1 的链路名称是 net1。
# dladm show-phys LINK MEDIA STATE SPEED DUPLEX DEVICE net0 ether up 100Mb full bge0 net1 ether up 100Mb full bge1 net2 ether up 100Mb full nge3 # dladm show-linkprop -p mtu net1 LINK PROPERTY VALUE DEFAULT POSSIBLE net1 mtu 1500 1500 -- # ipadm delete-ip net1 # dladm set-linkprop -p mtu=9000 net1 # ipadm create-ip net1 # ipadm create-addr -T static -a 10.10.1.2/35 net1/v4 # dladm show-link web1 LINK CLASS MTU STATE BRIDGE OVER web1 phys 9000 up -- --
请注意,现在 MTU 设置是 9000。在本示例中,dladm 命令使您能够直接更改 net1 的 MTU 大小。前面使用 ndd 命令的方法需要您删除 net0,这会不必要地破坏主接口的运行。
大多数网络设置包含多个具有不同速度能力的系统。例如,较旧系统与较新系统之间的通告速度可能需要更改为较低的设置才能进行通信。缺省情况下,通告 NIC 卡的所有速度和双工功能。此过程显示如何关闭 GB 能力而只通告 MB 能力。
有关更多信息,请参见《Oracle Solaris 管理:安全服务》中的"如何获取管理权限"。
# dladm show-linkprop -p property datalink
# dladm set-linkprop -p property=value1 datalink
示例 8-6 禁用 NIC 的 GB 能力通告
本示例显示如何防止链路 net1 通告 GB 能力。
# dladm show-linkprop -p adv_1000fdx_cap net1 LINK PROPERTY VALUE DEFAULT POSSIBLE net1 adv_1000fdx_cap 1 -- 1,0 # dladm show-linkprop -p adv_1000hdx_cap web1 LINK PROPERTY VALUE DEFAULT POSSIBLE net1 adv_1000hdx_cap 1 -- 1,0
通告链路的 GB 能力的属性是 adv_1000fdx_cap 和 adv_1000hdx_cap。要禁用这些属性的通告,请键入以下命令:
# dladm set-linkprop -p adv_1000fdx_cap=0 net1 # dladm set-linkprop -p adv_1000hdx_cap=0 net1
列出以太网参数设置将显示以下输出:
# dladm show-ether net1 LINK PTYPE STATE AUTO SPEED-DUPLEX PAUSE net1 current up yes 1G-f both
您可以通过显示以太网参数设置或链路属性获取有关数据链路属性的信息。
有关更多信息,请参见《Oracle Solaris 管理:安全服务》中的"如何获取管理权限"。
# dladm show-ether [-x] datalink
其中 -x 选项包括有关链路的附加参数信息。如果不使用 -x 选项,则只显示当前参数设置。
# dladm show-linkprop datalink
示例 8-7 显示以太网参数设置
本示例显示有关指定链路的参数信息的扩展列表。
# 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 帧的流控制。
示例 8-8 显示链路属性
本示例说明如何列出链路的所有属性。如果您要只显示特定属性,则对要监视的特定属性使用 -p 选项。
# 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
链路的速度和双工功能设置是在标记为 en_*_cap 的支持速度的属性上手动配置的。例如,en_1000fdx_cap 是对应于 GB 全双工能力的属性,en_100hdx_cap 是对应于 100 MB 半双工能力的属性。这些支持速度的属性的设置是通过相应的通告速度属性(它们标记为 adv_*_cap,如 adv_1000fdx_cap 和 adv_100hdx_cap)在主机和其链路伙伴之间通告的。
通常情况下,给定的支持速度属性和相应的通告属性的设置是相同的。不过,如果 NIC 支持一些高级功能(如电源管理),这些功能可能对主机和其链路伙伴之间实际通告的位设置限制。例如,使用电源管理时,adv_*_cap 属性的设置可能只是 en_*_cap 属性的设置的子集。有关支持速度属性和通告速度属性的更多信息,请参见dladm(1M) 手册页。
此过程和下一过程显示如何配置专用属性。这两个过程适用于特定于 e1000g 驱动程序的属性。然而,一般步骤也可用于配置其他 NIC 驱动程序的专用属性。
大容量通信,例如文件传输,通常涉及通过网络的大数据包的协商。在这种情况下,您可以通过将 e1000g 驱动程序配置为自动使用 DMA 绑定(其中为数据包段大小定义阈值),从该驱动程序获得更好的性能。如果一个段大小超过阈值,则使用 DMA 绑定进行传输。如果一个段大小在阈值内,则使用 bcopy 模式,其中段数据被复制到先前指定的传输缓冲区。
要设置阈值,请执行以下步骤:
有关更多信息,请参见《Oracle Solaris 管理:安全服务》中的"如何获取管理权限"。
# dladm set-linkprop -p _tx_bcopy_threshold=value e1000g-datalink
对于此属性,阈值范围的有效设置为 60 到 2048。
注 - 与配置公共属性一样,也必须取消激活接口,才能修改专有属性设置。
# dladm show-linkprop -p _tx_bcopy_threshold e1000g-datalink
控制由 e1000g 驱动程序提供中断的速率的参数也会影响网络和系统性能。通常,通过为每个数据包生成一个中断来将网络数据包传送到栈的上层。进而,缺省情况下,中断率由内核中的 GLD 层自动调整。但是,这种模式可能并非对所有的网络通信流量情况都是适宜的。有关此问题的讨论,请参阅 1996 年 USENIX 技术会议上发表的文档 (http://www.stanford.edu/class/cs240/readings/mogul.pdf)。因此,在某些情况下,必须手动设置中断率以获得更好的性能。
要定义中断率,需要设置以下参数:
_intr_throttling_rate 确定中断断言之间的延迟,而不管网络通信流量情况如何。
_intr_adaptive 确定是否启用中断限制率的自动调优。缺省情况下,启用此参数。
有关更多信息,请参见《Oracle Solaris 管理:安全服务》中的"如何获取管理权限"。
# dladm show-phys
# dladm set-linkprop -p _intr_adaptive=0 e1000g-datalink
注 - 当启用中断限制率的自动调优时,将忽略参数 _intr_throttling_rate 的任何现有设置。
# dladm set-linkprop -p _intr_throttling_rate=value e1000g-datalink
注 - 在基于 SPARC 的系统上,_intr_throttling_rate 参数的缺省设置为 550,在基于 x86 的系统上为 260。将最低内部中断级别设置为 0 将禁用中断限制逻辑。
示例 8-9 配置 DMA 绑定和设置中断限制率
本示例使用具有 e1000g NIC 的基于 x86 的系统。驱动程序配置有可在使用 DMA 绑定或 bcopy 模式之间切换的阈值设置,以便传输数据包。中断限制率的设置也会被修改。此外,e1000g 数据链路使用由 OS 指定的缺省通用名称。因此,通过引用定制名称 net0 在数据链路上执行配置。
# dladm show-phys LINK MEDIA STATE SPEED DUPLEX DEVICE net0 ether up 100Mb full e1000g0 # dladm show-linkprop -p _tx_bcopy_threshold net0 LINK PROPERTY VALUE DEFAULT POSSIBLE net0 _tx_bcopy_threshold 512 512 -- # dladm show-linkprop -p _intr-throttling_rate LINK PROPERTY VALUE DEFAULT POSSIBLE net0 _intr-throttling_rate 260 260 -- # ipadm delete-ip net0 # dladm set-linkprop -p _tx_bcopy_threshold=1024 net0 # dladm set-linkprop -p _intr_adaptive=0 net0 # dladm set-linkprop -p _intr-throttling_rate=1024 net0 # ipadm create-ip net0 # ipadm create-addr -T static -a 10.10.1.2/24 net0/v4addr # dladm show-linkprop -p _tx_bocopy_threshold=1024 net0 LINK PROPERTY VALUE DEFAULT POSSIBLE net0 _tx_bcopy_threshold 1024 512 -- # dladm show-linkprop -p _intr_adaptive net0 LINK PROPERTY VALUE DEFAULT POSSIBLE net0 _intr-adaptive 0 1 -- # dladm show-linkprop -p _intr-throttling_rate LINK PROPERTY VALUE DEFAULT POSSIBLE net0 _intr-throttling_rate 1024 260 --