IPvM6 = PVM3.4.4 + IPv6 ========================== * Rafael Martinez Torres ( rafael dot martinez at novagnet dot com ) - nGn as a partner of Euro6IX ( http://www.euro6ix.org) - http://www.ngn.euro6ix.org/IPv6 , http://www.novagnet.com ** Acknowledges to MIT , for releasing its source code. All copyrights belongs to their respective owners. *** Warning: Non-steady code !!! Still in progress. Contributions required !!! This readme file describes the IPv6 (ANY platform) port of PVM. PURPOSE: -------- Some Beowulf clusters are designed so that not all nodes are visible to the external world. This is commonly known as the NAT problem (Network Address Translation) and it is inherently bound to the IPv4 protocol address space of 32 bits. In these cases, there is often a "front end" node which connects to the world, and the rest of the nodes are on an internal network. This has the disadvantage for PVM users running on an outside computer who want to add the Beowulf computer to their configuration: the PVM code on their computer will be unable to communicate with the Beowulf nodes on the internal network. Some time ago, the BEOLIN port of PVM was introduced in order to solve this problem by making the parallelism of the Beowulf computer transparent to the user. This is done in a way similar to the MPP ports of PVM for parallel computers such as the IBM SP2, Cray T3D and others. Today we present a new way to solve this problem based on the new networking protocol: IPv6 (see RFC-2460 for more detailed info). Among new features, address space is virtually increased into "infinite" (128 bits vs. 32 bits). This will eventually enable not only computers, but even cellulars and any sort of electronic devices to connect the Internet. The NAT problem will become use-less, and P2P (peer-to-peer) decentralized systems will be the main beneficiaries of this new technology. In terms of a non-strict sort, PVM falls in this cathegory (P2P): Every node runs both as a client (pvm task) and a server (pvm daemon). INSTALLATION NOTES: ------------------- Ordinary PVM deployment skill required. Please, refer to corresponding info (Readme, under pvm3 dir) 0) Prerequisites: - A UNIX O.S implementing IPv6 stack. Usually LINUX kernels >= 2.4 do implement it. Also Freebsd >= 5.1, Solaris >= 8... - Obviously, IPv6 connectivity at your beowulf. 1) Download http://www.ngn.euro6ix.org/IPv6/pvm/pvm-3.4.4-v6-20040330.diff http://www.netlib.org/pvm3/pvm3.4.4.tar.gz 2) Unroll the tar.gz and apply the patch. $bash-2.04$ tar xzvf pvm3.tar.gz $bash-2.04$ patch -p0 < pvm-3.4.4-v6-20040330.diff 3) Compile the bundle the next way: Be carefull of using SSH protocol $bash-2.04$ export PVM_RSH=`which ssh` $bash-2.04$ cd pvm3 $bash-2.04$ export PVM_ROOT=`pwd` $bash-2.04$ make CFLOPTS=-DIPv6 WARNING: - If you don't use GNU make you may be on trouble when aplying the flag CFLOPTS=-DIPv6 . If so, try to adjust manually the file pvm3/conf/.def - Take this patch as a Beta, a scratch , or a seed to go on hacking. This is a transient solution. Not so steady to run benchmark problems. Take a look into the BUGS and TODO sections. - As far as I know, (2004-03-31) no official UNIX distro include IPv6-support for NFS and NIS. The tests have been run by using the ordinary IPv4 ones, I mean, our benchmark intranet could run both IPv4 and IPv6. Obviously, PVM UDP daemons were running IPv6. As a matter of abstraction layer provided by the file system, no problems are expected when these protocols NFS/NIS become IPv6 available... RUNNING: -------- Until now, it has been tested only on a i386-[linux-freebsd] Beowulf. More precisely, SuSE 8.1 and FreeBsd 5.1 , but it still not very matured DNS was introduced to make easier the "decimal-dot notation" 154.346.34.145 . IPv6 will make it even harder, with addresses like 2005:35a4:12ff:6730:a423::12. You are encouraged to use always DNS names. If registering DNS entries is not always possible on a benchmark beowulf, just try to write them on the local hosts file (/etc/hosts on linux), as was the use prior to DNS system. For a simple test: bash-2.04$ cd pvm3 bash-2.04$ make e This will compile the examples provided with the tar.gz bundle . bash-2.04$ export PVM_ROOT="/path/to/ipv6/pvm/patch" pvm> add pc2.ipv6lab.inv pvm> conf pvm> spawn -5 -> hello You should watch alternate "hello worlds" from the virtual nodes... Take a look into /tmp/pvml.uid... If you see some dotted address like LINUX [2004:2a04:800:ee10:3434::2] this means you are running PVM on IPv6 !!! Also type bash-2.04$netstat -uan to check your pvmd, pvmd's daemons running... As old PVM used to, the new PVM frees you from dealing with low-level aspects like networking connectivity and transport. So,YOU DO NOT HAVE TO MODIFY your original application source code, BUT YOU HAVE TO RE-COMPILE AND LINK IT against the new library you get in the previous phase, namely libpvm.a . Be carefull of exporting the rigth environment PATH: bash-2.04$ export PVM_ROOT="/path/to/ipv6/pvm/patch" KNOWN BUGS: (Important !!!) ----------------------------- - Please, use SSH protocol to make the master setup the slaves pvmd daemon. You can do this by overwriting the environment variable PVM_RSH. RSH is to become obsolete with IPv6 . Read README for more info. bash-2.04$ export PVM_RSH=`which ssh` - Passing the initial configuration file to the console does NOT work properly yet. Posible problem: "iflist()" is faulty implemented. To setup the PVM on a console, you have to do it by-hand... pvm> add node2.ipv6lab.inv pvm> conf TODO: ----- - Make cleaner the patch ;-) - Somewhere around a call "sendto()" we have to adjust the length of the bytes we send, since the new data "struct sockaddr_storage" is greater than traditional "struct sockaddr_in". I guess some alligment problems should arise, though empirically this has not been the case. - To fix the iflist(). Hard to deal with IPv6 setup interfaces... - The pvmd-localtask daemon: Initially this daemon was run on a UNIX socket. Then, due to portability problems acrross platforms, it was implemented with a TCP/IP socket . Actually it remains so. I think we should change it into the IPv6 loop-back address (::1) OPEN QUESTIONS: --------------- Those interested on this section are kindly required to read the more detailed report: - http://www.gmonline.demon.co.uk/cscene/CS6/CS6-03.htm and contributing with any sugestion by e-mail to (rafael dot martinez at novagnet dot com) * should PVM support dual-stack protocol (IPv6-IPv4)? In my opinion, no. Tratiditional client/server models based on asymetric processing fit entirely this concept, as explained on the pointed URL, but PVM configuration scheme (globally kept in host table) may be hard to maintain by considering both types of connectivity. Consider the following scenario: a dual-stack node given IPv6-IPv4 connectivity could be reached by a IPv4 node, if the former has a DNS A entry (IPv4 addr), but an only IPv4 node (even provided dual-stack by O.S) could not be reached, unless you modify the host table layout and/or the pvm messaging dispatch strategy. Too much effort and not so valuable benefits. SUPPORT: --------- Suggestions, contributions are welcome at (rafael dot martinez at novagnet dot com) Required aid to support this unmatured porting. DISCLAIMER: ----------- I don't know why the following has to be in all caps, but you know lawyers. THIS IS A DEMONSTRATION RELEASE. THE AUTHOR MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOFTWARE FOR ANY OTHER PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESSED OR IMPLIED WARRANTY. THIS NOTICE MUST BE MAINTAINED IN ALL DISTRIBUTED VERSIONS.