Network Performance Notes
Part 1 - Theoretical Estimates

 

Knowledge Base ID

KB06300101
Category INFORMATION

Effected Product

Rawether for Windows, the Win32 NDIS Framework

Effected Versions

All
Effected Platforms All

 

Network Performance

These notes discuss two aspects of network performance:

bulletTCP Performance - The ability of the network to transport TCP user data.
 
bulletNDIS Performance - The ability of a NDIS network monitor to collect packets.

This is a theoretical discussion that can only provide estimates of performance. These estimates are but one part of the design and development of NDIS packet monitor software. It should be understood that:

Experimentation, instrumentation and measurement is the only way to actually understand the performance of computer systems.

 

TCP Performance

TCP performance is a measure of the ability of a network to transport TCP user data. The performance calculations account for data link and IP/TCP protocol overhead associated with transporting TCP user data for various packet sizes.

These estimates are adapted from Section 24 of TCP/IP Illustrated Volume 1 - The Protocols, by W. Richard Stevens. Published 1994 by Addison-Wesley Publishing, Inc. They are extended to include information of interest to developers of network software for the Windows platform.

The bulk of the performance calculations are based on operation on a 10Mbps Ethernet LAN. Simple scaling is used in the summary to extrapolate to 100Mbps FastEthernet and 1000Mbps Gigabit Ethernet LANs.

In calculating network performance it is convenient to represent inter-packet gap in terms of the time it takes to transmit one "real" network byte. For example, the Ethernet inter-packet gap is 9.6 microseconds, which is the time it takes to transmit 12 "real" network bytes. Where appropriate these "virtual" bytes are enclosed on parentheses "()".

 

NDIS Performance

NDIS Performance is a measure of the required capability for a NDIS-based packet monitor to collect packets on the network  - theoretically without loss. There are two (2) parameters of interest:

bulletPacket Data Rate - The number of bytes-per-second that the NDIS monitor must collect.
bulletPacket Frequency - The number of packets-per-second that the NDIS monitor must support.

In calculating NDIS performance understand that NDIS does not provide a way to observe the 8-byte Ethernet preamble nor the 4-byte Ethernet CRC. Of course, NDIS does not  directly observe the inter-packet gap as received bytes.

These notes provide an estimate of the performance of a hypothetical loss-less packet monitor. No consideration is given to the demands of application or driver packet data processing, bandwidth of logging facilities, network adapter capabilities, etc.

 

Performance Summary

The Tables below provide a summary of the performance estimates:

bullet10Mbps Ethernet Performance Summary
bullet100Mbps FastEthernet Performance Summary
bullet1000Mbps Gigabit Ethernet Performance Summary

10Mbps Ethernet Performance Summary

10Mbps Ethernet Performance Summary
  TCP
Throughput
bytes/sec
NDIS
Throughput
bytes/sec
Packet
Frequency
Pkt/Sec
MTU 1500, MSS 1460

1,183,667

1,229,658

848

MTU 576, MSS 536 1,088,763 1,200,450 2,065
Small Packet - SS 256 956,205 1,159,655 3,764
Runt Packet 89,286 892,857 14,880

 

100Mbps FastEthernet Performance Summary

100Mbps Ethernet Performance Summary
  TCP
Throughput
bytes/sec
NDIS
Throughput
bytes/sec
Packet
Frequency
Pkt/Sec
MTU 1500, MSS 1460

11,836,670

12,296,580

8,480

MTU 576, MSS 536 10,887,630 12,004,500 20,650
Small Packet - SS 256 9,562,050 11,596,550 37,640
Runt Packet 892,860 8,928,570 148,800

 

1000Mbps Gigabit Ethernet Performance Summary

1000Mbps Ethernet Performance Summary
  TCP
Throughput
bytes/sec
NDIS
Throughput
bytes/sec
Packet
Frequency
Pkt/Sec
MTU 1500, MSS 1460

118,366,700

122,965,800

84,800

MTU 576, MSS 536 108,876,300 120,045,000 206,500
Small Packet - SS 256 95,620,500 115,965,500 376,400
Runt Packet 8,928,600 89,285,700 1,488,000

 

The detailed calculations used to provided these estimates are provided below. This is just simple arithmetic...

