1.14k likes | 1.16k Views
Computer Networks An Open Source Approach. Chapter 3: Link Layer Ying-Dar Lin, Ren-Hung Hwang, Fred Baker. Content. 3.1 General issues 3.2 Point-to-point protocol 3.3 Ethernet (IEEE 802.3) 3.4 Wireless links 3.5 Bridging 3.6 Device drivers of a network interface 3.7 Summary.
E N D
Computer NetworksAn Open Source Approach Chapter 3: Link Layer Ying-Dar Lin, Ren-Hung Hwang, Fred Baker Chapter 3: Link Layer
Content • 3.1 General issues • 3.2 Point-to-point protocol • 3.3 Ethernet (IEEE 802.3) • 3.4 Wireless links • 3.5 Bridging • 3.6 Device drivers of a network interface • 3.7 Summary Chapter 3: Link Layer
3.1 General Issues • Framing • Addressing • Error control • Flow control • Medium access control Chapter 3: Link Layer
Data-link Layer Protocols • Provide direct communications over the physical channel and services to the network layer • Categories of major data-link protocols Chapter 3: Link Layer
Framing • Typical fields in the frame format • address • length • type of upper layer protocol • payload • error detection code • Basic unit of a frame • byte (e.g., Ethernet frame) byte-oriented • bit (e.g., HDLC frame) bit-oriented Chapter 3: Link Layer
Frame Delimit • Methods to delimit a frame • Special sentinel characters e.g. STX (Start of text), ETX (End of text) • Special bit pattern e.g. a bit pattern 01111110 • Special coding in physical layer e.g. /J/K/ and /T/R/ code group in 100BASE-X • Bit (or byte) stuffing to avoid ambiguity Chapter 3: Link Layer
Bit-Stuffing and Byte-Stuffing start of a frame data-link-escape end of a frame end of a frame STX A C H A R DLE ETX CRC ETX (a) byte-stuffing start of a frame stuffing bit stuffing bit 0111111001011100011101111100000110111001101010101010101111101011 … five consecutive 1’s five consecutive 1’s (b) bit-stuffing Chapter 3: Link Layer
Organization-Unique Identifier(OUI) Organization-Assigned Portion IEEE 802 MAC Address MAC address First byte Second byte Third byte Fourth byte Fifth byte Sixth byte 0: unicast address 1: multicast address First bit transmitted Transmission order of bits in each byte Little-Endian: e.g., Ethernet Big-Endian: e.g., FDDI, Token Ring Chapter 3: Link Layer
Error Detection Code • Checksum Transmitter: add all words and transmit the sum Receiver: add all words and check the sum • Cyclic Redundancy Check (CRC) Transmitter: Generate a bit sequence by modulo 2 division Receiver: Divide the incoming frame and check if no remainder • CRC for link layer and checksum for IP/TCP/UDP • CRC: easy implementation in hardware, but not in software; more robust to errors • Checksum: just a double-check against nodal errors Chapter 3: Link Layer
frame bits C0 C1 Cn-2 Cn-1 an-1 a2 a1 Cyclic Redundancy Check frame content: 11010001110(11 bits) pattern: 101011 (6 bits) frame check sequence = (5 bits) 11100000111 11100000111 101011 101011 1101000111010001 1101000111000000 frame check sequence 101011 101011 111110 111110 101011 101011 101011 110000 101011 110110 101011 0 correct 111010 101011 10001 the remainder Hardware implementation Chapter 3: Link Layer
Open Source Implementation 3.1 & 3.2: Checksum & Hardware CRC32 sum checksum 1’s complement addition folding 16-bit word checksum = 0 (initially) crc_next[31:0] CRC crc[31:0] data[3:0] crc= 32'hffffffff (initially) Check https://tools.ietf.org/html/rfc1071 Chapter 3: Link Layer
Error Control Receiver response to incoming frame • Silently discard when the incoming frame is corrupt • Positive acknowledgement when the incoming frame is correct • Negative acknowledgement when the incoming frame is corrupt Chapter 3: Link Layer
Flow Control • Keep fast transmitter from overwhelming slow receiver • Solutions: • stop and wait • sliding window protocol • back pressure • PAUSE frame Chapter 3: Link Layer
Sliding Window over Transmitted Frames window size (9 frames) 3 5 8 10 1 2 4 6 7 9 11 12 sent frames frames to be sent window size (9 frames) acknowledged frames 1 2 3 4 5 6 7 8 9 10 11 12 frames to be sent sent frames Chapter 3: Link Layer
Why MAC? • Stands for “Medium Access Control” • An arbitration mechanism is needed for media shared by multiple stations • e.g., CSMA/CD, CSMA/CA, … • Services in MAC sublayer • Data encapsulation • Medium access management Chapter 3: Link Layer
Bridging • Interconnecting LANs to extend coverage • Defined in IEEE 802.1D • Whether and where to forward an incoming frame? • Plug-and-play: by self learning of MAC addresses • Loop in topology: “confused” learning • Logical spanning tree to eliminate loops Chapter 3: Link Layer
Open Source Implementation 3.3: Link-Layer Packet Flows in Call Graphs IP Network layer ip_rcv ipv6_rcv arp_rcv ip_finish_output2 Device driver netif_receive_skb net_tx_action Link layer qdisc_run poll(process_backlog) dqueue_skb net_rx_action qdequeue Medium Access Control (MAC) Physical link PHY Check http://lxr.free-electrons.com/ Chapter 3: Link Layer
3.3 Point-to-Point Protocols • HDLC • PPP • LCP • IPCP • PPPoE Chapter 3: Link Layer
PPP Categories • broad purposes; serve as the basis of many data link protocols • point-to-point or point-to-multipoint; primary – secondary model • Operations: NRM, ARM, ABM • build a PPP link over Ethernet • for access control and billing • discovery stage PPP session HDLC PPPoE • carry multi-protocol datagrams over point-to-point link • point-to-point only; peer-peer model • LCP NCP carry datagrams PPP • establish, configure, test PPP connection • followed by an NCP • establish and configure different layer protocols • followed by datagram transmission LCP NCP • A kind of NCP for IP • establish and configure IP protocol stacks on both peers • followed by IP datagrams transmission IPCP is inherited from is part of is related to Chapter 3: Link Layer
High-level Data Link Control (HDLC) • A synchronous, reliable, full-duplex data delivery protocol • Bit-oriented frame format bits 8 8 8 Any 16 8 • Types of frames: information, supervisory, unnumbered • Used on peer-to-peer WAN link Chapter 3: Link Layer
Point-to-Point Protocol (PPP) • Carry multi-protocol datagrams over point-to-point link • Main components in PPP • Encapsulation to encapsulate multi-protocol datagrams • Link Control Protocol (LCP) to establish, configure, and test data-link connection • A family of Network Control Protocols (NCP) to establish, configure network-layer protocols bits 8 8 8 8 or 16 Any 16 or 32 8 Chapter 3: Link Layer
Open Up Success/None Authenticate Dead Establish Fail Fail Down Close Terminate Network PPP Operations • Link up by carrier detection or user configuration • Send LCP packets to configure and test data link • Peers can authenticate each other • Exchange NCP packets to configure one or more network-layer protocols • Link remains operational until explicit close by LCP, NCP or the administrator 3. 1. 2. 4. 5. Chapter 3: Link Layer
Link Control Protocol • Negotiate data link protocol options during the Establish phase. • Frame format : PPP frame with Protocol type 0xc021. • LCP operations Configurable options: Maximum-Receive-Unit, Authentication-Protocol, Quality-Protocol, Magic-Number, Protocol-Field-Compression, Address-and-Control-Field-Compression Chapter 3: Link Layer
Internet Protocol Control Protocol • An NCP to establish and configure IP protocol stacks over PPP • Frame format : PPP frame with Protocol type 0x8021. • IPCP operations configurable options: IP-Compression-Protocol, IP-Address Chapter 3: Link Layer
PPP over Ethernet (PPPoE) • Allows multiple stations in an Ethernet LAN to open PPP sessions to multiple destinations via bridging device. • Why PPPoE instead of IP over Ethernet? access control and billing in the same way as dial-up services using PPP. • Frame format : Ethernet frame with PPP frame in the payload • PPPoE operations • Discovery stage • PPP session stage • Identify the Ethernet MAC address of the peer • Establish a PPPoE Session-ID • LCP • IPCP • IP over PPP data transmission Chapter 3: Link Layer
Open Source Implementation 3.4: PPP Drivers PPP Architecture pppd kernel ppp generic layer ppp channel driver tty device driver serial line Chapter 3: Link Layer
Outgoing Flow /dev/ppp ppp0 ppp_write ppp_start_xmit ppp_start_xmit : put 2-byte ppp protocol number on the front of skb ppp_write: to take out the file->private_data ppp_file_write: allocate skb , copy data from user space , to ppp channel or ppp unit ppp_xmit_process : to do any work queued up on the transmit side that can be done now ppp_channel_push : send data out on a channel ppp_send_frame : VJ compression ppp_push : handles multiple link start_xmit : ppp_sync_send ppp_sync_send : send a packet over an tty line ppp_sync_tx_munge : framing ppp_sync_push : push as mush as posibble tty->driver.write : write data to device driver ppp_file_write ppp_channel_push ppp_xmit_process ppp_send_frame ppp_push start_xmit ppp_sync_send ppp_sync_txmunge ppp_sync_push tty->driver.write Chapter 3: Link Layer tty device driver
Incoming Flow /dev/ppp ppp0 ppp_sync_receive : take out the tty->disc_data ppp_sync_input : stuff the chars in the skb process_input_packet : strip address/control field ppp_input : take out the packets that should be in the channel queue ppp_do_recv : check if the interface closed down ppp_receive_frame : decide if the received frame is a multilink frame ppp_receive_nonmp_frame : VJ decompression if proto == PPP_VJC_COMP , and decide it’s a control plane frame or data plane frame ppp_receive_mp_frame : reconstruction of multilink frames netif_rx : push packets into the queue for kernel skb_queue_tail : push packets into the queue for pppd skb_queue_tail netif_rx ppp_receive_nonmp_frame ppp_receive_mp_frame ppp_receive_frame ppp_do_recv ppp_input ppp_input process_input_packet ppp_sync_input ppp_sync_receive tty device driver Chapter 3: Link Layer
3.4 Ethernet (IEEE 802.3) • Ethernet evolution: A big picture • The Ethernet MAC • Selected topics in Ethernet Chapter 3: Link Layer
Ethernet Evolution: A Big Picture • From low to high speed • From shared to dedicated media • From LAN to MAN and WAN • The medium is getting richer Chapter 3: Link Layer
Milestones in Ethernet Standards DIX Ethernet Spec ver. 1 10 Mb/s Ethernet DIX Ethernet Spec ver. 2 IEEE 802.3 10BASE5 DIX Consortium formed 3 Mb/s experimental Ethernet 1983 1982 1980 1981 1973 Full-duplex Ethernet 10BASE2 100BASE-T 10BASE-F 10BASE-T 1985 1990 1993 1997 1995 Ethernet in the First Mile 10GBASE on fiber 1000BASE-T Link aggregation 1000BASE-X 2003 1998 2000 2002 1999 40G and 100G development 10GBASE-T 2008 2006 Chapter 3: Link Layer
IEEE 802.3 Physical Specifications Chapter 3: Link Layer
The IEEE 802.3/Ethernet MAC Purposes • Data encapsulation, transmit, receive • Medium access management Higher layers Logical Link Control (LLC) Link Aggregation (optional) LLC MAC Control (optional) MAC Control (optional) MAC Control (optional) MAC sublayer MAC sublayer MAC sublayer MAC Ethernet PHY Ethernet PHY Ethernet PHY OSI model Chapter 3: Link Layer
IEEE 802.3/Ethernet MAC Frame Format Untagged frame bytes 7 1 6 6 2 46 - 1500 4 Tagged frame bytes 7 1 6 6 2 2 2 42 - 1500 4 SFD: Start-of-Frame Delimit DA: Destination Address SA: Source Address T/L: Type/Length (Ethernet/802.3) FCS: Frame Check Sequence Frame size: Untagged frame : 64 – 1518 bytes Tagged frame : 64 – 1522 bytes Chapter 3: Link Layer
Frame Transmission and Reception MAC client (IP, LLC, etc.) data encapsulation data decapsulation transmit medium management receive medium management MAC sublayer transmit data encoding receive data decoding line signal Physical layer Chapter 3: Link Layer
An Example of Frame Transmission Octet : b7 b6 b5 b4 b3 b2 b1 b0 Example: 100BASE-TX Interframe gap Interframe gap Preamble/SFD DA SA T/L Payload FCS 62 bits 32 bits spaced in octet Transmission bits 8 bits 10101010…..1010101011 Little Endian transmission order: low-order bit first, byte by byte 0000 11110 0001 10010 0010 01010 0011 11010 0100 10100 0101 10110 0110 01110 0111 11100 1000 01001 1001 10011 1010 01011 1011 11011 1100 10101 1101 10111 1110 01111 1111 11101 4B/5B block coding 11000 10001 01101 10001 1111111111111… /J/K/ code group /T/R/ code group idle signal End of Stream Delimit (ESD) Start of Stream Delimit (SSD) scrambler Scramble bit by bit with shift register and XOR gate; to reduce EMI NRZI …….. 1 1 1 0 0 1 1 0 1 0 1 1 0 0 …….. MLT-3 carried on CAT-5 UTP with fundamental frequency 31.25 MHz Chapter 3: Link Layer
Reference: http://www.cse.wustl.edu/~jain/cse473-05/ftp/i_9lan.pdf
CSMA/CD • Carrier sense • Listen before transmitting • Multiple access • Multiple stations over common transmission channel • Collision detection • More than one station transmitting over the channel. Stop and back off. Chapter 3: Link Layer
CSMA/CD MAC Transmit/Receive Flow Receive process Transmit Process Start receiving Assemble frame yes no Receiving done? Half duplex and channel busy? yes Receiving frame too small? no yes Wait interframe gap no Start transmission Recognize address? no yes no Half duplex and Collision detected? yes yes Frame too long? Send jam no no Transmission done no Valid FCS? Increment attempts yes yes no no yes Proper octet boundary? Too many attempts? Successful transmission yes backoff Receive error Transmission fail Successful reception Chapter 3: Link Layer
Maximum Frame Rate A minimum frame occupies • 7 bytes Preamble + 1 byte SFD • 64 bytes minimum frame size • 12 bytes Inter-frame gap (IFG) In a 10 Mb/s system, maximum frame rate = 10*106 / ((7+1+64+12)*8) = 14,880 frames / s 100 Mb/s system 148,809 frames / s 1 Gb/s system 1,488,095 frames / s Chapter 3: Link Layer
Half-Duplex vs. Full-Duplex Half-duplex Only one station can transmit over common transmission channel (CSMA/CD needed) Full-duplex (IEEE 802.3x, 1997) Simultaneous transmission between a pair of stations with a point-to-point channel (no CS, MA, or CD) Three necessary and sufficient conditions for full-duplex • Simultaneous transmission and reception without interference • Dedicated point-to-point link with exactly two stations • Both stations capable and configured in full-duplex mode Chapter 3: Link Layer
Flow Control in Ethernet • Back pressure – for half-duplex Ethernet • False carrier • Force collision • PAUSE frame – for full-duplex Ethernet • A PAUSE frame (IEEE 802.3x) sent from the receiver to the transmitter Chapter 3: Link Layer
New Blood: Gigabit Ethernet • Specified by IEEE 802.3z(1998) and 802.3ab(1999) Chapter 3: Link Layer
Challenge in Half-Duplex Gigabit Ethernet Design • Solution: carrier extension, frame bursting • However, half-duplex Gigabit Ethernet is a failure • Only full-duplex Gigabit Ethernet exists in the market 1. Transmit a minimum frame May transmit before t, but will have collision Propagation time = t 3. A detects collision at 2t frame from A collision domain extent frame from B 2. Transmit just before t Principle: round-trip time 2t < time to transmit a minimum frame Chapter 3: Link Layer
New Blood: 10 Gigabit Ethernet • Specified by IEEE 802.3ae (2002) • Design features • Full-duplex only • Compatible with existing Ethernet standards • Move toward WAN market (Long distance, WAN interface with OC-192) Chapter 3: Link Layer
New Blood: Ethernet in the First Mile • IEEE 802.3ah finalized in 2003. • Target at subscriber access network • Development goals • New Topologies: point-to-point fiber, point-to-multipoint fiber, point-to-point copper • New PHYs: 1000BASE-X extension, Ethernet PON, voice-grade copper • OAM: remote failure indication, remote loopback, link monitoring Chapter 3: Link Layer
Open Source Implementation 3.5: CSMA/CD • Totally five modules : - Host Interface Module - TX Ethernet MAC ( transmit function ) - RX Ethernet MAC ( receive function ) - MAC Control Module - MII Management Module • Transmit, Receive, and MAC control modules form the MAC module • For the complete Ethernet solution, an external PHY is needed Chapter 3: Link Layer
Open Source Implementation 3.5 (cont)Architecture Wishbone bus Ethernet Core Host Interface (Registers, WISHBONE interface, DMA support) Tx control signals Tx control signals Rx control signals MAC control signals TX data RX data MII Management Module TX Ethernet MAC RX Ethernet MAC MAC Contrul Module (Flow control) Tx PHY control signals Management data Rx PHY control signals TX data RX data Ethernet PHY Ethernet Chapter 3: Link Layer svn co http://opencores.org/ocsvn/ethernet_tri_mode/ethernet_tri_mode/trunk/rtl/verilog ether3mode