Want to get even more familiar with your network adapters? The ifconfig command is not the only tool for examining your interfaces. Since 1998 or so, a tool called ethtool has been
available for displaying and modifying your ethernet adapter settings.
Using ethtool, you can:
- Display identification and diagnostic information
- Look at extended device statistics
- Control the speed, duplex, autonegotiation and flow control settings
- Control checksum offload and other offload features
- Control the DMA ring sizes and interrupt moderation
- Control receive queue selection for multiqueue devices
- Upgrade firmware in flash memory
You can get a lot of basic information on one of your network interfaces with the command ethtool followed by the name of the interface you want to examine.
$ 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: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on Supports Wake-on: g Wake-on: d Link detected: yes
To get firmware information on a physical interface, use the -i option:
# ethtool -i eth0 driver: bnx2 version: 1.7.9-1 firmware-version: 5.2.3 NCSI 2.0.11 bus-info: 0000:01:00.0
Not much information is available for bonded interfaces, but ethtool will identify them as
such, using the term "bonding". There are no statistics available for non-physical interfaces as you can see from the output below.
# ethtool -i bond0 driver: bonding version: 3.2.4 firmware-version: 2 bus-info: # ethtool -S bond0 no stats available
To see the pause settings and whether an interface is set up to auto-negotiate, use the -a option:
# ethtool -a eth0 Pause parameters for eth0: Autonegotiate: on RX: on TX: on
To view statistics for your ethernet interface, use the -S option:
# ethtool -S eth0 NIC statistics: rx_bytes: 125850431219 rx_error_bytes: 0 tx_bytes: 139140209311 tx_error_bytes: 0 rx_ucast_packets: 96912478 rx_mcast_packets: 12054491 rx_bcast_packets: 52901669 tx_ucast_packets: 155871625 tx_mcast_packets: 2466 tx_bcast_packets: 94454 tx_mac_errors: 0 tx_carrier_errors: 0 rx_crc_errors: 0 rx_align_errors: 0 tx_single_collisions: 0 tx_multi_collisions: 0 tx_deferred: 0 tx_excess_collisions: 0 tx_late_collisions: 0 tx_total_collisions: 0 rx_fragments: 0 rx_jabbers: 0 rx_undersize_packets: 0 rx_oversize_packets: 0 rx_64_byte_packets: 55466306 rx_65_to_127_byte_packets: 19003700 rx_128_to_255_byte_packets: 8308294 rx_256_to_511_byte_packets: 836880 rx_512_to_1023_byte_packets: 141854 rx_1024_to_1522_byte_packets: 78145842 rx_1523_to_9022_byte_packets: 0 tx_64_byte_packets: 305460 tx_65_to_127_byte_packets: 66853240 tx_128_to_255_byte_packets: 353026 tx_256_to_511_byte_packets: 49608 tx_512_to_1023_byte_packets: 17149 tx_1024_to_1522_byte_packets: 88390062 tx_1523_to_9022_byte_packets: 0 rx_xon_frames: 17119 rx_xoff_frames: 17119 tx_xon_frames: 0 tx_xoff_frames: 0 rx_mac_ctrl_frames: 0 rx_filtered_packets: 58432177 rx_discards: 0 rx_fw_discards: 165994
That's a lot of statistics! Notice how the packet count output is broken down by packet size.
There's even a command that you can use to get the interface to blink. Why would you do that? When you're not sure which interface is which by looking at them -- which is eth0, which is eth1, etc.
ethtool --identify eth0 10
This command would cause the eth0 interface to blink for ten seconds. Of course, if you're staring at your screen, this will seem no more illuminating than sleeping for ten seconds, but if you're looking at the back of your system, you'll see a modest little light show and you'll know which interface is eth0.
You can also use ethtool to test one of your network interfaces with the -t or --test option. Note that some of these will interrupt service. If you use the offline command as shown below, a comprehensive set of tests will be done, but service will be interrupted.
# ethtool -t offline eth0
If you select online instead, fewer tests will be run, but service will not be interrupted.
There's also a fairly nice man page for the ethtool command and you can get a synopsis of the
commands by asking for help with the ethtool -h command.
The ethtool command can certainly tell you a lot more about your network interfaces than ifconfig and can provide very interesting information on your network traffic as well.