How To Connect Ipv4 To Ipv6 On A Ipv2 (Ipv4) On A Network With A Pnet 2.5 (Ipvin4) Or Ipv3 (Ip V6) On An Ipv5



Similar documents
SIIT-DC: IPv4 Service Continuity for IPv6 Data Centres. Tore Anderson Redpill Linpro AS RIPE69, London, November 2014

SIIT-DC: Stateless IP/ICMP Translation for IPv6 Data Centre Environments & SIIT-DC: Dual Translation Mode

SIIT-DC: IPv4 Service Continuity for IPv6 Data Centres. Tore Anderson Redpill Linpro AS 8th Belgian IPv6 Council, Bruxelles, November 2015

IPv4 and IPv6 Integration. Formation IPv6 Workshop Location, Date

IPv6 Fundamentals: A Straightforward Approach

Firewalls und IPv6 worauf Sie achten müssen!

TR-296 IPv6 Transition Mechanisms Test Plan

Introduction to IP v6

IPv6 Associated Protocols

IPv4/IPv6 Translation: Framework. Li, Bao, and Baker

How will the Migration from IPv4 to IPv6 Impact Voice and Visual Communication?

Configuring Network Address Translation (NAT)

VDE Tagung Mobilkommunikation 2014, Osnabruck

IPv6-Only. Now? Sites. Deutscher IPv6 Kongress June 6/7, 2013 Fr ankfur t /Ger many. Holger.Zuleger@hznet.de

Getting started with IPv6 on Linux

IPv6 Security from point of view firewalls

Basic IPv6 WAN and LAN Configuration

IPv6 Fundamentals Ch t ap 1 er I : ntroducti ti t on I o P IPv6 Copyright Cisco Academy Yannis Xydas

Chapter 3. TCP/IP Networks. 3.1 Internet Protocol version 4 (IPv4)

IPv6 Security Best Practices. Eric Vyncke Distinguished System Engineer

Internet Peering, IPv6, and NATs. Mike Freedman V Networks

IPv6 Hardening Guide for Windows Servers

We will give some overview of firewalls. Figure 1 explains the position of a firewall. Figure 1: A Firewall

Campus IPv6 connection Campus IPv6 deployment

464XLAT in mobile networks

IPv6 in Axis Video Products

Internet Firewall CSIS Packet Filtering. Internet Firewall. Examples. Spring 2011 CSIS net15 1. Routers can implement packet filtering

Guide to Network Defense and Countermeasures Third Edition. Chapter 2 TCP/IP

About the Technical Reviewers

