The linux networking architecture

hugo lu
hugo lusoftware engineer at terawins
Linux Networking Architecture
Hugo
9/11/2014
Outline
• Architecture of Communication System
• Managing Network Packets
• Network Device
• Data-Link Layer
• Network Layer
• Transport Layer
• Sockets in Linux Kernel
• Socket Programming
Outline
• Architecture of Communication System
• Managing Network Packets
• Network Device
• Data-Link Layer
• Network Layer
• Transport Layer
• Sockets in Linux Kernel
• Socket Programming
Linux Kernel Structure
Layer-Based Communication
TCP/IP Reference Model
Vertical & Horizontal Comm.
PDU Protocol Data Unit
PCI Protocol Control Information
SDU Service Data Unit
ICI Interface Control Information
IDU Interface Data Unit
Outline
• Architecture of Communication System
• Managing Network Packets
• Network Device
• Data-Link Layer
• Network Layer
• Transport Layer
• Sockets in Linux Kernel
• Socket Programming
Socket Buffer
• socket buffers are data structures used to represent and manage packets
Layer 4 Layer 3Layer 5-7
Operations on Socket Buffers
• Create, Release, Duplicate Socket Buffers
– alloc_skb(), skb_copy(), skb_copy_expand(),
skb_clone(), kfree_skb(), skb_header_init()
• Manipulate Packet Data Space
– skb_get(), skb_put(), skb_push(),
skb_pull(), skb_tailroom(), skb_headroom(),
skb_realloc_headroom(), skb_reserve(),
skb_trim(), skb_cow()
• Manage Socket Buffer Queues
– skb_cloned(), skb_over_panic(),
skb_under_panic(), skb_head_to_pool(),
skb_head_from_pool()
Socket-Buffer Queue
Operations on Socket-Buffer Queues
• Manage Queue Structures
– skb_queue_head_init(), skb_queue_empty(),
skb_queue_len()
• Manage Socket Buffers in Queues
– skb_queue_head(), skb_queue_tail(),
skb_dequeue(), skb_dequeue_tail(),
skb_queue_purge(), skb_insert(),
skb_append(), skb_unlink(), skb_peek(),
skb_peek_tail()
Outline
• Architecture of Communication System
• Managing Network Packets
• Network Device
• Data-Link Layer
• Network Layer
• Transport Layer
• Sockets in Linux Kernel
• Socket Programming
Network Device Interface
The net_device Structure
• General Fields of a Network Device
– name, next, owner, ifindex, iflink, state, trans_start, last_rx,
priv, qdisc, refcnt, xmit_lock, xmit_lock_owner, queue_lock
• Hardware-Specific Fields
– rmem_end, rmem_start, mem_end, mem_start , base_addr, irq, dma,
if_port
• Data on the Physical Layer
– hard_header_length, mtu, tx_queue_len, type, addr_len, dev_addr,
broadcast, dev_mc_list, mc_count, watchdog_timeo, watchdog_timer
• Data on the Network Layer
– ip_ptr, ip6_ptr, atalk_ptr, dn_ptr, ec_ptr, family, pa_alen,
pa_addr, pa_braddr, pa_mask, pa_dstaddr, flags
• Device-Driver Methods
– init(), uninit(), destructor(), open(), stop(), hard_start_xmit(),
get_stats(), get_wireless_stats(), set_multicast_list(),
watchdog_timeo(), do_ioctl(), set_config(), hard_header(),
rebuild_header(), hard_header_cache(), header_cache_update(),
hard_header_parse(), set_mac_address(), change_mtu()
Managing Network Devices
• Registering and Unregistering Network Devices
– init_netdev(), init_etherdev(), ether_setup(),
register_netdevice(), unregister_netdevice()
• Opening and Closing Network Devices
– dev_open(), dev_close()
• Creating and Finding Network Devices
– dev_alloc_name(), dev_alloc(), dev_get_by_name(),
dev_get_by_index(), dev_load()
• Notification Chains for State Changes
– notifier_call(), notifier_call_chain(),
register_netdevice_notifier(),
unregister_netdevice_notifier()
• Transmitting over Network Devices
– dev_queue_xmit()
Linked List of net_device
Managing Network Drivers
• Initializing Network Adapters
• Opening and Closing a Network Adapter
• Transmitting Data
• Problems In Transmitting Packets
• Runtime Configuration
• Adapter-Specific ioctl() Commands
• Statistical Information About a Network Device
• Multicast Support on Adapter Level
The linux networking architecture
Transmitting Data Packets
static int net_send_packet(struct sk_buff *skb, struct
net_device *dev) {
struct net_local *np = (struct net_local *)dev->priv;
int ioaddr = dev->base_addr;
short length = ETH_ZLEN < skb->len ? skb->len :
ETH_ZLEN;
unsigned char *buf = skb->data;
hardware_send_packet(ioaddr, buf, length);
np->stats.tx_bytes += skb->len;
dev->trans_start = jiffies;
if (inw(ioaddr) == /*RU*/81)
np->stats.tx_aborted_errors++;
dev_kfree_skb (skb);
Interrupts from Network Adapter
Receiving Packets from Adapter
static void net_interrupt(int irq, void *dev_id, struct
pt_regs * regs) {
ioaddr = dev->base_addr;
np = (struct net_local *)dev->priv;
status = inw(ioaddr + 0);
if (status & RX_INTR) {
net_rx(dev);
}
if (status & TX_INTR) {
net_tx(dev);
np->stats.tx_packets++;
netif_wake_queue(dev);
}
Receiving a Data Packet
static void net_rx(struct net_device *dev) {
do {
if (pkt_len == 0)
break;
if (status & 0x40) {
/* There was an error. */
}else{
skb = dev_alloc_skb(pkt_len);
ptr = skb_put(skb,pkt_len);
memcpy(ptr, (void*)dev->rmem_start, pkt_len);
netif_rx(skb);
}
} while (–boguscount);
Acknowledging a Transmission
void net_tx(struct net_device *dev) {
spin_lock(&np->lock);
while (tx_entry_is_sent(np, entry)) {
struct sk_buff *skb = np->skbs[entry];
np->stats.tx_bytes += skb->len;
dev_kfree_skb_irq (skb);
entry = next_tx_entry(np, entry);
}
if (netif_queue_stopped(dev) && ! tx_full(dev))
netif_wake_queue(dev);
spin_unlock(&np->lock);
Outline
• Architecture of Communication System
• Managing Network Packets
• Network Device
• Data-Link Layer
• Network Layer
• Transport Layer
• Sockets in Linux Kernel
• Socket Programming
Media Access & Data-Link Layer
• Data-Link Layer (Ethernet)
• The Serial-Line Internet Protocol (SLIP)
• The Point-to-Point Protocol (PPP)
• PPP over Ethernet
• Asynchronous Transfer Mode—ATM
• Bluetooth in Linux
• Transparent Bridges
Implementation of Data Link Layer
LLC (Logical-Link Control) provide a uniform interface for the upper layer.
MAC (Media-Access Control) handles the media-specific part.
Linux Network Activity
The linux networking architecture
eth_type_trans(skb, dev)
• Recognize the LLC protocol type used and protocol ID of layer-3
• Identify the packet type (unicast, multicast, broadcast)
• Check whether the packet is addressed to the local computer
The linux networking architecture
Internet Protocol Suite
SSH Secure Socket Shell
FTP File Transfer Protocol
DNS Domain Name Service
SMTP Simple Mail Transfer Protocol
TCP Transmission Control Protocol
UDP User Datagram Protocol
IP Internet Protocol
ICMP Internet Control Message Protocol
IGMP Internet Group Management Protocol
ARP Address Resolution Protocol
RARP Reverse Address Resolution Protocol
Outline
• Architecture of Communication System
• Managing Network Packets
• Network Device
• Data-Link Layer
• Network Layer
• Transport Layer
• Sockets in Linux Kernel
• Socket Programming
Network Layer
• IPv4 - Internet Protocol Version 4
• Internet Control Message Protocol (ICMP)
• Address Resolution Protocol (ARP)
• IP Routing
• IP Multicast for Group Communication
• Using Traffic Control to Support Quality of Service (QoS)
• Packet Filters and Firewalls
• Connection Tracking
• Network Address Translation (NAT)
• IPv6 - Internet Protocol Version 6
Internet Protocol
• Provides an unsecured connectionless
datagram service
• Defines IP datagrams as basic units for data
transmission
• Defines the IP addressing scheme
• Routes and forwards IP datagrams across
interconnected networks
• Verifies the lifetime of packets
• Fragments and reassembles packets
• Uses ICMP to output errors
Routing IP Packets between LANs
IP Packet Header
IP Address Classes
The class-A network address 127 represents the loopback network device of a computer.
An IP address with all bits of the computer part set to zero identifies the network itself.
An IP address where the computer part consists of 1-bits defines a broadcast address.
The linux networking architecture
The linux networking architecture
Delivering Packets Locally
• If ip_route_input() is the selected route,
then the packet is addressed to the local
computer. In this case, branching is
to ip_local_deliver() rather than
to ip_forward().
– Reassemble fragmented packets
– ip_local_deliver_finish(): RAW-IP socket or up
to transport layer
Fragmenting an IP Datagram
Each network has a maximum packet size, which is called Maximum
Transfer Unit (MTU). If the MTU of a transmission medium is smaller than
the size of a packet, then the packet has to be split into smaller IP packets.
MTU=1000
MTU=600
The saddr, daddr, id, and protocol elements are keys for the hash
function and the allocation of incoming fragments to their IP datagrams.
Transport-Layer Packets
IP Network Device
IP Options
Class Number Length Name
0 0 - End of Option
0 1 - No Operation
0 2 11 Security
0 3 var Loose Source Routing
0 9 var Strict Source Routing
0 7 var Record Route
0 8 4 Stream ID
2 4 var Internet Timestamp
copy
flag
option
class
option
number
1-bit 2-bit 5-bit
IP Options in the IP layer
Internet Control Message Protocol
• Error-report mechanism for the IP layer.
• The most popular application of ICMP is
error detection or error diagnostics. (ping)
ICMP Packet Header
ICMP Packet Type (RFC 792)
Type Description
Destination Unreachable The destination address cannot be reached.
Time Exceeded A packet was discarded, because its TTL
has expired.
Parameter Problem Unknown or false options.
Source Quench Informs the sender that IP packets were
lost to overload.
Redirect Enables path optimization.
Echo and Echo Reply The data sent to the destination address is
returned in a reply.
Timestamp and Timestamp Reply The timestamp sent to the destination
address is used-to reply with the timestamp
of the destination address.
Information Request und Information Reply Request/reply used to find the network a
computer connects to.
ICMP in the Linux Kernel
• Sending ICMP Packets
– icmp_send()
• Handling Incoming ICMP Packets
– icmp_rcv(), icmp_reply(), icmp_redirect(),
icmp_unreach(), icmp_echo(), icmp_timestamp(),
icmp_addres(), icmp_address_reply()
• ICMP messages generated within the kernel
Address Resolution Protocol
The linux networking architecture
ARP Command
root@tux # arp -a
IP address HW type HW address
129.25.10.97 10Mbit/s Ethernet 49:72:16:08:80:70
129.25.10.72 10Mbit/s Ethernet 49:72:16:08:64:14
129.25.10.81 10Mbit/s Ethernet 49:17:92:96:96:96
The linux networking architecture
The linux networking architecture
Outline
• Architecture of Communication System
• Managing Network Packets
• Network Device
• Data-Link Layer
• Network Layer
• Transport Layer
• Sockets in Linux Kernel
• Socket Programming
Transport Layer
• Transmission Control Protocol (TCP)
• User Datagram Protocol (UDP)
Transmission Control Protocol
• Connection orientation
• Peer-to-peer communication
• Complete reliability
• Full-duplex communication
• Byte-stream interface
• Reliable connection startup
• Graceful connection shutdown
The linux networking architecture
TCP Packet Header
URG points to important data that have to be forwarded immediately.
SYN is used to establish connections. SYN = 1 denotes a connection request.
ACK shows that the ACKNOWLEDGEMENT NUMBER field includes relevant data.
RST can request a connection to be reset. RST = 1 denotes a request to reset a connection.
PSH means that the TCP instance must immediately pass the data received to the higher layers.
FIN means that the connection is to be torn down.
The linux networking architecture
Receiving TCP Segment
The linux networking architecture
The linux networking architecture
The linux networking architecture
Sending TCP Segments
The linux networking architecture
The linux networking architecture
The linux networking architecture
The linux networking architecture
The linux networking architecture
Flow Control
The linux networking architecture
Sliding-Window
Packet Loss & Fast Retransmit
Detecting & Handling Congestions
Congestion Avoidance
User Datagram Protocol
• Same functionality as Internet Protocol (IP)
• Connectionless
• Unreliable service
• Cannot detect and handle lost or duplicate
packets
• Transmitting data easily and quickly
• For audio or video streaming
UDP Packet Format
UDP Header & Payload
Service Interface to App Layer
Outline
• Architecture of Communication System
• Managing Network Packets
• Network Device
• Data-Link Layer
• Network Layer
• Transport Layer
• Sockets in Linux Kernel
• Socket Programming
Socket Support in Linux Kernel
if copy_from_user(a, args, nargs[call]))
return -EFAULT;
a0=a[0];
a1=a[1];
switch(call) {
case SYS_SOCKET:
err = sys_socket(a0,a1,a[2]);
break;
case SYS_BIND:
err = sys_bind(a0, (struct sockaddr *)a1, a[2]);
break;
case SYS_CONNECT:
err = sys_connect (a0, (struct sockaddr *)a1, a[2]);
break;
case SYS_LISTEN:
err = sys_listen (a0,a1);
break;
}
int socket (int family, int type, int protocol)
int bind(int sockfd, struct sockaddr *mAddress, int AddrLength)
int connect(int sockfd, struct sockaddr *ServAddr, int AddrLength)
int listen(int sockfd, int backlog)
sys_socketcall()
BSD Socket
PF_INET Socket
Outline
• Architecture of Communication System
• Managing Network Packets
• Network Device
• Data-Link Layer
• Network Layer
• Transport Layer
• Sockets in Linux Kernel
• Socket Programming
System Calls at Socket Interface
The linux networking architecture
The linux networking architecture
The linux networking architecture
Data Transmission
• Transmitting data
size_t write(sockfd, buffer, length)
int send(sockfd, buffer, length, flags)
int sendto(sockfd, buffer, length, flags, destaddr, addrlen)
• Receiving data
size_t read(sockfd, buffer, length)
int recv(sockfd, buffer, length, flags)
int recvfrom (sockfd, buffer, length, flags, fromaddr,
addrlen)
• Rransmit and receive an array of iovec structures
int readv(int sockfd, const struct iovec *vector, size_t
count)
int writev(int sockfd, const struct iovec *vector, size_t
count)
int sendmsg(int sockfd, const struct msghdr *msg, int flags)
int recvmsg(int sockfd, struct msghdr *msg, int flags)
Q & A
• Architecture of Communication System
• Managing Network Packets
• Network Device
• Data-Link Layer
• Network Layer
• Transport Layer
• Sockets in Linux Kernel
• Socket Programming
1 of 95

Recommended

Linux Network Stack by
Linux Network StackLinux Network Stack
Linux Network StackAdrien Mahieux
4.8K views33 slides
Fun with Network Interfaces by
Fun with Network InterfacesFun with Network Interfaces
Fun with Network InterfacesKernel TLV
5K views50 slides
The TCP/IP Stack in the Linux Kernel by
The TCP/IP Stack in the Linux KernelThe TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux KernelDivye Kapoor
52.3K views68 slides
introduction to linux kernel tcp/ip ptocotol stack by
introduction to linux kernel tcp/ip ptocotol stack introduction to linux kernel tcp/ip ptocotol stack
introduction to linux kernel tcp/ip ptocotol stack monad bobo
12.9K views16 slides
eBPF maps 101 by
eBPF maps 101eBPF maps 101
eBPF maps 101SUSE Labs Taipei
4.2K views64 slides
DPDK & Layer 4 Packet Processing by
DPDK & Layer 4 Packet ProcessingDPDK & Layer 4 Packet Processing
DPDK & Layer 4 Packet ProcessingMichelle Holley
2.5K views51 slides

More Related Content

What's hot

Understanding DPDK algorithmics by
Understanding DPDK algorithmicsUnderstanding DPDK algorithmics
Understanding DPDK algorithmicsDenys Haryachyy
10.6K views17 slides
DPDK KNI interface by
DPDK KNI interfaceDPDK KNI interface
DPDK KNI interfaceDenys Haryachyy
26.1K views10 slides
netfilter and iptables by
netfilter and iptablesnetfilter and iptables
netfilter and iptablesKernel TLV
4.3K views44 slides
Introduction to DPDK by
Introduction to DPDKIntroduction to DPDK
Introduction to DPDKKernel TLV
5.9K views32 slides
LinuxCon 2015 Linux Kernel Networking Walkthrough by
LinuxCon 2015 Linux Kernel Networking WalkthroughLinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughThomas Graf
26.3K views20 slides
Embedded linux network device driver development by
Embedded linux network device driver developmentEmbedded linux network device driver development
Embedded linux network device driver developmentAmr Ali (ISTQB CTAL Full, CSM, ITIL Foundation)
3.7K views56 slides

What's hot(20)

Understanding DPDK algorithmics by Denys Haryachyy
Understanding DPDK algorithmicsUnderstanding DPDK algorithmics
Understanding DPDK algorithmics
Denys Haryachyy10.6K views
netfilter and iptables by Kernel TLV
netfilter and iptablesnetfilter and iptables
netfilter and iptables
Kernel TLV4.3K views
Introduction to DPDK by Kernel TLV
Introduction to DPDKIntroduction to DPDK
Introduction to DPDK
Kernel TLV5.9K views
LinuxCon 2015 Linux Kernel Networking Walkthrough by Thomas Graf
LinuxCon 2015 Linux Kernel Networking WalkthroughLinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking Walkthrough
Thomas Graf26.3K views
Jagan Teki - U-boot from scratch by linuxlab_conf
Jagan Teki - U-boot from scratchJagan Teki - U-boot from scratch
Jagan Teki - U-boot from scratch
linuxlab_conf710 views
Faster packet processing in Linux: XDP by Daniel T. Lee
Faster packet processing in Linux: XDPFaster packet processing in Linux: XDP
Faster packet processing in Linux: XDP
Daniel T. Lee1.4K views
Arm device tree and linux device drivers by Houcheng Lin
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device drivers
Houcheng Lin17.5K views
Intel DPDK Step by Step instructions by Hisaki Ohara
Intel DPDK Step by Step instructionsIntel DPDK Step by Step instructions
Intel DPDK Step by Step instructions
Hisaki Ohara56.9K views
Page cache in Linux kernel by Adrian Huang
Page cache in Linux kernelPage cache in Linux kernel
Page cache in Linux kernel
Adrian Huang1.5K views
linux device driver by Rahul Batra
linux device driverlinux device driver
linux device driver
Rahul Batra11.4K views
Linux Ethernet device driver by 艾鍗科技
Linux Ethernet device driverLinux Ethernet device driver
Linux Ethernet device driver
艾鍗科技2.6K views
Linux kernel debugging by libfetion
Linux kernel debuggingLinux kernel debugging
Linux kernel debugging
libfetion10.3K views
Debug dpdk process bottleneck & painpoints by Vipin Varghese
Debug dpdk process bottleneck & painpointsDebug dpdk process bottleneck & painpoints
Debug dpdk process bottleneck & painpoints
Vipin Varghese819 views

Viewers also liked

Bandwidth Management on Linux by
Bandwidth Management on LinuxBandwidth Management on Linux
Bandwidth Management on LinuxKHNOG
1.2K views14 slides
Networking, QoS, Liberty, Mitaka and Newton - Livnat Peer - OpenStack Day Isr... by
Networking, QoS, Liberty, Mitaka and Newton - Livnat Peer - OpenStack Day Isr...Networking, QoS, Liberty, Mitaka and Newton - Livnat Peer - OpenStack Day Isr...
Networking, QoS, Liberty, Mitaka and Newton - Livnat Peer - OpenStack Day Isr...Cloud Native Day Tel Aviv
1.7K views32 slides
Tc basics by
Tc basicsTc basics
Tc basicsjeromy fu
4.5K views37 slides
Network emulator by
Network emulatorNetwork emulator
Network emulatorjeromy fu
5.6K views63 slides
BPF: Next Generation of Programmable Datapath by
BPF: Next Generation of Programmable DatapathBPF: Next Generation of Programmable Datapath
BPF: Next Generation of Programmable DatapathThomas Graf
3K views16 slides
Cilium - Container Networking with BPF & XDP by
Cilium - Container Networking with BPF & XDPCilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDPThomas Graf
4.8K views15 slides

Viewers also liked(20)

Bandwidth Management on Linux by KHNOG
Bandwidth Management on LinuxBandwidth Management on Linux
Bandwidth Management on Linux
KHNOG1.2K views
Networking, QoS, Liberty, Mitaka and Newton - Livnat Peer - OpenStack Day Isr... by Cloud Native Day Tel Aviv
Networking, QoS, Liberty, Mitaka and Newton - Livnat Peer - OpenStack Day Isr...Networking, QoS, Liberty, Mitaka and Newton - Livnat Peer - OpenStack Day Isr...
Networking, QoS, Liberty, Mitaka and Newton - Livnat Peer - OpenStack Day Isr...
Tc basics by jeromy fu
Tc basicsTc basics
Tc basics
jeromy fu4.5K views
Network emulator by jeromy fu
Network emulatorNetwork emulator
Network emulator
jeromy fu5.6K views
BPF: Next Generation of Programmable Datapath by Thomas Graf
BPF: Next Generation of Programmable DatapathBPF: Next Generation of Programmable Datapath
BPF: Next Generation of Programmable Datapath
Thomas Graf3K views
Cilium - Container Networking with BPF & XDP by Thomas Graf
Cilium - Container Networking with BPF & XDPCilium - Container Networking with BPF & XDP
Cilium - Container Networking with BPF & XDP
Thomas Graf4.8K views
Cilium - Fast IPv6 Container Networking with BPF and XDP by Thomas Graf
Cilium - Fast IPv6 Container Networking with BPF and XDPCilium - Fast IPv6 Container Networking with BPF and XDP
Cilium - Fast IPv6 Container Networking with BPF and XDP
Thomas Graf8.6K views
Continuous integration by hugo lu
Continuous integrationContinuous integration
Continuous integration
hugo lu3.3K views
B+S油封選用 by ychsiehme
B+S油封選用B+S油封選用
B+S油封選用
ychsiehme6.1K views
모바일한글입력표준화 by lsmgame
모바일한글입력표준화모바일한글입력표준화
모바일한글입력표준화
lsmgame3.2K views
咬花簡介 by Tsun-Wu Liu
咬花簡介咬花簡介
咬花簡介
Tsun-Wu Liu38.8K views
Dev ops 簡介 by hugo lu
Dev ops 簡介Dev ops 簡介
Dev ops 簡介
hugo lu1.9K views
Ds 017 機械公差配合 by handbook
Ds 017 機械公差配合Ds 017 機械公差配合
Ds 017 機械公差配合
handbook7.5K views
困境與轉型:一個小型開發團隊的 DevOps 學習之旅 by Chen Cheng-Wei
困境與轉型:一個小型開發團隊的 DevOps 學習之旅困境與轉型:一個小型開發團隊的 DevOps 學習之旅
困境與轉型:一個小型開發團隊的 DevOps 學習之旅
Chen Cheng-Wei4.6K views
提到 DevOps 到底在
談些什麼玩意兒?(@ Agile Tour Taichung 2017) by Chen Cheng-Wei
提到 DevOps 到底在
談些什麼玩意兒?(@ Agile Tour Taichung 2017)提到 DevOps 到底在
談些什麼玩意兒?(@ Agile Tour Taichung 2017)
提到 DevOps 到底在
談些什麼玩意兒?(@ Agile Tour Taichung 2017)
Chen Cheng-Wei5.3K views
從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40 by diro fan
從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
從廢柴到成材 - 那 20 個 sprints 教會我們的事 C.C Agile #40
diro fan5.2K views
Linux Networking Explained by Thomas Graf
Linux Networking ExplainedLinux Networking Explained
Linux Networking Explained
Thomas Graf25.6K views

Similar to The linux networking architecture

Network Layer by
Network LayerNetwork Layer
Network LayerLakshika Rasanjali
84 views40 slides
computerNetworkSecurity.ppt by
computerNetworkSecurity.pptcomputerNetworkSecurity.ppt
computerNetworkSecurity.pptChandrasekharBehera16
5 views51 slides
CCNA by
CCNACCNA
CCNAAbhishek Parihari
596 views33 slides
Packet Analysis - Course Technology Computing Conference by
Packet Analysis - Course Technology Computing ConferencePacket Analysis - Course Technology Computing Conference
Packet Analysis - Course Technology Computing ConferenceCengage Learning
2K views50 slides
IT Networks and Vulnarabilities .pdf by
IT Networks and Vulnarabilities .pdfIT Networks and Vulnarabilities .pdf
IT Networks and Vulnarabilities .pdfPeterOwenje1
6 views55 slides
Network protocol by
Network protocolNetwork protocol
Network protocolOnline
7K views34 slides

Similar to The linux networking architecture(20)

Packet Analysis - Course Technology Computing Conference by Cengage Learning
Packet Analysis - Course Technology Computing ConferencePacket Analysis - Course Technology Computing Conference
Packet Analysis - Course Technology Computing Conference
Cengage Learning2K views
IT Networks and Vulnarabilities .pdf by PeterOwenje1
IT Networks and Vulnarabilities .pdfIT Networks and Vulnarabilities .pdf
IT Networks and Vulnarabilities .pdf
PeterOwenje16 views
Network protocol by Online
Network protocolNetwork protocol
Network protocol
Online 7K views
NUMA-aware thread-parallel breadth-first search for Graph500 and Green Graph5... by Yuichiro Yasui
NUMA-aware thread-parallel breadth-first search for Graph500 and Green Graph5...NUMA-aware thread-parallel breadth-first search for Graph500 and Green Graph5...
NUMA-aware thread-parallel breadth-first search for Graph500 and Green Graph5...
Yuichiro Yasui1.3K views
Chapter 4 internetworking [compatibility mode] by Sĩ Anh Nguyễn
Chapter 4   internetworking [compatibility mode]Chapter 4   internetworking [compatibility mode]
Chapter 4 internetworking [compatibility mode]
Sĩ Anh Nguyễn579 views
Computer network (12) by NYversity
Computer network (12)Computer network (12)
Computer network (12)
NYversity1.7K views
Network State Awareness & Troubleshooting by APNIC
Network State Awareness & TroubleshootingNetwork State Awareness & Troubleshooting
Network State Awareness & Troubleshooting
APNIC988 views
Tcp by giaolvq
TcpTcp
Tcp
giaolvq935 views
Final Presentation on the Network layer by Zee Haak
Final Presentation on the Network layerFinal Presentation on the Network layer
Final Presentation on the Network layer
Zee Haak772 views
Netmap presentation by Amir Razmjou
Netmap presentationNetmap presentation
Netmap presentation
Amir Razmjou1.1K views

More from hugo lu

WSO2 IoTS Device Manufacturer Guide by
WSO2 IoTS Device Manufacturer GuideWSO2 IoTS Device Manufacturer Guide
WSO2 IoTS Device Manufacturer Guidehugo lu
836 views27 slides
關於測試,我說的其實是...... by
關於測試,我說的其實是......關於測試,我說的其實是......
關於測試,我說的其實是......hugo lu
8.6K views135 slides
Sql injection 幼幼班 by
Sql injection 幼幼班Sql injection 幼幼班
Sql injection 幼幼班hugo lu
9.9K views36 slides
Sql or no sql, that is the question by
Sql or no sql, that is the questionSql or no sql, that is the question
Sql or no sql, that is the questionhugo lu
1K views54 slides
Swift 2.0 的新玩意 by
Swift 2.0 的新玩意Swift 2.0 的新玩意
Swift 2.0 的新玩意hugo lu
924 views7 slides
精實執行工作坊 by
精實執行工作坊精實執行工作坊
精實執行工作坊hugo lu
3.5K views27 slides

More from hugo lu(11)

WSO2 IoTS Device Manufacturer Guide by hugo lu
WSO2 IoTS Device Manufacturer GuideWSO2 IoTS Device Manufacturer Guide
WSO2 IoTS Device Manufacturer Guide
hugo lu836 views
關於測試,我說的其實是...... by hugo lu
關於測試,我說的其實是......關於測試,我說的其實是......
關於測試,我說的其實是......
hugo lu8.6K views
Sql injection 幼幼班 by hugo lu
Sql injection 幼幼班Sql injection 幼幼班
Sql injection 幼幼班
hugo lu9.9K views
Sql or no sql, that is the question by hugo lu
Sql or no sql, that is the questionSql or no sql, that is the question
Sql or no sql, that is the question
hugo lu1K views
Swift 2.0 的新玩意 by hugo lu
Swift 2.0 的新玩意Swift 2.0 的新玩意
Swift 2.0 的新玩意
hugo lu924 views
精實執行工作坊 by hugo lu
精實執行工作坊精實執行工作坊
精實執行工作坊
hugo lu3.5K views
Testing in swift by hugo lu
Testing in swiftTesting in swift
Testing in swift
hugo lu617 views
畫出商業模式 by hugo lu
畫出商業模式畫出商業模式
畫出商業模式
hugo lu2.4K views
精實軟體度量 by hugo lu
精實軟體度量精實軟體度量
精實軟體度量
hugo lu1.2K views
看板實驗室 by hugo lu
看板實驗室看板實驗室
看板實驗室
hugo lu953 views
嵌入式測試驅動開發 by hugo lu
嵌入式測試驅動開發嵌入式測試驅動開發
嵌入式測試驅動開發
hugo lu3.4K views

Recently uploaded

Data Integrity for Banking and Financial Services by
Data Integrity for Banking and Financial ServicesData Integrity for Banking and Financial Services
Data Integrity for Banking and Financial ServicesPrecisely
76 views26 slides
Network Source of Truth and Infrastructure as Code revisited by
Network Source of Truth and Infrastructure as Code revisitedNetwork Source of Truth and Infrastructure as Code revisited
Network Source of Truth and Infrastructure as Code revisitedNetwork Automation Forum
49 views45 slides
Ransomware is Knocking your Door_Final.pdf by
Ransomware is Knocking your Door_Final.pdfRansomware is Knocking your Door_Final.pdf
Ransomware is Knocking your Door_Final.pdfSecurity Bootcamp
81 views46 slides
Extending KVM Host HA for Non-NFS Storage - Alex Ivanov - StorPool by
Extending KVM Host HA for Non-NFS Storage -  Alex Ivanov - StorPoolExtending KVM Host HA for Non-NFS Storage -  Alex Ivanov - StorPool
Extending KVM Host HA for Non-NFS Storage - Alex Ivanov - StorPoolShapeBlue
56 views10 slides
Digital Personal Data Protection (DPDP) Practical Approach For CISOs by
Digital Personal Data Protection (DPDP) Practical Approach For CISOsDigital Personal Data Protection (DPDP) Practical Approach For CISOs
Digital Personal Data Protection (DPDP) Practical Approach For CISOsPriyanka Aash
103 views59 slides
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ... by
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...ShapeBlue
121 views15 slides

Recently uploaded(20)

Data Integrity for Banking and Financial Services by Precisely
Data Integrity for Banking and Financial ServicesData Integrity for Banking and Financial Services
Data Integrity for Banking and Financial Services
Precisely76 views
Extending KVM Host HA for Non-NFS Storage - Alex Ivanov - StorPool by ShapeBlue
Extending KVM Host HA for Non-NFS Storage -  Alex Ivanov - StorPoolExtending KVM Host HA for Non-NFS Storage -  Alex Ivanov - StorPool
Extending KVM Host HA for Non-NFS Storage - Alex Ivanov - StorPool
ShapeBlue56 views
Digital Personal Data Protection (DPDP) Practical Approach For CISOs by Priyanka Aash
Digital Personal Data Protection (DPDP) Practical Approach For CISOsDigital Personal Data Protection (DPDP) Practical Approach For CISOs
Digital Personal Data Protection (DPDP) Practical Approach For CISOs
Priyanka Aash103 views
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ... by ShapeBlue
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...
Backroll, News and Demo - Pierre Charton, Matthias Dhellin, Ousmane Diarra - ...
ShapeBlue121 views
Business Analyst Series 2023 - Week 4 Session 7 by DianaGray10
Business Analyst Series 2023 -  Week 4 Session 7Business Analyst Series 2023 -  Week 4 Session 7
Business Analyst Series 2023 - Week 4 Session 7
DianaGray10110 views
NTGapps NTG LowCode Platform by Mustafa Kuğu
NTGapps NTG LowCode Platform NTGapps NTG LowCode Platform
NTGapps NTG LowCode Platform
Mustafa Kuğu287 views
The Role of Patterns in the Era of Large Language Models by Yunyao Li
The Role of Patterns in the Era of Large Language ModelsThe Role of Patterns in the Era of Large Language Models
The Role of Patterns in the Era of Large Language Models
Yunyao Li74 views
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f... by TrustArc
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc Webinar - Managing Online Tracking Technology Vendors_ A Checklist f...
TrustArc130 views
Declarative Kubernetes Cluster Deployment with Cloudstack and Cluster API - O... by ShapeBlue
Declarative Kubernetes Cluster Deployment with Cloudstack and Cluster API - O...Declarative Kubernetes Cluster Deployment with Cloudstack and Cluster API - O...
Declarative Kubernetes Cluster Deployment with Cloudstack and Cluster API - O...
ShapeBlue59 views
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda... by ShapeBlue
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...
Hypervisor Agnostic DRS in CloudStack - Brief overview & demo - Vishesh Jinda...
ShapeBlue93 views
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue by ShapeBlue
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlueMigrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue
Migrating VMware Infra to KVM Using CloudStack - Nicolas Vazquez - ShapeBlue
ShapeBlue147 views
Why and How CloudStack at weSystems - Stephan Bienek - weSystems by ShapeBlue
Why and How CloudStack at weSystems - Stephan Bienek - weSystemsWhy and How CloudStack at weSystems - Stephan Bienek - weSystems
Why and How CloudStack at weSystems - Stephan Bienek - weSystems
ShapeBlue172 views
"Surviving highload with Node.js", Andrii Shumada by Fwdays
"Surviving highload with Node.js", Andrii Shumada "Surviving highload with Node.js", Andrii Shumada
"Surviving highload with Node.js", Andrii Shumada
Fwdays49 views
Igniting Next Level Productivity with AI-Infused Data Integration Workflows by Safe Software
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Safe Software373 views
DRBD Deep Dive - Philipp Reisner - LINBIT by ShapeBlue
DRBD Deep Dive - Philipp Reisner - LINBITDRBD Deep Dive - Philipp Reisner - LINBIT
DRBD Deep Dive - Philipp Reisner - LINBIT
ShapeBlue110 views
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas... by Bernd Ruecker
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
iSAQB Software Architecture Gathering 2023: How Process Orchestration Increas...
Bernd Ruecker50 views
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or... by ShapeBlue
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
Zero to Cloud Hero: Crafting a Private Cloud from Scratch with XCP-ng, Xen Or...
ShapeBlue128 views

The linux networking architecture

  • 2. Outline • Architecture of Communication System • Managing Network Packets • Network Device • Data-Link Layer • Network Layer • Transport Layer • Sockets in Linux Kernel • Socket Programming
  • 3. Outline • Architecture of Communication System • Managing Network Packets • Network Device • Data-Link Layer • Network Layer • Transport Layer • Sockets in Linux Kernel • Socket Programming
  • 7. Vertical & Horizontal Comm. PDU Protocol Data Unit PCI Protocol Control Information SDU Service Data Unit ICI Interface Control Information IDU Interface Data Unit
  • 8. Outline • Architecture of Communication System • Managing Network Packets • Network Device • Data-Link Layer • Network Layer • Transport Layer • Sockets in Linux Kernel • Socket Programming
  • 9. Socket Buffer • socket buffers are data structures used to represent and manage packets
  • 10. Layer 4 Layer 3Layer 5-7
  • 11. Operations on Socket Buffers • Create, Release, Duplicate Socket Buffers – alloc_skb(), skb_copy(), skb_copy_expand(), skb_clone(), kfree_skb(), skb_header_init() • Manipulate Packet Data Space – skb_get(), skb_put(), skb_push(), skb_pull(), skb_tailroom(), skb_headroom(), skb_realloc_headroom(), skb_reserve(), skb_trim(), skb_cow() • Manage Socket Buffer Queues – skb_cloned(), skb_over_panic(), skb_under_panic(), skb_head_to_pool(), skb_head_from_pool()
  • 13. Operations on Socket-Buffer Queues • Manage Queue Structures – skb_queue_head_init(), skb_queue_empty(), skb_queue_len() • Manage Socket Buffers in Queues – skb_queue_head(), skb_queue_tail(), skb_dequeue(), skb_dequeue_tail(), skb_queue_purge(), skb_insert(), skb_append(), skb_unlink(), skb_peek(), skb_peek_tail()
  • 14. Outline • Architecture of Communication System • Managing Network Packets • Network Device • Data-Link Layer • Network Layer • Transport Layer • Sockets in Linux Kernel • Socket Programming
  • 16. The net_device Structure • General Fields of a Network Device – name, next, owner, ifindex, iflink, state, trans_start, last_rx, priv, qdisc, refcnt, xmit_lock, xmit_lock_owner, queue_lock • Hardware-Specific Fields – rmem_end, rmem_start, mem_end, mem_start , base_addr, irq, dma, if_port • Data on the Physical Layer – hard_header_length, mtu, tx_queue_len, type, addr_len, dev_addr, broadcast, dev_mc_list, mc_count, watchdog_timeo, watchdog_timer • Data on the Network Layer – ip_ptr, ip6_ptr, atalk_ptr, dn_ptr, ec_ptr, family, pa_alen, pa_addr, pa_braddr, pa_mask, pa_dstaddr, flags • Device-Driver Methods – init(), uninit(), destructor(), open(), stop(), hard_start_xmit(), get_stats(), get_wireless_stats(), set_multicast_list(), watchdog_timeo(), do_ioctl(), set_config(), hard_header(), rebuild_header(), hard_header_cache(), header_cache_update(), hard_header_parse(), set_mac_address(), change_mtu()
  • 17. Managing Network Devices • Registering and Unregistering Network Devices – init_netdev(), init_etherdev(), ether_setup(), register_netdevice(), unregister_netdevice() • Opening and Closing Network Devices – dev_open(), dev_close() • Creating and Finding Network Devices – dev_alloc_name(), dev_alloc(), dev_get_by_name(), dev_get_by_index(), dev_load() • Notification Chains for State Changes – notifier_call(), notifier_call_chain(), register_netdevice_notifier(), unregister_netdevice_notifier() • Transmitting over Network Devices – dev_queue_xmit()
  • 18. Linked List of net_device
  • 19. Managing Network Drivers • Initializing Network Adapters • Opening and Closing a Network Adapter • Transmitting Data • Problems In Transmitting Packets • Runtime Configuration • Adapter-Specific ioctl() Commands • Statistical Information About a Network Device • Multicast Support on Adapter Level
  • 21. Transmitting Data Packets static int net_send_packet(struct sk_buff *skb, struct net_device *dev) { struct net_local *np = (struct net_local *)dev->priv; int ioaddr = dev->base_addr; short length = ETH_ZLEN < skb->len ? skb->len : ETH_ZLEN; unsigned char *buf = skb->data; hardware_send_packet(ioaddr, buf, length); np->stats.tx_bytes += skb->len; dev->trans_start = jiffies; if (inw(ioaddr) == /*RU*/81) np->stats.tx_aborted_errors++; dev_kfree_skb (skb);
  • 23. Receiving Packets from Adapter static void net_interrupt(int irq, void *dev_id, struct pt_regs * regs) { ioaddr = dev->base_addr; np = (struct net_local *)dev->priv; status = inw(ioaddr + 0); if (status & RX_INTR) { net_rx(dev); } if (status & TX_INTR) { net_tx(dev); np->stats.tx_packets++; netif_wake_queue(dev); }
  • 24. Receiving a Data Packet static void net_rx(struct net_device *dev) { do { if (pkt_len == 0) break; if (status & 0x40) { /* There was an error. */ }else{ skb = dev_alloc_skb(pkt_len); ptr = skb_put(skb,pkt_len); memcpy(ptr, (void*)dev->rmem_start, pkt_len); netif_rx(skb); } } while (–boguscount);
  • 25. Acknowledging a Transmission void net_tx(struct net_device *dev) { spin_lock(&np->lock); while (tx_entry_is_sent(np, entry)) { struct sk_buff *skb = np->skbs[entry]; np->stats.tx_bytes += skb->len; dev_kfree_skb_irq (skb); entry = next_tx_entry(np, entry); } if (netif_queue_stopped(dev) && ! tx_full(dev)) netif_wake_queue(dev); spin_unlock(&np->lock);
  • 26. Outline • Architecture of Communication System • Managing Network Packets • Network Device • Data-Link Layer • Network Layer • Transport Layer • Sockets in Linux Kernel • Socket Programming
  • 27. Media Access & Data-Link Layer • Data-Link Layer (Ethernet) • The Serial-Line Internet Protocol (SLIP) • The Point-to-Point Protocol (PPP) • PPP over Ethernet • Asynchronous Transfer Mode—ATM • Bluetooth in Linux • Transparent Bridges
  • 28. Implementation of Data Link Layer LLC (Logical-Link Control) provide a uniform interface for the upper layer. MAC (Media-Access Control) handles the media-specific part.
  • 31. eth_type_trans(skb, dev) • Recognize the LLC protocol type used and protocol ID of layer-3 • Identify the packet type (unicast, multicast, broadcast) • Check whether the packet is addressed to the local computer
  • 33. Internet Protocol Suite SSH Secure Socket Shell FTP File Transfer Protocol DNS Domain Name Service SMTP Simple Mail Transfer Protocol TCP Transmission Control Protocol UDP User Datagram Protocol IP Internet Protocol ICMP Internet Control Message Protocol IGMP Internet Group Management Protocol ARP Address Resolution Protocol RARP Reverse Address Resolution Protocol
  • 34. Outline • Architecture of Communication System • Managing Network Packets • Network Device • Data-Link Layer • Network Layer • Transport Layer • Sockets in Linux Kernel • Socket Programming
  • 35. Network Layer • IPv4 - Internet Protocol Version 4 • Internet Control Message Protocol (ICMP) • Address Resolution Protocol (ARP) • IP Routing • IP Multicast for Group Communication • Using Traffic Control to Support Quality of Service (QoS) • Packet Filters and Firewalls • Connection Tracking • Network Address Translation (NAT) • IPv6 - Internet Protocol Version 6
  • 36. Internet Protocol • Provides an unsecured connectionless datagram service • Defines IP datagrams as basic units for data transmission • Defines the IP addressing scheme • Routes and forwards IP datagrams across interconnected networks • Verifies the lifetime of packets • Fragments and reassembles packets • Uses ICMP to output errors
  • 37. Routing IP Packets between LANs
  • 39. IP Address Classes The class-A network address 127 represents the loopback network device of a computer. An IP address with all bits of the computer part set to zero identifies the network itself. An IP address where the computer part consists of 1-bits defines a broadcast address.
  • 42. Delivering Packets Locally • If ip_route_input() is the selected route, then the packet is addressed to the local computer. In this case, branching is to ip_local_deliver() rather than to ip_forward(). – Reassemble fragmented packets – ip_local_deliver_finish(): RAW-IP socket or up to transport layer
  • 43. Fragmenting an IP Datagram Each network has a maximum packet size, which is called Maximum Transfer Unit (MTU). If the MTU of a transmission medium is smaller than the size of a packet, then the packet has to be split into smaller IP packets. MTU=1000 MTU=600
  • 44. The saddr, daddr, id, and protocol elements are keys for the hash function and the allocation of incoming fragments to their IP datagrams.
  • 47. IP Options Class Number Length Name 0 0 - End of Option 0 1 - No Operation 0 2 11 Security 0 3 var Loose Source Routing 0 9 var Strict Source Routing 0 7 var Record Route 0 8 4 Stream ID 2 4 var Internet Timestamp copy flag option class option number 1-bit 2-bit 5-bit
  • 48. IP Options in the IP layer
  • 49. Internet Control Message Protocol • Error-report mechanism for the IP layer. • The most popular application of ICMP is error detection or error diagnostics. (ping)
  • 51. ICMP Packet Type (RFC 792) Type Description Destination Unreachable The destination address cannot be reached. Time Exceeded A packet was discarded, because its TTL has expired. Parameter Problem Unknown or false options. Source Quench Informs the sender that IP packets were lost to overload. Redirect Enables path optimization. Echo and Echo Reply The data sent to the destination address is returned in a reply. Timestamp and Timestamp Reply The timestamp sent to the destination address is used-to reply with the timestamp of the destination address. Information Request und Information Reply Request/reply used to find the network a computer connects to.
  • 52. ICMP in the Linux Kernel • Sending ICMP Packets – icmp_send() • Handling Incoming ICMP Packets – icmp_rcv(), icmp_reply(), icmp_redirect(), icmp_unreach(), icmp_echo(), icmp_timestamp(), icmp_addres(), icmp_address_reply() • ICMP messages generated within the kernel
  • 55. ARP Command root@tux # arp -a IP address HW type HW address 129.25.10.97 10Mbit/s Ethernet 49:72:16:08:80:70 129.25.10.72 10Mbit/s Ethernet 49:72:16:08:64:14 129.25.10.81 10Mbit/s Ethernet 49:17:92:96:96:96
  • 58. Outline • Architecture of Communication System • Managing Network Packets • Network Device • Data-Link Layer • Network Layer • Transport Layer • Sockets in Linux Kernel • Socket Programming
  • 59. Transport Layer • Transmission Control Protocol (TCP) • User Datagram Protocol (UDP)
  • 60. Transmission Control Protocol • Connection orientation • Peer-to-peer communication • Complete reliability • Full-duplex communication • Byte-stream interface • Reliable connection startup • Graceful connection shutdown
  • 62. TCP Packet Header URG points to important data that have to be forwarded immediately. SYN is used to establish connections. SYN = 1 denotes a connection request. ACK shows that the ACKNOWLEDGEMENT NUMBER field includes relevant data. RST can request a connection to be reset. RST = 1 denotes a request to reset a connection. PSH means that the TCP instance must immediately pass the data received to the higher layers. FIN means that the connection is to be torn down.
  • 77. Packet Loss & Fast Retransmit
  • 78. Detecting & Handling Congestions
  • 80. User Datagram Protocol • Same functionality as Internet Protocol (IP) • Connectionless • Unreliable service • Cannot detect and handle lost or duplicate packets • Transmitting data easily and quickly • For audio or video streaming
  • 82. UDP Header & Payload
  • 83. Service Interface to App Layer
  • 84. Outline • Architecture of Communication System • Managing Network Packets • Network Device • Data-Link Layer • Network Layer • Transport Layer • Sockets in Linux Kernel • Socket Programming
  • 85. Socket Support in Linux Kernel
  • 86. if copy_from_user(a, args, nargs[call])) return -EFAULT; a0=a[0]; a1=a[1]; switch(call) { case SYS_SOCKET: err = sys_socket(a0,a1,a[2]); break; case SYS_BIND: err = sys_bind(a0, (struct sockaddr *)a1, a[2]); break; case SYS_CONNECT: err = sys_connect (a0, (struct sockaddr *)a1, a[2]); break; case SYS_LISTEN: err = sys_listen (a0,a1); break; } int socket (int family, int type, int protocol) int bind(int sockfd, struct sockaddr *mAddress, int AddrLength) int connect(int sockfd, struct sockaddr *ServAddr, int AddrLength) int listen(int sockfd, int backlog) sys_socketcall()
  • 89. Outline • Architecture of Communication System • Managing Network Packets • Network Device • Data-Link Layer • Network Layer • Transport Layer • Sockets in Linux Kernel • Socket Programming
  • 90. System Calls at Socket Interface
  • 94. Data Transmission • Transmitting data size_t write(sockfd, buffer, length) int send(sockfd, buffer, length, flags) int sendto(sockfd, buffer, length, flags, destaddr, addrlen) • Receiving data size_t read(sockfd, buffer, length) int recv(sockfd, buffer, length, flags) int recvfrom (sockfd, buffer, length, flags, fromaddr, addrlen) • Rransmit and receive an array of iovec structures int readv(int sockfd, const struct iovec *vector, size_t count) int writev(int sockfd, const struct iovec *vector, size_t count) int sendmsg(int sockfd, const struct msghdr *msg, int flags) int recvmsg(int sockfd, struct msghdr *msg, int flags)
  • 95. Q & A • Architecture of Communication System • Managing Network Packets • Network Device • Data-Link Layer • Network Layer • Transport Layer • Sockets in Linux Kernel • Socket Programming