Software changes for Website and Application IPv6 Readiness



Similar documents
Porting applications & DNS issues. socket interface extensions for IPv6. Eva M. Castro. ecastro@dit.upm.es. dit. Porting applications & DNS issues UPM

IPv6 Enabling CIFS/SMB Applications

Porting and Deploying VoIP to IPv6: Lessons Learned

Porting and Running Asterisk to IPv6

IPv4/IPv6 Transition for SIP VoIP Applications

Best practices in IPv6 enabled networking software development.

Vicenza.linux.it\LinuxCafe 1

Socket = an interface connection between two (dissimilar) pipes. OS provides this API to connect applications to networks. home.comcast.

IPv6 Transition Work in the IETF

Elementary Name and Address. Conversions

Campus IPv6 connection Campus IPv6 deployment

WW HMI SCADA-08 Remote Desktop Services Best Practices

First Workshop on Open Source and Internet Technology for Scientific Environment: with case studies from Environmental Monitoring

1 Data information is sent onto the network cable using which of the following? A Communication protocol B Data packet

Aculab digital network access cards

Elementary Name and Address Conversions

NS3 Lab 1 TCP/IP Network Programming in C

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

Security implications of the Internet transition to IPv6

Samba and Vista with IPv6

Connecting with Computer Science, 2e. Chapter 5 The Internet

IPv4 and IPv6 Integration. Formation IPv6 Workshop Location, Date

Introduction to Socket Programming Part I : TCP Clients, Servers; Host information

LESSON Networking Fundamentals. Understand TCP/IP

Application Architecture

INTRODUCTION UNIX NETWORK PROGRAMMING Vol 1, Third Edition by Richard Stevens

TCP/IP - Socket Programming

Development of an IPv6 Honeypot

Writing Client/Server Programs in C Using Sockets (A Tutorial) Part I. Session Greg Granger grgran@sas. sas.com. SAS/C & C++ Support

Computer Networks/DV2 Lab

Joe Davies. Principal Writer Windows Server Information Experience. Presented at: Seattle Windows Networking User Group June 1, 2011

DNS & IPv6. Agenda 4/14/2009. MENOG4, 8-9 April Raed Al-Fayez SaudiNIC CITC rfayez@citc.gov.sa, DNS & IPv6.

Securing the Transition Mechanisms

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

Industry Automation White Paper Januar 2013 IPv6 in automation technology


SSC - Communication and Networking Java Socket Programming (II)

APNIC IPv6 Deployment

Procedure: You can find the problem sheet on Drive D: of the lab PCs. 1. IP address for this host computer 2. Subnet mask 3. Default gateway address

Performance Evaluation of an IPv6-capable H323 Application

Interconnecting IPv6 Domains Using Tunnels

ERserver. iseries. Networking TCP/IP setup

Global Headquarters: 5 Speen Street Framingham, MA USA P F

IPv6 Security Best Practices. Eric Vyncke Distinguished System Engineer

Session NM059. TCP/IP Programming on VMS. Geoff Bryant Process Software

Writing a C-based Client/Server

Introduction to Socket programming using C

Hands On Activities: TCP/IP Network Monitoring and Management

Operational Problems in IPv6: Fallback and DNS issues

Updates to Understanding IPv6

Network Configuration Settings

Use Domain Name System and IP Version 6

Homework 3 TCP/IP Network Monitoring and Management

Step-by-Step Guide for Setting Up IPv6 in a Test Lab

About This Document 3. Integration and Automation Capabilities 4. Command-Line Interface (CLI) 8. API RPC Protocol 9.

464XLAT in mobile networks

Firewalls und IPv6 worauf Sie achten müssen!

IP Addressing A Simplified Tutorial

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

Bump In Host a Host-based IPv4 to IPv6 Translation

IPv6 Challenges for Embedded Systems István Gyürki

Issues for the performance monitoring of an open source H.323 implementation ported to IPv6-enabled networks with QoS characteristics

End User Guide The guide for /ftp account owner

CSE 333 SECTION 6. Networking and sockets

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

Generalised Socket Addresses for Unix Squeak

IPv6 Fundamentals: A Straightforward Approach

Passive Network Traffic Analysis: Understanding a Network Through Passive Monitoring Kevin Timm,

Tutorial on Socket Programming

IPv6, Perspective from small to medium ISP

OS/390 Firewall Technology Overview

Deployment of Services on IPv6

Linux MDS Firewall Supplement

Scalable Linux Clusters with LVS

