• Office Hour : 9:00am - 7:00pm

Blogs

Web Development Services
By Hitesh Gupta
|
August 4, 2023

Should IPv6 be “Compatible” with IPv4?

IPv6 deployment continues, but at a much slower pace than expected. At this speed, we will still have IPv4 for the next 20 or 30 years. Faced with this exasperating slowness, we often hear from experts assert that it is the consequence of a fundamental error at the beginning of the design of the IPv6 protocol: it should have been made “compatible with IPv4”. What does that mean, and would it have been possible?

To understand how to let’s first see how IPv6 is incompatible with IPv4. This particularly concerns routers and applications. Indeed, the format of the header of the packetsIPv6 is very different from that of the IPv4 packet header. A router knowing that IPv4 cannot do anything about an IPv6 packet, cannot even analyze it. IPv6, therefore, required an update of all routers (today largely made, even on the low end) and the applications? Normally, many applications do not need to know the details of the network layer. After all, it is one of the goals of the layered model to isolate applications from the particularities of the network. But there are exceptions (server application with ACLs and therefore having to manipulate IP addresses, for example), and, most importantly, many applications are not written with a high-level API: the programmers use, for example, the socket API, which exposes lots of unnecessary details, such as the size of the IP addresses, thus binding the application to a particular network protocol. IPv6 imposes to update a lot of applications, which has been done for a long time for large free software known (Apache, Unbound, Postfix, etc) but not necessarily for small local software developed by the ESN corner.

Could we get away with designing IPv6 differently? Basically NO, to see why we must start from the specifications of IPv6: the main problem was the exhaustion of the IPv4 addresses. It needed longer addresses (they are 128 bits for IPv6 against 32 for IPv4). Even if this had been the only change in the format of the packet header, it would have been enough to make it incompatible, and thus to force to change the routers, as well as applications dependent on IPv4. Regret that the IETF has changed other aspects of the header, which could have been left quiet, does not make sense: just the change of address size invalidates all the IPv4 code. This would not be the case if IP packet headers were encoded as TLVs or in another format with variable size fields. But, for performance reasons (a router may have to handle hundreds of millions of packets per second), IP packets have a binary encoding, with fixed-size fields. Any modification of the size of one of these fields, therefore, requires changing all the packet processing code, all the ASICs of the routers.

Even in the absence of this “on cable” encoding problem, it is not certain that all existing programs would support address size change. How many older applications take for granted that IP addresses are only 32 bits in size and, if written in C, put them in int(usually 32 bits)?

Nevertheless, despite these long-known facts, we often come across claims such as “the IETF should just add bits to the addresses but without changing the format.” As we have seen, any change in address size changes the format. And, if we do not change the size of the addresses, why use a new protocol?

This does not mean that IPv4 and IPv6 need to be unable to talk to each other, like “ships crossing each other at night”. It may be thought that an address translation solution would allow at least some exchange but careful not to simply copy the NAT IPv4. IPv4 uses the ports of TCP and UDP to identify a particular session and to know where to send packets. There are only 16 bits to store the ports, and this would not be enough to allow to represent all the IPv6 addresses in IPv4 addresses (it would still lack 80 bits to find …) There are many solutions with the translation of addresses, as NAT64 ( RFC 6146 ) but they can only be used in limited cases (for NAT64, between a purely IPv6 client and a purely IPv4 server), and lead to additional dependencies (for NAT64, the need to have a resolver Special DNS, see RFC 6147 ). In short, it does not exist and there can be no mechanism for complete compatibility between a protocol that uses 32-bit addresses and a protocol that uses 128-bit addresses. There are partial solutions (the simplest, we often forget, is to have an application relay), but no complete solution.

Of course, that’s assuming we want to keep compatibility with older machines and software. If we start from scratch, we could make a layer 3 protocol with variable size addresses, but it would no longer be IP and such a protocol would be even more difficult and expensive to deploy than a new version of IP, like IPv6.

