cs398 Lecture Notes Spring 2000 Week 10, Tuesday For today you should have read Paxson's paper. For Thursday you should prepare for the exam, and also write answers for questions 24, 28, 38 and 44. The exam will cover all of Chapter 4, including material in these notes that we don't get through today! ARP ---- Throwback topic: visible ARP! CIDR ---- Classless interdomain routing. We have already blurred the line between the network part of an IP address and the host part. CIDR does the same thing, except in the other direction. If you (a router) use only a prefix of the network part, and ignore the low order bits, you are effectively aggregating a bunch of networks. Anything that starts with 137.0011 is going to the same place. If you hand out IP addresses in clever ways, you can make this work. For example, give a set of contiguous, power-of-two addresses to a network servive provider and let them hand out network addresses to customers. For the point-of-view of other networks, you can send packets for any of MCIs customers to the same place. This is sometimes called supernetting, since you are taking a bunch of network and treating them as one big unit. CIDR prefixes can be any length. Routers match IP addresses with entries in the forwarding table by choosing the longest prefix match. There might be something like: For example, maybe Denmark is one big supernet, but it includes networks in Denmark but also in Greenland. A router in Reykjavik might have entries that say... Anything going to Denmark, send it here. Except things in Greenland (a Danish colony), which go somewhere else. BGP --- That's still not good enough. Even with CIDR, there are still something like 50,000 prefixes out there that every router would have to know (and that was a couple of years ago). 1) the world is broken into AUTONOMOUS SYSTEMS. Forget about getting packets to the right network; just get them to the right AS. 2) most AS don't participate in interdomain routing, so that simplifies the routing process if not the forwarding process (we can assign a unique ID to all the transit AS) 3) forget about minimal paths, just try to get a loop-free path 4) appoint only one router in each AS to participate in routing -- the speaker 5) when you advertise a path, advertise the complete path so that someone deciding whether to use it can check for loops. 6) withing each AS, aggregating works well because finding a good path means finding the right border router, and there usually aren't that many per AS Injection --------- In a stub AS, all the routers know that the border router is the default router. (I don't understand why the book indicates that this information is injected by the border router into the intradomain routing process.) In a multihomed AS, is it actually useful for the border routers to advertise routes (with local costs) to the other routers in the domain, so that internal routers can choose the best border router for a given destination from a given place in the AS. In a transit AS, you might want to use IBGP, which uses BGP to identify the best border router and intradomain routing to get there. NAT --- NAT is evil. Instead of maintaining the very desireable property of globally unique addresses, NAT makes it possible to hand out addresses within an AS that are not unique. The often begin with 10. Imagine that Colby got a single Class C address. Within campus, we use addresses that begin with 10, so there are 2^24 local addresses. Other people might be using the same ones elsewhere. Somewhere between us and the outside world is a NAT box. It translates our local addresses into globally unique addresses, using our pool of 256 Class C addresses. As long as there are no more than 256 people on campus trying to send or receive packets to or from off campus, we're fine. Otherwise we might have to queue for a free UID. Other (big) problem. Embedded addresses. NAT box has to know when and how to translate addresses that are embedded inside messages, according to higher-level protocols. NAT is evil. IPv6 ---- Need to change the size of addresses. Therefore... Need to change the size/format of the header. Therefore... All bets are off! It's a free-for-all! Step right up, pile on the cruft! IPv6 has been acting as a feature filter for a decade. Some of the good ideas (except big addresses) have been implemented in IPv4. That may have delayed actual implementation. (What is anarchy, and what is the implication for Internet?) Addressing ---------- 128 bits, one address for every atom in the universe. Even with suboptimal allocation, that's 1500/square foot. Notation: colon-separated 4-digit hex numbers Aggregatable Global Unicast Address ----------------------------------- Aggregatable: you can use CIDR because they are handed out such that common prefix implies common route. Global: globally unique Unicast: this address identifies a single machine (not a set of machines) IPv4-compatible IPv6 address: zero extend the IPv4 address. even IPv4 routers can refer to you. IPv4-mapped IPv6 address: prefix FF and then zero-extend IPv6 routers refer to you this way, but you are clueless. Transition ---------- Goal: hosts and routers that only understand IPv4 can continue to lead productive lives. You just have to talk LOUDLY AND SLOWLY. For a long time (maybe forever), new routers will be expected to be bilingual (dual stacks). To get IPv4 packets from one IPv6 compliant zone to another, we can use tunneling. Remember? The last IPv6 router wraps the packet inside an IPv4 packets and forwards it to the first IPv6 router at the destination. Any IPv6 router or host along the way can do the unpacking, as long as there are no more IPv4 routers. If the recipient has an IPv4-mapped IPv6 address, then and IPv6 router or host can do the unwrapping and generate an IPv4 header with no prior configuration. Otherwise, the wrapper has to know the IPv4 address of either the recipient or an IPv6 router between the recipient and the last IPv4 router. Aggregration ------------ Internet has a natural (intrinsic) hierarchy: A small number of direct providers (backbones) connected to A larger number of indirect providers connected to A very large number of subscribers (nontransit AS). And so... God assigns prefixes to registries (gubment or NGO) Registries assign prefixes to direct providers. Direct providers assign prefixes to indirect providers. Indirect providers assign prefixes to subscribers (like Colby) Subscribers hand out the rest according to local policy. See the picture on page 335. There is a natural mapping between aggregated addresses and trees. Packet format ------------- Version. Traffic class: QoS Flow label: remember day one we talked about multiple flows between the same pair of machines? (Why would the net care which flow a packet belonged to?) PayloadLen NextHeader: either an indicator of options to follow, or a protocol identifier. HopLimit = ttl 40 bytes total! Autoconfiguration ----------------- Currently, a new host needs to know: It's IP address, the local subnet mask, the address of a name server. DHCP servers can solve the first problem. Similar approach might solve the second, but: 1) depends on the consistency and availability of a server! Instead, we can use a unique interfece ID (like an Ethernet address) as a host ID and get the network address by snooping.