Internet Engineering Task Force Jun-ichiro itojun Hagino INTERNET-DRAFT IIJ Research Laboratory Expires: March 4, 2001 K. Ettikan Multimedia University September 4, 2000 An analysis of IPv6 anycast draft-itojun-ipv6-anycast-analysis-00.txt Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as ``work in progress.'' Distribution of this memo is unlimited. The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. Abstract The memo tries to identify the problems and issues in the use of IPv6 anycast [Hinden, 1998] . The goals of the draft are (1) to understand IPv6 anycast better, (2) to provide guidelines for people trying to deploy anycast services, and (3) to suggest updates to IPv6 anycast protocol specification. The document was made possible by input from ipngwg DNS discovery design team. 1. IPv6 anycast "Anycast" is a communication model for IP, just like unicast and multicast are. RFC1546 [Partridge, 1993] documents IPv4 anycast, and it defines the term "anycast". HAGINO, ETTIKAN Expires: March 4, 2001 [Page 1] DRAFT Analysis of IPv6 anycast September 2000 Anycast can be understood best by comparing with unicast and multicast. IP unicast allows a source device to transmit IP datagrams to a single destination device. The destination device is identified by an unicast address. IP multicast allows a source device to transmit IP datagrams to a group of destination devices. The destination devices are identfied by a multicast group, and we use a multicast address to identify the multicast group. IP anycast allows a source device to transmit IP datagrams to a single destination device, out of a group of destination devices. IP datagram will reach the topologically-closest destination device in the set of destination devices. The source device does not need to care about how to pick the closest destination device, as the routing system will figure it out (in other words, the source device has no control over the selection). The set of destionation devices is identified by an anycast address. Anycast was adopted by IPv6 specification suite. RFC2373 [Hinden, 1998] defines the IPv6 anycast address, and its constraints in the usage. To give an outline, RFC2373 defines IPv6 anycast like below: o IPv6 anycast address is curved out of IPv6 unicast address space. IPv6 anycast address is basically not distinguishable from IPv6 unicast addresses. This is different from experimental IPv4 anycast [Partridge, 1993] , where anycast address is distinguishable from unicast addresses. o IPv6 anycast address can be assigned to IPv6 routers only. This is to avoid injecting host routes for IPv6 anycast destination, into IPv6 cloud. o IPv6 anycast address can not be put into IPv6 source address. This is basically because an IPv6 anycast address does not identify single source node. The following sections try to follow RFC2373 restrictions. 2. Terminology Throughout the document, we will use the following terminology: Anycast server A server which is assigned an anycast address (or addresses). A service is provided by a set of IPv6 TCP/UDP servers, where the server's address is identified by using a single anycast address. There can be multiple anycast servers, with the same anycast address. Clients will reach one of the servers based on IPv6 anycast routing. HAGINO, ETTIKAN Expires: March 4, 2001 [Page 2] DRAFT Analysis of IPv6 anycast September 2000 3. IP layer constraints We should not fragment packets, if the packet has anycast address in the IPv6 destination address field. This is because the fragments may reach multiple different destinations. In general, we cannot use IPsec with packets with anycast address. We can use no more than 1 packet with anycast destination address, in a set of protocol exchange, If we use more than 2 packets, 1st and 2nd packet may reach different anycast server and may cause unexpected results. For example, consider the following packet exchange. The following exchange can easily lead us to failure, as we are not sure if the 1st and 2nd anycast packet have reached the same server. If the protocol is completely stateless, and we can consider the first roundtrip and second roundtrip separate, it is okay. query: client unicast (Cu) -> server anycast (Sa) reply: server unicast (Su) -> client unicast (Cu) query: client unicast (Cu) -> server anycast (Sa) It may reach a different server! reply: server unicast (Su) -> client unicast (Cu) For stateful protocols, it is suggested to use anycast for the first packet in the exchange, to discover unicast address of the (nearest) server. After we have discovered the unicast address of the server, we should use the server's unicast address for the protocol exchange. As IPv6 anycast addresses are not distinguishable from IPv6 unicast addresses, in general, it is not easy for a sender to determine if the destination address is anycast address or not. We may need to have an explicit configuration to help the determination. 4. UDP constraints Many of the UDP-based protocols use source and destination address pair to identify the traffic. One example would be DNS over UDP; most of the DNS client implementation checks if the source address of the reply is the same as the destination address of the query, in the fear of the fabricated reply from bad guy. query: client unicast (Cu) -> server unicast (Su*) reply: server unicast (Su*) -> client unicast (Cu) addresses marked with (*) must be equal. If we use server's anycast address as the destination of the query, we cannot meet the requirement due to RFC2373 restriction (anycast address cannot be used as the source address of packets). Effectively, client will consider the reply is fabricated (hijack attempt), and drops the packet. HAGINO, ETTIKAN Expires: March 4, 2001 [Page 3] DRAFT Analysis of IPv6 anycast September 2000 query: client unicast (Cu) -> server anycast (Sa) reply: server unicast (Su) -> client unicast (Cu) One way to circumvent this issue is to use home address option on the reply. In this way, UDP layer would consider that the packet is from server's anycast address, and the exchange will success. The exchange will be friendly with codebase which checks the source address of the reply. query: client unicast (Cu) -> server anycast (Sa) reply: server unicast (Su) -> client unicast (Cu) with server anycast (Sa) in home address option Note that, however, bad guys can still inject fabricated results to the client. It does not make a perfect protection, even if we check source address of the reply. It is suggested to verify the authenticity of the reply, by using upper-layer security mechanisms like DNSSEC (note that we cannot use IPsec here). 5. TCP constraints We cannot simply use anycast for TCP exchanges, as we identify a TCP connection by using address/port pair for the source/destination node. It is desired to implement some of the following, to enable the use of IPv6 anycast in TCP. Note, however, security requirement is rather complicated for the following protocol modifications. o Define a TCP option which lets us to switch peer's address from IPv6 anycast address, to IPv6 unicast address. There are couple of proposals in the past. o Define an additional connection setup protocol that resolves IPv6 unicast address from IPv6 anycast address. We first resolve IPv6 unicast address using the new protocol, and then, make a TCP connection using the IPv6 unicast address. IPv6 node information query/reply [Crawford, 2000] could be used for this. 6. Service content restrictions If we are to assign an IPv6 anycast address to servers, those servers must provide uniform services. For example, if server A and server B provides different quality of service, and people wants to differentiate between A and B, we cannot use single IPv6 anycast address to identify both A and B. 7. Routing constraints RFC2373 suggests to assign anycast addresses to a node, only when the node is a router. This is to avoid injecting host routes for anycast HAGINO, ETTIKAN Expires: March 4, 2001 [Page 4] DRAFT Analysis of IPv6 anycast September 2000 address, into the IPv6 routing system. If no hosts have anycast address on them, it is easier for us to route an IP datagram to anycast destination. We just need to follow existing routing entries, and we will eventually hit a router that has the anycast address. If we follow RFC2373 restriction strictly, we could only place anycast servers onto routers. If we try to ease the restriction and assign anycast addresses to IPv6 hosts (non-routers), we would need to inject host routes for the anycast addresses, with prefix length set to /128, into the IPv6 routing system. We will inject host routes from each of the anycast servers, to make packets routed to a topologically-closest anycast server. The impact of host routes depends on the scope of the anycast address usage. For example, if we use site-local anycast address to identify a set of servers, the propagation of host route is limited inside the site. If the site administration policy permits it, and the site routers can handle the additional routing entries, the additional host routes are okay. So, we can safely assign anycast address to non-router nodes (hosts), and inject host route for the anycast address, into the site IPv6 routing system. It is still questionable to inject host routes into worldwide IPv6 routing system, as it has problems in terms of scalability. Also, because of IPv6 route aggregation rules [Rockell, 2000] it is normally impossible to propagate IPv6 host routes worldwide. 8. Summary To deploy anycast servers, the following items should be satisfied: o For an anycast address, anycast servers must provide the identical service. o If we are to deploy worldwide uniform services, we should use well- known scoped (site-local or link-local) anycast address. o If we are to use TCP or UDP, interaction of anycast with TCP and UDP must carefully diagnosed. 9. Security consideration The document should introduce no new security issues. References Hinden, 1998. R. Hinden and S. Deering, "IP Version 6 Addressing Architecture" in RFC2373 (July 1998). ftp://ftp.isi.edu/in-notes/rfc2373.txt. HAGINO, ETTIKAN Expires: March 4, 2001 [Page 5] DRAFT Analysis of IPv6 anycast September 2000 Partridge, 1993. C. Partridge, T. Mendez, and W. Milliken, ""Host Anycasting Service"" in RFC1546 (November 1993). ftp://ftp.isi.edu/in-notes/rfc1546.txt. Crawford, 2000. Matt Crawford, ""IPv6 Node Information Queries"," internet draft (August 2000). work in progress material. Rockell, 2000. Rob Rockell and Bob Fink, ""6Bone Backbone Routing Guidelines"" in RFC2772 (February 2000). ftp://ftp.isi.edu/in-notes/rfc2772.txt. Change history None. Author's address Jun-ichiro itojun HAGINO Research Laboratory, Internet Initiative Japan Inc. Takebashi Yasuda Bldg., 3-13 Kanda Nishiki-cho, Chiyoda-ku,Tokyo 101-0054, JAPAN Tel: +81-3-5259-6350 Fax: +81-3-5259-6351 Email: itojun@iijlab.net K. Ettikan Faculty of Information Technology, Multimedia University (MMU) Jalan Multimedia 63100 Cyberjaya Selangor, Malaysia Tel: +60-3-8312-5403 Fax: +60-3-8312-5264 Email: ettikan@mmu.edu.my HAGINO, ETTIKAN Expires: March 4, 2001 [Page 6]