Back to home page

OSCL-LXR

 
 

    


0001 .. SPDX-License-Identifier: GPL-2.0
0002 
0003 =========================================
0004 Linux DECnet Networking Layer Information
0005 =========================================
0006 
0007 1. Other documentation....
0008 ==========================
0009 
0010    - Project Home Pages
0011      - http://www.chygwyn.com/                             - Kernel info
0012      - http://linux-decnet.sourceforge.net/                - Userland tools
0013      - http://www.sourceforge.net/projects/linux-decnet/   - Status page
0014 
0015 2. Configuring the kernel
0016 =========================
0017 
0018 Be sure to turn on the following options:
0019 
0020     - CONFIG_DECNET (obviously)
0021     - CONFIG_PROC_FS (to see what's going on)
0022     - CONFIG_SYSCTL (for easy configuration)
0023 
0024 if you want to try out router support (not properly debugged yet)
0025 you'll need the following options as well...
0026 
0027     - CONFIG_DECNET_ROUTER (to be able to add/delete routes)
0028     - CONFIG_NETFILTER (will be required for the DECnet routing daemon)
0029 
0030 Don't turn on SIOCGIFCONF support for DECnet unless you are really sure
0031 that you need it, in general you won't and it can cause ifconfig to
0032 malfunction.
0033 
0034 Run time configuration has changed slightly from the 2.4 system. If you
0035 want to configure an endnode, then the simplified procedure is as follows:
0036 
0037  - Set the MAC address on your ethernet card before starting _any_ other
0038    network protocols.
0039 
0040 As soon as your network card is brought into the UP state, DECnet should
0041 start working. If you need something more complicated or are unsure how
0042 to set the MAC address, see the next section. Also all configurations which
0043 worked with 2.4 will work under 2.5 with no change.
0044 
0045 3. Command line options
0046 =======================
0047 
0048 You can set a DECnet address on the kernel command line for compatibility
0049 with the 2.4 configuration procedure, but in general it's not needed any more.
0050 If you do st a DECnet address on the command line, it has only one purpose
0051 which is that its added to the addresses on the loopback device.
0052 
0053 With 2.4 kernels, DECnet would only recognise addresses as local if they
0054 were added to the loopback device. In 2.5, any local interface address
0055 can be used to loop back to the local machine. Of course this does not
0056 prevent you adding further addresses to the loopback device if you
0057 want to.
0058 
0059 N.B. Since the address list of an interface determines the addresses for
0060 which "hello" messages are sent, if you don't set an address on the loopback
0061 interface then you won't see any entries in /proc/net/neigh for the local
0062 host until such time as you start a connection. This doesn't affect the
0063 operation of the local communications in any other way though.
0064 
0065 The kernel command line takes options looking like the following::
0066 
0067     decnet.addr=1,2
0068 
0069 the two numbers are the node address 1,2 = 1.2 For 2.2.xx kernels
0070 and early 2.3.xx kernels, you must use a comma when specifying the
0071 DECnet address like this. For more recent 2.3.xx kernels, you may
0072 use almost any character except space, although a `.` would be the most
0073 obvious choice :-)
0074 
0075 There used to be a third number specifying the node type. This option
0076 has gone away in favour of a per interface node type. This is now set
0077 using /proc/sys/net/decnet/conf/<dev>/forwarding. This file can be
0078 set with a single digit, 0=EndNode, 1=L1 Router and  2=L2 Router.
0079 
0080 There are also equivalent options for modules. The node address can
0081 also be set through the /proc/sys/net/decnet/ files, as can other system
0082 parameters.
0083 
0084 Currently the only supported devices are ethernet and ip_gre. The
0085 ethernet address of your ethernet card has to be set according to the DECnet
0086 address of the node in order for it to be autoconfigured (and then appear in
0087 /proc/net/decnet_dev). There is a utility available at the above
0088 FTP sites called dn2ethaddr which can compute the correct ethernet
0089 address to use. The address can be set by ifconfig either before or
0090 at the time the device is brought up. If you are using RedHat you can
0091 add the line::
0092 
0093     MACADDR=AA:00:04:00:03:04
0094 
0095 or something similar, to /etc/sysconfig/network-scripts/ifcfg-eth0 or
0096 wherever your network card's configuration lives. Setting the MAC address
0097 of your ethernet card to an address starting with "hi-ord" will cause a
0098 DECnet address which matches to be added to the interface (which you can
0099 verify with iproute2).
0100 
0101 The default device for routing can be set through the /proc filesystem
0102 by setting /proc/sys/net/decnet/default_device to the
0103 device you want DECnet to route packets out of when no specific route
0104 is available. Usually this will be eth0, for example::
0105 
0106     echo -n "eth0" >/proc/sys/net/decnet/default_device
0107 
0108 If you don't set the default device, then it will default to the first
0109 ethernet card which has been autoconfigured as described above. You can
0110 confirm that by looking in the default_device file of course.
0111 
0112 There is a list of what the other files under /proc/sys/net/decnet/ do
0113 on the kernel patch web site (shown above).
0114 
0115 4. Run time kernel configuration
0116 ================================
0117 
0118 
0119 This is either done through the sysctl/proc interface (see the kernel web
0120 pages for details on what the various options do) or through the iproute2
0121 package in the same way as IPv4/6 configuration is performed.
0122 
0123 Documentation for iproute2 is included with the package, although there is
0124 as yet no specific section on DECnet, most of the features apply to both
0125 IP and DECnet, albeit with DECnet addresses instead of IP addresses and
0126 a reduced functionality.
0127 
0128 If you want to configure a DECnet router you'll need the iproute2 package
0129 since its the _only_ way to add and delete routes currently. Eventually
0130 there will be a routing daemon to send and receive routing messages for
0131 each interface and update the kernel routing tables accordingly. The
0132 routing daemon will use netfilter to listen to routing packets, and
0133 rtnetlink to update the kernels routing tables.
0134 
0135 The DECnet raw socket layer has been removed since it was there purely
0136 for use by the routing daemon which will now use netfilter (a much cleaner
0137 and more generic solution) instead.
0138 
0139 5. How can I tell if its working?
0140 =================================
0141 
0142 Here is a quick guide of what to look for in order to know if your DECnet
0143 kernel subsystem is working.
0144 
0145    - Is the node address set (see /proc/sys/net/decnet/node_address)
0146    - Is the node of the correct type
0147      (see /proc/sys/net/decnet/conf/<dev>/forwarding)
0148    - Is the Ethernet MAC address of each Ethernet card set to match
0149      the DECnet address. If in doubt use the dn2ethaddr utility available
0150      at the ftp archive.
0151    - If the previous two steps are satisfied, and the Ethernet card is up,
0152      you should find that it is listed in /proc/net/decnet_dev and also
0153      that it appears as a directory in /proc/sys/net/decnet/conf/. The
0154      loopback device (lo) should also appear and is required to communicate
0155      within a node.
0156    - If you have any DECnet routers on your network, they should appear
0157      in /proc/net/decnet_neigh, otherwise this file will only contain the
0158      entry for the node itself (if it doesn't check to see if lo is up).
0159    - If you want to send to any node which is not listed in the
0160      /proc/net/decnet_neigh file, you'll need to set the default device
0161      to point to an Ethernet card with connection to a router. This is
0162      again done with the /proc/sys/net/decnet/default_device file.
0163    - Try starting a simple server and client, like the dnping/dnmirror
0164      over the loopback interface. With luck they should communicate.
0165      For this step and those after, you'll need the DECnet library
0166      which can be obtained from the above ftp sites as well as the
0167      actual utilities themselves.
0168    - If this seems to work, then try talking to a node on your local
0169      network, and see if you can obtain the same results.
0170    - At this point you are on your own... :-)
0171 
0172 6. How to send a bug report
0173 ===========================
0174 
0175 If you've found a bug and want to report it, then there are several things
0176 you can do to help me work out exactly what it is that is wrong. Useful
0177 information (_most_ of which _is_ _essential_) includes:
0178 
0179  - What kernel version are you running ?
0180  - What version of the patch are you running ?
0181  - How far though the above set of tests can you get ?
0182  - What is in the /proc/decnet* files and /proc/sys/net/decnet/* files ?
0183  - Which services are you running ?
0184  - Which client caused the problem ?
0185  - How much data was being transferred ?
0186  - Was the network congested ?
0187  - How can the problem be reproduced ?
0188  - Can you use tcpdump to get a trace ? (N.B. Most (all?) versions of
0189    tcpdump don't understand how to dump DECnet properly, so including
0190    the hex listing of the packet contents is _essential_, usually the -x flag.
0191    You may also need to increase the length grabbed with the -s flag. The
0192    -e flag also provides very useful information (ethernet MAC addresses))
0193 
0194 7. MAC FAQ
0195 ==========
0196 
0197 A quick FAQ on ethernet MAC addresses to explain how Linux and DECnet
0198 interact and how to get the best performance from your hardware.
0199 
0200 Ethernet cards are designed to normally only pass received network frames
0201 to a host computer when they are addressed to it, or to the broadcast address.
0202 
0203 Linux has an interface which allows the setting of extra addresses for
0204 an ethernet card to listen to. If the ethernet card supports it, the
0205 filtering operation will be done in hardware, if not the extra unwanted packets
0206 received will be discarded by the host computer. In the latter case,
0207 significant processor time and bus bandwidth can be used up on a busy
0208 network (see the NAPI documentation for a longer explanation of these
0209 effects).
0210 
0211 DECnet makes use of this interface to allow running DECnet on an ethernet
0212 card which has already been configured using TCP/IP (presumably using the
0213 built in MAC address of the card, as usual) and/or to allow multiple DECnet
0214 addresses on each physical interface. If you do this, be aware that if your
0215 ethernet card doesn't support perfect hashing in its MAC address filter
0216 then your computer will be doing more work than required. Some cards
0217 will simply set themselves into promiscuous mode in order to receive
0218 packets from the DECnet specified addresses. So if you have one of these
0219 cards its better to set the MAC address of the card as described above
0220 to gain the best efficiency. Better still is to use a card which supports
0221 NAPI as well.
0222 
0223 
0224 8. Mailing list
0225 ===============
0226 
0227 If you are keen to get involved in development, or want to ask questions
0228 about configuration, or even just report bugs, then there is a mailing
0229 list that you can join, details are at:
0230 
0231 http://sourceforge.net/mail/?group_id=4993
0232 
0233 9. Legal Info
0234 =============
0235 
0236 The Linux DECnet project team have placed their code under the GPL. The
0237 software is provided "as is" and without warranty express or implied.
0238 DECnet is a trademark of Compaq. This software is not a product of
0239 Compaq. We acknowledge the help of people at Compaq in providing extra
0240 documentation above and beyond what was previously publicly available.
0241 
0242 Steve Whitehouse <SteveW@ACM.org>
0243