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)