Dr. Dennis Pfisterer
Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/pfisterer
Future Internet Technologies
Traditional Internet
• Packet-Switched Datagram Service
– Each packet is independent from any other packet
– Routing is done on a per-packet basis
• Routing Tables used to select next hop
– i.e., which link to use • Best-effort Service
– No guarantees regarding QoS, in-order delivery, real-time, …
IPv4 Model
6-3 Router R1 DA Next hop y R3, R4 ... ... Routing tables Router R3 DA Next hop y R6 ... ... Router R6 DA Next hop y -... ... yx yx yx yx yx yx • Version (4 bit) – IPv4 (0x04), IPv6 (0x06) • HdrLen (4 bit)– Header Length in multiples of 32-bit (>5)
• Type of Service (8 bit) – now obsolete
– Precedence: 7=High, 0=Normal
– ToS: 8=min. Delay, 4=max. Throughput, 2=max. Reliability, 0=normal
IPv4 packet format
6-4
0 4 8 16
VersionHdrLen Type of service
Identification
Time to live Protocol
19 31
Total length
Flags Fragment offset
• Total length (16 bit)
– Including Header
• Identification (16 bit)
– Used for fragmentation
• Flags (3 bit)
– D = Don’t fragment, M = More Fragments
• Fragment offset
– Offset in multiples of 8 Byte
IPv4 packet format
6-5
0 1 2 - D M
0 4 8 16
Version HdrLen Type of service Identification Time to live Protocol
19 31
Total length Flags Fragment offset
Header checksum Source address Destination address Bits: 20 octets Options + padding Data (! 65536 octets)
• Time To Live (8 bit)
– Decremented at each hop, packet dropped if zero is reached
• Protocol (8bit)
– Indicates next protocol (upper layer protocol such as UDP=17/TCP=6) • Header Checksum (16 bit)
– CRC-16 (complete header)
• Source- and Destination IP-Address (32 bit) • Options
– Security, Source routing, …
IPv4 packet format
6-6
0 4 8 16
Version HdrLen Type of service Identification Time to live Protocol
19 31
Total length Flags Fragment offset
Some Protocol Numbers
7
• See http://www.iana.org/assignments/protocol-numbers/ for reference • Unix lists these well-known numbers in /etc/protocols
• IP packets are transported over a variety of networks
– Each network has a maximum transmission unit (MTU) – Examples
• Ethernet (1500 bytes) • ATM (multiples of 48 bytes) • PPPoE (1480 bytes)
• X.25 (576 bytes) • FDDI (4352 bytes)
• Sender and receiver only know the link’s local MTU
– The maximum path MTU is unknown
IPv4 Fragmentation
9
• IP packets may exceed a link’s MTU
• IP packet size > MTU
– Must be split into fragments smaller than the current MTU
• Fragmentation options
– Transparent fragmentation – Non-transparent fragmentation
IPv4 Fragmentation
• Transparent fragmentation
– Fragmentation and reassembly performed on each link
• Non-transparent fragmentation
– Fragmentation at each intermediate station, reassembly at destination
• IP: Non-transparent fragmentation
IPv4 Fragmentation
11
Ver HL TOS Total length Identification D,M Fragment offset TTL Protocol Header checksum
...
Flags: D = Don’t fragment M = More fragments
Relevant fields in IP packet header:
• Split up packets into segments smaller than MTU (including IP header, 20-60 bytes)
• Compute new value for Total Length
• Set “More Fragments”-bit, except for the last fragment • Compute “Fragment Offset” value
– Multiple of 8 bytes, offset of the data in the original packet
• Re-Compute header checksum
IP Packet Fragmentation
12
Ver HL TOS Total length Identification D,M Fragment offset TTL Protocol Header checksum
...
Flags: D = Don’t fragment M = More fragments
• Fragmented packet arrives if either
– “More Fragments" flag is set
– “Fragment Offset" field is non-zero
• Store all related packets (final size yet unknown) • Wait until packet with MF=0 arrives
– Original IP packet length: Fragment Offset + Total Length
• Reassemble packet in original order
IPv4 Reassembly
13
Ver HL TOS Total length Identification D,M Fragment offset TTL Protocol Header checksum
...
Flags: D = Don’t fragment M = More fragments
Relevant fields in IP packet header:
• 32-bit " 232 # 4.29 Billion addresses (in theory)
– Some reserved (e.g., private networks: ~18 million, multicast : ~270 million)
• Types of Addresses – Unicast
• Identifies a single network interface (multiple interfaces: multi-homing) • May be used as source- and destination address
– Broadcast
• Addresses all hosts in a certain scope (e.g., on a link), only as destination – Multicast
• Addresses a group of interfaces (hosts)
IPv4 Adressing
31 24 23 16 15 8 7 0
11010100 01111110 11010000 10000111
212 . 126 . 208 . 135 Binary value:
Dotted decimal notation:
• How to structure the address space?
• Goals
– Hierarchical address allocation and routing – Support for multi- and broadcasting
• History
– ARPANET: highest 8 bit as network identifier: 254 networks – RFC 791, 1981: Classful IP addressing
– Later: additional levels of hierarchy (1985-1987)
– 1993-Until today: Classless Inter-Domain Routing (CIDR)
Evolution of IPv4 Addressing
• Address space divided into 5 classes
– 5 classes: A-E– Fixed prefix (1-4 bit) depending on the network class
IPv4: Classful Addressing
17
Class Prefix Address Range Networks Hosts
A 0 001.0.0.0 - 127.255.255.255 128 16M
B 10 128.0.0.0 - 191.255.255.255 16k 65k
C 110 192.0.0.0 - 223.255.255.255 2M 256
D 1110 224.0.0.0 - 239.255.255.255 268M groups
E 1111 240.0.0.0 - 255.255.255.255 reserved
• Networks assigned by Internet Assigned Numbers Authority (IANA) • Host identifiers assigned by local authority (e.g., an administrator)
IPv4: Classful Addressing
18
8 bits (128 nets) 24 bits (224 # 16M hosts)
0 network host
16 bits (214 nets # 16K hosts) 16 bits (216 # 65K hosts)
10 network host
24 bits (221 # 2 M nets) 8 bits (256 hosts) 110 network host
28 bits (228 groups)
1110 multicast group address
IPv4: Classful Addressing: Special Addresses
19
Network Host Description
net-id All 0 Network Address: Not a source/destination but defines a network (e.g., for routing).
Example: 212.126.208.0 (net-id 212: Class C)
net-id All 1 Broadcast Address: Destination of a packet. Addresses all stations of a network.
Example: 212.126.208.255
All 1 All 1
Network-Broadcast Address: Destination address only. Addresses all hosts of a network. Not forwarded by routers.
Example: 255.255.255.255
127 Arbitrary Loopback Address: Useful for tests, local host.
Example: 127.0.0.1, 127.34.43.1
All 0 host-id or all 0 Special address for bootstrapping (e.g., DHCP)
Example: 0.0.0.0
• Network sizes
– Class C: 256 hosts ! to few for an organization
– Class B: 65K hosts ! too much for most organizations – Class A: 16mio. hosts ! only for large ISPs
• Problems
– Fixed class sizes led to IP address exhaustion
– Many IP addresses were unused but could not be reassigned – Routers experienced heavy loads
– Large routing tables: No route aggregation possible
! Sub-networks were created by splitting the host into sub-network/host
IPv4: Subnetting
• Advantages
– Subnetworks give additional structure to the host part
– Routers are agnostic to this structure ! only one routing table entry • Subnetmasks describe structure of IP addresses – Information no longer contained in the IP address
IPv4: Subnetting
21Address Structure for address block assigned to a network:
network host
Address structure for subnetted network:
network subnet host
Example: Assigned Class B network address block
network host
Example: Subnetting with 8 subnet bits, 8 host bits (256 hosts/subnet)
network subnet host
Binary subnet mask:
11111111 11111111 11111111 00000000
Dotted-decimal subnet mask:
255. 255. 255. 0
• Subnetting creates sub-networks of equal size
• Problems
– Still an inefficient use of IP addresses – IP address space exhausted in the 1990s – Nearly no route aggregation possible
(Backbone router would need to store 2mio. entries only for Class C networks)
• Solution
– Classless Inter-Domain Routing (CIDR)
IPv4: Subnetting
Classless Inter-Domain Routing (CIDR)
• Replaces fixed <network, sub-network, host>
structure
• Arbitrary network/host size (2
N, 2
32-N)
• Networks are specified using /N syntax
– Example: 212.126.208.0/24
• Allows upstream path aggregation
– Smaller routing tables
Classless Inter-Domain Routing (CIDR)
Example: Classless Inter-Domain Routing (CIDR)
25 (128 class C blocks, from 200.10.0.0 up to 200.10.127.0) ISP-1: 200.10.0.0/17 2048 addresses 200.10.0.0/21 8 class C (0-7) R11 s1 1024 addresses 200.10.8.0/22 4 class C (8-11) R12 s2 512 addresses 200.10.12.0/23 2 class C (12-13) R13 s3 256 addresses 200.10.14.0/24 1 class C (14) R14 s4 R1 ISP-2: 200.10.128.0/18 Aggregated route 200.10.0.0/17 Aggregated route 200.10.128.0/18 ISP-0 s0 R0 R2 s1 s2Router R0 - Routing table Route Interf. Next hop 200.10.0.0/17 s1 R1 200.10.128.0/18 s2 R2
... ... ...
Router R1 - Routing table Route Interf. Next hop 200.10.0.0/21 s1 R11 200.10.8.0/22 s2 R12 200.10.12.0/23 s3 R13 200.10.14.0/24 s4 R14
... ... ...
• Routing decision based on prefixes
– Prefix length not evident from IP address (use of CIDR /xx syntax mandatory)
– Address allocation based on topology (ISP ! reseller ! customer)
– Must be signaled out of band (e.g., BGP)
• Routing tables entries may contain overlapping
entries
– A longer prefix is more specific
– Routing uses longest prefix match to select outgoing link
CIDR: Properties
• Entries: 192.168.20.16/28 & 192.168.0.0/16
• IP-Address to match: 192.168.20.19
• Both network masks “match” ! /28 is used
CIDR: Longest Prefix Match (Examples)
27
IP / Netmask IP / Netmask [binary notation]
192.168.20.16/28 /28 11111111 11111111 11111111 11110000 Entry 11000000 10101000 00010100 00010000 192.168.20.19 IP 11000000 10101000 00010100 00010011 192.168.0.0/16 /16 11111111 11111111 00000000 00000000 Entry 11000000 10101000 00000000 00000000 192.168.20.19 IP 11000000 10101000 00010100 00010011
• CIDR provides better address space utilization
– Without CIDR: address space exhaustion in the 1990s – Still, the 232 limit sustains
– Prediction: Last IP addresses assigned 2012 [potaroo.net]
• Current countermeasures
– Network address translation (NAT)
– Dynamic Host Configuration Protocol (DHCP) – HTTP Name-based virtual hosting
– Network renumbering (reclaim IP address blocks space allocated in the early days of the Internet)
– Use of IPv6