1 Linux DECnet Networking Layer Information 2 =========================================== 3 41) Other documentation.... 5 6 o Project Home Pages 7 http://www.chygwyn.com/ - Kernel info 8 http://linux-decnet.sourceforge.net/ - Userland tools 9 http://www.sourceforge.net/projects/linux-decnet/ - Status page 10 112) Configuring the kernel 12 13Be sure to turn on the following options: 14 15 CONFIG_DECNET (obviously) 16 CONFIG_PROC_FS (to see what's going on) 17 CONFIG_SYSCTL (for easy configuration) 18 19if you want to try out router support (not properly debugged yet) 20you'll need the following options as well... 21 22 CONFIG_DECNET_ROUTER (to be able to add/delete routes) 23 CONFIG_NETFILTER (will be required for the DECnet routing daemon) 24 25Don't turn on SIOCGIFCONF support for DECnet unless you are really sure 26that you need it, in general you won't and it can cause ifconfig to 27malfunction. 28 29Run time configuration has changed slightly from the 2.4 system. If you 30want to configure an endnode, then the simplified procedure is as follows: 31 32 o Set the MAC address on your ethernet card before starting _any_ other 33 network protocols. 34 35As soon as your network card is brought into the UP state, DECnet should 36start working. If you need something more complicated or are unsure how 37to set the MAC address, see the next section. Also all configurations which 38worked with 2.4 will work under 2.5 with no change. 39 403) Command line options 41 42You can set a DECnet address on the kernel command line for compatibility 43with the 2.4 configuration procedure, but in general it's not needed any more. 44If you do st a DECnet address on the command line, it has only one purpose 45which is that its added to the addresses on the loopback device. 46 47With 2.4 kernels, DECnet would only recognise addresses as local if they 48were added to the loopback device. In 2.5, any local interface address 49can be used to loop back to the local machine. Of course this does not 50prevent you adding further addresses to the loopback device if you 51want to. 52 53N.B. Since the address list of an interface determines the addresses for 54which "hello" messages are sent, if you don't set an address on the loopback 55interface then you won't see any entries in /proc/net/neigh for the local 56host until such time as you start a connection. This doesn't affect the 57operation of the local communications in any other way though. 58 59The kernel command line takes options looking like the following: 60 61 decnet.addr=1,2 62 63the two numbers are the node address 1,2 = 1.2 For 2.2.xx kernels 64and early 2.3.xx kernels, you must use a comma when specifying the 65DECnet address like this. For more recent 2.3.xx kernels, you may 66use almost any character except space, although a `.` would be the most 67obvious choice :-) 68 69There used to be a third number specifying the node type. This option 70has gone away in favour of a per interface node type. This is now set 71using /proc/sys/net/decnet/conf/<dev>/forwarding. This file can be 72set with a single digit, 0=EndNode, 1=L1 Router and 2=L2 Router. 73 74There are also equivalent options for modules. The node address can 75also be set through the /proc/sys/net/decnet/ files, as can other system 76parameters. 77 78Currently the only supported devices are ethernet and ip_gre. The 79ethernet address of your ethernet card has to be set according to the DECnet 80address of the node in order for it to be autoconfigured (and then appear in 81/proc/net/decnet_dev). There is a utility available at the above 82FTP sites called dn2ethaddr which can compute the correct ethernet 83address to use. The address can be set by ifconfig either before or 84at the time the device is brought up. If you are using RedHat you can 85add the line: 86 87 MACADDR=AA:00:04:00:03:04 88 89or something similar, to /etc/sysconfig/network-scripts/ifcfg-eth0 or 90wherever your network card's configuration lives. Setting the MAC address 91of your ethernet card to an address starting with "hi-ord" will cause a 92DECnet address which matches to be added to the interface (which you can 93verify with iproute2). 94 95The default device for routing can be set through the /proc filesystem 96by setting /proc/sys/net/decnet/default_device to the 97device you want DECnet to route packets out of when no specific route 98is available. Usually this will be eth0, for example: 99 100 echo -n "eth0" >/proc/sys/net/decnet/default_device 101 102If you don't set the default device, then it will default to the first 103ethernet card which has been autoconfigured as described above. You can 104confirm that by looking in the default_device file of course. 105 106There is a list of what the other files under /proc/sys/net/decnet/ do 107on the kernel patch web site (shown above). 108 1094) Run time kernel configuration 110 111This is either done through the sysctl/proc interface (see the kernel web 112pages for details on what the various options do) or through the iproute2 113package in the same way as IPv4/6 configuration is performed. 114 115Documentation for iproute2 is included with the package, although there is 116as yet no specific section on DECnet, most of the features apply to both 117IP and DECnet, albeit with DECnet addresses instead of IP addresses and 118a reduced functionality. 119 120If you want to configure a DECnet router you'll need the iproute2 package 121since its the _only_ way to add and delete routes currently. Eventually 122there will be a routing daemon to send and receive routing messages for 123each interface and update the kernel routing tables accordingly. The 124routing daemon will use netfilter to listen to routing packets, and 125rtnetlink to update the kernels routing tables. 126 127The DECnet raw socket layer has been removed since it was there purely 128for use by the routing daemon which will now use netfilter (a much cleaner 129and more generic solution) instead. 130 1315) How can I tell if its working ? 132 133Here is a quick guide of what to look for in order to know if your DECnet 134kernel subsystem is working. 135 136 - Is the node address set (see /proc/sys/net/decnet/node_address) 137 - Is the node of the correct type 138 (see /proc/sys/net/decnet/conf/<dev>/forwarding) 139 - Is the Ethernet MAC address of each Ethernet card set to match 140 the DECnet address. If in doubt use the dn2ethaddr utility available 141 at the ftp archive. 142 - If the previous two steps are satisfied, and the Ethernet card is up, 143 you should find that it is listed in /proc/net/decnet_dev and also 144 that it appears as a directory in /proc/sys/net/decnet/conf/. The 145 loopback device (lo) should also appear and is required to communicate 146 within a node. 147 - If you have any DECnet routers on your network, they should appear 148 in /proc/net/decnet_neigh, otherwise this file will only contain the 149 entry for the node itself (if it doesn't check to see if lo is up). 150 - If you want to send to any node which is not listed in the 151 /proc/net/decnet_neigh file, you'll need to set the default device 152 to point to an Ethernet card with connection to a router. This is 153 again done with the /proc/sys/net/decnet/default_device file. 154 - Try starting a simple server and client, like the dnping/dnmirror 155 over the loopback interface. With luck they should communicate. 156 For this step and those after, you'll need the DECnet library 157 which can be obtained from the above ftp sites as well as the 158 actual utilities themselves. 159 - If this seems to work, then try talking to a node on your local 160 network, and see if you can obtain the same results. 161 - At this point you are on your own... :-) 162 1636) How to send a bug report 164 165If you've found a bug and want to report it, then there are several things 166you can do to help me work out exactly what it is that is wrong. Useful 167information (_most_ of which _is_ _essential_) includes: 168 169 - What kernel version are you running ? 170 - What version of the patch are you running ? 171 - How far though the above set of tests can you get ? 172 - What is in the /proc/decnet* files and /proc/sys/net/decnet/* files ? 173 - Which services are you running ? 174 - Which client caused the problem ? 175 - How much data was being transferred ? 176 - Was the network congested ? 177 - How can the problem be reproduced ? 178 - Can you use tcpdump to get a trace ? (N.B. Most (all?) versions of 179 tcpdump don't understand how to dump DECnet properly, so including 180 the hex listing of the packet contents is _essential_, usually the -x flag. 181 You may also need to increase the length grabbed with the -s flag. The 182 -e flag also provides very useful information (ethernet MAC addresses)) 183 1847) MAC FAQ 185 186A quick FAQ on ethernet MAC addresses to explain how Linux and DECnet 187interact and how to get the best performance from your hardware. 188 189Ethernet cards are designed to normally only pass received network frames 190to a host computer when they are addressed to it, or to the broadcast address. 191 192Linux has an interface which allows the setting of extra addresses for 193an ethernet card to listen to. If the ethernet card supports it, the 194filtering operation will be done in hardware, if not the extra unwanted packets 195received will be discarded by the host computer. In the latter case, 196significant processor time and bus bandwidth can be used up on a busy 197network (see the NAPI documentation for a longer explanation of these 198effects). 199 200DECnet makes use of this interface to allow running DECnet on an ethernet 201card which has already been configured using TCP/IP (presumably using the 202built in MAC address of the card, as usual) and/or to allow multiple DECnet 203addresses on each physical interface. If you do this, be aware that if your 204ethernet card doesn't support perfect hashing in its MAC address filter 205then your computer will be doing more work than required. Some cards 206will simply set themselves into promiscuous mode in order to receive 207packets from the DECnet specified addresses. So if you have one of these 208cards its better to set the MAC address of the card as described above 209to gain the best efficiency. Better still is to use a card which supports 210NAPI as well. 211 212 2138) Mailing list 214 215If you are keen to get involved in development, or want to ask questions 216about configuration, or even just report bugs, then there is a mailing 217list that you can join, details are at: 218 219http://sourceforge.net/mail/?group_id=4993 220 2219) Legal Info 222 223The Linux DECnet project team have placed their code under the GPL. The 224software is provided "as is" and without warranty express or implied. 225DECnet is a trademark of Compaq. This software is not a product of 226Compaq. We acknowledge the help of people at Compaq in providing extra 227documentation above and beyond what was previously publicly available. 228 229Steve Whitehouse <SteveW@ACM.org> 230 231