Port Scanning and Vulnerability Assessment. ECE4893 Internetwork Security Georgia Institute of Technology

Dual-stack IPv4+IPv6 monitoring with Nagios. Teemu Kiviniemi, CSC/Funet 6th June th TF-NOC meeting Dublin, Ireland

IPv6 Applications. Formation IPv6 RENATER -Rouen, FR

Before deploying SiteAudit it is recommended to review the information below. This will ensure efficient installation and operation of SiteAudit.

Protocol Specification & Design. The Internet and its Protocols. Course Outline (trivia) Introduction to the Subject Teaching Methods

IP - The Internet Protocol

Next Generation IPv6 Network Security a Practical Approach Is Your Firewall Ready for Voice over IPv6?

Recent advances in IPv6 insecurities Marc van Hauser Heuse Deepsec 2010, Vienna Marc Heuse

Overview of Computer Networks

UNIX Sockets. COS 461 Precept 1

Lab 2. CS-335a. Fall 2012 Computer Science Department. Manolis Surligas

Transcription:

Software changes for Website and Application IPv6 Readiness Ahmed Abu-Abed, P.Eng. Tamkien Systems ahmed@tamkien.com 1

Agenda Introduction Enabling Website IPv6 and Forum Certification Intro to Socket Programming for IPv6 Issues with Legacy IPv4 Code Migrating code to IPv6 IPv6 Compliance Code Checking Tools On Java, Perl and PHP IPv6 migration References 2

The 3 Pillars of IPv6 Readiness IPv4-only IPv4/IPv6 Computer OS + IP Stack Software Applications Networks IX/Core/Edge + Access 3

Need for Transitioning Applications Applications are the reason we use networks Some examples: VoIP/SIP, websites, OSS/BSS, cloud computing, distributed database, Apache, ping, Microsoft Exchange, etc. IPv4 has been hard coded into apps, via: Address fields for IPv4, i.e. 32 bits wide 127.0.0.1 loopback address Data-structures and functions that are unusable in a dual-stack environment Broadcast calls, not explicitly supported in IPv6 Porting applications code to IPv4/IPv6 now is necessary for migration. Microsoft Office, Exchange, and Linux apps are dual-stack already Other critical applications like OSS/BSS need checking with the vendor This presentation highlights how to change your code if necessary 4

Applications in a familiar model Do not use IPv4 dependant code or addressing 5

Making websites Ready for IPv6 Upgrades are needed in reachability and webcode Most of the work needed is on reachability only Webcode update needed if IPv4 addresses are hard coded in website, and/or IPv4 functions being used in scripts (PHP, CGI, etc.) More on this later Follow the guidelines mentioned on http://www.ipv6forum.org/ipv6_enabled Then get listed on IPv6 Forum as an approved site And put the IPv6 Forum WWW logo on your web site IPv6 Forum only needs reachability check before approval 6

IPv6 WWW Certification Steps v6esg (v6 Enabled Logo Steering Group) of the IPv6 Forum tests the website to ensure: It has a global IPv6 address, AND AAAA record in DNS (to translate domain name to IPv6 addr), AND Accessible via HTTP protocol. Tests above repeated periodically Once the tests pass the website gets registration number & logo Exact test procedures are documented on IPv6 Forum website How to do the above? Host the IPv6 version of website on an IPv6 ready provider (HE.com, etc...) IPv6 Provider will register the AAAA record on a DNS serving the IPv6 global community. Then apply to v6esg for testing 7

IP code flow on computers Assume that system (operating system + IP) has a dual-stack Application code should be able to execute on either IPv4 or IPv6 The OS and IP stack on the computer inspect the header for version field Using dual applications in dual-stack nodes, application decides to use IPv4 or IPv6 protocol code at runtime 8

Introduction to Sockets for IPv6 A IP socket is defined as an address and port number of a network connection plus the transport protocol (UDP or TCP) in use Enables programmers to create network-capable applications to transmit application data across the wire (or wireless) ALL applications and protocols use the SAME socket programming approach Standardized as Berkeley Sockets (BSD) from UC Berkeley in 1983 Uses C/C++ programming languages (Java has different approach) For IPv4/IPv6 dual-stack implementation On Windows use Winsock 2 library On Unix use BSD 4.4 library 9

TCP Socket Calls for IPv4 & v6 Server socket bind listen accept read write close Client socket connect write read close Ref: Eva Castro, US IPv6 Summit Dec. 2003 Same fundamental calls and procedures are used in v4 and v6. UDP is similar 10

