Beruflich Dokumente
Kultur Dokumente
log in
page discussion view source history
Introduction
Designing and managing an IP network requires an in-depth understanding of both the network infrastructure and the performance of devices that are attached,
including how packets are handled by each network device. Network computing engineers typically refer to the performance of network devices by using the
speed of the interfaces expressed in bits per second (bps). For example, a network device may be described as having a performance of 10 gigabits per second
(Gbps). Although this is useful and important information, expressing performance in terms of bps alone does not adequately cover other important network
device performance metrics. Determining effective data rates for varying Ethernet packets sizes can provide vital information and a more complete understanding
Note: Ethernet frame sizes are mostly governed by the upper application layer which uses a wide range of payload sizes. Thus, it is unlikely in practice to
see network segments consistently saturated at maximum rate values.
attached to the Gigabit Ethernet network via a Dualcomm DGCS-2005L Gigabit Switch TAP . The shopper2 system is using the next generation Intel Gigabit
Ethernet Server Adapter: "I350-T2". Port: 5 of the Gigabit Switch TAP can be used as a SPAN port for system vortex to perform network packet capture on
interface: "p1p1". System configurations, functionality and network performance measurement tools with command line arguments are also displayed. A separate
out-of-band management network is configured for NST WUI usage and Shell command line access.
Packet Generators
pktgen
pktgen is a Linux packet generator that can produce network packets at very high speed in the kernel. The tool is implemented as a Linux Kernel module and
is directly included in the core networking subsystem of the Linux Kernel distribution. NST has a supporting pktgen RPM package including a front-end wrapper
script: "/usr/share/pktgen/pktgen-nst.sh" and starter configuration file: "/usr/share/pktgen/pktgen-nst.conf" for easy setup and usage. The help document for
the script is shown:
The pktgen network packet generator is used in this article to help measure maximum Gigabit Ethernet frame rates.
iperf
iperf is a tool to measure maximum TCP bandwidth performance, allowing the tuning of various parameters and UDP characteristics. iperf reports bandwidth,
delay jitter and datagram loss. iperf runs as either a client or server with all options configured on the command line. The help document for iperf is shown:
Client/Server:
-f, --format [kmKM] format to report: Kbits, Mbits, KBytes, MBytes
-i, --interval # seconds between periodic bandwidth reports
-l, --len #[KM] length of buffer to read or write (default 8 KB)
-m, --print_mss print TCP maximum segment size (MTU - TCP/IP header)
-o, --output <filename> output the report or error message to this specified file
-p, --port # server port to listen on/connect to
-u, --udp use UDP rather than TCP
-w, --window #[KM] TCP window size (socket buffer size)
-B, --bind <host> bind to <host>, an interface or multicast address
-C, --compatibility for use with older versions does not sent extra msgs
-M, --mss # set TCP maximum segment size (MTU - 40 bytes)
-N, --nodelay set TCP no delay, disabling Nagle's Algorithm
-V, --IPv6Version Set the domain to IPv6
Server specific:
-s, --server run in server mode
-U, --single_udp run in single threaded UDP mode
-D, --daemon run the server as a daemon
Client specific:
Miscellaneous:
-x, --reportexclude [CDMSV] exclude C(connection) D(data) M(multicast) S(settings) V(server) reports
-y, --reportstyle C report as a Comma-Separated Values
-h, --help print this message and quit
-v, --version print version information and quit
The TCP window size option can be set by the environment variable
TCP_WINDOW_SIZE. Most other options can be set by an environment variable
IPERF_<long option name>, such as IPERF_BANDWIDTH.
The iperf network packet generator is used in this article help measure maximum Gigabit Ethernet data rates.
trafgen
trafgen is a zero-copy high performance network packet traffic generator utility that is part of the netsniff-ng networking toolkit . trafgen requires a packet
configuration file which defines the characteristic of the network protocol packets to generate. NST bundles two (2) configuration files for UDP packet generation
with trafgen. One configuration file is for a minimum UDP payload of 18 bytes (/etc/netsniff-ng/trafgen/nst_udp_pkt_18.txf) which produces a minimum UDP
packet of "60 Bytes". The other configuration file is for a maximum UDP payload of 1472 bytes (/etc/netsniff-ng/trafgen/nst_udp_pkt_1472.txf) which produces
a maximum UDP packet of "1514 Bytes". The help document for trafgen is shown:
Examples:
See trafgen.txf for configuration file examples.
trafgen --dev eth0 --conf trafgen.txf --bind-cpu 0
trafgen --dev eth0 --conf trafgen.txf --rand --gap 1000
trafgen --dev eth0 --conf trafgen.txf --bind-cpu 0 --num 10 --rand
Note:
This tool is targeted for network developers! You should
be aware of what you are doing and what these options above
mean! Only use this tool in an isolated LAN that you own!
The trafgen network packet generator is used in this article to help measure both maximum Gigabit Ethernet data rates and maximum Gigabit Ethernet frame
rates.
packETH
packETH is a Linux GUI packet generator tool for ethernet. The tool was used to help construct the UDP packet configuration files for the trafgen packet
generator.
Examples:
netsniff-ng --in eth0 --out dump.pcap --silent --bind-cpu 0
netsniff-ng --in dump.pcap --mmap --out eth0 --silent --bind-cpu 0
netsniff-ng --in any --filter icmp.bpf --all-hex
netsniff-ng --in eth0 --out eth1 --silent --bind-cpu 0\
--type host --filter http.bpf
Note:
This tool is targeted for network developers! You should
be aware of what you are doing and what these options above
mean! Use netsniff-ng's bpfc compiler for generating filter files.
Further, netsniff-ng automatically enables the kernel BPF JIT
if present.
The netsniff-ng packet capture protocol ananlyzer is used in this article to help measure both maximum Gigabit Ethernet data rates and maximum Gigabit
Ethernet frame rates.
Network Monitors
NST Network Interface Bandwidth Monitor
The NST Network Interface Bandwidth Monitor is an interactive dynamic SVG /AJAX enabled application integrated into the NST WUI for monitoring
Network Bandwidth usage on each configured network interface in pseudo real-time. This monitor reads network interface data derived from the Kernel Proc file:
"/proc/net/dev". The displayed graph and computed bandwidth data rates are extremely accurate due to minimum received packet loss since data is read from
Kernel space.
The Bandwidth Monitor Ruler Measurement tool is used extensively for pinpoint data rate calculations, time duration measurements and for packet counts and
rates.
On the receiving emachine system we can observe from the results of the Bandwidth Monitor application below that the maximum Gigabit Ethernet data rate of
"117.7 MiB/s (81,273 pps)" was sustained for the duration of sending out 1,000,000 UDP packets. In this case, the NST WUI was rendered on a browser in the
management network from running the Bandwidth Monitor application on the emachine. The Bandwidth Monitor was configured for a data query period of 200
msec.
Maximum Gigabit Ethernet Data Rate Measurement (trafgen with UDP 1514 Byte Packets): 117.7 MiB/s, 81,273 pps.
The Bandwidth Monitor Ruler Measurement tool was opened up to span across the entire packet generation session for "12.853 seconds" in duration and
revealed that exactly 1,000,000 packets were received. The reason why the number of Bytes seen on the emachine is greater than the number sent from the
output of trafgen (i.e., 1,514,000,000 Bytes) is because the NIC adapter in conjunction with the e1000e driver includes counting CRC Bytes.
Maximum Gigabit Ethernet Data Rate Measurement (traggen with UDP 1514 Byte Packets): 1,000,000 Packets Received.
The netsniff-ng protocol analyzer shown below captured exactly 1,000,000 packets on network interface: "p1p1" and store the results in pcap format to file:
"/dev/shm/c1.pcap".
Note: The use of a RAM-based file system is best for packet storage when capturing data packets on a high volume, high traffic loaded network segment.
In our demonstration the directory path: "/dev/shm" is a Linux tmpfs RAM based file system.
As a validity check on the integrity of the netsniff-ng generated pcap file, the capinfo utility was used. The data and packet rate calculation results from the
capinfos utility above also validates the results from the NST Network Interface Bandwidth Monitor application.
On the emachine, the iperf client side, iperf is run for is default duration of 10 seconds. The results of "942 Mbit/sec" agrees with the theoretical maximum
Gigabit Ethernet using TCP/IP packets of "117,685,306 Bytes/sec (941.482448 Mbit/sec)".
The Bandwidth Monitoring graph shown below contains two (2) iperf sessions. The left side is the current results. The right side is another iperf TCP/IP packet
generation session with Receiver Segmentation Offloading: Disabled. This is discussed in the next section. The maximum Gigabit Ethernet data rate using
TCP/IP packets is shown on the graph at "117.7 MiB/s".
Maximum Gigabit Ethernet Data Rate Measurement (iperf with TCP/IP 1514 Byte Packets): Receiver Segmentation Offloading On / Off Comparison.
By default, the Linux Receiver Segmentation Offloading was on (i.e., generic-receive-offload: on) as shown below from the output of the "ethtool" utility. The
effect of this feature is to internally produce "Jumbo Frames " or "Super Jumbo Frames " for supported NIC hardware during high TCP/IP data bandwidth
rates. These frames are then presented to the Linux network protocol stack. In our case, the Intel Gigabit Ethernet Controller: "82574L" does support
Segmentation Offloading and Jumbo Frames.
The netsniff-ng protocol analyzer was also used during the iperf packet generation session to capture the first "20 TCP/IP packets". The results indicate that
Jumbo Frames were actually produced internally (i.e., In Kernel space only, Not on the wire.). One can see multiple TCP/IP packets with an Ethernet frame size
of "5858 Bytes". Since larger TCP/IP payload sizes are being used, a decrease in the number of TCP/IP "Acknowledgement" packets need to be sent back to
the transmitter side. This is one of the benefits of using Receiver Segmentation Offloading.
< 3 74 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.100/192.168.4.101 Len 60 TCP commplex-link
[0m 42509/5001 F SYN Win 14600 S/A 0x638d9a23/0x0
> 3 74 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.101/192.168.4.100 Len 60 TCP commplex-link
[0m 5001/42509 F SYN ACK Win 14480 S/A 0x59bd8a33/0x638d9a24
< 3 66 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.100/192.168.4.101 Len 52 TCP commplex-link
[0m 42509/5001 F ACK Win 913 S/A 0x638d9a24/0x59bd8a34
< 3 90 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.100/192.168.4.101 Len 76 TCP commplex-link
[0m 42509/5001 F PSH ACK Win 913 S/A 0x638d9a24/0x59bd8a34
> 3 66 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.101/192.168.4.100 Len 52 TCP commplex-link
[0m 5001/42509 F ACK Win 114 S/A 0x59bd8a34/0x638d9a3c
< 3 2962 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.100/192.168.4.101 Len 2948 TCP commplex-l
ink 42509/5001 F ACK Win 913 S/A 0x638d9a3c/0x59bd8a34
> 3 66 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.101/192.168.4.100 Len 52 TCP commplex-link
[0m 5001/42509 F ACK Win 136 S/A 0x59bd8a34/0x638da58c
< 3 5858 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.100/192.168.4.101 Len 5844 TCP commplex-l
ink 42509/5001 F ACK Win 913 S/A 0x638da58c/0x59bd8a34
> 3 66 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.101/192.168.4.100 Len 52 TCP commplex-link
[0m 5001/42509 F ACK Win 159 S/A 0x59bd8a34/0x638dbc2c
< 3 4410 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.100/192.168.4.101 Len 4396 TCP commplex-l
ink 42509/5001 F ACK Win 913 S/A 0x638dbc2c/0x59bd8a34
> 3 66 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.101/192.168.4.100 Len 52 TCP commplex-link
[0m 5001/42509 F ACK Win 181 S/A 0x59bd8a34/0x638dcd24
< 3 1514 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.100/192.168.4.101 Len 1500 TCP commplex-l
ink 42509/5001 F ACK Win 913 S/A 0x638dcd24/0x59bd8a34
> 3 66 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.101/192.168.4.100 Len 52 TCP commplex-link
[0m 5001/42509 F ACK Win 204 S/A 0x59bd8a34/0x638dd2cc
< 3 5858 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.100/192.168.4.101 Len 5844 TCP commplex-l
ink 42509/5001 F PSH ACK Win 913 S/A 0x638dd2cc/0x59bd8a34
< 3 1514 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.100/192.168.4.101 Len 1500 TCP commplex-l
ink 42509/5001 F ACK Win 913 S/A 0x638de96c/0x59bd8a34
> 3 66 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.101/192.168.4.100 Len 52 TCP commplex-link
[0m 5001/42509 F ACK Win 227 S/A 0x59bd8a34/0x638de96c
> 3 66 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.101/192.168.4.100 Len 52 TCP commplex-link
[0m 5001/42509 F ACK Win 249 S/A 0x59bd8a34/0x638def14
< 3 4410 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.100/192.168.4.101 Len 4396 TCP commplex-l
ink 42509/5001 F ACK Win 913 S/A 0x638def14/0x59bd8a34
> 3 66 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.101/192.168.4.100 Len 52 TCP commplex-link
[0m 5001/42509 F ACK Win 272 S/A 0x59bd8a34/0x638e000c
< 3 5858 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.100/192.168.4.101 Len 5844 TCP commplex-l
ink 42509/5001 F ACK Win 913 S/A 0x638e000c/0x59bd8a34
30 frames incoming
The results again show that the maximum Gigabit Ethernet rate using TCP/IP packets was reached: "942 Mbit/sec".
The Bandwidth Monitor results are shown again only now with data rate units displayed in "Bits per Second". Remember, two (2) iperf sessions are shown on
the graph. The left side session is with Receiver Segmentation Offloading: On and the right side session is with Receiver Segmentation Offloading: Off.
Maximum Gigabit Ethernet Data Rate Measurement (iperf with TCP/IP 1514 Byte Packets): Data Rate Units are displayed in "Bits per Second".
The Bandwidth Monitor graph below has its "Rate Scale" manually decreased so that the Transmit Data Rate graph is visually amplified. What is most
apparent is the Increase in the number of TCP/IP "Acknowledgement" packets needed to be sent back to the transmitter. This number increased by almost an
order of magnitude and is due to not allowing the TCP/IP payload size to exceed the 1500 MTU byte limit (i.e., Receiver Segmentation Offloading: Off).
Since more TCP/IP packets are received, a greater number of "Acknowledgement" packets need to be generated to satisfy the TCP/IP protocol's guaranteed
orderly packet delivery mechanism.
Note: The TCP/IP network protocol is a reliable orderly packet delivery protocol. A sliding window acknowledgment scheme controls the orderly delivery of
information presented to the TCP stream. Acknowledgment packets are required for both sides of the TCP/IP stream to guarantee orderly packet delivery.
Where as the UDP network protocol will make a single attempt to transfer every packet to the appropriate destination. No acknowledgment packets are
used.
Maximum Gigabit Ethernet Data Rate Measurement (iperf with TCP/IP 1514 Byte Packets): Almost a 10 times Increase in the number of TCP/IP
Acknowledgement Packets when the Receive Segmentation Offloading is Disabled.
The netsniff-ng protocol analyzer was again used during the iperf packet generation session to capture the first "20 TCP/IP packets". The results below indicate
that No Jumbo Frames were produced when the Receiver Segmentation Offloading is disabled. The maximum Gigabit Ethernet frame size was limited to
"1514 Bytes" (i.e., The standard Ethernet 1500 Byte MTU payload size).
< 3 74 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.100/192.168.4.101 Len 60 TCP commplex-link 42658/5
001 F SYN Win 14600 S/A 0x674760e6/0x0
> 3 74 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.101/192.168.4.100 Len 60 TCP commplex-link 5001/42
658 F SYN ACK Win 14480 S/A 0xb8e508c9/0x674760e7
< 3 66 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.100/192.168.4.101 Len 52 TCP commplex-link 42658/5
001 F ACK Win 913 S/A 0x674760e7/0xb8e508ca
< 3 90 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.100/192.168.4.101 Len 76 TCP commplex-link 42658/5
001 F PSH ACK Win 913 S/A 0x674760e7/0xb8e508ca
> 3 66 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.101/192.168.4.100 Len 52 TCP commplex-link 5001/42
658 F ACK Win 114 S/A 0xb8e508ca/0x674760ff
< 3 1514 Intel Corporate => Intel Corporate IPv4 IPv4 192.168.4.100/192.168.4.101 Len 1500 TCP commplex-link 426
58/5001 F ACK Win 913 S/A 0x674760ff/0xb8e508ca
In summary, we have shown that the use of Receiver Segmentation Offloading will help reduce the amount of transmit data on the network by decreasing the
required number of Acknowledgement packets needed during high TCP/IP traffic workloads by the creation of internally produced "Jumbo Ethernet Frames".
Note: To generate and capture the maximum frame rate for Gigabit Ethernet at "1,488,095 pps85.150 MiB/sec" can be quite challenging. The ntop
project has spent considerable effort in achieving this goal with commodity based hardware using their PF_RING product. Below are a collection of
items to consider when making these high performance measurements with Linux:
Specifications of the NIC hardware: Is the system bus connector I/O capable of Gigabit Ethernet frame rate throughput? Our NIC adapters used the
PCIe bus interface.
Location of the NIC adapter on the system motherboard: Our experience resulted in significantly different measurement values by locating the NIC
adapter in different PCIe slots. Since we did not have schematics for the system motherboard, this was a trial and error effort.
Network topology: Is your network Gigabit switch capable of switching Ethernet frames at the maximum rate? One may need to use a direct LAN
connection via Auto-MDIX or a LAN Crossover Cable.
The ethtool is used below to confirm that Ethernet Flow Control is enabled for network interface: "p32p1" on the emachine receiver system.
The first session using pktgen via the NST script: "/usr/share/pktgen/pktgen-nst.sh" is shown below. A total of "4,000,000 UDP" packets were generated at a
size of "60 Bytes" each. The maximum Gigabit Ethernet frame rate that was generated from the output of pktgen was "828,853 pps" with a data rate of "49.625
MB/sec (47.326 MiB/sec)".
The Bandwidth Monitor graph below also shows the results from the three (3) pktgen sessions. The left most side corresponds to the first session. Results from
the Ruler Measurement tool agree with the pktgen results in the above depiction. Clearly the effect from Ethernet Flow Control issued by the emachine receiver
system has limited the maximum generated Gigabit Ethernet frame rate. One can all see that some Ethernet Pause Control Frames have been passed from the
NIC controller to the network protocol stack. This was confirmed by capturing and decoding packets during a separate generation session. A plausible cause for
this may be due to the high framing rate in which the NIC controller can only process a limited number of Ethernet Pause Control Frames. Excessive Ethernet
Pause Control Frames are then passed on to the network protocol stack.
Maximum Gigabit Ethernet Frame Rate Measurement (pktgen with UDP 60 Byte Packets): Ethernet Pause Control Enabled
Ruler Measurement Tool Highlight (Tx Traffic): Maximum Rate:47.64 MiB/sPackets:4,000,000.
***Note: Some Ethernet Pause Control Frames sent from the receiver emachine system are visible to the Linux Network Protocol stack.
With the second pktgen session we will Disable the Ethernet Flow Control for the shopper2 system generator side. Once again the ethtool is used to
accomplish this and is also used for verification.
The middle section of the Bandwidth Monitor graph shown below visualizes the results for the second session. The Ruler Measurement tool also highlights
these results. By disabling the Ethernet Flow Control, one can see that the Pause Frames from the emachine receiver system are now passed through to the
Linux network protocol stack on shopper2. A decode of an Ethernet Pause Frame can be found here. Since the network interface: "p1p1" on shopper2 did not
have to periodically pause, its Gigabit Ethernet frame rate increased to near the theoretical value: 1,488,033 pps.
Maximum Gigabit Ethernet Frame Rate Measurement (pktgen with UDP 60 Byte Packets): Ethernet Pause Control Disabled: Transmitter Only
Ruler Measurement Tool Highlight (Tx Traffic):85.15 MiB/sPackets: 2,653,1621,488,033 pps.
***Note: All Ethernet Pause Control Frames sent from the receiver emachine system are now visible to the Linux Network Protocol stack.
With the third pktgen session we will Disable the Ethernet Flow Control for both the shopper2 system generator side and the emachine receiver side as shown
below.
The third session using pktgen via the NST script: "/usr/share/pktgen/pktgen-nst.sh" is shown below. A total of "4,000,000 UDP" packets were generated at a
size of "60 Bytes" each. The maximum Gigabit Ethernet frame rate that was generated from the output of pktgen was "1,488,191 pps" with a data rate of
"89.250 MB/sec (85.115 MiB/sec)". This is the highest packet rate that we could achieve with our system / network configuration which has reach the maximum
theoretical Gigabit Ethernet framing rate.
The right section of the Bandwidth Monitor graph shown below agrees with the pktgen results above. The Ruler Measurement tool also highlights these results.
By disabling the Ethernet Flow Control entirely for both the generator and the receiver the Gigabit Ethernet frame generated rate achieved a Gigabit Ethernet
Maximum Gigabit Ethernet Frame Rate Measurement (pktgen with UDP 60 Byte Packets): Ethernet Pause Control Disabled: Transmitter and Receiver
Ruler Measurement Tool Highlight (Tx Traffic):85.15 MiB/sPackets: 2,275,2921,488,092 pps.
Note: Sampling time and rounding errors are the primary reasons why the real generated maximum Gigabit Ethernet Framing Rate value that was
measured by both the output of pktgen and the NST Bandwidth Monitor Ruler Measurement Tool are slightly different from the maximum theoretical
rate value.
From the results of the Network Bandwidth Monitor graph depicted below, this trafgen instance by itself could only produce an average sustained packet rate
of about 1,129,214 pps (64.61 MiB/sec).
Maximum Gigabit Ethernet Frame Rate Measurement (Highlight First Instance of trafgen)
Ethernet Pause Control Disabled: Transmitter and Receiver
Ruler Measurement Tool Highlight (Tx Traffic):64.61 MiB/sPackets: 3,743,3441,129,214 pps.
Next we simultaneously introduced a second instance of trafgen which was configured to generated 10,000,000 packets and was bound to CPU core: "1".
The highlighted results from using two (2) simultaneous instances of trafgen is shown by the Ruler Measurement tool below. A near maximum Gigabit Ethernet
framing rate was achieved: 1,488,089 pps (85.15 MiB/s).
With Segmentation & Checksum (CRC) Offloading & Packet Capture Considerations
The diagram below illustrates the use of Segmentation Offloading and Checksum (CRC) Offloading when sending and receiving application data as TCP/IP
packets. The left side of the diagram below (i.e., Transmit Data Side) shows the flow of sending "8000 Bytes" of application data using TCP/IP. The application
data is not segmented unless it exceeds the maximum IP length of "64K Bytes". The data is sent through the Linux network protocol stack and a template
header for each layer is constructed. This large TCP/IP packet is then passed to the NIC driver for Ethernet framing including template CRCs for TCP and the
Ethernet frame.
At this point, if the Ethernet frame exceeds the "1500 Byte" payload, it will be considered a Jumbo or Super Jumbo Ethernet Frame if captured by a protocol
analyzer. This transmitted large Ethernet frame does not appear on the wire (i.e., Network) only internally in Kernel space.
Transmit Packet Capture Considerations: Ethernet framing that appears on the network may not be the same as what is captured.
A Linux protocol analyzer captures outgoing packets typically from a network transmit queue in the Kernel space Not from the NIC controller.
A large transmit Jumbo of Super Jumbo Ethernet Frame can be captured due to "TCP Segmentation Offloading". This frame does not appear on
the network only internally in Kernel space.
Incorrect transmit TCP Checksums may appear in the capture due to "Transmit Checksum Offloading". The correct calculation is deferred to the NIC
controller and seen correctly on the wire.
The Ethernet frame is then offloaded to the NIC hardware. The NIC controller performs the necessary TCP/IP segmentation which depends on the configured
MTU value and checksum calculations prior to transmitting the frames on the wire. These offloading performance optimizations executed by the NIC controller will
reduce the Linux Kernel workload thus providing more Kernel resources to accomplish other tasks.
Receive Packet Capture Considerations: Ethernet framing that appears on the network may not be the same as what is captured.
A Linux protocol analyzer captures incoming packets typically from a network receive queue in the Kernel space Not from the NIC controller.
A large receive Jumbo of Super Jumbo Ethernet Frame can be captured due to "TCP Segmentation Offloading" and "Generic Receive Offload".
This frame does not appear on the network only internally in Kernel space.
Incorrect receive TCP Checksums may appear in the capture due to "Receive Checksum Offloading". Each Ethernet frame and TCP/IP segment
received on the wire has their Checksum verified by the NIC controller.
Receiver Segmentation Offloading will help reduce the amount of transmit data on the network by decreasing the required number of TCP Acknowledgement
packets needed during high TCP/IP traffic workloads by the creation of internally produced "Jumbo Ethernet Frames". See section: " Receiver Segmentation
Offloading On" for a demonstration.
Summary
In this Wiki article we used a best effort approach on how to generate, capture and monitor maximum Gigabit Ethernet data and frame rates using commodity
based hardware. Useful reference diagrams depicting theoretical network bandwidth rates for minimum and maximum Ethernet payload sizes were presented.
Different networking tools included in the NST distribution where used for packet generation and capture. The NST Network Interface Bandwidth Monitor was
used to perform many data rate measurements showing its capability for the network designer and administrator.
Segmentation Offloading techniques and Ethernet Flow Control processing by the NIC controller hardware were described and their effects on network
This page was last modified on 3 November 2011, at 21:41. This page has been accessed 157,350 times. Privacy policy About NST Wiki Disclaimers