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