The White Rabbit switch (or wrs) is a major component of the White Rabbit (wr) network.
Like any modern managed switch, the wrs includes a CPU with its own operating system.
This manual is for people installing wrs devices, who need to configure them in their network.
1 WRS Documentation
Up to and including release v4.0 of wrs software this manual didn’t exist, and the “WRS Build
Manual” included some information about configuration.
1.1 The Official Manuals
This is the current set of manuals that accompany the wrs:
1
• White Rabbit Switch: Startup Guide : hardware installation instructions. This manual is
provided by the manufacturer: it describes handling measures, the external connectors,
hardware features and the initial bring-up of the device.
• White Rabbit Switch: User’s Manual: documentation about configuring the wrs, at soft-
ware level. This guide is maintained by software developers. The manual describes configuration in a deployed network, either as a standalone device or as network-booted equipment. The guide also describes how to upgrade the switch, because we’ll release new official
firmware images over time, as new features are implemented.
• White Rabbit Switch: Developer’s Manual : it describes the build procedure and how inter-
nals work; use of scripts and wrs-specific programs etc. The manual is by developers and
for developers. This is the document to check if you need to customize your wrs rebuild
software from new repository commits that are not an official release point, or just install
your wrs with custom configuration values.
• White Rabbit Switch: Failures and Diagnostics: describes various failure scenarios of a
switch and ways how to recognize them. Additionally, it describes SNMP exports of a
switch (WR-SWITCH-MIB).
The official pdf copy of these manuals at each release is published in the files tab of the software
project in ohwr.org: (http://www.ohwr.org/projects/wr-switch-sw/files). This doesn’t
apply to release v4.0 and earlier.
The source form of all four manuals is maintained in wr-switch-sw/doc. Within the repository,
three of them the User’s Manual, the Developer’s Manual and the Failures and Diagnostics
are always tracking the software commits, while the Startup Guide may not be authoritative
because it is bound to device shipping rather than software development.
1.2 Supported Hardware Versions
This document applies to versions 3.3 and 3.4 of the wrs device.
Very few specimens of wrs 3.0 though 3.2 were manufactured; if you are the owner of one of
them, please refer to version 3.3 of the wrs-build document, that includes appendixes about
using older versions. As usual, it is in the files tab of ohwr.org.
V1 and V2 were development items, never shipped.
2 Upgrading WRS Software
The wrs is shipped with a current version of its software image, which is sometimes called
firmware. If your devices are running a previous version of the software you may want to upgrade,
or you may want to replace the firmware images after rebuilding your own, as explained in the
Developer’s Manual.
If you run version 4.1 or later please copy wrs-firmware.tar file into the /update partition via
scp or web-interface and restart your switch.
When the running version during the update is at least v5.0, then update script performs the
check of md5 sums of all files inside the wrs-firmware.tar. If at least one checksum is incorrect,
the update is aborted and an error is reported via SNMP (object wrsFwUpdateStatus) until
the next successful update. Additionally, the wrs-firmware.tar containing corrupted file is
renamed to wrs-firmware.tar.checksum_error. This file is automatically removed during the
next successful update.
When checksums in the wrs-firmware.tar are not available (for example during downgrading
to version pre-5.0) appropriate warning message is printed to the console.
2
If this method of upgrading firmware works for you, you can ignore the rest of this chapter,
which explains a transition between the initial way we passed MAC addresses and the safer
approach we introduced in v4.1
2.1 Upgrade from pre-v5.0 to v5.0
During the update from the pre-v5.0 firmware to v5.0 (or later) you might see the following
errors on the console.
/wr/bin/sdb-read: can’t load library ’libm.so.1’
Creating SDB filesystem in /dev/mtd5
cp: can’t stat ’/wr/etc/sdb-for-dataflash’: No such file or directory
done
Please ignore this message, no real error occurred nor hwinfo partition (/dev/mtd5) was overwritten. The error is caused by an old firmware trying to run a binary (sdb-read to be precise)
from the new firmware image. The problem became visible now, because between v4.2 and
v5.0 we uplifted the buildroot, which changed the version of libm library from libm.so.0 to
libm.so.1.
2.2 hwinfo for pre-v4.1
Version 4.1 (October 2014) and later ones use a new way to pass hardware information to all
levels of software, such information includes the MAC addresses for the management Ethernet
and the sfp ports. Information is now stored in a Flash partition called hwinfo, using the sdb
file format. sdb is defined in the fpga-configuration-space within ohwr.org. Before using
sdb we used to edit the boot loader’s configuration at flash time.
The hwinfo structure is written to dataflash by the manufacturer. It is never changed even when
performing a complete re-flash of the device, because the flashing scripts preserve the hwinfo
memory area.
When upgrading from a pre-4.1 switch software, you need to create this hwinfo data structure.
The procedure is mostly automatic, but you need to be aware of the steps involved, in case
something goes wrong.
Chapter 2: Upgrading WRS Software3
2.3 Upgrading from v4.0
Version 4.0 and later of wr-switch-sw are able to upgrade themselves if you place the proper
files in the /update directory of the wrs. However, in version 4.0 we forgot to provide for an
upgrade of the boot loader and didn’t note that if the front USB cable is not plugged, the
upgrade procedure blocks.
This latter problem happens because messages are written to the management USB port, to
help people flashing from scratch, and the write is a blocking one by default: if nobody collects
the USB data, the system waits for a recipient. With version 4.1.1 the problem was fixed using
non-blocking operations (it is better to loose messages than to block the installation because
nobody is reading).
Thus, there are two different ways to upgrade; which one you prefer we can’t tell. Both work,
each with its own drawbacks. Each of them preserves the current MAC addresses.
2.3.1 Upgrading from v4.0 with the USB cable
This is the procedure if you are able to walk to your wrs and connect to the management USB
port, even if the port is not actually used:
• Copy your own wrs-firmware.tar for at least v4.1 into the /update partition. This can
be the official firmware or one you built yourself. Then reboot and wait for everything to
settle (the system will reboot once more by itself).
• Copy wrs-firmware.tar again. And reboot again. The system will reboot once more by
itself.
• Now you have a running updated version with your hwinfo in place and the old MAC
addresses preserved.
We save you from the long description of what is happening in the various steps. If needed, it
is in the git history of wr-switch-sw, at release point v4.1.
2.3.2 Upgrading from v4.0 remotely
If you can’t walk to the switch, the procedure is faster but more commands need to be typed on
the root shell of the switch. We support a single upgrade provided you change the kernel and
initial filesystem before rebooting.
• Copy your own wrs-firmware.tar for at least v4.1 into the /update partition. This can be
the official firmware or one you built yourself.
• Create and mount /boot within the switch. This means running the following commands
in ssh :
mkdir /boot
mount -t ubifs ubi0:boot /boot
• Copy wrs-initramfs.gz (which is to be found inside wrs-firmware.tar) to the /boot
partition just mounted. This ensures the new upgrade procedure will run, the one that
doesn’t block if the USB cable is unplugged.
• Copy zImage (again, to be found inside wrs-firmware.tar) to the /boot partition. This is
need to be able to access the hwinfo partition at next boot.
• Reboot and wait for everything to settle (the system will reboot once more by itself after
upgrading everything). The MAC addresses will be saved to hwinfo during the update
procedure, thanks to the new kernel and new boot procedure you manually copied to /boot.
Note: if you forget to place the new kernel or wrs-initramfs.gz in /boot, no big damage will
happen, but you’ll have lost your MAC address for the wr ports. You’ll find a randomly-chosen
value, that will however be persistent over reboot (because it is saved to hwinfo after you boot
with the new kernel.
Chapter 3: Configuration of the Device4
2.4 Upgrading from v3.x
Upgrading from versions older than v4.0 (August 2014) requires physical access to the device
and, unfortunately, requires some extra steps especially if you want to preserve your MAC
addresses.
One possible path is flashing version 4.0 (please refer to v4.0 manuals) and then proceed as
described in Section 2.3 [Upgrading from v4.0], page 3. When flashing version 4.0 you’ll need to
pass your MAC addresses on the command line of the flasher, so please take note of what they
are.
Another option is flashing the latest firmware version and then build your own hwinfo structure
by specifying your MAC addresses. wr-switch-sw includes specific tools for both steps. They
are described in the Developer’s Manual, because they are expected to only be performed by
the manufacturer, not the final user.
3 Configuration of the Device
After release v3.3 of this software package, we added Kconfig support to wr-switch-sw. If you
build your software image (as documented in the wrs Developer’s Manual ), you can make some
configuration choices for your customized firmware image. But most users are not expected to
rebuild.
After release v4.1, we moved most of the configuration to run-time (rather than build-time):
the .config file that you create with a “make menuconfig” or equivalent command, is now
copied to the wrs filesystem and used during boot. Moreover, the switch can download a new
configuration at boot time, if so configured. This allows customization of each installed switch
through a central server, without modifying the filesystem image in each specimen.
Starting with release v4.2, we added “make config” support at run time, to be run in /wr/etc;
the file is called dot-config, and not .config. This is meant to be useful for developers,
when testing different configurations in the lab, rather than in production.We also support “make config”, “make defconfig”, make oldconfig”, from v5.0 “make menuconfig”
and “make nconfig”.
3.1 Dynamic WRS Configuration
The switch can boot using its internal nand memory or as an NFS-Root host. In the latter
case configuration can be changed on the server, and if a unit is replaced, a change in the dhcp
database is all that’s needed to recover network operation. But this option implies some network
traffic on your management network, as well as an NFS server able to host all of your switches.
When a switch is booted from internal storage, we used to rely on internal configuration (either
selected at build time or modified using ssh or the web interface). This approach doesn’t scale
well to large installation, because if a device needs to be replaced, its own configuration is lost.
With dynamic configuration, each wrs device loads its own configuration file each time it is
booted, and applies the choices before starting any service. The name of the configuration file
can include the mac, ip address or hostname of the device, to allow running several switches
with different configurations in the same network. The location of the configuration file can be
stored in the dot-config or be retrieved from DHCP server.
3.2 The Configuration File
The main configuration file for the wrs is /wr/etc/dot-config. You create this file by running
“make menuconfig” within wr-switch-sw repo, and making your choices. You can also edit
Chapter 3: Configuration of the Device5
the text file, or run other configurators: make config, make xconfig, make gconfig, makenconfig.
The configuration step creates .config, that you can copy to your wrs as /wr/etc/dot-config.
After reboot, you’ll see your choices in effect.
The first three configuration items are free-text fields which are intended for dot-config management purposed. As now (v5.0.1) these fields are not used for any functionality on the switch.
Free-text items to describe switch’s firmware CONFIG_DOTCONF_FW_VERSION and
hardware CONFIG_DOTCONF_HW_VERSION version. Additionally, the default value of
CONFIG_DOTCONF_FW_VERSION can be used as a version of a Kconfig file.
CONFIG_DOTCONF_INFO
Free-text item to descibe additional information about dot-config.
The next configuration item is a choice about source of the dot-config file (items starting
with CONFIG_DOTCONF_SOURCE_). The following dot-config sources are implemented in current
version:
CONFIG_DOTCONF_SOURCE_LOCAL
Use local dot-config file stored in /wr/etc/dot-config. In this case no network
access is performed.
CONFIG_DOTCONF_SOURCE_REMOTE
Get a dot-config file from the URL provided in CONFIG_DOTCONF_URL.
CONFIG_DOTCONF_SOURCE_FORCE_DHCP
Get a network location of a dot-config file from a DHCP server. Server can be
configured in a way to provide the entire URL to the dot-config in the “filename”
configuration field of the DHCP server. In this case, provided URL has to be in the
same form as CONFIG_DOTCONF_URL.
As an alternative, “filename” can be configured only as a path. It will be then
interpreted as a path on a TFTP server, which IP address is taken from the configuration field “The BOOTP next server option” of a DHCP server.
CONFIG_DOTCONF_SOURCE_TRY_DHCP
The same as CONFIG_DOTCONF_SOURCE_FORCE_DHCP, but this option does not cause
errors in SNMP’s objects if switch fails to retrieve the URL to the dot-config via
DHCP. Note that syntax and download errors of dot-config are notified in the
same way as for other choices.
If the selected option triggers wrs to download a new dot-config file and it passes the validation
process, the new dot-config will replace a local copy. In case there are errors or unknown
configuration entries in the retrieved file, the old one will be used.
The URL (stored in CONFIG_DOTCONF_URL or retrieved via DHCP) is of the form “proto-col://host /pathname”. The special upper-case strings HOSTNAME, IPADDR and MACADDR are
substituted with the current hostname, IP address or MAC address of the management port of
the switch. By this, the same configuration string can be used to set up a batch of switches with
different configurations.
The three parts of the URL are as follows:
protocol
We support http, ftp and tftp. Any other protocols result in an error, and the
dot-config file is not replaced.
Chapter 3: Configuration of the Device6
host
The host can be an IP address, or a name. In order to use a name you must specify a valid CONFIG_DNS_SERVER and optionally CONFIG_DNS_DOMAIN. Alternatively
DNS configuration can be taken from the DHCP server. The values in the current
dot-config are used to load the new file.
path
The pathname can include directory components and any of HOSTNAME, IPADDR,
MACADDR.
For example this is a valid configuration for run-time update:
It results in wrs-config-192.168.16.9 being served to the wrs.
Please remember, that the new dot-config should include a valid CONFIG_DOTCONF_SOURCE_*
setting, or you won’t be able to update the configuration at the next boot. In any case, you can
always copy a configuration file using ssh, or use the web interface to change the configuration.
Changes performed using the web interface are immediately active, because the web server takes
proper action; the new file copied over with ssh, or any hand-edits, are only effective at next
boot, unless overwritten by a remote configuration file. In case there are errors or unknown
configuration entries in the retrieved file, the old one will be used.
3.3 Configuration Items that Apply at Build Time
The following items in dot-config are used at build time; changing them in the installed version
has no effect:
CONFIG_BR2_CONFIGFILE
This string option lists a file to be used as Buildroot (BR2) configuration. A simple filename or relative pathname refers to the configs/buildroot directory; an
absolute pathname is used unchanged.
CONFIG_KEEP_ROOTFS
A boolean option for developers: if set the build script does not delete the temporary
copy of the generated filesystem and reports its pathname in the build messages.
3.4 Configuration Items that Apply at Run Time
The following items in dot-config are used at run time: at every boot the value (the old one or
the just-downloaded one) is used in the appropriate way, before the respective service is started.
The source and location of a config file to be used at a replacement the next time
the system boots.See Section 3.1 [Dynamic WRS Configuration], page 4, and
Section 3.2 [The Configuration File], page 4, for details.
Configuration of management port’s(eth0) IP. When CONFIG_ETH0_DHCP
is used, then switch tries to obtain IP via DHCP forever.For option
Chapter 3: Configuration of the Device7
CONFIG_ETH0_DHCP_ONCE switch tries to get IP via DHCP once, if this try is
unsuccessful then switch uses static IP. CONFIG_ETH0_STATIC forces switch to use
provided static IP address.
These options describe how to set hostname of the switch.From DHCP
(CONFIG_HOSTNAME_DHCP) or use a predefined value (CONFIG_HOSTNAME_STATIC)
defined in option CONFIG_HOSTNAME_STRING.
This set of options allow setting the password for the “root” user (the administrator).
The password is used to login to your switch using ssh (secure shell). If you choose
CONFIG_ROOT_PWD_IS_ENCRYPTED, you will be prompted for a text version of a preencrypted password (CONFIG_ROOT_PWD_CYPHER). To encrypt your magic string,
you must run “mkpasswd --method=md5 magic” on your Linux host (or switch). If
you choose to configure an unencrypted password, then you are asked to specify it
as CONFIG_ROOT_PWD_CLEAR. In this latter case encryption is performed at run-time
to use the normal ssh authentication, but the clear-text password will remain in
dot-config. By default the root password is an empty string, like in the initial
wr-switch-sw releases.
CONFIG_NTP_SERVER
The NTP server used to prime White Rabbit time, at system boot. The option can
be an IP address or a host name, if DNS is properly configured. The configuration
value is stored in /etc/wr_date.conf. An empty string (default) disables NTP
access at boot time.
CONFIG_DNS_SERVER
CONFIG_DNS_DOMAIN
The DNS server (as an IP address) and default domain. The values end up in
/etc/resolv.conf of the runtime filesystem. By default the two strings are empty.
If CONFIG_ETH0_DHCP or CONFIG_ETH0_DHCP_ONCE is used, /etc/resolv.conf file
will be populated with DNS settings received from the DHCP server. If configuration items for static (CONFIG_DNS_*) and dynamic (CONFIG_ETH0_DHCP) DNS
configuration are used simultaneously then information from both sources end up
in the /etc/resolv.conf file. However, information from CONFIG_DNS_* is placed
first.
Configuration for system log. The name (or IP address) of the server is stored in
/etc/rsyslog.conf of the runtime filesystem. The UDP option, set by default,
chooses UDP transmission; if unset it selects TCP communication.
Logging options for the three main WRS processes and other programs.
CONFIG_WRS_LOG_OTHER is currently used by:
• wrs_watchdog daemon
• wrs_throttling executed once at boot up
• wrs_auxclk executed once at boot up
• wrs_custom_boot_script.sh executed once at boot up
• Setting VLANs with vlan.sh at boot up
Each value can be a pathname, either to a file (e.g. /dev/kmsg is a possible “file”
target) or a facility.level string, like daemon.debug, for syslog-based logging. An
empty strings selects no logging at all. Please note, that unknown facility names will
generate a runtime error on the switch. All four strings default to “daemon.info”.
Note: all messages produced by these programs if syslog is configured will be passed
to the syslog at the same configured <facility>.<level>, no matter of verbosity of a
message. To change the verbosity of programs please use CONFIG_WRS_LOG_LEVEL_*.
Specify verbosity of programs as a string or number. The following levels are supported:
• ALERT or 1
• ERROR or 3
• WARNING or 4
• INFO or 6
• DEBUG or 7
Not supported levels are ceiled to the valid one.
By leaving this item empty, programs will use its default verbosity level (INFO).
Note: all messages produced by these programs if syslog is configured will be passed
to the syslog at the same configured <facility>.<level>, no matter of verbosity of a
message.
CONFIG_WRS_LOG_LEVEL_PTP
Specify verbosity of PPSi daemon as a string. This string will be passed to the PPSI
after -d parameter. Please refer to the PPSI’s documentation for more details.
By leaving this item empty, PPSi daemon will use its default verbosity level.
Note: all messages produced by PPSi if syslog is configured will be passed to the
syslog at the same configured <facility>.<level>, no matter of verbosity of a message.
CONFIG_WRS_LOG_SNMPD
Value can be a pathname, either to a file (e.g. /dev/kmsg is a possible “file” target)
or a valid snmpd log option (without -L). Allowed strings are in the format “S levelfacility” (e.g. “S 2 daemon”). For example, “s daemon” will forward messages to
syslog with daemon as facility. To set level (i.e. 5) use “S 5 daemon”. For details
please check man snmpcmd. An empty strings selects no logging at all. Please note
that unknown facility names will generate a runtime error on the switch. NOTE: It
looks like Notice is not a default logging priority as written in net-snmp manual.
Loading...
+ 21 hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.