IPv6 Is Coming!
By Galen Carpenter, Senior Systems Software Engineer
IPv6 is coming! Should you panic? No, Chicken Little, there’s no reason to panic about IPv6. As a matter of fact, IPv6 is already here, Synergy/DE is ready for it, and the sky is not falling.
So what’s the deal with IPv6 anyway? The short version is this: IPv6 (Internet Protocol version 6) was developed because its predecessor, IPv4, was no longer up to the task. (Don’t even ask about IPv5!) IPv4 wasn’t designed for the Internet we have today. IPv6 will provide not only additional addresses but also more efficient routing and the ability to support modern networks of mobile devices. Rather than the familiar 4-byte IPv4 format like 192.168.1.0, IPv6 addresses are 16 bytes, and they are made up of 8 sets of hex digits separated by colons, like this: 2001:db8:290c:1291:0:0:0:1. (There are ways to compress IPv6 addresses, so they may not always look like they have 8 sets of numbers separated by colons.) You may also see addresses that combine the two styles, such as 2001:db8:11:22:ff00:42:192.0.2.128. This is a transitional format; the dotted portion at the end of the sequence represents the IPv4 version of the mapped IPv6 address.
Synergy/DE products that use TCP/IP will be updated to support IPv6 in version 10.3.3. These include xfServer, xfServerPlus, the Synergy socket API, the HTTP document transport API, lmu (on Windows), and Connectivity Series. (We are not supporting IPv6 on OpenVMS servers in this release.)
You may need to do some work on your end, too, to support IPv6. If you are using DHCP (Dynamic Host Configuration Protocol), you might need to add support for DHCPv6 or SLAAC, but IPv6 has so large an address space that each Internet-connected device throughout the world can have its own unique address. Your IT department may need to set the IPv6 address on every machine that needs one and add the IPv6 address to the DNS server, in addition to turning IPv6 on for the server. Most Windows machines have IPv6 turned on but do not have a DNS-resolvable IPv6 address assigned.
If you’re using one of Synergy’s client/server products, on most operating systems you can add IPv6 support to your system without disabling IPv4 support. On the server side, you’ll need to change the IP address where necessary, and add the -v6 switch to your start-up command for rsynd and vtxnetd/vtxnet2 to enable IPv6 support. This switch does not turn off IPv4 support, but rather allows both protocols from the client to be supported. This means that existing clients using IPv4 will continue to work. But if your clients do need IPv6 support, they will have to be updated to 10.3.3, as older clients are limited to communicating only with IPv4. Most of the work here is behind the scenes, but some coding changes may be necessary if the IP address is processed, because of the difference in format.
If you’re using HTTP as a server, there’s only one small change to make: pass the new IP_flag argument to %HTTP_SERVER_CREATE. If you’re using the Synergy socket API, things are a little more complex. We added new routines to support IPv6 addresses. The new routines start with SS2_ (instead of just SS_) and use dynamic byte arrays to hold the IP address. Only the SS_ routines that need to pass an IP address have a corresponding SS2_ routine. Routines such as %SS_SEND and %SS_RECV don’t pass an IP address, so there is still only the one version. The general rule is this: if you’re doing IPv6 and there is both an SS_ and an SS2_ routine, use the SS2_. The one exception to this rule is %SS_SOCKET, which does not have a corresponding SS2_ routine but rather uses an argument to indicate the family of the socket to be created.
As you can see, IPv6, like the acorn that fell on Chicken Little’s head and erroneously prompted widespread panic, is not a genuine cause for alarm. It has an easy migration route, and the sky will not fall if you follow the suggestions above. (The Synergy/DE changes mentioned above will be included in the 10.3.3 documentation. If you want more information about IPv6 in general, see https://en.wikipedia.org/wiki/IPv6.)