Posts Tagged ‘Ethernet’

TCP/IP layers in a nutshell

June 5, 2012

In contrast to the reference OSI networking model (which is not used in any contemporary OS), TCP/IP in its modern updated version has five layers: Application, Transport, Internet, Data Link and Physical.

Application layer deals with everything in regards to high level protocols, like HTTP for example. Say HTTP header with code 200 which means “OK” is a part of the Application layer. This layer is implemented as standard APIs, like WinHTTP API in Windows for example.

Next layer is the Transport Layer. TCP is the most obvious implementation of it and is responsible for error detection. TCP adds a number to each segment, which allows simple packet loss detection on the other end. I believe Unix Socket is an implementation of Transport Layer (as well as Internet Layer, probably) in Unix/Linux.

Internet Layer adds IP addressing and routing to the TCP/IP Networking Model and includes numerous protocols.

Data Link Layer is the Ethernet. It implements MAC addressing, framing and error detection in terms of corrupted data inside a frame.

Physical Layer is focused mostly on transferring data across media. Examples of Physical Layer for Ethernet are: 10BASE-T (ancient coaxial cabling), 100BASE-TX, 1000BASE-T, etc. I guess it is implemented on the NIC driver level.

Ethernet vs. InfiniBand

January 18, 2010

Have you ever tried to compare scalability of Ethernet versus InfiniBand on HPC cluster? I was shocked.

It’s a solution of three-dimensional partial differential equation using the Fast Fourier transform. Comparison isn’t absolutely fair. Because I used gcc compiler for Ethernet version and Sun compiler for InfiniBand. Hence the difference between versions on small number of CPUs. But regardess of the fact that gcc is a bit faster Ethernet shows no scalability at all! It’s unbelievable how Ethernet is slow.