3URMHFW1XPEHU /DERUDWRULHV2YHU1H[W *HQHUDWLRQ1HWZRUNV 3URMHFW7LWOH IST / PTIN /WP2.1/DS/P/1/01 &(&'HOLYHUDEOH1XPEHU

ProCurve Networking IPv6 The Next Generation of Networking

IPv6-only hosts in a dual stack environnment

IPv6 Trace Analysis using Wireshark Nalini Elkins, CEO Inside Products, Inc.

Boosting Capacity Utilization in MPLS Networks using Load-Sharing MPLS JAPAN Sanjay Khanna Foundry Networks

Firewalls. Ahmad Almulhem March 10, 2012

Bell Aliant. Business Internet Border Gateway Protocol Policy and Features Guidelines

IPv4 and IPv6: Connecting NAT-PT to Network Address Pool

Network Address Translation (NAT)

IP - The Internet Protocol

Skip the Transitions, Jump Straight into IPv6

Availability Digest. Redundant Load Balancing for High Availability July 2013

NAT and Firewall Traversal with STUN / TURN / ICE

Residential IPv6 IPv6 a t at S wisscom Swisscom a, n an overview overview Martin Gysi

OLD VULNERABILITIES IN NEW PROTOCOLS? HEADACHES ABOUT IPV6 FRAGMENTS

DirectAccess in Windows 7 and Windows Server 2008 R2. Aydin Aslaner Senior Support Escalation Engineer Microsoft MEA Networking Team

Ensuring a Smooth Transition to Internet Protocol Version 6 (IPv6)

Strategies for Getting Started with IPv6

Presentation_ID. 2001, Cisco Systems, Inc. All rights reserved.

Proxy Server, Network Address Translator, Firewall. Proxy Server

Configuring Network Address Translation

Chapter 12 Supporting Network Address Translation (NAT)

Vicenza.linux.it\LinuxCafe 1

Transition to IPv6 in Service Providers

Internet Protocol: IP packet headers. vendredi 18 octobre 13

Configuring a Load-Balancing Scheme

21.4 Network Address Translation (NAT) NAT concept

CS 457 Lecture 19 Global Internet - BGP. Fall 2011

Network Security TCP/IP Refresher

Enabling NAT and Routing in DGW v2.0 June 6, 2012

his document discusses implementation of dynamic mobile network routing (DMNR) in the EN-4000.

Exam 1 Review Questions

APNIC IPv6 Deployment

Transport and Network Layer

Leveraging Advanced Load Sharing for Scaling Capacity to 100 Gbps and Beyond

The Internet. Internet Technologies and Applications

IPv4/IPv6 Transition Mechanisms. Luka Koršič, Matjaž Straus Istenič

Network Security. Chapter 3. Cornelius Diekmann. Version: October 21, Lehrstuhl für Netzarchitekturen und Netzdienste Institut für Informatik

Technical Support Information Belkin internal use only

464XLAT: Breaking Free of IPv4. T-Mobile.com NANOG 61 June 2014

IPv6 Deployment Strategies

Chapter 3 Configuring Basic IPv6 Connectivity

How To Understand Bg

IP address format: Dotted decimal notation:

NAT and Firewall Traversal with STUN / TURN / ICE

Network layer" 1DT066! Distributed Information Systems!! Chapter 4" Network Layer!! goals: "

IPv6 Transition Work in the IETF

IPv4/IPv6 Transition Using DNS64/NAT64: Deployment Issues

Configuring a Load-Balancing Scheme

Load Balancing. Final Network Exam LSNAT. Sommaire. How works a "traditional" NAT? Un article de Le wiki des TPs RSM.

ITL BULLETIN FOR JANUARY 2011

IPv6/IPv4 Automatic Dual Authentication Technique for Campus Network

Network Address Translation (NAT) Adapted from Tannenbaum s Computer Network Ch.5.6; computer.howstuffworks.com/nat1.htm; Comer s TCP/IP vol.1 Ch.

Course Overview: Learn the essential skills needed to set up, configure, support, and troubleshoot your TCP/IP-based network.

Address Resolution Protocol (ARP), Reverse ARP, Internet Protocol (IP)

Understanding and Configuring NAT Tech Note PAN-OS 4.1

E : Internet Routing

ClusterLoad ESX Virtual Appliance quick start guide v6.3

NAT TCP SIP ALG Support

Interconnecting IPv6 Domains Using Tunnels

Steve Worrall Systems Engineer.

NAT & IP Masquerade. Internet NETWORK ADDRESS TRANSLATION INTRODUCTION. NAT & IP Masquerade Page 1 of 5. Internal PC

Improving DNS performance using Stateless TCP in FreeBSD 9

Network Agent Quick Start

How To Balance A Load Balancer On A Server On A Linux (Or Ipa) (Or Ahem) (For Ahem/Netnet) (On A Linux) (Permanent) (Netnet/Netlan) (Un

Transcription:

The case for IPv6-only data centres...and how to pull it off in today's IPv4-dominated world Tore Anderson Redpill Linpro AS RIPE64, Ljubljana, April 2012

IPv6 deployment approaches 0) Traditional IPv4-only DC environment IPv4-only websrv1 filesrv load-balancer Internet websrv2 dbsrv

IPv6 deployment approaches 1) IPv4-only + IPv6 via NAT or proxy IPv4-only websrv1 filesrv load-balancer Internet IPv6- only NAT/proxy websrv2 dbsrv

IPv6 deployment approaches 2) Dual-stacked public front-end, IPv4 BE Dual-stack IPv4-only websrv1 filesrv load-balancer Internet websrv2 dbsrv

