User Tools

Site Tools


documentation:examples:simple_ucarp_lab

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

documentation:examples:simple_ucarp_lab [2017/07/07 00:24] (current)
Line 1: Line 1:
 +====== Simple uCarp lab  ======
  
 +This lab use the fixed ucarp rc script (introduced in BSDRP 0.34).
 +
 +===== Network Diagram =====
 +
 +{{:documentation:examples:bsdrp-example-ucarp.png|}}
 +
 +===== Creating the lab with VirtualBox =====
 +
 +Start a lab using the [[documentation:examples:How to build a BSDRP router lab|virtualbox-lab script]]:
 +<code>
 +[root@d630]./virtualbox.sh -i BSDRP_0.34_full_i386_serial.img.bz2 -n 4 -l 2
 +Bzipped image detected, unzip it...
 +filename guests a i386 image
 +filename guests a serial image
 +Image file given… rebuilding BSDRP router template
 +Creating lab with 4 router(s):
 +- 2 LAN between all routers
 +- Full mesh ethernet point-to-point link between each routers
 +
 +Router1 have the following NIC:
 +em0 connected to Router2.
 +em1 connected to Router3.
 +em2 connected to Router4.
 +em3 connected to LAN number 1.
 +em4 connected to LAN number 2.
 +Router2 have the following NIC:
 +em0 connected to Router1.
 +em1 connected to Router3.
 +em2 connected to Router4.
 +em3 connected to LAN number 1.
 +em4 connected to LAN number 2.
 +Router3 have the following NIC:
 +em0 connected to Router1.
 +em1 connected to Router2.
 +em2 connected to Router4.
 +em3 connected to LAN number 1.
 +em4 connected to LAN number 2.
 +Router4 have the following NIC:
 +em0 connected to Router1.
 +em1 connected to Router2.
 +em2 connected to Router3.
 +em3 connected to LAN number 1.
 +em4 connected to LAN number 2.
 +Connect to the router 1 by telneting to localhost on port 8001
 +Connect to the router 2 by telneting to localhost on port 8002
 +Connect to the router 3 by telneting to localhost on port 8003
 +Connect to the router 4 by telneting to localhost on port 8004
 +Connect to the router 4 by telneting to localhost on port 8005
 +Here is how to use a serial terminal software for connecting to the routers:
 +1. Create a bridge between the socat port and a local PTY link
 +   socat TCP-CONNECT:localhost:8001 PTY,link=/tmp/router1 &
 +2. Open your serial terminal software using the local PTY link just created
 +   Using screen/byobu:
 +       screen /tmp/router1 38400
 +   Or using tip (FreeBSD):
 +       echo "router1:dv=/tmp/router1:br#38400:pa=none:" >> /etc/remote
 +       tip router1
 +Warning: Closing your session will close socat on both end
 +</code>
 +
 +===== Configuring Routers =====
 +
 +==== Router 1 (R1) ====
 +
 +<code>
 +sysrc hostname=R1
 +sysrc gateway_enable=NO
 +sysrc ipv6_gateway_enable=NO
 +sysrc defaultrouter="192.168.10.254"
 +sysrc ifconfig_em3="192.168.10.1/24"
 +service netif restart
 +service routing restart
 +</code>
 +
 +==== Router 2 (R2) ====
 +
 +<code>
 +sysrc hostname=R2
 +sysrc ifconfig_em3="192.168.10.2/24"
 +sysrc ifconfig_em4="10.0.0.2/24"
 +sysrc ucarp_enable=YES
 +sysrc ucarp_3_if="em3"
 +sysrc ucarp_3_src="192.168.10.2"
 +sysrc ucarp_3_pass="passcarp3"
 +sysrc ucarp_3_preempt="NO"
 +sysrc ucarp_3_addr="192.168.10.254"
 +sysrc ucarp_4_if="em4"
 +sysrc ucarp_4_src="10.0.0.2"
 +sysrc ucarp_4_pass="passcarp4"
 +sysrc ucarp_4_preempt="NO"
 +sysrc ucarp_4_addr="10.0.0.254"
 +service netif restart
 +service routing restart
 +service ucarp start
 +</code>
 +
 +==== Router 3 (R3) ====
 +
 +<code>
 +sysrc hostname=R3
 +sysrc ifconfig_em3="192.168.10.3/24"
 +sysrc ifconfig_em4="10.0.0.3/24"
 +sysrc ucarp_enable="YES"
 +sysrc ucarp_3_if="em3"
 +sysrc ucarp_3_src="192.168.10.3"
 +sysrc ucarp_3_pass="passcarp3"
 +sysrc ucarp_3_preempt="NO"
 +sysrc ucarp_3_addr="192.168.10.254"
 +sysrc ucarp_3_advskew="100"
 +sysrc ucarp_4_if="em4"
 +sysrc ucarp_4_src="10.0.0.3"
 +sysrc ucarp_4_pass="passcarp4"
 +sysrc ucarp_4_preempt="NO"
 +sysrc ucarp_4_addr="10.0.0.254"
 +sysrc ucarp_4_advskew="100"
 +service netif restart
 +service routing restart
 +service ucarp start
 +</code>
 +==== Router 4 (R4) ====
 +
 +<code>
 +sysrc hostname=R4
 +sysrc gateway_enable=NO
 +sysrc defaultrouter="10.0.0.254"
 +sysrc ifconfig_em4="10.0.0.4/24"
 +service netif restart
 +service routing restart
 +config save
 +</code>
 +
 +===== Checking configuration =====
 +
 +==== uCarp state ====
 +
 +On R2:
 +
 +<code>
 +[root@R2]~#cat /var/log/messages | grep ucarp
 +Jul 27 17:54:02 R2 ucarp[1815]: [WARNING] Switching to state: MASTER
 +Jul 27 17:54:02 R2 ucarp[1815]: [WARNING] Spawning [/usr/local/sbin/ucarp-up em3 192.168.10.254]
 +Jul 27 17:54:02 R2 ucarp[1819]: [WARNING] Switching to state: MASTER
 +Jul 27 17:54:02 R2 ucarp[1819]: [WARNING] Spawning [/usr/local/sbin/ucarp-up em4 10.0.0.254]
 +</code>
 +
 +//R2 is the uCarp master for vrid 3 and 4.//
 +
 +On R3:
 +
 +<code>
 +[root@R3]~#cat /var/log/messages | grep ucarp
 +Jul 29 01:03:11 R3 ucarp[1228]: [WARNING] Switching to state: BACKUP
 +Jul 29 01:03:11 R3 ucarp[1228]: [WARNING] Spawning [/usr/local/sbin/ucarp-down em4 10.0.0.254]
 +k to BACKUP state
 +Jul 29 01:03:11 R3 ucarp[1225]: [WARNING] Switching to state: BACKUP
 +Jul 29 01:03:11 R3 ucarp[1225]: [WARNING] Spawning [/usr/local/sbin/ucarp-down em3 192.168.10.254]
 +Jul 29 01:03:11 R3 ucarp[1225]: [WARNING] Preferred master advertised: going back to BACKUP state
 +</code>
 +
 +//R3 is the uCarp backup for vrid 3 and 4.//
 +
 +==== Forwarding and ARP state ====
 +
 +Pinging R4 from R1:
 +<code>
 +[root@R1]~#ping 10.0.0.4
 +PING 10.0.0.4 (10.0.0.4): 56 data bytes
 +64 bytes from 10.0.0.4: icmp_seq=0 ttl=63 time=2.932 ms
 +64 bytes from 10.0.0.4: icmp_seq=1 ttl=63 time=2.360 ms
 +
 +</code>
 +And checking ARP cache:
 +
 +<code>
 +[root@R1]~#arp -a | grep 192.168.10.254
 +? (192.168.10.254) at cc:cc:00:00:01:02 on em3 expires in 1186 seconds [ethernet]
 +
 +</code>
 +
 +<note>The MAC address of the virtual CARP IP is the real MAC of the interface in MASTER state (and not a virtual MAC adress) due to the IP alias creation on the MASTER node: Gratious ARP is needed when switching carp state between two node</note>
 +
 +==== Testing uCarp failover ====
 +
 +Disable one interface on R2 for changing the VRRP states:
 +<code>
 +[root@R2]~#ifconfig em3 down
 +[root@R2]~#cat /var/log/messages | grep ucarp
 +Jul 27 17:53:59 R2 ucarp[1815]: [WARNING] Switching to state: BACKUP
 +Jul 27 17:53:59 R2 ucarp[1815]: [WARNING] Spawning [/usr/local/sbin/ucarp-down e
 +Jul 29 01:03:11 R2 ucarp[1815]: [WARNING] Non-preferred master advertising: reasserting control of VIP with another gratuitous arp
 +Jul 29 01:03:12 R2 ucarp[1819]: [WARNING] Non-preferred master advertising: reasserting control of VIP with another gratuitous arp
 +Jul 29 01:03:12 R2 ucarp[1815]: [WARNING] Non-preferred master advertising: reasserting control of VIP with another gratuitous arp
 +
 +</code>
 +
 +And check that R3 became the master:
 +
 +<code>
 +[root@R3]~#tail -f /var/log/messages
 +Jul 29 00:56:37 R3 ucarp[1225]: [WARNING] Switching to state: MASTER
 +Jul 29 00:56:37 R3 ucarp[1225]: [WARNING] Spawning [/usr/local/sbin/ucarp-up em3 192.168.10.254]
 +</code>
 +
 +And check that R1 still can reach R4:
 +
 +<code>
 +[root@R1]~#ping 10.0.0.4
 +PING 10.0.0.4 (10.0.0.4): 56 data bytes
 +64 bytes from 10.0.0.4: icmp_seq=0 ttl=63 time=2.321 ms
 +64 bytes from 10.0.0.4: icmp_seq=1 ttl=63 time=2.450 ms
 +
 +</code>
documentation/examples/simple_ucarp_lab.txt · Last modified: 2017/07/07 00:24 (external edit)