3.3. Samba-Test

Our focus in this test was to make performance tests over a point-to-point connection because in the previous tests we made all our file transmissions over the LAN of our institution. In fact our LAN is completley based on switched ethernet technology, so there are no collisions possible which would occur using a shared medium. Collisions would affect the performance throughput intensively, so it would not be possible to make correct performance tests under such conditions. But even over a switched ethernet it is possible that performance considerations are lightly distorted when several hosts try to access one port of a switch at the same moment. Nevertheless this testing environment is very interesting because it reflects real life conditions and the distortions are relatively slight. But in order to be able to verify our previously raised conclusions with 100% unaffected values, we carried out a point-to-point test. To establish an independent point-to-point testing environment, we disconnected our local desktop switch from the LAN and did connect only two hosts to it, our server (the SUN Ultra 10 - rfhs8036) and our client (the Dell-Precision 410- rfhnt8004). We chose the SMB-protocol for this test because its another application-layer protocol which we have not yet considered. The main advantage of smb is its portabillity which makes it available on each of our tested oprating systems.

Realization:

All necessary server- and client-side applications for a smb-connection are included in the Samba-suite, which is available as tarball in source-format. The standard ./configure make make install procedure is used to fit the samba-applications on the used UNIX-derivate and compile/install them. We used version 2.2.8a of the Samba-suite. In order to IPv6-enable the applications, a the patch samba-2.2.8a+IPv6-20030712.diff is needed, which can be obtained at http://v6web.litech.org/samba/. This patch affects the server-side deamons as well as the client-side applications. To compile Samba on Solaris 9 (the OS of our Server) it is necessary, to add -lresolv to the LIBS- variable of the Makefile, because Solaris would not be able to resolv the inet_aton() function otherwise. This function is included in the libresolv.so library on Solaris, a fact which should normally be figured out by the configure-script - this is not the case here. Because we did not want our smbd to run permanently, we deactivated the samba shell script in /etc/init.d. Our concern was to start smbd and nmbd by the internet superserver in case of an incoming request. To enable this feature, we made appropriate entries in /etc/inetd.conf. Next we wanted to use "direct hosted SMB", which means that SMB runs directly on TCP on port 445 without the intermediate redundant NetBIOS layer. That`s why our smbd had to listen to port 445 instead of 139 (netbios-ssn), so we modifyed /etc/services. At this point we were able to transmit files from UNIX to UNIX over IPv4 as well as over IPv6 without problems. But now we recognized that Windows XP is not capable of setting up a SMB connection by default. Also we wanted to have a command-line client tool on Windows which does not exist, because XP uses the Windows-Explorer to connect to a SMB-server. Another wish from our side was to be able to use exactly the same client-application as we did in the other tests. So we tried to compile the samba-suite using cygwin. Our cygwin-version is 1.5.5.1 which we made IPv6-able using the patch cygwin-1.5.5-1-ipv6-0.2.zip from http://win6.jp. In fact this is not really a "patch" in the common sense, but this zip-File includes several include-files, library-files and a new cygwin-dll in order to give a IPv6-API to cygwin. The next problem we were confronted with is the fact, that there is no fcntl-file-locking available under cygwin. So the configure-script ends its work when recognizing this circumstance and no makefile is produced. But the smbclient does not need file locking, because this is important for the server-side only. We now figured out that configure uses a test-program called fcntl_test.c located in the source/tests directory in order to test for fcntl-locking availability. We simply deactivated the test in the source code and everything was fine: configure produced our makefile and samba compiled correctly. Our patch fcntl_lock.c.diff.html does this above mentioned test-deactivation.