IPv6 deployment approaches 3) Full dual-stack Dual-stack websrv1 filesrv load-balancer Internet websrv2 dbsrv

IPv6 deployment approaches 4) Dual-stacked public front-end, IPv6 BE Dual-stack IPv6-only websrv1 filesrv load-balancer Internet websrv2 dbsrv

IPv6 deployment approaches 5) IPv6-only + IPv4 via NAT or proxy IPv6-only websrv1 filesrv load-balancer Internet IPv4- only NAT/proxy websrv2 dbsrv

IPv6 deployment approaches 6) IPv6-only, no IPv4 connectivity at all IPv6-only websrv1 filesrv load-balancer Internet websrv2 dbsrv

Incremental IPv6 deployment IPv4-only IPv4-only + IPv6 via NAT/proxy Dual-stacked public frontend, IPv4 BE Full dual-stack Dual-stacked public frontend, IPv6 BE IPv6-only + IPv4 via NAT/proxy IPv6-only

What's possible today? IPv4-only IPv4-only + IPv6 via NAT/proxy Dual-stacked public frontend, IPv4 BE Full dual-stack Dual-stacked public frontend, IPv6 BE IPv6-only + IPv4 via NAT/proxy IPv6-only < 1% of end-users world-wide have IPv6

Let's take a shortcut... IPv4-only IPv4-only + IPv6 via NAT/proxy Dual-stacked public frontend, IPv4 BE Full dual-stack Dual-stacked public frontend, IPv6 BE IPv6-only + IPv4 via NAT/proxy IPv6-only

Why skip dual-stack? DS implies lots of unwanted complexity More ACLs, monitoring, troubleshooting, possible failures, training, documentation,... Saves lots of precious IPv4 addresses 1 IPv4 per service, rather than 1+ per server Forces sysadmins to learn and use IPv6 They resist change and new technologies Provision dual-stack and they'll use IPv4 only Perform a single IPv6 migration project

Stateless IP/ICMP Translation (SIIT) RFCs 6052, 6145 (Also known as Stateless NAT64 and IVI)

SIIT in a nutshell Maps the entire IPv4 address space into an IPv6 prefix from the SP's address space Translates IPv4/ICMPv4 headers into IPv6/ICMPv6 headers, and vice versa IPv4 0.0.0.0/0 IPv6-mapped IPv4 2001:db8::0.0.0.0/96 IPv6 ::/0 (not to scale)

SIIT theory IPv4-only IPv6-only 203.0.113.50 2001:db8::198.51.0.10 (2001:db8::c633:a) An IPv4-translatable IPv6 address from a pre-defined /96 prefix (that represents the IPv4 internet) is configured on the server This address is routed to the server using regular IPv6 routing techniques

An IPv4 client connecting IPv4-only SRC: 203.0.113.50 DST: 198.51.0.10 HTTP GET /foo [...] IPv6-only 203.0.113.50 2001:db8::198.51.0.10 (2001:db8::c633:a) The IPv4 service address is published as a regular A record for the service in DNS It's routed to the provider's SIIT gateways using standard IPv4 routing techniques IPv4 clients connect to it in a normal way

IPv4->IPv6 translation IPv4-only SRC: 203.0.113.50 DST: 198.51.0.10 HTTP GET /foo [...] SRC: 2001:db8::203.0.113.50 DST: 2001:db8::198.51.0.10 HTTP GET /foo [...] IPv6-only 203.0.113.50 2001:db8::198.51.0.10 (2001:db8::c633:a) The pre-defined /96 prefix is prepended to the IPv4 packet's SRC and DST fields Layer 4 payload is copied verbatim The packet is then routed to the server as a completely ordinary IPv6 packet

