关闭

ubuntu设置网卡速率

2555人阅读 评论(0) 收藏 举报
分类:

没有比购买一个完全的Linux兼容网卡更好的Linux投资了。大部分的Linux厂商在他们网站上都有一份兼容的硬件列表:在开始连接你的机器到网络之前请仔细阅读它。如果你没有找到任何在本地的计算机商店可以买到的型号,那么同系列也是可以的。大多数网卡都能正常工作,但只有完全兼容的可为您提供无差错的,持续的吞吐量。

Linux缺省会在网卡连接到路由器上时自动协商判断网卡的速度和双工。配置一个路由器端口自动协商速度和双工往往是不足够的,因为不同的协议标准执行上常会有分歧。

实际上,网卡即使协商失败也会工作,但这通常会导致在网卡上使用ifconfig -a命令时看到许多冲突类型的错误和极低的性能。在故障排除时不要只把这类错误局限于协商失败;问题也可能是坏的网卡,路由器端口,或者网线导致的。

使用mii-tool

mii-tool是一个原始的设置网卡速度和双工的Linux工具。它以注定会被抛弃,而由新的ethtool命令取而代之,但是很多老的网卡只支持mii-toll,所以你还需要知道它。不带任何参数的执行命令会产生一个简要的状态报告,如下面样例所示,对于不支持的网卡将提示Operation not supported信息。mii-tool不兼容的网卡往往仍然可以工作,但是你需要根据制造商的指南来设定速度和双工,而不能自动协商。

[root@bigboy tmp]# mii-tool
SIOCGMIIPHY on 'eth0' failed: Operation not supported
eth1: 100 Mbit, half duplex, link ok
[root@bigboy tmp]#

通过-v参数使用verbose模式,你可以获得更多更详细的信息。在这个例子中,协商正常,网卡选择100Mbps,全双工模式(FD)。

[root@bigboy tmp]# mii-tool -v
eth1: negotiated 100baseTx-FD, link ok
  product info: vendor 00:10:18, model 33 rev 2
  basic mode: autonegotiation enabled
  basic status: autonegotiation complete, link ok
  capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  advertising: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control 
[root@bigboy tmp]#

用mii-tool设置网卡的速度参数

你可以通过-F参数强行指定网卡的速度和双工,选项包括:100baseTx-FD,100baseTx-HD,10baseT-FD,或者10baseT-HD。记住,你可能丢失网络连接如果你网卡的强制速度/双工模式与路由器不匹配的话:

[root@bigboy tmp]# mii-tool -F 100baseTx-FD eth0

不幸的是,除了把这个命令放到/etc/rc.local文件中让它在每次启动结束前执行,或者创建你自己的启动脚本如果你需要它更早被执行,我们没有办法让它在重启后永久生效。

使用ethtool

ethtool命令被指定在不久的将来替代mii-tool,目的是支持新的网卡。

用设备名称作为参数,命令可以提供其状态。这里我们可以看到设备eth0没有设置自动协商并设定为100 Mbps速度,全双工。在输出的顶端列出了其所支持的模式。

[root@bigboy tmp]# 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: No
       Speed: 100Mb/s
       Duplex: Full
       Port: MII
       PHYAD: 1
       Transceiver: internal
       Auto-negotiation: off
       Supports Wake-on: g
       Wake-on: g
       Current message level: 0x00000007 (7)
       Link detected: yes
[root@bigboy tmp]#

用ethtool设置网卡的速度参数

不同于mii-tool,ethtool可以通过设定设备配置脚本里的ETHTOOL_OPTS变量而永久生效。在下面例子里,设定了在下次重启时设置100 Mbps,全双工和不自动协商:

#
# File: /etc/sysconfig/network-scripts/ifcfg-eth0
# 
DEVICE=eth0
IPADDR=192.168.1.100
NETMASK=255.255.255.0
BOOTPROTO=static
ONBOOT=yes
ETHTOOL_OPTS="speed 100 duplex full autoneg off"

你可以通过ifup和ifdown命令关闭和再激活设备,来测试这些参数。这些设定也可以通过在命令行中使用-s参数改变,后面跟上设备名称和相关配置参数。

[root@bigboy tmp]# ethtool -s eth1 speed 100 duplex full autoneg off
[root@bigboy tmp]#

Linux的man命令提供了ethtool选项的更详细说明,但你可以通过只输入ethtool命令获得一个快速的摘要。

[root@bigboy tmp]# ethtool
...
...
        ethtool -s DEVNAME \
                [ speed 10|100|1000 ] \
                [ duplex half|full ] \
                [ port tp|aui|bnc|mii|fibre ] \
...
...
[root@bigboy tmp]#

关于双工设置

缺省地,Linux网卡会跟交换机协商速度和双工设定。这通过交换叫做FLP(Fast Link Pules)的电子信号实现。当速度和双工被强制指定的时FLP就不会发送。当网卡使用自动协商模式而且检测到一个健康的,可用的连接时却没有收到FLP信号,它会抱错并把自己的双工设为半双工模式,有时它也会设置速度到低一级的值。因此,这样可能交换机端口是强制100 Mbps全双工,但是自动协商的网卡把自己设为100Mbps半双工,结果产生错误。同样情况也可能发生在交换机上,如果交换机端口设为自动协商而服务器网卡强制100 Mbps全双工。最好是要么强制交换机端口和网卡都是自动协商,要么强制设定相同的速度和双工值。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:257106次
    • 积分:3049
    • 等级:
    • 排名:第11431名
    • 原创:15篇
    • 转载:226篇
    • 译文:1篇
    • 评论:10条
    最新评论