290 likes | 410 Vues
G54ACC Advanced Computer Communications. IP Networking Ho Sooi Hock. Contents. Communication Scenarios local network communication with ARP remote network communication with routing and ARP IP Fragmentation Auto-configuration Routing Recap. Question: how to determine
E N D
G54ACCAdvanced Computer Communications IP Networking Ho Sooi Hock
Contents • Communication Scenarios • local network communication with ARP • remote network communication with routing and ARP • IP Fragmentation • Auto-configuration • Routing Recap
Question: how to determine interface’s MAC address, knowing its IP address? ARP: Address Resolution Protocol ARP table: each IP node (host, router) on LAN has table • IP/MAC address mappings for some LAN nodes: < IP address; MAC address; TTL> • TTL (Time To Live): time after which address mapping will be forgotten (typically 20 min) 137.196.7.78 1A-2F-BB-76-09-AD 137.196.7.23 137.196.7.14 LAN 71-65-F7-2B-08-53 58-23-D7-FA-20-B0 0C-C4-11-6F-E3-98 137.196.7.88
A wants to send datagram to B B’s MAC address not in A’s ARP table. A broadcasts ARP query packet, containing B's IP address dest MAC address = FF-FF-FF-FF-FF-FF all nodes on LAN receive ARP query B receives ARP packet, replies to A with its (B's) MAC address frame sent to A’s MAC address (unicast) A caches (saves) IP-to-MAC address pair in its ARP table until information becomes old (times out) soft state: information that times out (goes away) unless refreshed ARP is “plug-and-play”: nodes create their ARP tables without intervention from net administrator ARP: Same LAN
111.111.111.110 E6-E9-00-17-BB-4B 222.222.222.222 49-BD-D2-C7-56-2A Addressing: Routing to Another LAN walkthrough: send datagram from A to B via R • focus on addressing – at IP (datagram) and MAC layer (frame) • assume A knows B’s IP address • assume A knows IP address of first hop router, R (how?) • assume A knows R’s MAC address (how?) B A R 111.111.111.111 74-29-9C-E8-FF-55 222.222.222.220 1A-23-F9-CD-06-9B 222.222.222.221 111.111.111.112 88-B2-2F-54-1A-0F CC-49-DE-D0-AB-7D
MAC src: 74-29-9C-E8-FF-55 MAC dest: E6-E9-00-17-BB-4B IP src: 111.111.111.111 IP dest: 222.222.222.222 IP Eth Phy 111.111.111.110 E6-E9-00-17-BB-4B 222.222.222.222 49-BD-D2-C7-56-2A Addressing: Routing to Another LAN • A creates IP datagram with IP source A, destination B • A creates link-layer frame with R's MAC address as dest, frame contains A-to-B IP datagram B A R 111.111.111.111 74-29-9C-E8-FF-55 222.222.222.220 1A-23-F9-CD-06-9B 222.222.222.221 111.111.111.112 88-B2-2F-54-1A-0F CC-49-DE-D0-AB-7D
MAC src: 74-29-9C-E8-FF-55 MAC dest: E6-E9-00-17-BB-4B IP Eth Phy IP src: 111.111.111.111 IP dest: 222.222.222.222 IP Eth Phy 111.111.111.110 E6-E9-00-17-BB-4B 222.222.222.222 49-BD-D2-C7-56-2A Addressing: Routing to Another LAN • frame sent from A to R • frame received at R, datagram removed, passed up to IP B A R 111.111.111.111 74-29-9C-E8-FF-55 222.222.222.220 1A-23-F9-CD-06-9B 222.222.222.221 111.111.111.112 88-B2-2F-54-1A-0F CC-49-DE-D0-AB-7D
IP Eth Phy MAC src: 1A-23-F9-CD-06-9B MAC dest: 49-BD-D2-C7-56-2A IP Eth Phy IP src: 111.111.111.111 IP dest: 222.222.222.222 111.111.111.110 E6-E9-00-17-BB-4B 222.222.222.222 49-BD-D2-C7-56-2A Addressing: Routing to Another LAN • R forwards datagram with IP source A, destination B • R creates link-layer frame with B's MAC address as dest, frame contains A-to-B IP datagram B A R 111.111.111.111 74-29-9C-E8-FF-55 222.222.222.220 1A-23-F9-CD-06-9B 222.222.222.221 111.111.111.112 88-B2-2F-54-1A-0F CC-49-DE-D0-AB-7D
IP Eth Phy MAC src: 1A-23-F9-CD-06-9B MAC dest: 49-BD-D2-C7-56-2A IP src: 111.111.111.111 IP dest: 222.222.222.222 111.111.111.110 E6-E9-00-17-BB-4B 222.222.222.222 49-BD-D2-C7-56-2A Addressing: Routing to Another LAN • R forwards datagram with IP source A, destination B • R creates link-layer frame with B's MAC address as dest, frame contains A-to-B IP datagram B A R 111.111.111.111 74-29-9C-E8-FF-55 222.222.222.220 1A-23-F9-CD-06-9B 222.222.222.221 111.111.111.112 88-B2-2F-54-1A-0F CC-49-DE-D0-AB-7D
IP Datagram Format IP protocol version Number 32 bits total datagram length (bytes) type of service head. len header length ver length for fragmentation/ reassembly fragment offset “type” of data flgs 16-bit identifier max number remaining hops (decremented at each router) upper layer time to live Internet checksum 32 bit source IP address 32 bit destination IP address upper layer protocol to deliver payload to E.g. timestamp, record route taken, specify list of routers to visit. Options (if any) data (variable length, typically a TCP or UDP segment)
IP Header MTU = Maximum Transmission Unit • Total length field (16 bits) • max total length 216-1 = 65535 bytes • max data = 65535 – header length • Can you really send that much? • link layer might not be enough to handle that much; various link layer technologies have different limits known as MTU • as it pass over various link layers, IP datagram will be fragmented if necessary • total length field will change when fragmented
network links have MTU (max.transfer size) - largest possible link-level frame. different link types, different MTUs e.g.. Ethernet maximum is 1500 bytes, FDDI maximum is 4500 bytes large IP datagram divided (“fragmented”) within net “reassembled” only at final destination (even if pass over other links that could handle larger datagram) May be fragmented multiple times One fragment dropped => entire datagram dropped IP Fragmentation & Reassembly fragmentation: in: one large datagram out: 3 smaller datagrams reassembly
IP Header: Fragmentation • Fields to manage fragmentation • Identification (16 bits) • “Unique ID” for datagram • Original spec said transport layer would set • Flags (3 bits) • 1 bit used to say whether there are more fragments following this one in the original datagram • 1 bit used to say “do not fragment” (drop and send error message back to source if need to fragment) • Fragment Offset (13 bits) • Give offset of data in this fragment into original datagram • Because it is 3 bits less than the total length field of the IP header, fragment length must be in multiples of 8
length =1040 length =4000 length =1500 length =1500 ID =x ID =x ID =x ID =x fragflag =0 fragflag =1 fragflag =0 fragflag =1 offset =0 offset =370 offset =0 offset =185 one large datagram becomes several smaller datagrams IP Fragmentation, Reassembly example: • 4000 byte datagram • MTU = 1500 bytes 1480 bytes in data field offset = 1480/8
Start of header Ident = x 0 Offset = 0 Rest of header (a) 1400 data bytes Start of header Ident = x 1 Offset = 0 Rest of header 512 data bytes (b) Start of header Ident = x 1 Offset = 64 Rest of header 512 data bytes Start of header Ident = x 0 Offset = 128 Rest of header 376 data bytes Example of Fragmentation & Reassembly
Alternatives to Fragmentation? • IP wants to be able to run anywhere: make packet size as small as the minimum packet size anywhere along a route • waste bandwidth! • Look before you leap • During connection establishment, receiver may specify a max segment size (MSS) • to avoid overhead of fragmentation and reassembly, hosts often send a series of probe packets to determine the smallest MTU along a route • this is known as path MTU discovery.
IP addresses: How to Set One? Q: How does a host get IP address? • hard-coded by system admin in a file • Windows: control-panel->network->configuration->tcp/ip->properties • UNIX: /etc/rc.config • DHCP:Dynamic Host Configuration Protocol: dynamically get address from a server • “plug-and-play” • other parameters: mask, DNS and default gateway
routing algorithm local forwarding table header value output link 0100 0101 0111 1001 3 2 2 1 1 0111 2 3 value in arriving packet’s header Interplay Between Routing and Forwarding • forwarding: move packets from router’s input to appropriate router output • routing: determine route taken by packets from source to destination. • routing algorithms
Q: global or decentralized information? global: all routers have complete topology, link cost info “link state” algorithms decentralized: router knows physically-connected neighbors, link costs to neighbors iterative process of computation, exchange of info with neighbors “distance vector” algorithms Q: static or dynamic? static: routes change slowly over time dynamic: routes change more quickly periodic update in response to link cost changes Routing Algorithm Classification
Dijkstra’s algorithm net topology, link costs known to all nodes accomplished via “link state broadcast” all nodes have same info computes least cost paths from one node (‘source”) to all other nodes gives forwarding table for that node iterative: after k iterations, know least cost path to k dest.’s notation: c(x,y): link cost from node x to y; = ∞ if not direct neighbors D(v): current value of cost of path from source to dest. v p(v): predecessor node along path from source to v N': set of nodes whose least cost path definitively known A Link-State Routing Algorithm
Dijsktra’s Algorithm 1 Initialization: 2 N' = {u} 3 for all nodes v 4 if v adjacent to u 5 then D(v) = c(u,v) 6 else D(v) = ∞ 7 8 Loop 9 find w not in N' such that D(w) is a minimum 10 add w to N' 11 update D(v) for all v adjacent to w and not in N' : 12 D(v) = min( D(v), D(w) + c(w,v) ) 13 /* new cost to v is either old cost to v or known 14 shortest path cost to w plus cost from w to v */ 15 until all nodes in N'
Dijkstra’s Algorithm: Example 9 11,w 14,x 11,w ∞ ∞ ∞ 3,u 5,u 5,u 6,w 6,w 7,u 7 5 4 8 3 w u y x v z 2 3 4 7 10,v 14,x D(v) p(v) D(w) p(w) D(x) p(x) D(y) p(y) D(z) p(z) Step N' u 0 uw 1 uwx 2 uwxv 3 uwxvy 4 12,y uwxvyz 5 notes: • construct shortest path tree by tracing predecessor nodes • ties can exist (can be broken arbitrarily)
Distance Vector Algorithm Bellman-Ford equation let dx(y) := cost of least-cost path from x to y then dx(y) = min {c(x,v) + dv(y) } v cost from neighbour v to destination y cost to neighbour v min taken over all neighbours v of x
5 3 5 2 2 1 3 1 2 1 z x w u y v Bellman-Ford Example clearly, dv(z) = 5, dx(z) = 3, dw(z) = 3 B-F equation says: du(z) = min { c(u,v) + dv(z), c(u,x) + dx(z), c(u,w) + dw(z) } = min {2 + 5, 1 + 3, 5 + 3} = 4 node achieving minimum is next hop in shortest path, used inforwarding table
Distance Vector Algorithm key idea: • from time-to-time, each node sends its own distance vector estimate to neighbours • when x receives new DV estimate from neighbour, it updates its own DV using B-F equation: Dx(y) ← minv{c(x,v) + Dv(y)} for each node y ∊ N • under minor, natural conditions, the estimate Dx(y) converge to the actual least cost dx(y)
iterative, asynchronous:each local iteration caused by: local link cost change DV update message from neighbor distributed: each node notifies neighbors only when its DV changes neighbors then notify their neighbors if necessary Distance Vector Algorithm each node: waitfor (change in local link cost or msg from neighbor) recompute estimates if DV to any dest has changed, notify neighbors
2 1 7 z x y Dx(z) = min{c(x,y) + Dy(z), c(x,z) + Dz(z)} = min{2+1 , 7+0} = 3 Dx(y) = min{c(x,y) + Dy(y), c(x,z) + Dz(y)} = min{2+0 , 7+1} = 2 node x table cost to cost to x y z x y z x 0 2 7 x 0 3 2 y y 2 0 1 from ∞ ∞ ∞ from z z 7 1 0 ∞ ∞ ∞ node y table cost to x y z x ∞ ∞ ∞ 2 0 1 y from z ∞ ∞ ∞ node z table cost to x y z x ∞ ∞ ∞ y from ∞ ∞ ∞ z 7 1 0 time
Dx(z) = min{c(x,y) + Dy(z), c(x,z) + Dz(z)} = min{2+1 , 7+0} = 3 2 1 7 z x y Dx(y) = min{c(x,y) + Dy(y), c(x,z) + Dz(y)} = min{2+0 , 7+1} = 2 node x table cost to cost to cost to x y z x y z x y z x 0 2 7 x 0 3 2 x 0 2 3 y y 2 0 1 from ∞ ∞ ∞ y from 2 0 1 from z z 7 1 0 ∞ ∞ ∞ z 3 1 0 node y table cost to cost to cost to x y z x y z x y z x ∞ ∞ x 0 2 7 ∞ 2 0 1 x 0 2 3 y y 2 0 1 y from from 2 0 1 from z z ∞ ∞ ∞ 7 1 0 z 3 1 0 cost to cost to node z table cost to x y z x y z x y z x 0 2 7 x 0 2 3 x ∞ ∞ ∞ y y 2 0 1 from y 2 0 1 from from ∞ ∞ ∞ z z z 3 1 0 3 1 0 7 1 0 time time
Acknowlegments Some slides are adopted from the following: TCP/IP Protocol Suite by Behrouz A.Forouzan, Sophia Chung Fegan Computer Networking: A Top-Down Approach Featuring the Internet by James F. Kurose and Keith W. Ross