IPv6 server processing IPv4-only SRC: 203.0.113.50 DST: 198.51.0.10 HTTP GET /foo [...] SRC: 2001:db8::203.0.113.50 DST: 2001:db8::198.51.0.10 HTTP GET /foo [...] IPv6-only 203.0.113.50 2001:db8::198.51.0.10 (2001:db8::c633:a) SRC: 2001:db8::198.51.0.10 DST: 2001:db8::203.0.113.50 HTTP 200 OK [...] The server responds to the packet just as it would with any other IPv6 packet The original IPv4 source address isn't lost The /96 prefix (equivalent to the IPv4 default route) is routed to a SIIT gateway

IPv6->IPv4 translation IPv4-only SRC: 203.0.113.50 DST: 198.51.0.10 HTTP GET /foo [...] SRC: 2001:db8::203.0.113.50 DST: 2001:db8::198.51.0.10 HTTP GET /foo [...] IPv6-only 203.0.113.50 2001:db8::198.51.0.10 (2001:db8::c633:a) SRC: 198.51.0.10 DST: 203.0.113.50 HTTP 200 OK [...] DST: SRC: 2001:db8::198.51.0.10 SRC: DST: 2001:db8::203.0.113.50 HTTP 200 OK [...] The /96 prefix is stripped from the IPv6 packet's SRC and DST fields Layer 4 payload is untouched The resulting IPv4 packet is returned to the client which processes it normally

SIIT highlights Stateless per-packet operation You can use anycast, ECMP load balancing,... Does not require flows to flow bidirectionally across a single translator Concurrent flow count and fps are irrelevant for performance (unlike NAT44 and proxies) The original IPv4 address remains known Applications may geolocate IPv4 users Very simple to understand and implement

Applicability If the application doesn't work through NAT44, it will likely not work with SIIT e.g., FTP (uses IP literals in Layer 7 payload) implementations might provide ALGs though If the application does work with NAT44, it will likely work with SIIT as well e.g., HTTP and HTTPS The server software must support IPv6

Overriding the address mapping With plain SIIT, servers must have the IPv4-translatable IPv6 address assigned Means /128s must be carried in the IPv6 IGP Extra work for the systems administrators Better: Statically map IPv4 addresses to arbitrary IPv6 addresses (and vice versa) No extra IPv6 routes or addresses required The sysadmin must only request a public IPv4 frontend for the server's primary IPv6 address Vendor extension (on the Cisco ASR roadmap)

Appendix A MTU considerations

IP header size difference 1500 bytes (Standard Ethernet MTU) Packet size IPv4 header (20 bytes) Payload (1480 bytes) (not to scale) IPv4-IPv6 translation IPv6 header (40 bytes) Payload (1480 bytes) (not to scale) 0 The IPv6 header is (usually) 20 bytes larger than the IPv4 header Assuming identical MTUs, full-sized IPv4 packets cannot fit in a single IPv6 packet This is generally not a problem for TCP applications, because the IPv6 server will advertise a Maximum Segment Size of 1440 bytes, which in turn limits the TCP Protocol Data Unit to 1460 bytes (and thus the IPv4 packet size to 1480 bytes) IPv4 packets larger than 1480 bytes with the Don't Fragment flag set will cause the translator to return an ICMPv4 Need To Fragment advertising a Path MTU of 1480 At the time of writing, this is buggy in the Cisco ASR implementation (CSCtw77053) Non-DF IPv4 packets >1480 bytes must be split into two IPv6 fragments by the translator Fragments can be avoided completely by running the data centre with MTU >= 1520

