In 1983, CCITT and ISO merged their network definition to create The Basic Reference Model for Open Systems Interconnection.
This is the “famous” seven layer model. Which works for ISO standards but is a poor match for the Internet.
The three layers we are interested in are:
- Physical layer
- Data link layer
- Network layer
1 Physical Layer
The physical layer defines the electrical, mechanical, and procedural interface to the transmission medium. WTF?
Ok, let’s look at this in terms of some real examples. If you have a computer that is more than a few years old, it will have a network connection in it or a port that a network connection can be attached to.
The most common mechanical connection, the socket and connector, is the RJ-45. This is the thing that looks like a big telephone connector. Oh yeah, many of the youngsters don’t remember every plugging a phone into the wall.
This connector consists of 8 connectors. The location and form of these connectors defines part of the mechanical system.
The other part is that those 8 connectors are attached to four pairs of wires. The pairs of wire are twisted and bundled into a single cable. Each of the 8 wires are numbered, and the mechanical definition of the RJ-45 defines which wires are attached to which connector, at both ends.
When I say “numbered”, the physical reality is that the wires are color coded.
The electrical definition defines which wires are used for transmitting and which are used for receiving. It defines if the signals are ground referenced or differences between two wires.
Everything about how to connect the physical devices and how to transmit a signal are specified at Layer 1, the physical layer.
2 Data Link Layer
This layer defines how data is transmitted over the L1 physical network. It defines what how to use the physical layer.
For example, Frame Relay is a data link protocol for connecting distant devices. Each Protocol Data Unit (PDU), consists of a flag field, an address field, an information field, and a frame check sequence, or checksum field.
The information field contains the actual data (information) that is being transmitted.
The Frame Relay standard states that the information field must be at least 262 octets (bytes) and recommends that it support at least 1600 octets.
It is important to note that a length of 262 cannot be (easily) expressed in a single byte. This means that the length field must be at least 2 bytes wide.
While Frame Relay is still in use, today, it is not as common as it used to be. There are better options.
A much more common L2 protocol is Ethernet. This is called a Frame. The Frame consists of a preamble, start frame delimiter, destination address, src address, tag (or zeros), type or length, payload, CRC and a gap.
As originally defined, an Ethernet packet had a maximum length of 1500 octets.
Packet Size
In networking, we talk about sending a packet. A packet is a more generic term for “frame”. We have packets at the data link layer and at the network layer.
Every packet contains enough information to identify the source and destination of the packet, the length of the packet, and the payload. There will often be a header to identify more about the type of the packet.
As a packet moves through a network, it might be “fragmented” as it passes through a network segment which has an MTU smaller than the packet size.
There must be enough information to reconstruct the packet, even when the packet has become fragmented.
Fragmenting is something we want to avoid, if possible.
To that end, a part of the connection process is to discover the MTU for each device.
Consider a simple network segment. A network segment is a piece of the network that is connected at L2.
We have devices A and B. Device A is using a fiber physical layer and device B is using a copper physical layer. B is attached to switch 2, switch 2 is connected to switch 1, and switch 1 is connected to device A.
If all four devices are using old style Ethernet frames, then the MTU will default to 1500. A simple database backup is 3.3 GB. This means we will have to transmit at least 2,305,845 packets.
This requires each device to handle 2.3 million interrupts.
On the other hand, if we were to use jumbo packets, then we reduce this to around 384,307 packets. This is a huge savings in load on the network segment.
The two switches, as L2 devices, are going to either be store and forward switches, or simple hubs. Nobody uses hubs anymore. So they must be switches.
Each switch receives the packet, storing it, then transmits that packet on a different port.
The switch must be able to store the complete packet/frame. If it can not, it will drop the packet.
When designing your network, you want to make sure that all the switches on the network support the largest MTU you might be using.
Devices A and B will discover what their MTUs are. The smaller will rule. The switches, on the other hand, are transparent. They do not get a say in the MTU discovery.
What this means, is that you can have devices on the network that respond to simple testing, such as sending pings, but which fail for larger packets.
Conclusion of Rant
I accidentally purchased a switch (L2) when I was intending to purchase a router (L3).
This should not have been an issue. I intended to use some switches, regardless.
The specifications look good. MTU is documented as 12000.
I plug everything together and start testing. My first network test is always “ping”. If ping isn’t working, nothing else will work well enough.
That worked perfectly.
Then I attempted to login to the remote site using SSH. This silently failed, before timing out with destination unreachable.
Ping works, SSH doesn’t?
This makes no sense.
Until I found it. SSH does a key exchange with my RSA public key. The key size is 1679 bytes. This is larger than the supported MTU of switch 2 at 1500.
The network fails, silently.
So I have email out to the manufacturer, hoping for a positive response.
Comments
5 responses to “Maximum Transmission Unit (MTU)”
That would be the title of a lovely modern day Edgar Allen Poe horror sonnet, ” The Network Fails, Silently.”
Advice
Salespersons
Take
Not
Do
Please
Hmm.
WordPress is having fits over me posting a command line with p i n g using the -f and -l 1600 (lower case L) to illustrate the ‘do not fragment’ and ‘packet size’ ability to test those paths that may not support jumbos..
BTW, Jumbo is an ethernet critter….
WiFi uses a different set of standards.
Thanks for the reminder. I had not bothered to look up the parameters. My mentor was the gentleman who wrote the original “ping” command. That and “ttcp” which has been lost to nttcp, nuttcp and netcat. None of which seem to work as well as ttcp did.