The EtherShare AppleTalk protocol stack is either contained in a UNIX loadable module, which is designed to be added to the operating system during runtime, or in a driver which is built into the UNIX kernel during EtherShare installation.
The AppleTalk protocol stack is closely connected to the "atalkd" (
AppleTalk Daemon) program. The protocol stack and "atalkd" provide important basic functions for Apple-Talk networks. The HELIOS servers (print server, file server, etc.) are constructed around this base system.
Note: Mac OS X uses its generic AppleTalk implementation and not the HELIOS "atalkd" daemon. All parameters are set in the Network panel.
The "atalkd" program implements permanent services on the AppleTalk network which are required to operate the EtherShare system. For example, all EtherShare components depend on the functions of this program in order to be able to communicate with the network. None of the servers will start until "atalkd" is running (otherwise you will get a "- cannot register" error message, see also
4.2 ""atalkd" error messages"). The host is normally configured to start "atalkd" automatically when UNIX is booted.
"atalkd" is also responsible for making the names of all AppleTalk services which are available on the UNIX host (i.e. the EtherShare file server, print server, Terminal server, Mail server, and Time server) known to the AppleTalk network.
When a HELIOS service is started, the chosen AppleTalk name for the server (defined in the configuration) is passed to "atalkd", which also receives a corresponding message from the server when it is shut down. "atalkd" automatically checks whether the chosen name is unique to the network zone. If the name is already in use, the server is immediately aborted with the error message "Duplicate name exists already", and it is necessary to change the name in the configuration.
"atalkd" is also responsible for the AppleTalk routing table maintenance, to allow the kernel modules to route between all active network interfaces.
Another task of "atalkd" is to manage all information about connected AppleTalk networks. Under AppleTalk, different logical networks are grouped into zones. "atalkd" automatically maintains an internal routing table to keep track of changes in the network configuration. The routing table allows services and information to be routed through different segments of the network if required.
Changes in the routing table are also passed on to the AppleTalk protocol modules to allow data packets to be routed between different network segments.
4.1 Configure EtherShare as AppleTalk network router
The HELIOS "netconf" utility offers a very convenient user interface for network configuration.
Note that HELIOS "netconf" is only a configuration tool. Messages, like information about whether
Automatic configuration is possible or not, are issued by the respective server programs, not by "netconf" itself.
"netconf" automatically recognizes and displays the network interfaces that are supported by EtherShare, i.e. Ethernet. Even though it is possible to enter new interfaces not yet known to EtherShare, you should keep in mind that these new interfaces may, under certain conditions, cause a system crash.
You do not need to stop EtherShare before configuring your interfaces and zones with "netconf". However, you must stop and start EtherShare after the work is done in order to let the new configuration take effect. "netconf" is described in detail in
4.1.4 "Manual network configuration".
You can use the HELIOS "zones" program to check your network for existing zone information. See
12.4 "zones" for a more detailed description of this program.
4.1.1 Example network setups
The following figures show example network setups from one NIC (
Network Interface Card) up to four NICs:
Fig.
A-7 shows a network setup which is comprised of a server (with one NIC), two clients, and a network printer. This configuration is simple because all nodes are attached directly to the bus.
Fig. 7: Network with 1 NIC
|
Internet with router and two NICs
In the second example configuration, the setup is comprised of one server, but now with two NICs. The server has to link two networks, which include two clients each. Additionally, a network printer is connected to one "single" network (Fig.
8).
A set of
single networks linked together by routers and forming a larger network is called an
internet.
Fig. 8: An internet with 2 NICs and one router
|
Internet with two routers and 2+2 NICs
In the last example configuration (Fig.
9) three single network segments form an internet. Two servers route the networks via four (2+2) NICs. The nodes in each segment are accessible from any other network on this particular internet.
Fig. 9: An internet with 2+2 NICs and two routers
|
4.1.2 Automatic network configuration
If your EtherShare host has only a single network interface, or you do not want to configure EtherShare as a "seed router" (see
4.1.3 "Seed routers, non-seed routers"), EtherShare's AppleTalk protocol stack can be configured to "interrogate" network numbers and zone information automatically each time it loads, and thus avoid the necessity of manually specifying these parameters during EtherShare configuration. This situation is automatically detected by the "netconf" program. If automatic configuration is possible, you will get the following message when you select the network interface:
There is only one network interface detected, thus there is no need to configure any network numbers!
If only one interface is existing, the installation program does not allow manual configuration with "netconf".
Note: The Automatic configuration option requires other AppleTalk routers to be connected up and online during EtherShare startup. If it does not detect any available external routers it starts in single-network mode.
For all EtherShare-supported UNIX operating systems (except for Linux), the
Automatic configuration option is also allowed if you have more than one network interface.
Automatic configuration is enabled by a simplified interface specification in the "Preferences" file:
Single Ethernet interface
[][Programs][atalkd][if]
flags=0
type=Stringlist
value=[1]
[4]eth0
[][Programs][atalkd][if]
flags=0
type=Stringlist
value=[2]
[4]eth0
[4]eth1
The entries are inserted automatically by the "installer" script for all recognized hardware interfaces. To reinstate automatic configuration after you have already configured the interfaces, you can use "netconf" as described in
4.1.4 "Manual network configuration". Alternatively, you can change the "Preferences" using the "prefvalue" command (see Base manual). The relevant preferences are described in
13.2 "AppleTalk preference keys".
4.1.3 Seed routers, non-seed routers
If, in addition to EtherShare, your network includes other, external routers or if it includes certain other types of AppleTalk entities, then it is necessary to specify network numbers and zone information for each physical segment in your network. Routers are configured in accordance with the manufacturer's instructions. The EtherShare configuration is described below.
When you consider an example network with two stand-alone routers, you can either "hard-configure" both routers with identical zone information, or configure one of them to "interrogate" the zone information broadcast by the other one. In the first case, both routers are so-called
seed routers. In the latter case, one of the routers is a
seed router, because it is responsible for broadcasting the zone information, and the other router is a passive,
non-seed router.
The latter case requires less work, because you only have to hard-configure one of the routers. If you change the configuration of the
seed router, the
non-seed router automatically reconfigures itself after a short delay. Configuration changes become effective after a restart of the HELIOS software by use of the scripts "stop-helios" and "start-helios" (see the Base manual).
However, the first case is technically safer because the network is left completely without zone information if the
seed router fails or loses power. This can cause serious disruption of your entire network.
EtherShare can be configured as a
seed router by manually configuring the network connection as described below. However, even if you have chosen to use the EtherShare
Automatic configuration option instead, it is still not a true
non-seed router, because it only "interrogates" network numbers and zone information of the local network segments once, when the AppleTalk module loads, and not on-the-fly like a conventional
non-seed router. Of course, it always adjusts automatically to changed network numbers and zone names of remote network segments (on the far side of external routers).
You may use the HELIOS "zones" program to check your network for existing zone information. See
12.4 "zones" for a more detailed description of this program.
4.1.4 Manual network configuration
Automatic configuration is described earlier in this chapter. Manual configuration is only necessary if automatic configuration is not possible or not desired.
This is done by calling the routine "netconf" in the "HELIOSDIR/sbin" directory. We strongly recommend that you configure your network connection in this way, and not changing the "Preferences", because "netconf" checks the validity of your entries, and in particular the use of valid network numbers.
Note: If required, you may see 4.1 "Configure EtherShare as AppleTalk network router" above for technical details of network configuration parameters.
Start "netconf" with the following UNIX command:
cd /usr/local/helios/
sbin/netconf
Important: Do not run "netconf" from a Helios Terminal connection under Mac OS 9. Stopping the HELIOS services by use of the "stop-helios" script would cut the connection to the server! Better use either the host's console, or a terminal connection other than Helios Terminal.
The "netconf" startup screen shows the program's main menu (Fig.
10).
Fig. 10: Main menu of the "netconf" program
|
The following keys are available to handle the "netconf" program:
- TAB key: navigate within a "netconf" dialog
- "Ctrl -J", "Ctrl -K" (or ARROW keys): navigate within a list of items
- "+" and "-" (or SPACE bar): mark/unmark items from a list
- ESC key (or Ctrl-X): quit the current dialog
Further keys that are required in a specific dialog only, are listed in the bottom line of the respective dialog. Alternatively, they are described in the help windows.
"netconf" includes a convenient online help system which can be activated by pressing "?". An example is shown in Fig.
11.
Fig. 11: The "netconf" online help system
|
- "netconf" gets its information from the "Preferences" file.
- If you are doing an upgrade installation, the "installer" program automatically preserves your previous "Preferences" file so that previously entered zone, network, and printer information, etc. do not get lost.
- If you temporarily de-activate one interface, the configuration will also be saved in "Preferences", and will be available again on re-activating the interface.
- If you have an IBM RS/6000 host, note that two logical interface names exist for each card. "et0" is used for AppleTalk (and is used by EtherShare), and "en0" is used for TCP/IP. You should see an "et0" entry in the list for the AppleTalk connection.
The "Configure Adapter" option in the main menu displays a list of all available interfaces.
Fig.
12 shows a network with one single interface only, where no configuration is necessary. If you press RETURN in order to open the configuration dialog, a corresponding message pops up.
Fig. 12: The "No need to configure" information message
|
List interfaces/ Add interface entries
Fig.
13 shows a network with two interfaces. As mentioned before, "netconf" automatically checks for all recognized Ethernet interfaces in your host and shows them on the screen. If an interface cannot be recognized it will be missing in the list. In that case, you can press "Ctrl-V" (on some machines it may be necessary to press "Ctrl-V" two times) to open a dialog that lets you specify and configure a new interface. This dialog is shown in Fig.
14. For instructions on how to fill in the dialog, please read paragraph
Changing an interface entry below.
Remember that for a new entry, you need to know the correct name of the interface and whether it supports AppleTalk. Incompatibilities may cause system crashes.
Fig. 13: Network with two interfaces
|
Fig. 14: Creating a new interface entry
|
Changing an interface entry
If you wish to change the configuration of an existing interface, you have to switch off automatic configuration by using the "a" key, and then press RETURN.
Note that you can enter a manual configuration and then switch between
active and
non-active. The manual settings will be stored in the "Preferences" file when you switch on automatic configuration, and they will be available when you switch automatic configuration off again.
You may (de)activate entries in the "AppleTalk Network Setup" dialog by means of the space bar (compare bottom line info in Fig.
13).
Fig.
15 shows the dialog window that lets you change the configuration of a particular interface.
Fig. 15: Changing the configuration of interface "eth0"
|
In the above dialog, you have to enter a network number range from
Start -
End, where
Start can be equal to
End.
If you have either an external or an internal router, a valid number for
Start and
End is any number between 0 and 65279. Numbers between 65280 and 65534 are only used if you do not have a router, otherwise they are reserved. Note that EtherShare provides an internal router automatically if you have more than one network connection, as in this example.
Each range, e.g.
10 -
10, allows approx. 250 entities (nodes).
The correct choice of the network number range is subject to the following restrictions:
- If you have no router (i.e. only one internal Ethernet connection in your host and no other, external routers) do always use the Automatic configuration option.
- If you want to connect your host to an external router box on the same network segment (cable), you must use the same network number range (Start - End) and the same zone names in the same order as the router. Please refer to the router's manual to find out how to determine its configuration. This is often done via web-based configuration.
- If an external router broadcasts information that differs from the configuration you have entered, you will receive a warning when EtherShare starts. The system will always rely on the router's information, in that case, and will ignore your entries.
- If your host has more than one network connection, as in this example, network numbers and network number ranges must be unique and must not overlap each other or those of other, external routers to which you do not want to establish a connection.
Proceed to the
Zones list in the dialog and press RETURN to open a second dialog that lets you specify the name of the default zone for the current interface (Fig.
16). You may use the
New Zone dialog again to define additional zones for the interface later.
Fig. 16: Entering an individual zone name
|
When entering names, please keep the following in mind:
- Zone names may have up to 31 characters.
- After entering the default zone name, you may enter additional zone names for the same network number range.
- If you wish to connect your host to an external AppleTalk router box, you must use exactly the same zone name(s) in the same order as the router. Please refer to the router's instruction manual to find out how to determine its configuration. This is often done with a configuration program on a Macintosh attached to the router.
- If an external router provides one or more zone names for the local network segment, you must either specify all of them or none of them. In the latter case, EtherShare "interrogates" the router for the names. This is, however, less safe (see 4.1.3 "Seed routers, non-seed routers" above).
- If your network has more than 12 zones, they can be specified manually by editing the "Preferences" file.
- If you wish to replace an entry, use the BACKSPACE key first to delete the existing one.
- In the New Zone dialog, you can use the "*" key to open a pop-up menu that shows all recently used zone names.
Fig.
17 shows the completed dialog. The settings will be saved on selecting the
Ok button. They appear in the list of interfaces as illustrated in Fig.
18.
Fig. 17: Saving the settings in the interface dialog
|
Note: Zone names are stored as UTF-8 encoded names in the preference file. "netconf" cannot handle non-ASCII names, therefore we recommend to set zone names with special characters, e.g. Umlauts, via "prefvalue" using an UTF-8 terminal, e.g. the Mac OS X Terminal.
Fig. 18: List of interfaces showing the new settings for "eth0"
|
Fig.
19 shows the dialog for the interface "eth0". In that dialog, we have entered two zones, and have made the second one the default zone.
Fig. 19: Adding zones to an interface and changing the default zone setting
|
The final example configuration is shown in Fig.
20. The configuration includes two interfaces with three zones. One of the zones is a shared one. You can now press the ESC key to return to the main menu and then select item
Configure Zones to register the available zones (Fig.
21).
Fig. 20: Example of a final adapter configuration
|
Fig. 21: Opening the "Configure Zones" dialog
|
Fig.
22 shows the dialog that lets you register zones, i.e. specify zones where EtherShare services should be listed.
Fig. 22: Moving entries between two lists of zones
|
You can move a zone between the left and right column of the dialog by using the "Ctrl-L", or the "Ctrl-H" key. This is illustrated in Fig.
22 above and Fig.
23 below.
Fig. 23: Removing items from "Zones providing ES Services"
|
The
Auto Zones button in the dialog can be used to make sure that for each active interface at least one of its zones is registered.
EtherShare services can only be registered in local zones, i.e. in zones that have been set up on a network segment (cable) which is directly connected to the server.
Note: The lists in the dialog (Available Zones and Zones providing ES Services) would be empty if Automatic configuration was active.
The default zone can be seen when using the
zones -l command (see
12.4 "zones") on a UNIX shell. In the list of zones, the default zone is marked by an "*".
Reconfiguring network
connections
If your network changes (on segments where EtherShare is installed) , for example if you have added a new router, you can use "netconf" again to reconfigure the network connection at a later date, without re-installing EtherShare. To do this, EtherShare must be stopped using the "stop-helios" command on the host's console.
The connections will be active as soon as you restart EtherShare with "start-helios".
If you have chosen the
Automatic configuration option rather than manual configuration with "netconf", all you need to do is stop EtherShare with "stop-helios" and restart it again - EtherShare's AppleTalk protocol stack will "interrogate" the network numbers and zone information again when it reloads.
4.2 "atalkd" error messages
"atalkd" is the first program started by EtherShare and is responsible for configuring the network interfaces. Thus, most of the error messages are concerned with network errors. All error messages are prefixed with "atalkd:". This is left out in the following for brevity. "atalkd" can also issue any of the "license" and "generic" error messages (see Base manual).
Some error messages depend on the class of operating system (OS). "atalkd" divides the variations in two classes: streams-based OS (e.g. Solaris) and socket-based OS (IRIX, AIX-).
"atalkd" could not open the DDP streams multiplexor. This will happen if the kernel modules are not installed (streams-based OS only).
An error occurred while opening an AppleTalk socket. The first "%s" is the socket (rtmp, nbp-) and the second "%s" is the error cause. The most likely reason is that an attempt was made to start a second "atalkd" process while one is already running.
addif: garbled interface "%s"
"atalkd" could not understand the syntax of the
if entry in "Preferences". Use "netconf" (in "HELIOSDIR/sbin") for network configurations instead.
The interface "%s" could not be opened due to "%m". You will get this error, e.g. if you specify a non-existent interface with the
if flag in "Preferences" (streams-based OS only).
addif DL_ATTACH_REQ %s to %d: cannot attach
With a streams-based OS, you will get this error if you specify an interface unit number which is not supported by the underlying network driver (e.g. "le2" if you have only "le0" and "le1").
addif DL_BIND_REQ %s: cannot bind to sap 0x%x
With a streams-based OS, this can happen if the specified service access point is already in use. For example, this could happen if you start "atalkd" twice or if you have another product installed that already uses AppleTalk.
ignoring interface %s, no seed router found
The interface "%s" was supposed to be configured automatically, but no external seed router was found to supply network numbers and zone names. For example, more than one interface card is installed on your server and none of the network segments has an active seed router.
network range conflict on %s:%d-%d, ignoring interface
The interface "%s" was configured with a network number range that conflicts with other network interfaces. Use the "autoconf" option in "netconf" (in "HELIOSDIR/sbin") to let "atalkd" automatically configure the interface.
conflicting seed info on %s, using %d-%d instead of %d-%d
The interface "%s" was configured manually to use a particular network range, but an external seed router did supply a different range for this cable segment. "atalkd" will use the value from the external seed router and ignore the manual configuration.
routing conflict on %s from net %d, node %d
While the network was already up and running a new router on network interface "%s" was sending conflicting routing table information. The conflicting information will be ignored. This can happen if a router starts up later (e.g. on a dialup line) or two previously independent AppleTalk networks are merged. All routers that seed that cable segment must be checked for proper configuration.
too many hops via %s to %d (%d)
The routing information received on interface "%s" shows that the maximum hop count of AppleTalk packets would be exceeded attempting to reach network "%d". In parentheses appears the actual number of hops. Check your AppleTalk network topology in order to provide no network is more than 15 hops away from any other part of the network.
With a socket-based OS, "atalkd" could not create an AppleTalk socket. If "%m" = "Protocol not supported", this means that no AppleTalk kernel modules are found in the currently running UNIX. If "%m" = "Can't assign requested address", this means that none of the network interfaces specified in "Preferences" succeeded to configure.
autoconf %s: SIOCGIFFLAGS %m
"atalkd" could not get the flags associated with interface "%s". This can happen if the interface specified in the
if flag in "Preferences" does not exist (socket-based OS only).
"atalkd" could not set the AppleTalk address for an interface. This happens on all interface cards that do not support AppleTalk.
routine: DDPWrite to %d: %s
The named routine (nbp, rtmp-) could not write a packet to network "%d". If "%s" = "Network unreachable", this usually means that network numbers are misconfigured.
A route could not be added by "atalkd" to the kernel-resident routing table. This usually means that network numbers are misconfigured.
"atalkd" could not add a multicast address (functional address on Token Ring) for interface "%s". This can happen if there are too many zones configured for one Phase II network, or if the hardware interface does not support multicast addresses.
register_me: cannot register %s
"atalkd" could not register its serial number on the network. This can happen if you use the same enduser serial number twice on the network, e.g. you have transferred EtherShare to a new host and not deleted the old copy.
nbp_listener: duplicate EtherShare serial
"atalkd" has detected that there is another end user copy of EtherShare on the network which is using the same serial number.
Note: The following "atalkd" error message can only occur with EtherShare 3.1 or newer under Linux:
addif: cannot autoconf more than one interface, entry "%s" ignored