title: Dual stack vs Tunneling IPV6 implementation, which is easy to implement?
body: <p>After 1 or 2 years IP address space will be exhausted, so almost all applications need to support IPV6.</p>
  
  <p>I am working on <strong>Client Server Product</strong> and which needs to support IPV6 protocol . Today I read IPv6 material from Net and there are two ways to support IPV6 protocol.</p>
  
  <pre><code> **1. Dual stack
     2. Tunneling** 
  </code></pre>
  
  <p>Could you please provide useful information to following questions </p>
  
  <ol>
  <li><p>which is the easy ( minimal code changes in project )  approach to implement IPV6 ? ( Dual stack or Tunneling )</p></li>
  <li><p>which is the best( efficiency, performance and other factors  ) approach to implement    ?</p></li>
  <li><p>How routers need to maintain routing tables for 1. Dual stack and 2. Tunneling approaches.</p></li>
  <li><p>Do we need any extra Hardware support for any one of the approach ?   </p></li>
  <li><p>As I mentioned earlier, I am working on Client Server product </p>
  
  <pre><code>       |   IPv4    IPV6 |    IPv4    IPV6 |
         |----------------|-----------------|
  Client |  yes     no    |  yes      no    |
  Server |  no      yes   |  no      yes    |
  Network|  yes     no    |  no       yes   |
  </code></pre></li>
  </ol>
  
  <p>case1: client and network only IPV4 compatible . But Server only compatible on IPV6 </p>
  
  <p>case 2: network and Server IPV6 compatible. But server only compatible with IPV4 </p>
  
  <p>If client, server and network supports IPV6 , then there is no <strong>compatibility problem</strong>. but <strong>how we handle above two cases ?</strong> .</p>
  
  <ol>
  <li><p>Please suggest me good material (or text book) for IPV6 implementation on Linux OS.</p>
  
  <pre><code>Thanks in advance
  </code></pre></li>
  </ol>