  Although the current Internet Protocol known as IPv4 has served its purpose
for over 20 years, its days are numbered. With IPv6 reaching a mature enough
level, there is a need to evaluate the performance benefits or drawbacks that
the new IPv6 protocol will have in comparison to the well established IPv4
protocol. Theoretically, the overhead between the two different protocols
should be directly proportional to the difference in the packet's header size,
however according to our findings, the empirical performance difference between
IPv4 and IPv6, especially when the transition mechanisms are taken into
consideration, is much larger than anticipated. We first examine the
performance of each protocol independently. We then examined two transition
mechanisms which perform the encapsulation at various points in the network:
host-to-host and router-to-router (tunneling). Our experiments were conducted
using two dual stack (IPv4/IPv6) routers using end nodes running both Windows
2000 and Solaris 8.0 in order to compare two different IPv6 implementations
side by side. Our tests were written in C++ and utilized metrics such as
latency, throughput, CPU utilization, socket creation time, socket connection
time, web server simulation, and a video client/server application for TCP/UDP
in IPv4/IPv6 under both Windows 2000 and Solaris 8.0. Our empirical evaluation
proved that IPv6 is not yet a mature enough technology and that it is still
years away from having consistent and good enough implementations, as the
performance of IPv6 in many cases proved to be significantly worse than IPv4.