Is it just me who does not see a solution, or is it really a problem of substance? So far, a lot of people have been moaning “it should have been IPv4-compatible IPv6” but I have not yet seen any detailed proposal on how to do that. There are plenty of ideas behind the envelope, these ideas scribbled in two minutes but will never go further. Writing a tweet is one thing. To specify, even partially, a protocol is something else. We see, for example, someone coming out of their field of competence (cryptography) write “they have the IPv6 address space as an alternative to the IPv4 address space, rather than an extension to the IPv4 address space  “). But he did not go further. At least, the author of the ridiculous project called IPv10 had made the effort to detail a little its proposal (the same author had committed a project to connect the satellites by optical fibers). It is also the fact that his proposal is relatively detailed so that we can see that it does not hold up: the format of the packets (the only thing it specifies a little precise) being different, its deployment would be at least as slow as that of IPv6. The cryptographer mentioned above did not even trouble himself with this.


Latest Blogs

SEO Services in UK
How SEO services can help to increase your business in UK
Python vs PHP
Django (Python) vs Laravel (PHP)
API
API (Application Programming Interface)
Sales Funnel
Digital Marketing: Sales Funnel
Ecommerce Development
Top 5 Frameworks for Developing a eCommerce App 2024
How to Use Langshop with Your Shopify Store?
Shopify, Magento, and WooCommerce: Which one should you use for Ecommerce Business
How to use Instagram to Market your ECommerce / Hospitality / Restaurant Business?
How much does it Cost to Make an App
Mobile App Development Services in India
How to Build a Business Listing Web Application Development Similar to Yelp
Shopping App Development Company
How to Develop Amazon / Shopify App Clone Script for ECommerce Business Platform
Grocery Delivery App
How to Develop a Grocery Delivery Mobile App in the Cheapest Cost
Mobile App Development
Ionic and Angular innovation the hands behind the Evolution of Mobile Apps
Analytics for Efficient and Engaging Mobile UX
Analytics for Efficient and Engaging Mobile UX
Serach Engine Marketing Company
8 Approaches to AdWords Marketing Actions
Content Marketing Services
Content Distribution: The Art of Content Marketing
SEO Services in India
Effect of Page Speed on SEO
5 B2B Online Marketing Trends in 2023
B2B Marketing on the web
7 Tips for B2B Branding on The Web
Internet Marketing
Online Marketing Strategy Guide 2023
Digital Marketing Services
7 Steps to make your website Digital Marketing ready 2024
Web Development Services
Should IPv6 be “Compatible” with IPv4?
Qualcomm 5G Antenna
Qualcomm 5G Antenna
Google Fuchsia
Google Fuchsia: New Smartphone Operating System
Data Science
Data Science: Tips on Implementing Big Data In Business
Google Duplex AI
Google Duplex AI
5G cellular technology
5G Cellular Technology
Persona of your targeted customers
Creating Persona of Your Targeted Customers
KOTLIN ANDROID PROGRAMMING LANGUAGE
Kotlin Android Programming Language
Bluetooth 5.0
Bluetooth 5.0
WPA3
WPA3: First Encrypted Communication in Public WLAN
Job Responsibilities of Data Scientist vs Data Analyst
Job Responsibilities of Data Scientist vs Data Analyst
Python Libraries for AI development
5 Best Python Libraries for AI Development
Neural Network
What is Neural Network and How They Work?
Mobile Application Development
Best Mobile Application Development Platform
AI Projects
Best Artificial and Machine Learning Projects?
Programming Languages for BlockChain Development
Programming Languages for BlockChain Development
Artificial Intelligence that We are Using in Daily Life
Social Media Websites with Blockchain
Reddit, Linkedin like Social Media Websites with Blockchain
Byzantine Fault Tolerance
What is Byzantine Fault Tolerance?
data on blockchain
Where do You Store Data on Blockchain?
BlockChain Technology
Blockchain
Artificial Intelligence
Artificial Intelligence
Internet of Things
Internet of Things (IOT)
Grocery app development
How much does it cost to develop a grocery delivery app?
Crucial Development Strategy of Online Taxi Booking App similar like OLA and Uber