Vraag Hoe verifieer ik de snelheid van mijn NIC?


Ik heb zojuist een nieuwe gigabit-netwerkinterfacekaart (NIC) in Linux geïnstalleerd. Hoe weet ik of het echt is ingesteld op gigabit-snelheden? ik snap het ethtool heeft een optie om de snelheid in te stellen, maar ik kan er niet achter komen hoe ik de huidige snelheid kan melden.


101
2017-11-30 16:20


oorsprong


ethtool -h says: ethtool DEVNAME Toon standaard informatie over het apparaat - Ryan Babchishin


antwoorden:


Gebruik gewoon een commando zoals: ethtool eth0 om de benodigde info te krijgen. Ex:

$ sudo ethtool eth0 | grep Speed

Speed: 1000Mb/s

145
2017-11-30 16:23



Als u de volledige lijst van al uw interfaces met hun snelheid wilt hebben, kunt u deze opdracht gebruiken: for i in $(netstat -i | cut -f1 -d" " | tail -n+3) ; do echo "$i: $(ethtool "$i" | grep Speed | sed 's/Speed://g')" ; done - Code-Source
Als u "Snelheid: onbekend!" je gebruikt misschien de verkeerde ethXX naam, een dubbele controle waard :) - rogerdpack


Het is mogelijk om de informatie uit de kernel te gebruiken als ethtool ontbreekt:

cat /sys/class/net/<interface>/speed

Voorbeeld voor interface genaamd eth0:

cat /sys/class/net/eth0/speed

54
2018-04-15 15:39



Opmerking: alleen beschikbaar sinds versie 2.6.33 - zhaorufei
"Ongeldig argument krijgen" - wi1
@ wi1: een voorbeeld toegevoegd om het gebruik te verduidelijken. Werkt het nu? - Christian
@Christian Ja, het is bedankt, maar alleen op sommige van mijn interfaces die ik heb gelezen wordt verwacht, dus ik ben helemaal goed - wi1
RHEL6 heeft dit teruggevoerd in hun 2.6.32 kernel. - Dan Pritts


Gebruik mii-tool om de overeengekomen netwerksnelheid te bekijken.

Ex.

eth0: no link
eth1: negotiated 100baseTx-FD, link ok

40
2017-11-30 20:58



Voor op Debian gebaseerde systemen, ethtool is niet standaard geïnstalleerd. Maar mii-tool is, als onderdeel van het essentiële pakket "net-tools". Dus dit was de beste oplossing voor mij. - mivk
Ik zie dit op de man-pagina voor mii-tool "Dit programma is verouderd." Geldige media zijn alleen 100baseT4-, 100baseTx-FD-, 100baseTx-HD-, 10baseT-FD- en 10baseT-HD-ethernetkaarten.Voor de ethtool voor het vervangen van cheques. " : | - rogerdpack
Terwijl mii-tool rapporten 'onderhandeld' 100baseTx-FD flow-control, link ok ', beide ethtool en cat /sys/class/net/eth…/speed het eens zijn over '1000Mb / s Full duplex '. Dit is voor een USB 3.0-controller, namelijk ASIX AX88179 ('ax88179_178a' driver voor Linux). - Anton Samsonov


Er zijn enkele geweldige antwoorden hier, ik wilde alleen nog wat meer opties toevoegen.

1. Ik weet dat dit niet helemaal is wat je vroeg (lees verder voor andere manieren). Maar als u de real-world prestaties van uw NIC wilt weten, in plaats van wat uw computer zegt dat het zou moeten zijn, kunt u iperf gebruiken. Ik doe dit meestal - omdat je het nooit weet. Ik kocht onlangs een 1 Gb NIC die alleen werd overgedragen met 672 Mbps, maar de uplink was 1 Gb. Gelukkig heb ik gecontroleerd.

Je hebt twee computers nodig.

Voer op de eerste computer iperf uit in de servermodus:

iperf -s

Aan de andere kant, voer iperf uit in client-modus:

iperf -c 192.168.0.10

Als u de volledige duplexsnelheid wilt bekijken, probeert u dit in plaats daarvan:

iperf -d -c 192.168.0.10

Vervang 192.168.0.10 voor het IP-adres van de server

