3.3 全双工, 节能, 自动协商机制, 802.1X 流控制
最初开发以太网时,它仅使用共享电缆以半双工模式运行
数据在一个时间点只能以一种方式发送,在任何给定的时间点只有一个站点在发送帧
随着交换式以太网的发展,网络不再是一根共享的电缆,而是多组链路,这样一来,多对站点可以同时交换数据
此外,以太网被改为全双工运行,不再使用冲突检测电路
以太网的物理长度也因此得到了扩展,因为与半双工操作和冲突检测相关的时序约束被移除了
在 Linux 中,可以通过 ethtool
程序查看是否支持全双工以及是否正在使用全双工
该工具还可以用来查看和设置以太网接口的许多其它属性:
Linux# ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Advertised auto-negotiation: Yes
Speed: 10Mb/s
Duplex: Half
Port: MII
PHYAD: 24
Transceiver: internal
Auto-negotiation: on
Current message level: 0x00000001 (1)
Link detected: yes
Linux# ethtool eth1
Settings for eth1:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: umbg
Wake-on: g
Current message level: 0x00000007 (7)
Link detected: yes
在本例中,第一个以太网接口 (eth0
) 连接到半双工 10Mb/s 网络
它能够进行自动协商(auto-negotiation),这是一种源自 802.3u 的机制,使接口能够交换一些信息,如速度信息、半双工或全双工操作这样的功能信息等等
自动协商信息是在物理层使用数据还未被发送或接收时发送的信号进行交换的
第二个以太网接口(eth1
)也支持自动协商,速率被设置在 100Mb/s,操作模式被设置为全双工
其它字段(Port
、PHYAD
、Transceiver
)分别表示:物理端口类型、地址、物理层电路是在 NIC 的内部还是外部
当前消息级别(Current message level)字段用于配置与接口的操作模式相关的日志消息,它的行为特定于驱动程序
我们在下面的例子之后再讨论唤醒(wake-on)字段
在 Windows 中获得类似信息的方法:点击【控制面板】【网络连接】,然后右键单击某个网络接口选择【属性】,单击配置框并选择【高级】选项卡
这将打开一个类似图 3-6 所示的菜单(此图为 Windows 7 的以太网接口)
图 3-6
Windows 7 中网络接口属性的【高级】选项卡
该控件允许用户向网络设备驱动程序提供操作参数
图 3-6 展示了可以用适配器的设备驱动程序配置的特殊功能
这个特定的适配器和驱动程序,可以启用或禁用 802.1p/q 标签,也可以启用或禁用流控制和唤醒(wake-up)功能(见 3.3.2 节)
可以手动设置速度和双工模式,也可以选择更典型的自动协商选项
3.3.1 双工不匹配(duplex mismatch)
历史上,使用自动协商存在一些互操作性问题
特别是当计算机与关联的交换机端口使用不同的双工配置时,或当链路的一端启用自动协商机制而另一端禁用时
在这种情况下,可能会发生双工不匹配(duplex mismatch)
当这种情况发生时,连接并没有完全失效,但可能会有显着的性能下降
当网络中两个方向上的流量逐渐变大时(如在传输大量数据时)
半双工接口可以将传入流量检测为冲突,触发 CSMA/CD 以太网 MAC 的指数退避功能
同时,触发冲突的数据丢失,这时可能需要通过像 TCP 这样的高层协议来进行重传
因此,只有当半双工接口在发送数据的同时有足够的流量来接收数据时,才会出现性能下降的情况,轻负载下一般不会发生这种情况
一些研究人员试图构建分析工具来检测这种情况 [SC05]