bulletMTU 1500, MSS 1460 Performance Calcularions
bulletMTU 576, MSS 536 Performance Calculations
bulletSmall Packet - SS 256 Performance Calculations
bulletRunt Packet Performance Calculations

Conclusions

There are two fairly obvious conclusions that can be distilled from the performance estimates:

  1. NDIS Throughput Requirement - This varies so little that the NDIS throughput design goal is basically the theoretical performance of the network media.
     
  2. Runt Packet Frequency Support Requirement - The packet frequency of minimum size ("runt") packets places significant demands on the design and implementation of a packet monitor.

The runt packet frequency is particularly intimidating. On the slowest 10Mbps LAN the run packet frequency is 14,880 packets/second. If each runt packet is lifted from kernel-space to user-space, then there would be 14,880 kernel-user transitions per second. Even if this could be achieved on high-performance systems it is clear that a goal of an NDIS packet monitor would be to reduce the number of these transitions.

 

NDIS
Throughput
Requirement
bytes/sec

Runt Packet
Frequency
packets/sec
10Mbps Ethernet 1,250,000 14,880
100Mbps FastEthernet 12,500,000 148,800
100Mbps Gigabit Ethernet 125,000,000 1,488,000

 

 

Performance For MTU 1500, MSS 1460

This is the performance on a 10Mbps local area network.

Field Data
#bytes
ACK
#bytes
Ethernet preamble

8

8

Ethernet destination address

6

6

Ethernet source address

6

6

Ethernet type field

2

2

IP Header

20

20

TCP Header

20

20

User data

1460

0

Pad (to Ethernet minimum)

0

6

Ethernet CRC

4

4

Interpacket gap (9.6 microsecond)

(12)

(12)

Total 1538 84

TCP Throughput

If the TCP window is opened to its maximum size (65535, not using the window scale option), this allows a window of 44 1460-byte segments. It the receiver sends an ACK every 22nd segment the throughput calculation becomes:

throughput =  

22 x 1460 bytes

x

10,000,000 bits/sec

 = 1,183,667 bytes/sec

22 x 1538 bytes + 84 bytes

8 bits/byte

 

NDIS Throughput

Under the same conditions a NDIS-based network monitor would observe 1514 bytes of each TCP data packet and 60 bytes of each ACK packet. The corresponding NDIS throughput would be:

NDIS throughput =  

22 x 1514 bytes + 60 bytes

x

10,000,000 bits/sec

 = 1,229,658 bytes/sec

22 x 1538 bytes + 84 bytes

8 bits/byte

 

Here is an estimate of the packet frequency that NDIS would observe during an interval where the 22 TCP data packets and the ACK were exchanged:

NDIS packet throughput =  

22 + 1

x

10,000,000 bits/sec

 = 848 packets/sec

22 x 1538 bytes + 84 bytes

8 bits/byte

 

 

Performance for MTU 576, MSS 536

This is the performance observed when accessing the Internet using a 10Mbps local area network where the remote MTU is throttled to the traditional 576-byte limit.

Field Data
#bytes
ACK
#bytes
Ethernet preamble

8

8

Ethernet destination address

6

6

Ethernet source address

6

6

Ethernet type field

2

2

IP Header

20

20

TCP Header

20

20

User data

536

0

Pad (to Ethernet minimum)

0

6

Ethernet CRC

4

4

Interpacket gap (9.6 microsecond)

(12)

(12)

Total 614 84

TCP Throughput

If the TCP window is opened to its maximum size (65535, not using the window scale option), this allows a window of 122 536-byte segments. It the receiver sends an ACK every 61th segment the throughput calculation becomes:

throughput =  

61 x 536 bytes

x

10,000,000 bits/sec

 = 1,088,763 bytes/sec

61 x 614 bytes + 84 bytes

8 bits/byte

 

NDIS Throughput

Under the same conditions a NDIS-based network monitor would observe 590 bytes of each TCP data packet and 60 bytes of each ACK packet. The corresponding NDIS throughput would be:

NDIS throughput =  

61 x 590 bytes + 60 bytes

x

10,000,000 bits/sec

 = 1,200,450 bytes/sec

61 x 614 bytes + 84 bytes

8 bits/byte

 