IPv6 PMTUD with PMTU < 1280 IPv4-only 2) IPv4 data DF = 1 (1260 bytes) 1) IPv6 data no Frag header (1280 bytes) IPv6-only MTU=1000 IPv4 router SIIT gateway 3) ICMPv4 Frag Needed MTU = 1000 4) ICMPv6 Packet Too Big MTU = 1020 A link in the IPv4 path towards the client may have an IPv4 MTU smaller than 1260 bytes This translates into an IPv6 Path MTU smaller than 1280 bytes According to RFC 2460, an IPv6 node receiving an ICMPv6 Packet Too Big indicating a Path MTU smaller than 1280 bytes has two choices on how to deal with it: a) limit the size of subsequent packets to the indicated Path MTU, or b) limit the size of subsequent packets to exactly 1280 bytes, and also include a Fragmentation header. The Fragmentation header instructs the translator to clear the DF flag in the translated IPv4 packet, and provides the Identification value. This allows the IPv4 router to fragment the packet as it is being forwarded onto the link with the small MTU The Linux kernel takes the second approach, but it is at the time of writing buggy: https://bugzilla.kernel.org/show_bug.cgi?id=42595 & https://bugzilla.kernel.org/show_bug.cgi?id=42572

Appendix B Cisco ASR1K configuration example

Basic IPv4/IPv6 connnectivity interface GigabitEthernet0/0/0 description IPv4 uplink interface ip address 87.238.62.27 255.255.255.254 nat64 enable interface GigabitEthernet0/0/1 description IPv6 uplink interface ipv6 address 2A02:C0:1:102::2/64 nat64 enable nat64 settings mtu minimum 1500 ip route 0.0.0.0 0.0.0.0 87.238.62.26 ipv6 route 2A02:C0::46:0:57EE:3D80/121 2A02:C0:1:102::1 nat64 prefix stateless 2A02:C0:0:0:46::/96 nat64 settings fragmentation header disable nat64 route 87.238.61.128/25 GigabitEthernet0/0/1 The SIIT gateway needs full connectivity to the IPv4 internet In this case I use a static default route to the upstream IPv4 router 87.238.62.26 (connected to Gi0/0/0) However, the necessary IPv4 connectivity could just as well have been provided by a default route learned from an interior gateway protocol, or from a full BGP feed It also needs to be connected to the provider's IPv6 network A default IPv6 route is not necessary (but doesn't cause any problems either)

Basic SIIT configuration interface GigabitEthernet0/0/0 description IPv4 uplink interface ip address 87.238.62.27 255.255.255.254 nat64 enable interface GigabitEthernet0/0/1 description IPv6 uplink interface ipv6 address 2A02:C0:1:102::2/64 nat64 enable nat64 settings mtu minimum 1500 ip route 0.0.0.0 0.0.0.0 87.238.62.26 ipv6 route 2A02:C0::46:0:57EE:3D80/121 2A02:C0:1:102::1 nat64 prefix stateless 2A02:C0:0:0:46::/96 nat64 settings fragmentation header disable nat64 route 87.238.61.128/25 GigabitEthernet0/0/1 NAT64 functionality (which includes stateless translation) is enabled on both the IPv4 and the IPv6 uplink interface An IPv6 prefix for stateless translation is chosen and configured on the translator This prefix can have any of the following prefix lengths: /32, /40, /48, / 56, /64, or /96 (cf. RFC 6052 section 2.2) When using a /96, the embedded IPv4 addresses will occupy the last 32 bits of the resulting IPv6 address The prefix should be taken from the operator's public IPv6 pool and be globally reachable The reason for this is that the servers will be configured with addresses from within the translation prefix, and could potentially attempt to use them as source addresses when establishing connections to native IPv6 destinations off-net

The IPv4 service address prefix interface GigabitEthernet0/0/0 description IPv4 uplink interface ip address 87.238.62.27 255.255.255.254 nat64 enable interface GigabitEthernet0/0/1 description IPv6 uplink interface ipv6 address 2A02:C0:1:102::2/64 nat64 enable nat64 settings mtu minimum 1500 ip route 0.0.0.0 0.0.0.0 87.238.62.26 ipv6 route 2A02:C0::46:0:57EE:3D80/121 2A02:C0:1:102::1 nat64 prefix stateless 2A02:C0:0:0:46::/96 nat64 settings fragmentation header disable nat64 route 87.238.61.128/25 GigabitEthernet0/0/1 An IPv4 prefix is allocated from the operator's public address pool (in this example 87.238.61.128/25) and configured as a nat64 route The mandatory interface parameter is meaningless unless you're configuring nat64 prefix at the interface level, in which case the parameter determines which nat64 prefix that gets used The prefix contains the IPv4 service addresses IPv4 clients will make connections to (that will in turn be translated to IPv6) The gateway must also have a specific IPv6 route to the translated destination prefixes Without it, the translated IPv6 packets would have followed the /96 route and loop back into the NAT64 function In this example I use a static route to 2a02:c0::46:0:57ee:3d80/121 (the translated equivalent of 87.238.61.128/25) to the uplink router on Gi0/0/1, but /128s learned from the IGP would also work

