* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download routing
Network tap wikipedia , lookup
Deep packet inspection wikipedia , lookup
Computer network wikipedia , lookup
Backpressure routing wikipedia , lookup
SIP extensions for the IP Multimedia Subsystem wikipedia , lookup
Dynamic Host Configuration Protocol wikipedia , lookup
Wake-on-LAN wikipedia , lookup
Multiprotocol Label Switching wikipedia , lookup
IEEE 802.1aq wikipedia , lookup
Zero-configuration networking wikipedia , lookup
Internet protocol suite wikipedia , lookup
Serial digital interface wikipedia , lookup
Airborne Networking wikipedia , lookup
Remote Desktop Services wikipedia , lookup
Cracking of wireless networks wikipedia , lookup
Recursive InterNetwork Architecture (RINA) wikipedia , lookup
CSS432 Routing Textbook Ch4.2 Professor: Munehiro Fukuda Augmented By Rob Nash CSS 432: Routing 1 IP on Scale Addresses are hierarchical Reduces total information storage required to forward packets Forward packets towards a single network Then deliver to the host on that network CSS 432: Routing 2 IP on Heterogeneity A under-demanding model: “best-effort” Due to this, IP has been shown to be interoperable with any type of network Even ones invented after IP Carrier Pigeons?! Zebra’s are so much cooler… http://portal.acm.org/citation.cfm?id=1147620 Don’t like IP? Aren’t compatible? Try tunneling. CSS 432: Routing 3 Terms IGPs – Interior Gateway Protocols BGPs – Border Gateway Protocols RIP - Route Information Protocol OSPF – Open Shortest Path First Protocol ARP – Address Resolution Protocol Maps IP addrs to physical adapters (MAC addrs) CSS 432: Routing 4 ARP The mechanism that translates from IP GuIDs to underlying physical adapter addressing From IP to MAC, for example CSS 432: Routing 5 What Is Routing? Forwarding vs Routing forwarding: To map a network # to an outgoing interface and some MAC information in a forwarding table. To send a packet to an interface as consulting a local and static forwarding table OSI Layer 2: data link level Implemented in specialized hardware (switch) routing: To build a dynamic routing table To update table contents in a dynamic and distributed fashion OSI Layer 3: network level (internet) Using complex distributed algorithms CSS 432: Routing 6 Overview At Node A Network as a Graph A 6 1 3 4 C 9 E 1 Next Hop B 2 E C 6 E D 2 E E 1 E F 3 E D Find lowest cost path between two nodes Static approach has shortcomings: B F Cost Goal 2 1 Destination Hardware failures Static network topology Static band width Distributed, dynamic routing algorithms Distance vector routing (RIP) Link state routing (OSPF) CSS 432: Routing 7 Distance Vector Each node maintains a set of triples (Destination, Cost, NextHop) B An initial distance vector at node A Destination Cost Next hop B 1 B C 1 C D ∞ - E 1 E F 1 F G ∞ - C A D E F CSS 432: Routing G 8 Distance Vector Exchange updates directly connected neighbors periodically (on the order of several seconds) whenever table changes (called triggered update) Each update is a list of pairs: (Destination, Cost) (C, 1, C) < (C, 2, B) (D, ∞, - ) > (D, 2, C) From F: (G, 1) D G F From C: (D, 1) C A E Update local table if receive a “better” route From B: (C,1) From B: (A, 1), (C, 1) From C: (A, 1), (B, 1), (D, 1) From E: (A, 1) From F: (A, 1), (G, 1) B (G, ∞, - ) > (G, 2, F) Refresh existing routes; delete if they are expired CSS 432: Routing Destination Cost Next hop B 1 B C 1 C D 2 C E 1 E F 1 F G 2 F 9 Routing Loop Failure-recovering scenario F detects the link to G has failed B C To G in 2 F sets distance to G to ∞ and sends an update to A To G in 3 A D A sets distance to G to ∞ A receives periodic update from C with a 2-hop path To G in 4 E To G in 1 to G G F ∞ A sets distance to G to 3 and sends update to F F sets distance to G in 4 hops via A B Count-to-infinity problem (5) To E in 4 The link from A to E fails (3) To E in 3 (2) To E in ∞ A advertises distance of infinity to E C advertise a distance of 2 to E (4) To E in ∞ (1) To E in 2 A C B decides it can reach E in 3 hops (6) To E in 5 B advertises this to A ∞ A decides it can read E in 4 hops A advertises this to C E C decides that it can reach E in 5 hops… CSS 432: Routing 10 Loop-Breaking Heuristics Set infinity to 16 Scheme: Stop an infinity loop in 16. Problem: No more 16 hops Split horizon Scheme: Don’t send a neighbor the routing information learned from this neighbor. Ex. B includes (E, 2, A) and thus doesn’t send (E, 3). Split horizon with poison reverse Scheme: Send the routing information learned from this neighbor as setting hop count to ∞. Ex. B includes (E, 2, A) and thus sends (E, ∞, A) Problem: Its slow convergence speed CSS 432: Routing 11 Routing Information Protocol (RIP) frame header 1: request 2: reply Used by routed Advertisement: 30secs Table entry timeout: 3 mins. Routing domain Addr family (net addr) Route tag Address of net 1 Cmd Port: 520 RIP Message UDP header Cmd: 1-6 datagram heaader Deleted in 60secs Subnet mask Next hop address (1-16) Distance to net 1 Addr family (net addr) Route tag Address of net 2 Unix commands Ripquery (BSD) Tcpdump (available in Linux, too) Snoop (Solaris) 25 entries CSS 432: Routing Ver Subnet mask Next hop address Distance to net 2 (1-16) 12 Link State Strategy Reliable dissemination of link-state information to all nodes over a system. Calculation of routes from the sum of all the accumulated link-state knowledge. Link State Packet (LSP) ID of the node that created the LSP A cost of link to each directly connected neighbor A sequence number (SEQNO) A time-to-live (TTL) for this packet CSS 432: Routing 13 Link State (cont) Reliable flooding Store most recent LSP from each node Forward LSP to all nodes but one that sent it Generate new LSP periodically Increment SEQNO Start SEQNO at 0 when reboot Decrement TTL of each stored LSP Discard when TTL=0 CSS 432: Routing X C A B D 14 Dijkstra’s Shortest-Path Algorithm* put (myself, 0, -) in the confirmed list Next = myself; while( true ) { for each edge (X, distance, Next) where X is N’s neighbor if neither confirmed or tentative list has (X, distance, Y) where Y != Next, put (X, distance, Next) in the confirmed list if the tentative list has (X, distance, Y) where Y != Next, and (X, distance, Y) > (X, distance, Next) Replace (X, distance, Y) with (X, distance, Next) If the tentative list is empty, exit else move the shortest edge (A, distance, B) from the tentative to the confirmed list. Next = A } //O((|E|+|V|) log |V|) time (which is dominated by O(|E| log |V|), CSS 432: Routing 15 Forward Search From the Text M = {me} For each node n in N - {me} C(n) = l(me, n) //cost function init While ( N != M ) M = M U {w} s.t. C(w) is the min w for all (N-M) for each n in (N-M) C(n) = MIN( C(n), C(w) + l(w+n)) CSS 432: Routing 16 Another OSPF Algorithm Initialize costs, and start with {me} While set M is not empty (tentative list) Pick a node from the tentative list with the lowest cost = m Move this to the confirmed list List m’s neigbors, add each to tentative list If I have a neighbor route already in my tentative list with a higher cost, replace that route CSS 432: Routing 17 Graph Theory Visually…. http://en.wikipedia.org/wiki/Dijkstra's_algorithm CSS 432: Routing 18 Dijkstra’s Shortest-Path Algorithm (A, 0, -) (A, 0, -) (B, 5, B) (C, 10, C) (E, 2, E) (F, 4, F) (A, 0, -) (E, 2, E) (B, 5, B) (C, 10, C) (F, 4, F) (A, 0, -) (E, 2, E) (F, 4, F) (C, 10, C) (B, 5, B) (A, 0, -) (E, 2, E) (F, 4, F) (C, 10, C) (B, 5, B) (G, 15, F) (A, 0, -) (E, 2, E) (B, 5, B) (F, 4, F) (C, 8, B) (G, 18, B) (A, 0, -) (E, 2, E) (B, 5, B) (F, 4, F) (C, 8, B) (G, 15, F) (A, 0, -) (E, 2, E) (B, 5, B) (F, 4, F) (C, 8, B) (G, 15, F) (A, 0, -) (E, 2, E) (B, 5, B) (F, 4, F) (C, 8, B) (D, 14, C) (G, 15, F) (A, 0, -) (E, 2, E) (B, 5, B) (F, 4, F) (C, 8, B) (D, 14, C) (G, 15, F) (A, 0, -) (E, 2, E) (B, 5, B) (F, 4, F) (C, 8, B) (D, 14, C) (G, 15, F) (A, 0, -) (E, 2, E) (B, 5, B) (F, 4, F) (C, 8, B) (D, 14, C) (G, 15, F) 5 A 3 B 10 D 2 4 F CSS 432: Routing 6 C 13 E 11 2 G 19 Open Shortest Path First Protocol (OSPF) frame header Version Type(=4) datagram heaader OSPF header Message Length SourceAddr AreaId Checksum Authentication type Authentication 0-3 Authentication 4-7 OSPF Message # of link status advertisements Options LS Age Type=1 Link-state ID Advertising router LS sequence number Link Checksum Length Header 0 Flag 0 # of links 1. Hello (reachability) 2. Database description (topology) Link ID 3. Link status request Link data 4. Link status update 5. Link status acknowledgment Metric Link type Num TOS Advertisement (header type=4) LS Age: = TTL Optional TOS information Type=1: link cost b/w routers Link-State ID = Advertising Router Seq # from the same router Link ID = the other end route ID of link Link data = used if there are two or more links to the same router Metric = link cost Link type = P2P, ethernet, etc TOS = delay-sensitive, etc CSS 432: Routing 20 OSPF Con’td Gated daemon: directly uses IP datagram. Header Type2: Database description (topology) message Used when the current Sent from an initialized topology has changed. router to another router which has a topology information LS Sequence number Used to determine which message is the latest Send a message with a new sequence number and metric= ∞ when a router or a link fails. CSS 432: Routing 21 Link State V.S. OSPF Historically, OSPF has demonstrated more desirable properties Less bandwidth usage on large networks After init, OSPF LPSs are deltas Convergence speed Rip can take 10, 30, even 60 seconds OSPF supports CIDR & netmasks CSS 432: Routing 22 Practically Speaking… RIP tells each direct neighbor about everyone So, neighbor-to-neighbor dissemination OSPF (P) tells everyone about my direct neighbors “Reliable” Flooding to all CSS 432: Routing 23 Metrics Original ARPANET metric New ARPANET metric measures number of packets enqueued on each link took neither latency or bandwidth into consideration stamp each incoming packet with its arrival time (AT) record departure time (DT) when link-level ACK arrives, compute Delay = (DT - AT) + Transmit + Latency if timeout, reset DT to departure time for retransmission link cost = average delay over some time period Fine Tuning compressed dynamic range replaced Delay with link utilization CSS 432: Routing 24 Virtual Private Networks and Tunnels Application Level A 10.0.0.1 20.0.0.1 Router Dest router Source router Router Level A 10.0.0.1 20.0.0.1 To: 20.0.0.1 To: 215.0.0.1 To: 10.0.0.2 215.0.0.1 Company Branch Company Branch To: 20.0.0.1 A 10.0.0.1 B To: 20.0.0.1 C Physical Network Level B To: 215.0.0.1 To: 215.0.0.1 Internet To: 215.0.0.1 CSS 432: Routing To: 20.0.0.1 B 20.0.0.1 25 Why VPN? 1. Security 2. Routers 3. Routers with special features such as multicasting can form a virtual network. No-IP packets 4. The final destination/contents of packet cannot be easily intercepted. Packets may be non-IP compatible packets. Mobile IPs The final destination may be a mobile computer. CSS 432: Routing 26 Mobile IP Sending host Invariant: Sending hosts want to use the same IP address mapped to a mobile host regardless of its location. Questions How does the home agent intercept a packet that is destined for the mobile agent? --- Use ARP How does the home agent then deliver the packet to the mobile host? – Use DHCP and VPN 10.0.0.3 Home agent Internet DHCP server 12.0.0.6 Mobile Host 10.0.0.9 (12.0.0.7) Mobile Host CSS 432: Routing 27 Mobile IP (Cont’d) Sending host 1. ARP request: What’s the physical addr corresponding to 10.0.0.9? 3. Packet request: sends a packet destined for 10.0.0.9 to the home agent’s MAC address 2. ARP response: sends back MAC of 10.0.0.3 instead of 10.0.0.9 1. DHCP: receives a new IP in the foreign network. 10.0.0.3 Home agent Internet DHCP server 12.0.0.6 IP tunneling: wraps the packet inside an IP header destined for the mobile host (12.0.0.7). Mobile Host 10.0.0.9 (12.0.0.7) Mobile Host 2. Care-of-address: a mobile host informs its Home agent of its original and new IPs. CSS 432: Routing 28 Reviews RIP: distance vector, routing loop and breaking heurictics OSPF: link state, Dijkstra’s shortest path algorithm VPN and mobile IP Exercises in Chapter 4 Ex. 15 (RIP) Ex. 18 (RIP) Ex. 28 (OSPF) Ex. 30 (OSPF) CSS 432: Routing 29 FTP File Transfer Protocol FTP FTP user client interface TCP port 21 for control (persistent) TCP port 20 for data transfer (not persistent) local file system FTP server remote file system Transfer file to/from remote host Client/server model Client: initiates a control TCP connection to a server on port 21. Client: sends a user ID and password as part of FTP commands. Server: authorizes the client Client: opens a data TCP connection to a server on port 20. Server: maintains state: current directory, earlier authentication. A ftp client is allowed to initiate a transfer between two ftp servers. CSS432: Applications 30 FTP FTP Commands <CRLF> delimits each command (and reply). Commands consist of four uppercase ASCII characters, some with optional arguments: USER username : sends a user identification to server. PASS password : sends the user password to the server. PASV: requests the server to send back its IP and port on which it listens to a data TCP connection from the user. LIST : ask the server to send back its current directory contents through the data connection. RETR filename : gets a file from the current remote directory. STOR filename : stores a file into the current remote directory. Each command is followed by a reply: 331 Username OK, password required 125 Data connection already open; transfer starting 425 Can't open data connection 452 Error writing file CSS432: Applications 31 FTP FTP Example [mfukuda@uw1-320-20]$ telnet ftp.tripod.com 21 Trying 209.202.240.80… Connected to ftp.tripod.com (209.202.240.80). Escape character is ‘^]’. 220 Welcome to Tripod FTP. USER css432 331 Username set to css432. Now enter your password. PASS ******** 230 User ‘css432’ logged on. LIST 425 Can’t open data connection for LIST. PASV 227 Entering Passiv Mode (209,202,240,80,195,210) // Open another xterm and telnet 209.202.240.80 50130 (=195*256+210) // Trying 209.202.240.80… // Connected to ftp.tripod.com (209.202.240.80). // Escape character is ‘^]’. // drwxr-xr-x 1 css432 Tripod 0 Sep 15 21:22 cgi-bin // -rw-r--r-1 css432 Tripod 26169 Sep 16 18:28 ttcp.c // -rw-r--r-1 css432 Tripod 8236 Sep 15 21:22 index.htm // drwxr-xr-x 1 css432 Tripod 0 Sep 16 18:33 project // Connection closed by foreign host. LIST 150 Opening ASCII mode data connection for LIST. 226 Transfer complete. QUIT 221 Goodbye Connection closed by foreign host. [mfukuda@uw1-320-20]$ _ CSS432: Applications 32 FTP passive mode TCP port 21 for control (persistent) Client request: connect( ), USER, PASS, LIST FTP client Server Reply: 220 server ready, 331 send password, 230 login ok, 425 connection timeout FTP server TCP port 20 for data transfer (one time) TCP port 21 for control (persistent) Client request: connect( ), USER, PASS, PASV, LIST FTP client Server Reply: 220 server ready, 331 send password, 230 login ok, 227 Entering Passive Mode (140,142,12,173,195,54), 226 complete FTP server TCP port 195*256 + 54 = 49974 for data transfer (one time) data CSS432: Applications 33 FTP proxy command (3’) 227 Entering Passive Mode (140,142,12,173,195,54) FTP client (1) USER, PASS, SYST (2) USER, PASS, SYST (3) TYPE I, PASV (4) TYPE I, PORT (140,142,12,173,195,54), STOR file (5) RETR file ftp> open server1 ftp> proxy open server2 ftp> proxy get file FTP Server 1 …(1) …(2) …(3)~(5) TCP port 195*256 + 54 = 49974 for data transfer (one time) FTP Server 2 data CSS432: Applications 34 Final Project Introduction FTP project is live on the site We’ll worry with the last few steps during lecture Signing our archives, etc. CSS 432: Routing 35 FTP is Fun Transfer Protocol! (If you tend to think bytes are fun) We’re making a client to interface with an existing server (a class of servers) CSS 432: Routing 36 Remote Tips You can always remote into the lab You could install Ubuntu on a USB stick Has a good ftp server to play with https://help.ubuntu.com/6.06/ubuntu/serverguide/C /ftp-server.html You write the client to interact with this server CSS 432: Routing 37 General Tips Observe Dr. Fukuda’s output It gives away hints left and right RFC 959 – light reading Telnet to port 21 Act as the client! For example, what does the server return when you issue a “USER” or “PASV” request? CSS 432: Routing 38 Telnet Line Terminators Carridge-Return, Line Feed Find this out CSS 432: Routing 39 How Many Lines Of Code? Decompose the project A A network component Resue code here from previous projects filesystem component Reuse code here if you have it! From Pseudocode to C, or Pseudocode->intermediary CSS 432: Routing language -> C 40 Overarching Strategy (0) Introduce yourself to the server (1) Relay a request to the server (2) Get a socket for data transmission See PASV (3) Exchange data in ASCII or Binary (4) Loop to (1) or QUIT CSS 432: Routing 41