Architecture of Network Implementation Reading: Chapters 3 and 4 Fall 2004 FSU CIS 5930 Internet Protocols 1 Layer-Based Communication Models End systems Intermediate system End systems Anwendung Application Anwendung Application (N+1)-Protocols Instance (N+1) Instance (N+1) Instance (N+1) Instance (N+1) (N)-protocol Layer (N+1) Layer (N) Instance (N) Instance (N) (N)-protocol Instance (N-1) Instance (N-1) Transmission medium Fall 2004 Layer (N-1) Transmission medium FSU CIS 5930 Internet Protocols 2 Two Important Concepts in the Layered Model • Protocols – Rules that two parties talk and understand each other – Horizontal • Services – Functions provided by a lower layer to the neighboring upper layer – Vertical – Service interface (function calls) Fall 2004 FSU CIS 5930 Internet Protocols 3 ISO/OSI Reference Model ISO/OSI Reference model Application Presentation Session Transport Network Data link Physical Fall 2004 FSU CIS 5930 Internet Protocols 4 ISO/OSI Model • Physical layer – Media types, coding methods, bit sequences vs. physical signals • Data link layer – Moving data between two directly connected stations. Flow control, error detection, etc. Shared medium: access control. LLC/MAC • Network layer – Connectivity of networks. Packet routing/forwarding • Transport layer – Concerning end-to-end functions between applications. Flow control, packet ordering, etc. • Session layer – Handling structured message exchange • Presentation layer – Regulating data presentation (format) • Application layer – Protocols for different applications, HTTP, SMTP, FTP, etc Fall 2004 FSU CIS 5930 Internet Protocols 5 TCP/IP Reference Model ISO/OSI reference model Internet reference mode 7 Application 6 Application (HTTP, SMTP, SSH) Presentation 5 Session 4 Transport Transport (TCP/UDP) Network Internet (IPv4/v6) 3 2 Data link Data link (802.x, PPP, SLIP) 1 Physical Fall 2004 FSU CIS 5930 Internet Protocols 6 Interplay of Layers, Instances, and Protocols (N+1)-Layer (N)-IDU (N)-Layer (N)-PCI (N)-SDU (N)-ICI (N)-PDU (N)-PCI (N-1)-ICI (N)-SDU (N-1)-IDU (N-1)-Layer (N-1)-SDU Fall 2004 (N-1)-ICI FSU CIS 5930 Internet Protocols 7 PDU/PCI/SDU/ICI/IDU • PDU: protocol data unit – Elements exchanged between two protocol instances – PCI (protocol control information or packet header) + SDU (service data unit) • ICI: interface control information – Passed from layer N to layer N-1 together with layer N PDU • IDU: interface data unit – ICI + PDU Fall 2004 FSU CIS 5930 Internet Protocols 8 Managing Network Packets in Kernel • Socket buffers – Where packets are stored, manipulated. • Socket buffer queues – Linked list of socket buffers Fall 2004 FSU CIS 5930 Internet Protocols 9 Socket Buffers (skb) sk_buff_head sk_buff next sk_buff prev list stamp net_device dev h nh mac Packet data storage dst len ... head MAC-Header IP-Header UDP-Header data UDP-Data tail end datarefp: 1 Fall 2004 FSU CIS 5930 Internet Protocols 10 Some important fields of skb • prev, next, list – Queue’s linked list • sk – Socket owning the packet • dev – Device receiving/sending packet • h, nh, mac – Pointers to the transport/network/MAC layer headers • len – Size of the packet • data, head, tail, end – Pointers associated with data packet field • datarefp – A counter indicating how many skb_buff points to the packet – Not really a field of sbk_buff Fall 2004 FSU CIS 5930 Internet Protocols 11 Updates of skb_buff as packet passing different layers sk_buff sk_buff sk_buff next next next prev prev prev ... ... ... head head head data data data tail tail tail end end end Packet data storage Packet data storage Packet data storage IP-Header UDP-Data datarefp: 1 Fall 2004 UDP-Header UDP-Header UDP-Data UDP-Data datarefp: 1 FSU CIS 5930 Internet Protocols datarefp: 1 12 Operations on socket buffers • Three types of operations – Creating and releasing socket buffers • alloc_skb(), dev_alloc_skb(), skb_clone(), kfree_skb(), dev_kfree_skb() – Manipulating fields of socket buffers • skb_put(), skb_push(), skb_pull(), skb_reserve() – Managing socket buffer queues • skb_queue_head(),etc Fall 2004 FSU CIS 5930 Internet Protocols 13 Creating/releasing skb • alloc_skb(size, gpf_mask) • dev_alloc_skb(length) • kfree_skb(skb) • dev_kfree_skb(skb) •skb_clone(skb,gpf_mask) •skb_copy(skb,gpf_mask) Fall 2004 FSU CIS 5930 Internet Protocols 14 Skb_clone() skb_clone sk_buff sk_buff sk_buff next next next prev prev prev ... ... ... head head head data data data tail tail tail end end end Packet data storage Packet data storage IP-Header IP-Header UDP-Header UDP-Header UDP-Data UDP-Data datarefp: 1 Fall 2004 datarefp: 2 FSU CIS 5930 Internet Protocols 15 skb_copy() skb_copy sk_buff sk_buff sk_buff next next next prev prev prev ... ... ... head head head data data data tail tail tail end end end Paketdatenbereich Paketdatenbereich Paketdatenbereich IP-Header IP-Header IP-Header UDP-Header UDP-Header UDP-Header UDP-Data UDP-Data UDP-Data datarefp: 1 Fall 2004 datarefp: 1 datarefp: 1 FSU CIS 5930 Internet Protocols 16 Manipulating skb fields • • • • skb_put(skb,len) skb_push(skb,len) skb_pull(skb,len) skb_reserve(skb,len) After alloc_skb() After skb_reserve() An skb_buff containing data After skb_put() After skb_push() Fall 2004 FSU CIS 5930 Internet Protocols 17 Socket buffer queue sk_buff_head next prev qlen: 3 sk_buff sk_buff sk_buff next next next prev prev prev ... ... ... head head head data data data tail tail tail end end end Packet data Packet data Packet data Fall 2004 FSU CIS 5930 Internet Protocols 18 Operations on socket buffer queues • Managing queue structures – skb_queue_head_init(list) – skb_queue_empty(list) – skb_queue_len(list) • Managing socket buffers in queues – skb_queue_head(), skb_queue_tail(),etc Fall 2004 FSU CIS 5930 Internet Protocols 19 Managing skb in queues • • • • • • • • skb_queue_head(list, skb) skb_queue_tail(list, skb) skb_dequeue(list) skb_dequeue_tail(list) skb_insert(oldskb,newskb) skb_append(oldskb,newskb) skb_peek(list) skb_peek_tail(list) Fall 2004 FSU CIS 5930 Internet Protocols 20 Next time … • Chapter 5: network devices Fall 2004 FSU CIS 5930 Internet Protocols 21