Saturday, September 28, 2013

Ether Type values for some notable protocols

EtherType

Protocol

0x0800

Internet Protocol version 4 (IPv4)

0x0806

Address Resolution Protocol (ARP)

0x0842

Wake-on-LAN[3]

0x22F3

IETF TRILL Protocol

0x6003

DECnet Phase IV

0x8035

Reverse Address Resolution Protocol

0x809B

AppleTalk (Ethertalk)

0x80F3

AppleTalk Address Resolution Protocol (AARP)

0x8100

VLAN-tagged frame (IEEE 802.1Q) & Shortest Path Bridging IEEE 802.1aq[4]

0x8137

IPX

0x8138

IPX

0x8204

QNX Qnet

0x86DD

Internet Protocol Version 6 (IPv6)

0x8808

Ethernet flow control

0x8809

Slow Protocols (IEEE 802.3)

0x8819

CobraNet

0x8847

MPLS unicast

0x8848

MPLS multicast

0x8863

PPPoE Discovery Stage

0x8864

PPPoE Session Stage

0x8870

Jumbo Frames[2]

0x887B

HomePlug 1.0 MME

0x888E

EAP over LAN (IEEE 802.1X)

0x8892

PROFINET Protocol

0x889A

HyperSCSI (SCSI over Ethernet)

0x88A2

ATA over Ethernet

0x88A4

EtherCAT Protocol

0x88A8

Provider Bridging (IEEE 802.1ad) & Shortest Path Bridging IEEE 802.1aq[5]

0x88AB

Ethernet Powerlink[citation needed]

0x88CC

Link Layer Discovery Protocol (LLDP)

0x88CD

SERCOS III

0x88E1

HomePlug AV MME[citation needed]

0x88E3

Media Redundancy Protocol (IEC62439-2)

0x88E5

MAC security (IEEE 802.1AE)

0x88F7

Precision Time Protocol (IEEE 1588)

0x8902

IEEE 802.1ag Connectivity Fault Management (CFM) Protocol / ITU-T Recommendation Y.1731 (OAM)

0x8906

Fibre Channel over Ethernet (FCoE)

0x8914

FCoE Initialization Protocol

0x8915

RDMA over Converged Ethernet (RoCE)

0x892F

High-availability Seamless Redundancy (HSR)

0x9000

Ethernet Configuration Testing Protocol[6]

0x9100

Q-in-Q

0xCAFE

Veritas Low Latency Transport (LLT)[7] for Veritas Cluster Server

 

Fragmentation & Reassembly

Hope the following information will help to understand clear about fragmentation and re-assembly.

 

Fragmentation

When a router receives a packet, it examines the destination address and determines the outgoing interface to use and that interface's MTU. If the packet size is bigger than the MTU, and the Do not Fragment (DF) bit in the packet's header set to 0; the router may fragment the packet.
The router divides the packet into segments. The max size of each segment is the MTU minus the IP header size (20 bytes minimum; 60 bytes maximum). The router puts each segment into its own packet, each fragment packet having following changes:
  • The total length field is the segment size.
  • The more fragments (MF) flag is set for all segments except the last one, which is set to 0.
  • The fragment offset field is set, based on the offset of the segment in the original data payload. This is measured in units of eight-byte blocks.
  • The header checksum field is recomputed.
For example, for an MTU of 1,500 bytes and a header size of 20 bytes, the fragment offsets would be multiples of (1500–20)/8 = 185. These multiples are 0, 185, 370, 555, 740, ...
It is possible for a packet to be fragmented at one router, and for the fragments to be fragmented at another router. For example, consider a packet with a data size of 4,500 bytes, no options, and a header size of 20 bytes. So the packet size is 4,520 bytes. Assume that the packet travels over a link with an MTU of 2,500 bytes. Then it will become two fragments:
Fragment Total bytes Header bytes Data bytes "More fragments" flag Fragment offset (8-byte blocks)
1 2500 20 2480 1 0
2 2040 20 2020 0 310
Note that the fragments preserve the data size: 2480 + 2020 = 4500.
Note how we get the offsets from the data sizes:
  • 0.
  • 0 + 2480/8 = 310.
Assume that these fragments reach a link with an MTU of 1,500 bytes. Each fragment will become two fragments:
Fragment Total bytes Header bytes Data bytes "More fragments" flag Fragment offset (8-byte blocks)
1 1500 20 1480 1 0
2 1020 20 1000 1 185
3 1500 20 1480 1 310
4 560 20 540 0 495
Note that the fragments preserve the data size: 1480 + 1000 = 2480, and 1480 + 540 = 2020.
Note how we get the offsets from the data sizes:
  • 0.
  • 0 + 1480/8 = 185
  • 185 + 1000/8 = 310
  • 310 + 1480/8 = 495
We can use the last offset and last data size to calculate the total data size: 495*8 + 540 = 3960 + 540 = 4500.

Fragmentation & Re-assembly

Reassembly

A receiver knows that a packet is a fragment if at least one of the following conditions is true:
  • The "more fragments" flag is set. (This is true for all fragments except the last.)
  • The "fragment offset" field is nonzero. (This is true for all fragments except the first.)
The receiver identifies matching fragments using the identification field. The receiver will reassemble the data from fragments with the same identification field using both the fragment offset and the more fragments flag. When the receiver receives the last fragment (which has the "more fragments" flag set to 0), it can calculate the length of the original data payload, by multiplying the last fragment's offset by eight, and adding the last fragment's data size. In the example above, this calculation was 495*8 + 540 = 4500 bytes.
When the receiver has all the fragments, it can put them in the correct order, by using their offsets. It can then pass their data up the stack for further processing.




****Thanks to Wikipedia****