Preventing unnecessary frags 1 interface GigabitEthernet0/0/0 description IPv4 uplink interface ip address 87.238.62.27 255.255.255.254 nat64 enable interface GigabitEthernet0/0/1 description IPv6 uplink interface ipv6 address 2A02:C0:1:102::2/64 nat64 enable nat64 settings mtu minimum 1500 ip route 0.0.0.0 0.0.0.0 87.238.62.26 ipv6 route 2A02:C0::46:0:57EE:3D80/121 2A02:C0:1:102::1 nat64 prefix stateless 2A02:C0:0:0:46::/96 nat64 settings fragmentation header disable nat64 route 87.238.61.128/25 GigabitEthernet0/0/1 The RFC takes a conservative approach by default, and assumes that the IPv6 Path MTU is 1280 bytes Inbound IPv4 w/df=0 packets that would result in IPv6 packets exceeding 1280 bytes in size will instead be split in two fragments (both smaller than 1280) In a data centre environment, however, we usually know that IPv6 Path MTU between the translator and the servers is (at least) 1500 bytes, so this behaviour is not necessary nat64 settings mtu minimum 1500 tells the translator that the Path MTU between itself and the IPv6 servers (behind Gi0/0/1) is at least 1500 bytes, this avoiding fragmentation of DF=0 IPv4 packets exceeding 1260 bytes However, IPv4 packets exceeding 1480 bytes will still be fragmented (as they translate into IPv6 packets exceeding 1500 bytes) You can avoid all IPv6 fragmentation by increasing both the IPv6 Interface and Path MTU to at least 1520 bytes

Preventing unnecessary frags 2 interface GigabitEthernet0/0/0 description IPv4 uplink interface ip address 87.238.62.27 255.255.255.254 nat64 enable interface GigabitEthernet0/0/1 description IPv6 uplink interface ipv6 address 2A02:C0:1:102::2/64 nat64 enable nat64 settings mtu minimum 1500 ip route 0.0.0.0 0.0.0.0 87.238.62.26 ipv6 route 2A02:C0::46:0:57EE:3D80/121 2A02:C0:1:102::1 nat64 prefix stateless 2A02:C0:0:0:46::/96 nat64 settings fragmentation header disable nat64 route 87.238.61.128/25 GigabitEthernet0/0/1 A translator will by default add an IPv6 Fragmentation header when translating any IPv4 packet with the Don't Fragment flag unset This happens even though the resulting IPv6 packet does not exceed the IPv6 Path MTU, and therefore aren't actually fragmented According to RFC 6145, it is done in order «to indicate that the sender allows fragmentation» This behaviour can be avoided by configuring nat64 settings fragmentation header disable Note that the translator will still insert Fragmentation headers when it is actually fragmenting, i.e., when it is translating an IPv4 packet which would exceed the configured IPv6 Path MTU

Questions? Thank you for listening Further reading: RFC 6052 - IPv6 Addressing of IPv4/IPv6 Translators RFC 6145 - IP/ICMP Translation Algorithm RFC 6219 - The China Education and Research Network (CERNET) IVI http://toreanderson.no - My personal home page (contact info, social media links, slides from this and earlier talks) http://redpill-linpro.com - My employer and sponsor of this project Note: IPv4 traffic to both of the above URLs is routed through a SIIT gateway (eating my own dog food)