Changing Legacy IPv4 Code Variables size: IPv6 addresses need 4x the space in octets Use new headers that take care of reserved space Lots of references hard coded loop back (127.0.0.1) addresses Change to loop back variable name The variable gets its value depending on v4 or v6 automatically Done through header file variable definitions Changed functions: For example, to get IP address from host name Must use getaddrname() instead of gethostbyname() Do not forget user graphical interface, hard coded IPv4 address dialog boxes Adjust the address field to handle both v4 and v6 addresses 11

Structures and functions to change IPv4 hostent sockaddr_in sockaddr_in in_addr INADDR_ANY INADDR_LOOPBACK gethostbyname gethostbyaddr inet_addr inet_ntoa inet_ntoa inet_aton inet_addr IPv6 addrinfo sockaddr_in6 sockaddr_storage sockaddr_storage in6addr_any in6addr_loopback getaddrinfo getnameinfo getnameinfo getnameinfo inet_ntop inet_pton inet_pton IP version Independence yes no yes yes no no yes yes yes yes yes yes yes 12

Dual-stacking coded differently in Operating Systems WinXP sp1, Win2003 Create two sockets, one for IPv4 and one for IPv6 Application has code for both options During runtime the appropriate socket is invoked depending on IP version in use More cumbersome Vista, Win7, Win2008, Linux 2.4 & 2.6 Create one IPv6 socket This can handle both v4 and v6 traffic by setting IPV6_V6ONLY socket option to zero Place IPv4 address in lower 32 bits with 0::FFFF padding Thus a.b.c.d becomes 0::FFFF:a.b.c.d 13

Best Practices when Coding Make your code protocol-version-independent by using IPv4/v6 common functions and structures shown before Use data structures to hold addresses 32bit fields/variables are good only for IPv4 Loop through all IP addresses when needed Since IPv6 can assign multiple addresses for an interface (link-local, unicast, etc.) 14

Summary code changes The following needs to be revised to have IPv4/IPv6 applications: Data Structures Function Calls Use of Hardcoded IPv4 Addresses User Interface Issues (32 bit dialog boxes) Underlying Protocols like RPC calls Dual-Stack Sockets (see previous slide) Plus dual-stack programming sequence has slightly changed For detailed list of changes see the references of this presentation This is not a major change from the existing IPv4 Socket Programming After changing use code checking tools to verify 15

Windows dual/stack application checking tool Checkv4 utility, acts on source code (.c) file Already installed with Microsoft SDK for Vista and later Earlier version (since Win2000) available but with limited features Execute on command line with source file as argument Act on messages Checkv4 presents 16

Linux dual/stack application checking tool Linux has an IPv6 "Compliance Automatic Runtime Experiment, or CARE, tool Similar to Windows tool but diagnoses running programs Can check Java, Perl and Python code (as long as they use the C library) Can check any running program or command in real-time Thus one can have it on ALL the time to catch any IPv6 non-compliance See screen shot for sample output 17

Linux CARE code checking tool 18

On Java, Perl and PHP migration Java functions (API) have been IPv4/IPv6 compliant since ver 1.5 (Windows) or 1.4 (Linux). IPv6 support in Java is there if Every application does not use hard coded IPv4 address Address and socket information uses Java Socket API Perl: Add the Socket6 module for IPv6 in addition to Socket module for IPv4 Otherwise similar concept to C Socket Programming explained above PHP: IPv6 Supported in 4.3.4 and 5.2.3 modules A few functions have been added for support of IPv6 For all above, refer to R. Nucara document in References for details 19

References W.R. Stevens et al, UNIX Network Programming, 3 rd Edition, Addison-Wesley Owen DeLong, Porting to Dual Stack - - Not That Hard, ARIN XXIV, October 2009 Introduction to IPv6 Programming, Rino Nucara, 2007, GARR, Italy MSDN Library, http://msdn.microsoft.com/en-us/library/ms738649(vs.85).aspx Checkv4 Windows Utility, http://msdn.microsoft.com/en-us/library/ms740624(vs.85).aspx IPv6 CARE UNIX tool, http://sourceforge.net/projects/ipv6-care/ Eva M. Castro, IPv6 Porting Applications, Dec. 2003, US IPv6 Summit. Marc Blanchet, Migrating to IPv6, 2006, John Wiley. IPv6 Forum WWW Enabled Logo procedures, http://www.ipv6forum.org/ipv6_enabled/specification/ipv6_www_enabled_specification_v2.0.1.p df 20