导航:首页 > 操作系统 > linux网卡工具

linux网卡工具

发布时间:2023-07-17 18:31:15

‘壹’ 如何在linux下安装网卡驱动

一、查看网卡型号和机器位数

1、查看网卡型号

linux系统下通过以下命令,可以查看当前的网卡驱动信息;

[box color="white" icon="none"]

[root@localhost zhangy]# lspci |grep -i eth

03:00.0 Ethernet controller: Realtek Semiconctor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06)

[/box]

2、查看机器位数

驱动程序是要区分系统是32位系统还是64位系统的, 所以通过以下linux命令,就可以知道操作系统的位数了;

[box color="white" icon="none"]

[root@localhost ~]# uname -a

Linux localhost.localdomain 2.6.18-308.13.1.el5PAE #1 SMP Tue Aug 21 17:50:26 EDT 2012 i686 i686 i386 GNU/Linux

[/box]

下载前先看一下你的网卡驱动,如果是最新的就不用在重新装了。

[box color="white" icon="none"]

[root@localhost zhangy]# ethtool -i eth0

driver: r8169

version: 2.3LK-1-NAPI

firmware-version:

bus-info: 0000:03:00.0

[/box]

RTL8111/8168B就是网卡的型号,这样你可以网卡的型号来找一下网卡驱动的官方网站,然后下载最裂改新的网卡驱动,驱动分64位和32位的,i386,i686是32位的机器,x86_64表示是64位的机器,不要选错驱动了。

二、下载驱动,并安装

1、解压

[box color="white" icon="none"]

[root@localhost download]# tar jxvf r8168-8.032.00.tar.bz2

[/box]

2、安装

[box color="white" icon="none"]

[root@localhost r8168-8.032.00]# make && make install

[/box]

如果报以下错敏源首误

make -C /lib/moles/2.6.18-308.8.2.el5PAE/build SUBDIRS=/home/zhangy/r8168-8.032.00/src INSTALL_MOD_DIR=kernel/drivers/net moles_install

make: *** /lib/moles/2.6.18-308.8.2.el5PAE/build: 没有那个文件或目录。 停止。

make: *** [install] 错误 2

说明你kernel源码没有安装。安装kernel源码

[box color="white" icon="none"]

[root@localhost r8168-8.032.00]# yum install kernel-xen kernel-xen-devel kernel

> kernel-PAE kernel-PAE-devel kernel-devel kernel-headers

[/box]

安装完以后,一定要重启机器。不然下面操作就过不去了,会报FATAL: Mole r8168 not found.

[box color="white" icon="none"]

[root@localhost r8168-8.032.00]# depmod -a

[root@localhost r8168-8.032.00]# modprobe r8168

[/box]

编辑配置文件/etc/modprobe.cof,如果以前没有添加alias eth0 r8168,如果已经有了修改一下成alias eth0 r8168。

查一下驱动桥数是不是加载了,如果有以下内容说明驱动安装成功了。

[box color="white" icon="none"]

[root@localhost r8168-8.032.00]# lsmod |grep r8168

r8168 231132 0

[/box]

必须重新启动一下机器,用ethtool查看驱动才会改变,不然还是老样子。下面是新的驱动。

[box color="white" icon="none"]

[root@localhost ~]# ethtool -i eth0

driver: r8168

version: 8.032.00-NAPI

firmware-version:

bus-info: 0000:02:00.0

[/box]

‘贰’ 如何在linux中获取网卡信息

查看 linux 的网卡信息步骤如下:工具原料:linux操作系统①启动 linux 操作系统,进入到桌面;②启动终端;③终端输入命令 ifconfig eth0,回车;④linux 的网卡信息解读:1.查看网卡生产厂商和信号:查看基本信息:lspci查看详细信息:lspci -vvv # 3个小写的v查看网卡信息:lspci | grep Ethernet;2.查看网卡驱动:查看网卡驱动信息:lspci -vvv # 找到网卡设备的详细信息,包括网卡驱动# lsmod 列出加载的所有驱动,包括网卡驱动;3.查看网卡驱动版本查看模块信息:modifo<mole name> # 其中包含version信息或 # ethtool-i <device name>;4.查看网络接口队列数查看网卡接口的中断信息:#cat /proc/interrupts | grep eth0或 # ethtool-S eth0;5.查看网卡驱动源码的版本号解压Intel网卡驱动源码,打开解压缩目录下的*.spec文件查看驱动的版本;

‘叁’ linux下无线网卡如何驱动

linux下无线网卡具体驱动的操作方法如下:

1、首先需要确定网卡的类型,打开linux的输入窗口,然后继续在linux终端下输入lsusb命令,此时在输出栏的第一行可以查看网卡类型,记录下来。

‘肆’ 在linux下如何通过命令查网卡配置