Here is an estimate of the packet frequency that NDIS would observe during an interval where the 61 TCP data packets and the ACK were exchanged:

NDIS packet throughput =  

61 + 1

x

10,000,000 bits/sec

 = 2,065 packets/sec

61 x 614 bytes + 84 bytes

8 bits/byte

 

 

Performance for "Small" Packet

This is the performance for a continuous stream of "small" (256-byte SS) packets on a 10Mbps local area network.

Field Data
#bytes
ACK
#bytes
Ethernet preamble

8

8

Ethernet destination address

6

6

Ethernet source address

6

6

Ethernet type field

2

2

IP Header

20

20

TCP Header

20

20

User data

256

0

Pad (to Ethernet minimum)

0

6

Ethernet CRC

4

4

Interpacket gap (9.6 microsecond)

(12)

(12)

Total 334 84

TCP Throughput

If the TCP window is opened to its maximum size (65535, not using the window scale option), this allows a window of 256 256-byte segments. It the receiver sends an ACK every 128th segment the throughput calculation becomes:

throughput =  

128 x 256 bytes

x

10,000,000 bits/sec

 = 956,205 bytes/sec

128 x 334 bytes + 84 bytes

8 bits/byte

 

NDIS Throughput

Under the same conditions a NDIS-based network monitor would observe 310 bytes of each TCP data packet and 60 bytes of each ACK packet. The corresponding NDIS throughput would be:

NDIS throughput =  

128 x 310 bytes + 60 bytes

x

10,000,000 bits/sec

 = 1,159,655 bytes/sec

128 x 334 bytes + 84 bytes

8 bits/byte

 

Here is an estimate of the packet frequency that NDIS would observe during an interval where the 128 TCP data packets and the ACK were exchanged:

NDIS packet throughput =  

128 + 1

x

10,000,000 bits/sec

 = 3,764 packets/sec

128 x 334 bytes + 84 bytes

8 bits/byte

 

Performance For Minimum Size ("Runt") Packet

This is the performance for a continuous stream of minimum size ("runt") packets on a 10Mbps local area network. This condition produces the maximum packet frequency.

Field #bytes
Ethernet preamble

8

Ethernet destination address

6

Ethernet source address

6

Ethernet type field

2

IP Header

20

TCP Header

20

User data

6

Pad (to Ethernet minimum)

0

Ethernet CRC

4

Interpacket gap (9.6 microsecond)

(12)

Total 84

 

TCP Throughput

...:

throughput =  

6 bytes

x

10,000,000 bits/sec

 = 1,088,783 bytes/sec

84 bytes

8 bits/byte

 

NDIS Throughput

A NDIS-based network monitor would observe 60 bytes of each runt TCP data packet:

NDIS throughput =  

60 bytes

x

10,000,000 bits/sec

 = 892,857 bytes/sec

84 bytes

8 bits/byte

 

Here is an estimate of the packet frequency that NDIS would observe when runt packets are sent continuously:

NDIS packet throughput =  

1

x

10,000,000 bits/sec

 = 14,880 packets/sec

84 bytes

8 bits/byte

 

Note the "magic number" 14,880 packets-per-second! You may see this number in the specification for routers and other network products as the "forward rate".  Achieving this rate means that the product can forward a continuous flood of runt packets without loss.

 

Status

June 30, 2001 Initial release.

 

Keywords RAWETHER,NDIS,PERFORMANCE
Created June 30, 2001
Last Reviewed June 30, 2001

 

 

Mailing Lists  · PCAUSA Newsletter · PCAUSA Discussion List
·
Privacy Statement · 
WinDis 32 is a trademark of Printing Communications Assoc., Inc. (PCAUSA).
Rawether for Windows and Rawether .NET are trademarks of Printing Communications Assoc., Inc. (PCAUSA).
Microsoft, MS, Windows, Windows 95, Windows 98, Windows Millennium, Windows 2000, Windows XP, and Win32 are registered trademarks and Visual C++ and Windows NT are trademarks of the Microsoft Corporation.
Send mail to rawether-webmaster@pcausa.com with questions or comments about this web site.
Copyright © 1996-2012 Printing Communications Assoc., Inc. (PCAUSA).
All rights reserved.
Last modified: January 01, 2012