Tunneling Ipv6 Through NAT with Teredo Mechanism
Total Page:16
File Type:pdf, Size:1020Kb
Tunneling IPv6 through NAT with Teredo Mechanism Shiang-Ming Huang, Quincy Wu, Yi-Bing Lin Department of Computer Science and Information Engineering National Chiao Tung University {smhuang,solomon,liny}@csie.nctu.edu.tw many Internet service providers, especially WLAN Abstract (wireless local area network) and GPRS (general packet Teredo is a service that enables hosts located behind radio service), usually provide private IPv4 addresses to one or more IPv4 NATs to obtain IPv6 connectivity by their customers, and NAT (network address translation) tunneling packets over IPv4 UDP. Under the national [4] is utilized to establish Internet connectivity. Hence, IPv6 deployment project in Taiwan, we developed the IPv6 users behind the NAT would be unable to establish first Linux-based Teredo service in 2003. In this paper, tunnels to other IPv6 networks. This turns out to be one we explain how IPv6 candidates located behind NATs of the major obstacles in IPv6 deployment. can enlist the help of “Teredo servers” and “Teredo Several solutions for tunneling IPv6 packets through relays” to learn their “global addresses” and to obtain NAT have been proposed, including VPN (virtual private connectivity, and how clients, servers and relays can be network) and UDP tunnel [5]. These solutions provide organized in Teredo networks. We also describe in details IPv6 connectivity for private hosts. However, they have our strategies for implementing Teredo server and Teredo the scalability problem because manual configuration is relay under Linux, and show the performance of different required for the user end of a tunnel. This configuration Teredo implementations in public domain. is not an easy task for common users, and is not suitable for ISP to perform large deployment. Moreover, in these approaches, only one static tunnel server is assigned to Keywords: IPv6, Teredo, Tunneling, NAT. relay all IPv6 packets of the private network. This tunnel server may potentially become the bottleneck, and it is 1. Introduction very likely that the traffic follows a “dog leg” route from the source to the tunnel server and then to the destination After three decades of evolution in Internet that is not an optimal routing path. Recently, an technologies, IETF (Internet Engineering Task Force) enhanced model of UDP tunnel called “Silkroad” [6] was has developed Internet Protocol version 6 (IPv6) as the also proposed to alleviate the bottleneck issue. However, next generation Internet protocol. In comparison with the some critical algorithms are still missing in the draft to existing Internet Protocol version 4 (IPv4), IPv6 provides have a thorough investigation on its performance. To larger address space, more efficient routing mechanism, solve the above issues, Teredo [7] was proposed as an better support to security mechanism and quality of automatic tunneling mechanism that is capable of service (QoS). traversing NATs. During the IPv6 deployment stage, many existing IP Under the support of NICI (National Information and networks remain to support IPv4 only. Because each Communication Initiative), we developed the first site may deploy IPv6 in a highly diffuse and incremental Linux-based Teredo to speed up the IPv6 deployment in fashion, it is unrealistic to assume a single Flag Day to Taiwan. In this paper, we shall introduce the Teredo upgrade all IPv4 networks to IPv6. To facilitate the mechanism that helps tunneling IPv6 through NAT, and transition for IPv4 to IPv6 migration, tunneling then describe our implementation of Teredo and the techniques are utilized as a routing infrastructure to carry performance measurement. IPv6 traffic through IPv4 networks [1]. In existing IPv6-in-IPv4 tunneling mechanisms such as configured tunnel & automatic tunnel [1], 6to4 tunnel [2] and tunnel broker [3], both end points of a tunnel must possess public IPv4 addresses. Although public IPv4 addresses may be available in normal scenarios, 1 Proceedings of the 19th International Conference on Advanced Information Networking and Applications (AINA’05) 1550-445X/05 $20.00 © 2005 IEEE IPv4 Internet Teredo server IPv6 UDP: 3544 (e) (a) IPv4: 3.3.3.3 IPv6 over IPv4 UDP IPv6: 2001:3:3:3::3 (f) NAT Public IPv4: 1.1.1.1 Private IPv4: 192.168.0.1 (c) Advertising (b) Private IPv4 Teredo relay 3FFE:831f::/32 (h) network UDP: 3544 (d) IPv4: 2.2.2.2 Teredo client IPv6: 2001:2:2:2::2 IPv6 Internet IPv6 host UDP: 4096 IPv6: 2001:4:4:4::4 IPv4: 192.168.0.2 (g) IPv6: 3FFE:831F:0303:0303:8000:F7FF:FEFE:FEFE Figure 1. Teredo architecture Formatted: Bullets and Numbering As an automatic tunneling mechanism, Teredo 2. The Teredo solution embeds the NAT traversal information in its 128-bit IPv6 Teredo provides IPv6 connectivity for IPv6 hosts on address. A Teredo IPv6 address format consists of the private IPv4 networks with NAT by tunneling IPv6 following fields (see Figure 3). The “3FFE:831F::/32” packets over IPv4 UDP. The Teredo architecture is field specifies the IPv6 address prefix of Teredo. The illustrated in Figure 1, which consists of a Teredo server “Teredo server IPv4 address” field indicates the IPv4 (Figure 1 (a)), several Teredo clients (Figure 1 (b)) and address of a Teredo server. The “Flag” filed indicates the Teredo relays (Figure 1 (c)). A Teredo client provides a type of NAT (“full cone” or not) [8]. The “Obfuscated Teredo tunnel interface for an IPv6 host on a private IPv4 mapped public UDP port” and the “Obfuscated mapped network (Figure 1 (d)) that connects to IPv4 Internet public IPv4 address” fields indicate the public trasnport (Figure 1 (e)) with NAT (Figure 1 (f)). A Teredo server address on NAT that is mapped from the Teredo client’s assists a Teredo client to obtain IPv6 address for IPv6 private transport address. Internet access. The Teredo server is stateless and only The necessity for the obfuscation mechanism is that, has to handle a small volume of traffic. A Teredo relay some “smart NAT” scans payload of pass-through IPv4 encapsulates IPv6 packets addressed to Teredo clients in packets and translates any 32-bit substring in the payload IPv4 UDP, and decapsulates IPv4 UDP packets sent from that matches the address to be translated in the IPv4 the Teredo client to IPv6. Every Teredo relay advertises a header (or translates any 16-bit substring in the payload 3FFE:831F::/32 IPv6 address prefix to IPv6 Internet that matches the port to be translated in the TCP/UDP (Figure 1 (g)). With the advertisement, all IPv6 packets header). Therefore, to prevent these “smart NATs” from sent from different IPv6 hosts (Figure 1 (h)) to a Teredo modifying the Teredo IPv6 addresses in the encapsulated client are routed to Teredo relays closest to the packet IPv4 UDP packets, obfuscation performs bitwise XOR sources, and therefore traffic load can be dynamically operation on the original value with 1 to “protect” it. shared among Teredo relays. A Teredo client obtains a Teredo IPv6 address from The NAT translates the private IPv4 address of all the Teredo server after performing a qualification pass-through packets according to an address mapping procedure. This procedure detects the NAT type and table. Suppose that the NAT is a “full cone” NAT [8], its informs the Teredo client about the public mapped address mapping table consists of the following fields transport address. As long as Teredo clients get Teredo (see Figure 2). IPv6 addresses, they are able to communicate with IPv6 Internet with the help of Teredo servers and Teredo relays. private IPv4 public IPv4 The details are described in an example below. private port public port address address Figure 2. Address mapping table format 2 Proceedings of the 19th International Conference on Advanced Information Networking and Applications (AINA’05) 1550-445X/05 $20.00 © 2005 IEEE Obfuscated Obfuscated mapped Teredo server IPv4 mapped 3FFE:831F::/32 Flag public address public UDP IPv4 address port 32 bits 32 bits 16 bits 16 bits 32 bits Figure 3. Teredo IPv6 address format IPv4 Internet Teredo server UDP: 3544 IPv6 IPv4: 3.3.3.3 IPv6 over IPv4 UDP 2 IPv6: 2001:3:3:3::3 Address mapping table on NAT 192.168.0.2 4096 1.1.1.1 2048 NAT Public IPv4: 1.1.1.1 Private IPv4: 192.168.0.1.1 3 IPv4 private Teredo relay UDP: 3544 network 1 IPv4: 2.2.2.2 Teredo client IPv6: 2001:2:2:2::2 IPv6 Internet IPv6 host UDP: 4096 IPv6: 2001:4:4:4::4 IPv4: 192.168.0.2 IPv6: 3FFE:831F:0303:0303:8000:F7FF:FEFE:FEFE Figure 4. Communication between a Teredo client and an IPv6 host Communication between a Teredo client and an IPv6 3FFE:831F:0303:0303:8000:F7FF:FEFE:FEFE. host is illustrated in Figure 4. In this example, the IPv4 Suppose that an IPv6 packet is delivered from an address of the Teredo server is 3.3.3.3. The NAT has two IPv6 host to a Teredo client. The detailed steps are interfaces: the WAN interface has public IPv4 address described as follows. 1.1.1.1, while the LAN interface has private IPv4 address Step 1. The IPv6 packet is sent from the IPv6 host to 192.168.0.1. The Teredo client has IPv4 address the Teredo relay. 192.168.0.2. Suppose that the Teredo client uses UDP Step 2. The Teredo relay encapsulates the IPv6 packet port 4096 to request a Teredo address from the Teredo in IPv4 UDP. The IPv4 address information and UDP Server. When this packet arrives at the NAT, the NAT port information of this packet are determined based on dynamically allocates an available UDP port (2048 in Teredo IPv6 address as follows. The source IPv4 address this example) for this connection, and creates an entry in is the IPv4 address of the Teredo relay (2.2.2.2), and the the mapping table with private transport address destination IPv4 address is the “original value” derived 192.168.0.2:4096 and public transport address from the “Obfuscated mapped public IPv4 address” field 1.1.1.1:2048.