| Linux DECnet Networking Layer Information |
| =========================================== |
| |
| 1) Other documentation.... |
| |
| o Project Home Pages |
| http://www.chygwyn.com/DECnet/ - Kernel info |
| http://linux-decnet.sourceforge.net/ - Userland tools |
| http://www.sourceforge.net/projects/linux-decnet/ - Status page |
| |
| 2) Configuring the kernel |
| |
| Be sure to turn on the following options: |
| |
| CONFIG_DECNET (obviously) |
| CONFIG_PROC_FS (to see what's going on) |
| CONFIG_SYSCTL (for easy configuration) |
| |
| if you want to try out router support (not properly debugged yet) |
| you'll need the following options as well... |
| |
| CONFIG_DECNET_ROUTER (to be able to add/delete routes) |
| CONFIG_NETFILTER (will be required for the DECnet routing daemon) |
| |
| CONFIG_DECNET_ROUTE_FWMARK is optional |
| |
| Don't turn on SIOCGIFCONF support for DECnet unless you are really sure |
| that you need it, in general you won't and it can cause ifconfig to |
| malfunction. |
| |
| 3) Command line options |
| |
| The kernel command line takes options looking like the following: |
| |
| decnet=1,2 |
| |
| the two numbers are the node address 1,2 = 1.2 For 2.2.xx kernels |
| and early 2.3.xx kernels, you must use a comma when specifying the |
| DECnet address like this. For more recent 2.3.xx kernels, you may |
| use almost any character except space, although a `.` would be the most |
| obvious choice :-) |
| |
| There used to be a third number specifying the node type. This option |
| has gone away in favour of a per interface node type. This is now set |
| using /proc/sys/net/decnet/conf/<dev>/forwarding. This file can be |
| set with a single digit, 0=EndNode, 1=L1 Router and 2=L2 Router. |
| |
| There are also equivalent options for modules. The node address can |
| also be set through the /proc/sys/net/decnet/ files, as can other system |
| parameters. |
| |
| Currently the only supported devices are ethernet and ip_gre. The |
| ethernet address of your ethernet card has to be set according to the DECnet |
| address of the node in order for it to be recognised (and thus appear in |
| /proc/net/decnet_dev). There is a utility available at the above |
| FTP sites called dn2ethaddr which can compute the correct ethernet |
| address to use. The address can be set by ifconfig either before at |
| at the time the device is brought up. If you are using RedHat you can |
| add the line: |
| |
| MACADDR=AA:00:04:00:03:04 |
| |
| or something similar, to /etc/sysconfig/network-scripts/ifcfg-eth0 or |
| wherever your network card's configuration lives. |
| |
| You will also need to set /proc/sys/net/decnet/default_device to the |
| device you want DECnet to route packets out of when no specific route |
| is available. Usually this will be eth0, for example: |
| |
| echo -n "eth0" >/proc/sys/net/decnet/default_device |
| |
| There is a list of what the other files under /proc/sys/net/decnet/ do |
| on the kernel patch web site (shown above). |
| |
| 4) Run time kernel configuration |
| |
| This is either done through the sysctl/proc interface (see the kernel web |
| pages for details on what the various options do) or through the iproute2 |
| package in the same way as IPv4/6 configuration is performed. |
| |
| Documentation for iproute2 is included with the package, although there is |
| as yet no specific section on DECnet, most of the features apply to both |
| IP and DECnet, albeit with DECnet addresses instead of IP addresses and |
| a reduced functionality. |
| |
| If you want to configure a DECnet router you'll need the iproute2 package |
| since its the _only_ way to add and delete routes currently. Eventually |
| there will be a routing daemon to send and receive routing messages for |
| each interface and update the kernel routing tables accordingly. The |
| routing daemon will use netfilter to listen to routing packets, and |
| rtnetlink to update the kernels routing tables. |
| |
| The DECnet raw socket layer has been removed since it was there purely |
| for use by the routing daemon which will now use netfilter (a much cleaner |
| and more generic solution) instead. |
| |
| 5) How can I tell if its working ? |
| |
| Here is a quick guide of what to look for in order to know if your DECnet |
| kernel subsystem is working. |
| |
| - Is the node address set (see /proc/sys/net/decnet/node_address) |
| - Is the node of the correct type |
| (see /proc/sys/net/decnet/conf/<dev>/forwarding) |
| - Is the Ethernet MAC address of each Ethernet card set to match |
| the DECnet address. If in doubt use the dn2ethaddr utility available |
| at the ftp archive. |
| - If the previous two steps are satisfied, and the Ethernet card is up, |
| you should find that it is listed in /proc/net/decnet_dev and also |
| that it appears as a directory in /proc/sys/net/decnet/conf/. The |
| loopback device (lo) should also appear and is required to communicate |
| within a node. |
| - If you have any DECnet routers on your network, they should appear |
| in /proc/net/decnet_neigh, otherwise this file will only contain the |
| entry for the node itself (if it doesn't check to see if lo is up). |
| - If you want to send to any node which is not listed in the |
| /proc/net/decnet_neigh file, you'll need to set the default device |
| to point to an Ethernet card with connection to a router. This is |
| again done with the /proc/sys/net/decnet/default_device file. |
| - Try starting a simple server and client, like the dnping/dnmirror |
| over the loopback interface. With luck they should communicate. |
| For this step and those after, you'll need the DECnet library |
| which can be obtained from the above ftp sites as well as the |
| actual utilities themselves. |
| - If this seems to work, then try talking to a node on your local |
| network, and see if you can obtain the same results. |
| - At this point you are on your own... :-) |
| |
| 6) How to send a bug report |
| |
| If you've found a bug and want to report it, then there are several things |
| you can do to help me work out exactly what it is that is wrong. Useful |
| information (_most_ of which _is_ _essential_) includes: |
| |
| - What kernel version are you running ? |
| - What version of the patch are you running ? |
| - How far though the above set of tests can you get ? |
| - What is in the /proc/decnet* files and /proc/sys/net/decnet/* files ? |
| - Which services are you running ? |
| - Which client caused the problem ? |
| - How much data was being transferred ? |
| - Was the network congested ? |
| - If there was a kernel panic, please run the output through ksymoops |
| before sending it to me, otherwise its _useless_. |
| - How can the problem be reproduced ? |
| - Can you use tcpdump to get a trace ? (N.B. Most (all?) versions of |
| tcpdump don't understand how to dump DECnet properly, so including |
| the hex listing of the packet contents is _essential_, usually the -x flag. |
| You may also need to increase the length grabbed with the -s flag. The |
| -e flag also provides very useful information (ethernet MAC addresses)) |
| |
| 7) Mailing list |
| |
| If you are keen to get involved in development, or want to ask questions |
| about configuration, or even just report bugs, then there is a mailing |
| list that you can join, details are at: |
| |
| http://sourceforge.net/mail/?group_id=4993 |
| |
| 8) Legal Info |
| |
| The Linux DECnet project team have placed their code under the GPL. The |
| software is provided "as is" and without warranty express or implied. |
| DECnet is a trademark of Compaq. This software is not a product of |
| Compaq. We acknowledge the help of people at Compaq in providing extra |
| documentation above and beyond what was previously publicly available. |
| |
| Steve Whitehouse <SteveW@ACM.org> |
| |