# $XORP: xorp/devnotes/windows-release-process.txt,v 1.1 2006/07/18 16:15:42 bms Exp $ XORP/Win32 Release Process -------------------------- 1. Check out a fresh XORP tree, with the BGP test data. # xcvs co xorp data This may take around 5 minutes dependent on latency and congestion. 2. Ensure configure step completes OK. # cd xorp && ./configure This takes around 3 minutes. 3. Perform the build. If OK proceed to next step. Most likely problems: You don't have MinGW installed correctly and/or patched for building XORP. # gmake This may take 45 minutes or more. 4. Perform regression tests. If OK proceed to next step. Most likely problems: bash not present in hardcoded path in RunShellCommand class (C:\MSYS\bin\sh.exe). # gmake check This may take 2 hours or more. 5. Perform basic application tests on local host. Bring up a basic router. Steps: 1. Open three cmd.exe windows. 2. set XORP_ROOT=c:\path\to\xorp\build\directory 3. cd into XORP_ROOT 4. Run rtrmgr\xorp_rtrmgr.exe in one window. 5. Run rtrmgr\xorpsh.exe in another. 6. Keep the other cmd.exe window handy for running Windows administration commands. * ENSURE THAT THE ROUTING AND REMOTE ACCESS SERVICE IS NOT RUNNING BEFORE STARTING ANY TEST SCENARIO. U:\XORP> net stop remoteaccess The Routing and Remote Access service is not started. More help is available by typing NET HELPMSG 3521. Scenario 1: Test basic XORP behaviour on Windows. * Create a C:\config.boot file with an interface configuration matching the interfaces present in the 'Network Connections' folder. * Add two static route entries; one candidate default, and one /32 prefix to a remote host with the next-hop as a host (not router) on your network. * Start the router manager. C:\Documents and Settings\Administrator>cd u:\xorp C:\Documents and Settings\Administrator>u: U:\xorp>set XORP_ROOT=U:\XORP U:\xorp>rtrmgr\xorp_rtrmgr -b c:\config.boot * Verify that fea, policy, rib, static_routes modules start up. If RRAS is disabled you should see these messages: [ 2006/07/15 15:03:14 WARNING U:\XORP\fea\xorp_fea.exe FEA ] RRAS is not running ; disabling FtiConfigEntrySetRtmV2. [ 2006/07/15 15:03:14 WARNING U:\XORP\fea\xorp_fea.exe FEA ] RRAS is not running ; disabling FtiConfigTableObserverRtmV2. * Verify that xorpsh can connect to the running router manager locally. U:\xorp>set XORP_ROOT=U:\XORP U:\xorp>rtrmgr\xorpsh [ 2006/07/15 15:10:35 WARNING rtrmgr\xorpsh RTRMGR ] [Operational Command File: U:\XORP/etc/templates/misc.cmds line 19]: Executable file not found: ping6 [ 2006/07/15 15:10:35 WARNING rtrmgr\xorpsh RTRMGR ] [Operational Command File: U:\XORP/etc/templates/misc.cmds line 29]: Executable file not found: traceroute [ 2006/07/15 15:10:35 WARNING rtrmgr\xorpsh RTRMGR ] [Operational Command File: U:\XORP/etc/templates/misc.cmds line 39]: Executable file not found: traceroute6 Welcome to XORP on empiric @empiric> * Verify that XORP's idea of the network interfaces configured on the system matches that in the Windows networking stack. @empiric> show interfaces bge0/bge0: Flags: mtu 1500 inet 192.168.123.199 subnet 192.168.123.0/24 broadcast 192.168.123.255 physical index 2 ether 0:10:c6:dd:6:f3 And in the administration shell: U:\XORP> ipconfig Windows IP Configuration Ethernet adapter bge0: Connection-specific DNS Suffix . : lon.incunabulum.net IP Address. . . . . . . . . . . . : 192.168.123.199 Subnet Mask . . . . . . . . . . . : 255.255.255.0 IP Address. . . . . . . . . . . . : 2001:618:400:1041:210:c6ff:fedd:6f3 IP Address. . . . . . . . . . . . : fe80::210:c6ff:fedd:6f3%6 Default Gateway . . . . . . . . . : 192.168.123.1 fe80::206:2bff:fe03:5c31%6 Ethernet adapter {53741D39-FF7A-4083-A5B4-9D1634535E56}: Media State . . . . . . . . . . . : Media disconnected XXX Scenario 2: Introduce static routes to local FIB via XORP. * Verify that the static routes appear in the Windows FIB. U:\XORP> route print IPv4 Route Table =========================================================================== Interface List 0x1 ........................... MS TCP Loopback interface 0x2 ...00 10 c6 dd 06 f3 ...... Broadcom NetXtreme Gigabit Ethernet - Packet Sch eduler Miniport 0x4 ...00 ff 53 74 1d 39 ...... TAP-Win32 Adapter V8 - Packet Scheduler Miniport =========================================================================== =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.123.1 192.168.123.199 20 1.2.3.4 255.255.255.255 192.168.123.6 192.168.123.199 20 ... * When finished, CTRL-C in the CMD.EXE window containing xorp_rtrmgr.exe. This should terminate XORP and all sub-processes cleanly. If not performed from within a CMD.EXE window then inheritance of signal handlers won't happen correctly. * Use 'Process Explorer' from Sysinternals.com to kill the entire xorp_rtrmgr.exe process tree, to ensure XORP is fully terminated before running another test scenario. 6. Perform typical peer scenario tests. Scenario 1: Local RIP. Unusual behaviour to look for: Traffic not being sent or received. Routes not being plumbed into IP helper. * Before starting, ensure that the second interface is up and configured in Network Connections. * Start rtrmgr with RIP configured on two interfaces in config.boot. * Use xorpsh to check both interfaces are present and correctly addressed. xorpsh> show interfaces * Check routes are in FINAL table. xorpsh> show route table ipv4 unicast final * Check RIP is running. @empiric> show rip status all * RIP on bge0 bge0 192.168.123.199 Status: enabled * RIP on iwi0 iwi0 192.168.124.190 Status: enabled * Run ethereal and dump on both interfaces; check that you see RIP and IGMP membership traffic for 224.0.0.9. Restart XORP if necessary to capture the IGMP joins. * On a peer connected to the same network, tcpdump for RIP traffic: montagne:~ % s tcpdump -i em0 -n -vvvv -e udp port router 11:20:39.375098 00:10:c6:dd:06:f3 > 01:00:5e:00:00:09, ethertype IPv4 (0x0800), length 66: (tos 0x0, ttl 1, id 50313, offset 0, flags [none], proto: UDP (17), length: 52) 192.168.123.199.520 > 224.0.0.9.520: [udp sum ok] RIPv2, Request, length: 24 0x0000: 0102 0000 0000 0000 0000 0000 0000 0000 0x0010: 0000 0000 0000 0010 * Now configure RIP to redistribute static routes, and perform the above packet inspections again. * Check that static host route 1.2.3.4/32 is sent OK on secondary interface. Scenario 2: Local OSPF. Unusual behaviour to look for: Traffic not being sent or received when using raw socket IPv4 multicast. * Redistribute static routes into ospf. * Start XORP. * Check ospf is running on both primary and secondary interface. * Check IPv4 IGMP join to OSPF group on secondary interface. Locally; use Ethereal, look for IGMP on 224.0.0.6. * Check IGMP join and OSPF traffic seen by peer on primary subnetwork. On peer; use tcpdump or Ethereal, look for IGMP on 224.0.0.6 and proto ospf. * Start OSPF peer on primary subnetwork. * Leave protocol analyzers running and check for successful exchange of initial LSAs. * Verify peers see each other: xorp> show ospf4 neighbor * Verify LSAs are as you'd expect. @empiric> show ospf4 database OSPF link state database, Area 0.0.0.0 Type ID Adv Rtr Seq Age Opt Cksum Len Router *192.168.123.199 192.168.123.199 0x80000001 108 0x2 0x3c6b 48 ASExt-2 *0.0.0.0 192.168.123.199 0x80000001 739 0x2 0x55e9 36 ASExt-2 *1.2.3.4 192.168.123.199 0x80000001 739 0x2 0x2d03 36 Network *192.168.123.199 192.168.123.199 0x80000001 108 0x2 0x1950 32 Router 192.168.123.6 192.168.123.6 0x80000002 104 0x2 0x786c 36 ---- Scenario 3: Local BGP. Unusual behaviour to look for: Hold timer timing out, timer problems. * Configure both peers as before to enable BGP and redistribute static routes into BGP. * Bring up the peering on both sides by starting XORP. * Watch for the hold timer. @empiric> show bgp peers detail Peer 1: local 192.168.123.199/179 remote 192.168.123.6/179 Peer ID: 192.168.123.6 Peer State: ESTABLISHED Admin State: START Negotiated BGP Version: 4 Peer AS Number: 65024 Updates Received: 1, Updates Sent: 2 Messages Received: 3, Messages Sent: 4 Time since last received update: 12 seconds Number of transitions to ESTABLISHED: 1 Time since last entering ESTABLISHED state: 16 seconds Retry Interval: 120 seconds Hold Time: 90 seconds, Keep Alive Time: 30 seconds Configured Hold Time: 90 seconds, Configured Keep Alive Time: 30 seconds Minimum AS Origination Interval: 0 seconds Minimum Route Advertisement Interval: 0 seconds * Keep your eye on the keepalive timer. * Verify that the Windows peer learned a route from the test partner. @empiric> show route table ipv4 unicast ebgp detail Network 10.0.0.0/8 Nexthop := 192.168.123.1 Interface := bge0 Vif := bge0 Metric := 0 Protocol := ebgp Admin distance := 20 Once satisfied that everything is in order proceed to the next stage. 7. Cut the release. Use the Nullsoft Installer script in xorp/contrib/win32/installer. See README in this directory for more detailed instructions. You may need to edit the SRCDIR variable in the xorp.nsi file to point to where you've built XORP, as well as the DLLDIR variable if you've installed MSYS and MinGW separately or elsewhere. * makensis xorp.nsi This will take around 3 minutes depending on how busy your disk is -- everything gets compressed into one big SETUP.EXE. Note that the installer does *not* strip symbols from the binaries. * Test the installer by running it. * Test the uninstaller from Windows' 'Add/Remove Programs' Control Panel applet.