• IP Service • IP Addressing • Datagram Format • Routing (Forwarding) • Subnetting • Fragmentation © Jörg Liebeherr (modified by M. Veeraraghavan) 1 Orientation • IP (Internet Protocol) is a Network Layer Protocol. TCP UDP Transport Layer ICMP IP IGMP Network Layer ARP Network Access RARP Link Layer Media • IP’s current version is Version 4 (IPv4). It is specified in RFC 891. © Jörg Liebeherr (modified by M. Veeraraghavan) 2 Orientation • IP layer processing occurs at both routers and hosts: Application Application protocol Application TCP TCP protocol TCP IP Network Access Host IP IP protocol Data Link Network Access Network Access Router © Jörg Liebeherr (modified by M. Veeraraghavan) IP IP protocol Data Link Network Access IP protocol Network Access Router Data Link IP Network Access Host 3 IP Service • IP provides an unreliable and connectionless service (“datagram service”). Unreliable: IP does not guarantee that a transmitted packet will be delivered. Connectionless: Each packet (“datagram”) is handled independently. IP is not aware that packets between hosts may be sent in a logical sequence. • Consequences of an unreliable, connectionless service – Lost packets – Packets delivered out-of-sequence – Can have duplicate packets because of TCP layer resends* • e.g. if packet is delivered but ACK is lost, TCP sender will resend packet buffered at the end host. *: The audio file says duplicate packets could occur because of router-buffered packets; this is not commonplace in today’s networks because common link-layer protocols do not have retransmissions, but if they did, this could be another cause of duplicate packets; for example, 802.11 wireless link layer has retransmissions. © Jörg Liebeherr (modified by M. Veeraraghavan) 4 IP Service • IP offers a best effort * service; i.e., IP does not make performance guarantees on: • the time until a packet is delivered • the packet loss rate • the throughput of traffic between two hosts • etc. • Performance guarantees are also called Quality-of-Service or QoS guarantees. • IP provides limited QoS support. This is done via the Type-ofService (TOS) field. * “Best effort” may mean different things to different people. © Jörg Liebeherr (modified by M. Veeraraghavan) 5 IP Service • IP supports the following services: • one-to-one (unicast) • one-to-many (multicast) • one-to-all (broadcast) Unicast Broadcast Multicast • IP multicast actually supports a many-to-many service. • IP multicast requires support of other protocols (IGMP, multicast routing). © Jörg Liebeherr (modified by M. Veeraraghavan) 6 Internet Addresses • Each network interface on the Internet as a unique global address, called the IP address. • An IP address: - is 32 bits long. - encodes a network number and a host number • IP addresses are written in a dotted decimal notation : - 128.238.42.112 10000000 11101110 00101010 01110000 © Jörg Liebeherr (modified by M. Veeraraghavan) means in 1st Byte in 2nd Byte in 3rd Byte in 4th Byte 7 Internet Address Classes • IP distinguishes 5 classes of addresses. Class A Class B Class C Class D 0 network id host 7 bits 24 bits 1 0 network id host 14 bits 16 bits 1 1 0 1 1 1 0 network id host 21 bits 8 bits multicast group id 28 bits Class E 1 1 1 1 0 (reserved for future use) 27 bits © Jörg Liebeherr (modified by M. Veeraraghavan) 8 IP Addresses • The end points of each range are not allowed because all zeros and all ones are disallowed for netid, subnetid and hostid (see pg. 42 of text and RFC791). Class From To A 0.0.0.0 B 128.0.0.0 191.255.255.255 C 192.0.0.0 223.255.255.255 D 224.0.0.0 239.255.255.255 E 240.0.0.0 247.255.255.255 © Jörg Liebeherr (modified by M. Veeraraghavan) 127.255.255.255 9 Trade-off of Address Classes • There are a total of 232 = 4,294,967,296 IP addresses Class A: 7 bits for netid only 128 Class A networks each net can have about 16 million (224-2) hosts. Class B: 14 bits for netid about 16,000 networks About 65,000 (216 -2) hosts per network Class C: 21 bits for netid about 2 million networks Only 254 hosts per network © Jörg Liebeherr (modified by M. Veeraraghavan) 10 Special case IP addresses (not complete) • 0: all zeros (means “this host” or “this net”); -1: all ones (this is reserved for broadcasts); netid, subnetid, hostid: anything else IP address netID subnetID Can appear as Description hostID Source? Destination? 0 0 OK never This host on this net 0 hostid OK never Specified host on this net 127 anything OK OK Loopback address -1 -1 never OK Limited broadcast netid -1 never OK Net-directed broadcast to netid Subnet-directed broadcast to netid, subnetid All-subnets-directed broadcast to netid netid subnetid -1 never OK netid -1 -1 never OK © Jörg Liebeherr (modified by M. Veeraraghavan) 11 IP Datagram Format • 20 bytes Header Size 24 * 32 bit-words = 60 bytes • 20 bytes Total Length 216 bytes = 65536 bytes version (4 bits) header length Type of Service/TOS (8 bits) >= five 32-bit words Identification (16 bits) TTL Time-to-Live (8 bits) Total Length (in bytes) (16 bits) flags (3 bits) Protocol (8 bits) Fragment Offset (13 bits) Header Checksum (16 bits) Source IP address (32 bits) Destination IP address (32 bits) Options (if any, <=40 bytes) DATA 0 31 32-bit word © Jörg Liebeherr (modified by M. Veeraraghavan) 12 IP Datagram Transmission • Question: If you measure an IP datagram on the network, in which order are the fields transmitted? • Answer: • Transmission is row by row • For each row: 1. Transmit bits 0-7 2. Transmit bits 8-15 3. Transmit bits 16-23 4. Transmit bits 24-31 • This is called network byte order or big endian byte ordering. • Note: some computers store 32-bit words in little endian format. Which ones? © Jörg Liebeherr (modified by M. Veeraraghavan) 13 Fields of the IP Header • Version: current version is 4, next version will be 6. • Header length (4 bits): Number of 32-bit words in the IP header • Type of Service (TOS): contains 4 TOS bits, where each bit indicates a desired service. • minimize delay • maximize throughput • maximize reliability • minimize cost – Only one bit can be set! Not supported in all applications. © Jörg Liebeherr (modified by M. Veeraraghavan) 14 IP Header Fields Contd. • Total Length: Number of bytes in the IP datagram (header+payload) • Identification: unique identification of a datagram from a host. Incremented whenever a datagram is transmitted. • Flags and Fragment Offset: Associated with fragmentation • Time To Live (TTL): specifies longest path before datagram is dropped. – Used to prevent infinite looping of packets – TTL field is set at sending host and is decremented by 1 at each router – If a router gets a datagram whose TTL is either 0 or 1, the router will drop the packet. – If a destination host gets a datagram whose TTL is 1, the host will deliver the datagram to the higher layer. © Jörg Liebeherr (modified by M. Veeraraghavan) 15 Fields of the IP Header • Protocol: Specifies the higher-layer protocol. Used for demultiplexing to higher layers. Application TCP UDP ICMP IGMP IP • Header checksum: verifies correctness of header. © Jörg Liebeherr (modified by M. Veeraraghavan) 16 Fields of the IP Header • Source and Destination Addresses: identify the interfaces on the sending and receiving hosts • Options: • Security restrictions • Record Route: each router that processes the packet adds its IP address to the header. • Timestamp: each router that processes the packet adds its IP address and time to the header. • (loose) Source Routing: specifies a list of routers that must be traversed. • (strict) Source Routing: specifies a list of the only routers that can be traversed. • Padding: ensures that header ends on a 4-byte boundary © Jörg Liebeherr (modified by M. Veeraraghavan) 17 Routing • The routing functions at the network layer must be able to deliver a packet from a source host to a destination host. • There are two parts to the routing problem: 1. How to pass a packet from an input interface to the output interface of a router (“packet forwarding”) ? 2. How to create routing tables? • In this lecture, we only discuss the packet forwarding part. The other function is discussed in Lecture 6. © Jörg Liebeherr (modified by M. Veeraraghavan) 18 Major Tenets for Datagram Forwarding • Every IP datagram contains the IP address of an interface of a destination host. • The network id of an IP address uniquely identifies a single physical network that is part of the larger Internet. • All hosts and routers that have the same network id are connected to the same physical network and can directly communicate by sending MAC layer frames. • Every physical network of the Internet has at least one router, which is also connected to at least one other physical network. © Jörg Liebeherr (modified by M. Veeraraghavan) 19 IP Forwarding • A packet is typically forwarded to a large number of routers before reaching the destination host. • IP forwarding is done on a hop-by-hop basis, i.e., no one knows the complete route. The goal of forwarding is to bring the IP datagram closer to the destination. © Jörg Liebeherr (modified by M. Veeraraghavan) 20 IP Forwarding • IP forwarding is performed by both hosts and routers. • The difference between IP forwarding in a host and in a router is that a host’s IP module does not forward packets received on an interface to another interface (if it does then it is behaving as a router). In a host, IP forwarding is from the higher layers to an interface or vice versa • Both routers and hosts have a routing table. Routing table entries look like this and is looked up for each datagram: Destination IP address of Flags IP address Next-Hop-Router Specification of an interface Whole IP Address of router address or interface or directly network ID of connected network IP address Interface to which the datagram is passed © Jörg Liebeherr (modified by M. Veeraraghavan) 21 Flags • H: Whether the destination address is the network ID of an IP address (H=0) or the complete IP address of a host interface (H=1). • G: Whether the next-hop router field is really a next-hop router (G=1) or a directly connected interface (G=0) © Jörg Liebeherr (modified by M. Veeraraghavan) 22 Forwarding Functions at Host • Forwarding an IP datagram at a host: DestNet = Network id in destination IP address If (DestNet == my Network id) Deliver datagram to destination directly; else Send datagram to default router; • Reception of an IP datagram at a host: Datagram is received on an interface If (Destination IP address == (my IP address || broadcast address)) Deliver datagram to higher layer; else Discard the datagram; © Jörg Liebeherr (modified by M. Veeraraghavan) 23 Forwarding Functions at Router • Reception of an IP datagram at a router: Packet is received on an interface If (Destination IP address != my IP address) Perform datagram forwarding; • Forwarding an IP datagram at a router: DestNet = Network id in destination IP address DestIP = destination IP address If (DestIP == Destination IP address in my routing table) Deliver datagram to the next-hop-router in the table; elseif (DestNet == Network id in my routing table) Deliver datagram to destination of the interface; else deliver packet to default router; © Jörg Liebeherr (modified by M. Veeraraghavan) 24 Example (from Textbook) ftp.uu.net 192.48.96.9 140.252.1.0 140.252.13.0 140.252.1.183 140.252.104.1 140.252.1.4 Gateway netb modem modem 140.252.1.29 140.252.13.33 sun 140.252.13.35 bsdi • Scenario 1: bsdi sends a datagram to sun • Scenario 2: bsdi sends a datagram to ftp.uu.net © Jörg Liebeherr (modified by M. Veeraraghavan) 25 Scenario 1 140.252.13.0 140.252.13.33 sun 140.252.13.35 bsdi • Bsdi looks up its routing table and finds sun as being located on the same network. • How ? The network address of sun and bsdi match. •Bsdi issues an ARP request for 140.252.13.33 •Sun replies with the MAC address for its interface •Bsdi can then send the IP datagram encapsulated in an ethernet frame © Jörg Liebeherr (modified by M. Veeraraghavan) 26 Scenario 2 ftp.uu.net 192.48.96.9 140.252.1.0 140.252.13.0 140.252.1.183 140.252.104.1 140.252.1.4 Gateway modem modem 140.252.1.29 netb 140.252.13.33 sun 140.252.13.35 bsdi • bsdi sends a datagram to ftp.uu.net. 1. bsdi sees that its network ID differs from that of the destination address 2. So it sends the datagram to its default router (sun) (by using the MAC address of the 140.252.13.33 interface on sun - obtained by ARP) © Jörg Liebeherr (modified by M. Veeraraghavan) 27 Scenario 2, Part II ftp.uu.net 192.48.96.9 140.252.1.0 140.252.13.0 140.252.1.183 140.252.104.1 140.252.1.4 Gateway netb modem modem 140.252.1.29 140.252.13.33 sun 140.252.13.35 bsdi 3. sun (is configured as router) forwards the packet to its default router (which is set to netb). 4. netb forwards the datagram to its default next-hop-router, set to Gateway (140.252.1.4). 5. Gateway forwards the packet to somewhere else (not known). © Jörg Liebeherr (modified by M. Veeraraghavan) 28 Subnetting • The address classes makes Class A and B addresses very attractive and Class C addresses not attractive: - The number of network id’s relates to the size of the routing table in IP routers. - The number of hosts on a network is limited to 255. - Organization must contact IANA for each new LAN. - Management of a large number of Class C addresses is cumbersome. • But: There are only few Class A and B addresses! • Solution: © Jörg Liebeherr (modified by M. Veeraraghavan) Subnetting 29 Subnetting • Goal: Reduce the need for a large number of network ids. • Basic Idea: - Split the host id portion of an IP address into a subnet id and a host id. - Assign one subnet id to each physical network. • Then: • Subnets can be freely assigned and be used for many physical networks. • Distant routers need not be aware of subnet id’s. © Jörg Liebeherr (modified by M. Veeraraghavan) 30 Subnet Masks • Routers and hosts use a subnet mask to separate the subnetwork id from the host id. Class B 1 0 network id host 14 bits with subnetting 1 0 16 bits network id 14 bits Subnet mask subnet id host 8 bits 8 bits 111111111111111111111111 00000000 24 bits 8 bits (255.255.255.0) Question: In the IP address 152.164.9.10 with subnet mask 255.255.255.128, what class does this IP address belong to and what are the 14 bits netid, subnet id and hostid? How many bits are in the subnet id and in the hostid? Answer: Class B; 14 bits netid = 24.164, subnet id (9 bits) = 9.0 hostid (7 bits) = 10 © Jörg Liebeherr (modified by M. Veeraraghavan) 31 Subnetting: Host Processing • Each host has to know the IP address and the subnet mask of its interface • For each IP datagram received from the application, the IP layer at the host peforms: if ((Destination IP address & Subnet Mask) == (My IP address & Subnet Mask)) Deliver datagram directly (perform ARP if shared medium LAN); else Forward datagram to default router; © Jörg Liebeherr (modified by M. Veeraraghavan) 32 Subnetting: Router Processing • A router has a table: < SubnetNumber, SubnetMask, NextHop> » SubnetNumber is the <network id, subnet id> » SubnetMask is the subnet mask » NextHop is the IP address of a router. • The router perfoms the following algorithm: – Reception of an IP datagram at a router: Packet is received on an interface whose IP address is IP1. dest = destination IP address; If (dest == IP1) Deliver datagram to TL/application in router ; © Jörg Liebeherr (modified by M. Veeraraghavan) 33 Subnetting: Router processing Contd. Else for each entry <SubnetNumber, SubnetMask, NextHop> sub1 = dest & SubnetMask; if (sub1 == SubnetNumber) Forward datagram to NextHop; else Go to next entry in routing table; © Jörg Liebeherr (modified by M. Veeraraghavan) 34 Advantages of Subnetting • Improves efficiency of IP address usage by not consuming an entire Class B or Class C address for each physical network. • Reduces routing table sizes. Since external routers do not know about subnetting, the size of routing tables is reduced. • Networks become easier to manage. • Note that there are three levels of aggregation: • Network • Subnet • Host © Jörg Liebeherr (modified by M. Veeraraghavan) 35 IP Fragmentation • Host A sends a large IP datagram to Host B. • Any Problem with that? FDDI Ring Host A MTUs: FDDI: 4352 Ethernet Router Host B Ethernet: 1500 • IP router splits the datagram into several fragments • Fragmentation requires that the data portion of every fragment except the last be a multiple of 8 bytes. © Jörg Liebeherr (modified by M. Veeraraghavan) 36 Where is Fragmentation done? • Fragmentation can be done at the sender or at intermediate routers. • The same datagram can be fragmented several times. • Reassembly of original datagram is only done at destination hosts. IP datagram H Fragment 2 H2 Fragment 1 H1 Router © Jörg Liebeherr (modified by M. Veeraraghavan) 37 What’s involved in Fragmentation? • The following fields in the IP header are involved: version (4 bits) header length Type of Service/TOS flags Identification TTL Time-to-Live (8 bits) Total Length (in bytes) Protocol (8 bits) Fragment Offset Header Checksum (16 bits) ...... Identification Flags is the same in all fragments. contains a “more fragments” bit. (There is also a “don’t fragment bit” that can be set). Fragment offset Total length © Jörg Liebeherr (modified by M. Veeraraghavan) contains the offset (in 8-byte units) of current fragment in the original datagram. is changed to be the size of the fragment. 38 Multiple links • The ID field stays the same for all fragments of a datagram sent by a sender to allow for reassembly • The fragment offset is relative to the datagram sent by the sender. • Two fragments created on X.25 link (offsets 0, 69) – 576 – 20 (IP header) = 556; 552 divides by 8 as 69. • Each is fragmented further on the PPP link – ID stays the same on all fragments – Fragment offset on the second set of fragments is relative to the original (0, 34, 68, 69, 103) • 296-20=276; 272/8 = 34 IP datagram sent has a payload of 1000 bytes © Jörg Liebeherr (modified by M. Veeraraghavan) X.25 Router (MTU=576) 1 PPP Router (MTU=296) 2 39 Configuring a Network Interface • The ifconfig command is used for setting and testing network interfaces (in Unix systems) that run TCP/IP • Ifconfig must be run at boot time to initialize the network interfaces. • Ifconfig -a plots a report on all interfaces. : aida:/ ; ifconfig -a ed1: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX, MULTICAST> mtu 1500 inet 128.238.42.114 netmask 0xffffff00 broadcast 128.238.42.255 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 inet 127.0.0.1 netmask 0xff000000 © Jörg Liebeherr (modified by M. Veeraraghavan) 40 Configuring a Network Interface • The netstat command plots (a lot of) network related data structures in the operating system. • Netstat -i plots information on the network interfaces. : aida:/ ; netstat -i Name Mtu Network Address ed1 1500 128.238.42.114 aida lo0 16384 your-net localhost © Jörg Liebeherr (modified by M. Veeraraghavan) Ipkts Ierrs Opkts Oerrs Coll 2394482 35664 346880 223 119591 153 0 153 0 0 41