在linux下通过命令查网卡配置的方法如下:

1、首先在电脑上打开Linux系统,然后进入Linux系统的终端窗口。

‘伍’ linux查看系统网卡信息命令

查看网络信息命令 ifconfig
或者ip add show
希望可以帮助你,请采纳,谢谢

‘陆’ 如何用命令查看linux的网卡吞吐量或最大网卡流量

linux查看网卡吞吐量和网卡流量用自带命令,iptraf查看。

1 命令行直接输入:iptraf(如果没有,使用yum install iptraf安装)

此外还有很多工具命令可以查看:

watch命令:

watch -n 1 "/sbin/ifconfig eth0 | grep bytes"。

‘柒’ linux多网卡机上如何通过工具查看各网卡是否接入网络

一、通过mii-tool指令
[root@linuxzgf ~]# mii-tool
//mii-tool主要是用于配置网卡工作模式的指令,同时也可以进行查询、监控等工作!
二、ethtool
[root@linuxzgf ~]# ethtool eth0
Settings for eth0:
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
从上面 Link detected 可以看出eth0 处于连接状态
三.[root@linuxzgf ~]# /etc/init.d/network status
配置设备:
lo eth0 eth0.10 eth0.2 eth0.3 eth0.4 eth0.5 eth0.7 eth0.8 eth1
当前的活跃设备:
lo eth0 eth0.10
[四、ifconfig -a
[root@linuxzgf ~]# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:E0:81:80:D8:96
inet6 addr: fe80::2e0:81ff:fe80:d896/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:626032 errors:0 dropped:0 overruns:0 frame:0
TX packets:415035 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:123631002 (117.9 MiB) TX bytes:297575498 (283.7 MiB)
Base address:0x2000 Memory:df300000-df320000
eth1 Link encap:Ethernet HWaddr 00:E0:81:80:D8:97
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Base address:0x2020 Memory:df320000-df340000
五、lspci也可以看到网卡的信息

‘捌’ linux 网卡状态命令mii-tool 和 ethtool

linux下用mii-tool和ethtool 查看网线是否正确连接到网卡
输入mii-tool可以查看网线是否连接到网卡

有时驱动可能不支持会出错下列错误

可以使用ethtool查看

Link detected: yes为正常no为失败

mii-tool 的用法:
mii-tool 在更改网络设备通信协商方式的方法比较简单,用 -v 参数来查看网络接口的状态;看下面的例子;
mii-tool 更改网络接口协商的方法;
[root@localhost ~]# mii-tool --help
usage: mii-tool [-VvRrwl] [-A media,... | -F media] [interface ...]
-V, --version display version information
-v, --verbose more verbose output 注:显示网络接口的信息;
-R, --reset reset MII to poweron state 注:重设MII到开启状态;
-r, --restart restart autonegotiation 注:重启自动协商模式;
-w, --watch monitor for link status changes 注:查看网络接口连接的状态变化;
-l, --log with -w, write events to syslog 注:写入事件到系统日志;
-A, --advertise=media,... advertise only specified media 注:指令特定的网络接口;
-F, --force=media force specified media technology 注:更改网络接口协商方式;
media: 100baseT4, 100baseTx-FD, 100baseTx-HD, 10baseT-FD, 10baseT-HD,
(to advertise both HD and FD) 100baseTx, 10baseT

example:
[at_Neal:root:~:]# mii-tool
eth0: negotiated 100baseTx-FD flow-control, link ok
eth1: no link
eth2: negotiated 100baseTx-FD flow-control, link ok

‘玖’ ethtool原理介绍和解决网卡丢包排查思路

之前记录过处理因为LVS网卡流量负载过高导致软中断发生丢包的问题, RPS和RFS网卡多队列性能调优实践 ,对一般人来说压力不大的情况下其实碰见的概率并不高。这次想分享的话题是比较常见服务器网卡丢包现象排查思路,如果你是想了解点对点的丢包解决思路涉及面可能就比较广,不妨先参考之前的文章 如何使用MTR诊断网络问题 ,对于Linux常用的网卡丢包分析工具自然是ethtool。

2020年06月22日 - 初稿

阅读原文 - https://wsgzao.github.io/post/ethtool/

ethtool - utility for controlling network drivers and hardware

ethtool is the standard Linux utility for controlling network drivers and hardware, particularly for wired Ethernet devices. It can be used to:

Most features are dependent on support in the specific driver. See the manual page for full information.

ethtool 用于查看和修改网络设备(尤其是有线以太网设备)的驱动参数和硬件设置。你可以根据需要更改以太网卡的参数,包括自动协商、速度、双工和局域网唤醒等参数。通过对以太网卡的配置,你的计算机可以通过网络有效地进行通信。该工具提供了许多关于接驳到你的 Linux 系统的以太网设备的信息。

接收数据包是一个复杂的过程,涉及很多底层的技术细节,但大致需要以下几个步骤:

NIC 在接收到数据包之后,首先需要将数据同步到内核中,这中间的桥梁是 rx ring buffer 。它是由 NIC 和驱动程序共享的一片区域,事实上, rx ring buffer 存储的并不是实际的 packet 数据,而是一个描述符,这个描述符指向了它真正的存储地址,具体流程如下:

当驱动处理速度跟不上网卡收包速度时,驱动来不及分配缓冲区,NIC 接收到的数据包无法及时写到 sk_buffer ,就会产生堆积,当 NIC 内部缓冲区写满后,就会丢弃部分数据,引起丢包。这部分丢包为 rx_fifo_errors ,在 /proc/net/dev 中体现为 fifo 字段增长,在 ifconfig 中体现为 overruns 指标增长。

这个时候,数据包已经被转移到了 sk_buffer 中。前文提到,这是驱动程序在内存中分配的一片缓冲区,并且是通过 DMA 写入的,这种方式不依赖 CPU 直接将数据写到了内存中,意味着对内核来说,其实并不知道已经有新数据到了内存中。那么如何让内核知道有新数据进来了呢?答案就是中断,通过中断告诉内核有新数据进来了,并需要进行后续处理。

提到中断,就涉及到硬中断和软中断,首先需要简单了解一下它们的区别:

当 NIC 把数据包通过 DMA 复制到内核缓冲区 sk_buffer 后,NIC 立即发起一个硬件中断。CPU 接收后,首先进入上半部分,网卡中断对应的中断处理程序是网卡驱动程序的一部分,之后由它发起软中断,进入下半部分,开始消费 sk_buffer 中的数据,交给内核协议栈处理。

通过中断,能够快速及时地响应网卡数据请求,但如果数据量大,那么会产生大量中断请求,CPU 大部分时间都忙于处理中断,效率很低。为了解决这个问题,现在的内核及驱动都采用一种叫 NAPI(new API)的方式进行数据处理,其原理可以简单理解为 中断 + 轮询,在数据量大时,一次中断后通过轮询接收一定数量包再返回,避免产生多次中断。

(1) RX errors

表示总的收包的错误数量,这包括 too-long-frames 错误,Ring Buffer 溢出错误,crc 校验错误,帧同步错误,fifo overruns 以及 missed pkg 等等。

(2) RX dropped

表示数据包已经进入了 Ring Buffer,但是由于内存不够等系统原因,导致在拷贝到内存的过程中被丢弃。

(3) RX overruns

表示了 fifo 的 overruns,这是由于 Ring Buffer(aka Driver Queue) 传输的 IO 大于 kernel 能够处理的 IO 导致的,而 Ring Buffer 则是指在发起 IRQ 请求之前的那块 buffer。很明显,overruns 的增大意味着数据包没到 Ring Buffer 就被网卡物理层给丢弃了,而 CPU 无法即使的处理中断是造成 Ring Buffer 满的原因之一,上面那台有问题的机器就是因为 interruprs 分布的不均匀(都压在 core0),没有做 affinity 而造成的丢包。

(4) RX frame

表示 misaligned 的 frames。

网线上的packet首先被网卡获取,网卡会检查packet的CRC校验,保证完整性,然后将packet头去掉,得到frame。网卡会检查MAC包内的目的MAC地址,如果和本网卡的MAC地址不一样则丢弃(混杂模式除外)。

网卡将frame拷贝到网卡内部的FIFO缓冲区,触发硬件中断。(如有ring buffer的网卡,好像frame可以先存在ring buffer里再触发软件中断(下篇文章将详细解释Linux中frame的走向),ring buffer是网卡和驱动程序共享,是设备里的内存,但是对操作系统是可见的,因为看到linux内核源码里网卡驱动程序是使用kcalloc来分配的空间,所以ring buffer一般都有上限,另外这个ring buffer size,表示的应该是能存储的frame的个数,而不是字节大小。另外有些系统的 ethtool 命令 并不能改变ring parameters来设置ring buffer的大小,暂时不知道为什么,可能是驱动不支持。)

网卡驱动程序通过硬中断处理函数,构建sk_buff,把frame从网卡FIFO拷贝到内存skb中,接下来交给内核处理。(支持napi的网卡应该是直接放在ring buffer,不触发硬中断,直接使用软中断,拷贝ring buffer里的数据,直接输送给上层处理,每个网卡在一次软中断处理过程能处理weight个frame)

过程中,网卡芯片对frame进行了MAC过滤,以减小系统负荷。(除了混杂模式)

网卡驱动程序将IP包添加14字节的MAC头,构成frame(暂无CRC)。Frame(暂无CRC)中含有发送端和接收端的MAC地址,由于是驱动程序创建MAC头,所以可以随便输入地址,也可以进行主机伪装。

驱动程序将frame(暂无CRC)拷贝到网卡芯片内部的缓冲区,由网卡处理。

网卡芯片将未完全完成的frame(缺CRC)再次封装为可以发送的packet,也就是添加头部同步信息和CRC校验,然后丢到网线上,就完成一个IP报的发送了,所有接到网线上的网卡都可以看到该packet。

产生中断的每个设备都有一个相应的中断处理程序,是设备驱动程序的一部分。每个网卡都有一个中断处理程序,用于通知网卡该中断已经被接收了,以及把网卡缓冲区的数据包拷贝到内存中。

当网卡接收来自网络的数据包时,需要通知内核数据包到了。网卡立即发出中断。内核通过执行网卡已注册的中断处理函数来做出应答。中断处理程序开始执行,通知硬件,拷贝最新的网络数据包到内存,然后读取网卡更多的数据包。

这些都是重要、紧迫而又与硬件相关的工作。内核通常需要快速的拷贝网络数据包到系统内存,因为网卡上接收网络数据包的缓存大小固定,而且相比系统内存也要小得多。所以上述拷贝动作一旦被延迟,必然造成网卡FIFO缓存溢出 - 进入的数据包占满了网卡的缓存,后续的包只能被丢弃,这也应该就是ifconfig里的overrun的来源。

当网络数据包被拷贝到系统内存后,中断的任务算是完成了,这时它把控制权交还给被系统中断前运行的程序。

网卡的内核缓冲区,是在PC内存中,由内核控制,而网卡会有FIFO缓冲区,或者ring buffer,这应该将两者区分开。FIFO比较小,里面有数据便会尽量将数据存在内核缓冲中。

网卡中的缓冲区既不属于内核空间,也不属于用户空间。它属于硬件缓冲,允许网卡与操作系统之间有个缓冲;

内核缓冲区在内核空间,在内存中,用于内核程序,做为读自或写往硬件的数据缓冲区;

用户缓冲区在用户空间,在内存中,用于用户程序,做为读自或写往硬件的数据缓冲区;

另外,为了加快数据的交互,可以将内核缓冲区映射到用户空间,这样,内核程序和用户程序就可以同时访问这一区间了。

对于有ring buffer的网卡,ring buffer是由驱动与网卡共享的,所以内核可以直接访问ring buffer,一般拷贝frames的副本到自己的内核空间进行处理(deliver到上层协议,之后的一个个skb就是按skb的指针传递方式传递,直到用户获得数据,所以,对于ring buffer网卡,大量拷贝发生在frame从ring buffer传递到内核控制的计算机内存里)。

网卡工作在数据链路层,数据量链路层,会做一些校验,封装成帧。我们可以查看校验是否出错,确定传输是否存在问题。然后从软件层面,是否因为缓冲区太小丢包。

一台机器经常收到丢包的报警,先看看最底层的有没有问题:

(1) 查看工作模式是否正常

(2) 查看检验是否正常

Speed,Duplex,CRC 之类的都没问题,基本可以排除物理层面的干扰。

Why rx_crc_errors incrementing in the receive counter of ethtool -S output?

Check ethtool -S output and find where are the drops and errors.

Check the numbers corresponding to rx_crc_errors .

显示了p1p1 的接口类型,连接模式,速率等等信息,以及当前是否连接了网线(如果是网线Supported ports 就是TP,如果是光纤则显示Fiber),这里例举下3个重要关键词

Supported ports: [ FIBRE ]
Speed: 10000Mb/s
Link detected: yes

ethtool

Counters Troubleshooting for Linux Driver

Why do I see rx_crc_errors in ethtool output?

ping请求错误分析

ifconfig 命令详解

ethtool 命令详解

ethtool 解决网卡丢包严重和网卡原理

阅读全文

与linux网卡工具相关的资料

热点内容
服务器部署ip地址 浏览:319
涉密场所周边安全防护距离算法 浏览:670
安卓fpse模拟器怎么设置加速 浏览:944
建行app怎么生成电子签章 浏览:508
获取当前时间javadate 浏览:71
带密码的wifi如何加密 浏览:235
服务器怎么变成阵列 浏览:716
web前端黑客技术pdf 浏览:69
育儿百科全书pdf 浏览:598
任务栏启动命令 浏览:912
编译优化等级区别 浏览:755
unix网关命令 浏览:875
想自己做网站要学编程吗 浏览:597
租个服务器开个私服需要什么 浏览:272
图片换成pdf格式 浏览:663
javamidi编程 浏览:833
android60demo 浏览:69
头条算法怎么复习 浏览:514
灯光控制通道可以编程设置吗 浏览:783
webpack命令行 浏览:807