2. Op Ubuntu-systemen, /var/log/kern.log heeft beperkte logging van kernelgebeurtenissen. Het registreert de verbindingssnelheid en -status van een netwerkadapter wanneer deze verandert. Ik weet zeker dat andere distributies waarschijnlijk iets soortgelijks doen of kunnen worden ingesteld om dit te doen.

$ tail -n 300 /var/log/kern.log.1 | grep slave0
Aug 28 12:54:04 haze kernel: [ 9452.766248] e1000e: slave0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
Aug 28 12:54:41 haze NetworkManager[921]: <info>  [1472403281.8486] device (slave0): link disconnected
Aug 28 12:54:41 haze kernel: [ 9489.898476] e1000e: slave0 NIC Link is Down

3. Je zult waarschijnlijk nooit, zo ver moeten gaan, maar jij kan c-code schrijven dat om de snelheid te krijgen. Getest werken en root is niet vereist.

https://stackoverflow.com/questions/2872058/get-link-speed-programmatically

#include <stdio.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <linux/sockios.h>
#include <linux/if.h>
#include <linux/ethtool.h>
#include <string.h>
#include <stdlib.h>
int main (int argc, char **argv)
{
    int sock;
    struct ifreq ifr;
    struct ethtool_cmd edata;
    int rc;
    sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
    if (sock < 0) {
        perror("socket");
        exit(1);
    }
    strncpy(ifr.ifr_name, "eth0", sizeof(ifr.ifr_name));
    ifr.ifr_data = &edata;
    edata.cmd = ETHTOOL_GSET;
    rc = ioctl(sock, SIOCETHTOOL, &ifr);
    if (rc < 0) {
        perror("ioctl");
        exit(1);
    }
    switch (ethtool_cmd_speed(&edata)) {
        case SPEED_10: printf("10Mbps\n"); break;
        case SPEED_100: printf("100Mbps\n"); break;
        case SPEED_1000: printf("1Gbps\n"); break;
        case SPEED_2500: printf("2.5Gbps\n"); break;
        case SPEED_10000: printf("10Gbps\n"); break;
        default: printf("Speed returned is %d\n", edata.speed);
    }
    return (0);
}

20
2017-10-01 10:28





Zoals Khaled al zei, zou je ethtool met alleen de interface als argument moeten kunnen gebruiken. Hierop staan ​​de ondersteunde snelheden, de geadverteerde snelheden, de huidige snelheid en nog een aantal andere dingen:

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: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
    Auto-negotiation: on
    Supports Wake-on: d
    Wake-on: d
    Current message level: 0x00000007 (7)
    Link detected: yes

Je kunt ook rennen dmesgen grep voor uw interface, maar dit werkt mogelijk niet als uw systeem al lang actief is en de huidige buffer niet langer die informatie bevat (in dat geval moet u de oudere grep / var / log / dmesg . * bestanden):

dmesg |grep eth0
[    2.867481] e1000: eth0: e1000_probe: Intel(R) PRO/1000 Network Connection
[   19.429444] ADDRCONF(NETDEV_UP): eth0: link is not ready
[   19.431555] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
[   19.449341] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   26.972379] e1000: eth0: e1000_set_tso: TSO is Enabled
[   29.920458] eth0: no IPv6 routers present

18
2017-11-30 16:40





Gebruik het onderstaande commando

 dmesg | grep -i duplex
 Output: eth0: link up, 100Mbps, full-duplex, lpa 0x45E1

verwijzen deze


8
2017-11-28 10:17



Handig als u geen toegang tot de hoofdmap heeft. - Mehdi Sadeghi
handig wanneer het logboek niet wordt overschreven. Ik zit in de ongelukkige situatie. - zhaorufei
dit kwam van pas toen ik geen superuser privs op de doos had. bedankt! - Sankalp


Ook voor toekomstige referentie heb ik gemerkt dat het snelheidsveld in ethtool de maximale snelheid geeft die wordt ondersteund door de NIC en mii-tool geven de werkelijke snelheid waarop de netwerkkaart werkt.

[ root @  ]# mii-tool
eth0: negotiated 100baseTx-FD, link ok
[ root @  ]# ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 2
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: off (auto)
        Supports Wake-on: pumbg
        Wake-on: g
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: yes

UPDATE: Na een tijdje ontdekte ik dat de mii-tool niet de juiste snelheid gaf, omdat deze verouderd en verouderd was en ethtool de onderhandelde snelheid terugbracht.


1
2017-11-11 11:59