User Tools

Site Tools


documentation:examples:simple_vrrp_lab

Differences

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

Link to this comparison view

documentation:examples:simple_vrrp_lab [2017/07/07 00:23] (current)
Line 1: Line 1:
 +====== Simple VRRP lab  ======
  
 +
 +===== Network Diagram =====
 +
 +{{:​documentation:​examples:​bsdrp-simple-vrrp-lab.png|}}
 +
 +===== Starting the lab =====
 +
 +More information on these BSDRP lab scripts available on [[documentation:​examples:​How to build a BSDRP router lab]].
 +
 +Example with the bhyve lab script:
 +
 +<​code>​
 +# ./​BSDRP-lab-bhyve.sh -i /​usr/​obj/​BSDRP.amd64/​BSDRP-1.61-full-amd64-vga.img -n 4 -l 2
 +vmm module not loaded. Loading it...
 +nmdm module not loaded. Loading it...
 +if_tap module not loaded. Loading it...
 +BSD Router Project (http://​bsdrp.net) - bhyve full-meshed lab script
 +Setting-up a virtual lab with 4 VM(s):
 +- Working directory: /tmp/BSDRP
 +- Each VM have 1 core(s) and 256M RAM
 +- Switch mode: bridge + tap
 +- 2 LAN(s) between all VM
 +- Full mesh Ethernet links between each VM
 +VM 1 have the following NIC:
 +- vtnet0 connected to VM 2.
 +- vtnet1 connected to VM 3.
 +- vtnet2 connected to VM 4.
 +- vtnet3 connected to LAN number 1
 +- vtnet4 connected to LAN number 2
 +VM 2 have the following NIC:
 +- vtnet0 connected to VM 1.
 +- vtnet1 connected to VM 3.
 +- vtnet2 connected to VM 4.
 +- vtnet3 connected to LAN number 1
 +- vtnet4 connected to LAN number 2
 +VM 3 have the following NIC:
 +- vtnet0 connected to VM 1.
 +- vtnet1 connected to VM 2.
 +- vtnet2 connected to VM 4.
 +- vtnet3 connected to LAN number 1
 +- vtnet4 connected to LAN number 2
 +VM 4 have the following NIC:
 +- vtnet0 connected to VM 1.
 +- vtnet1 connected to VM 2.
 +- vtnet2 connected to VM 3.
 +- vtnet3 connected to LAN number 1
 +- vtnet4 connected to LAN number 2
 +For connecting to VM'​serial console, you can use:
 +- VM 1 : cu -l /dev/nmdm1B
 +- VM 2 : cu -l /dev/nmdm2B
 +- VM 3 : cu -l /dev/nmdm3B
 +- VM 4 : cu -l /dev/nmdm4B
 +</​code>​
 +
 +===== Configuring Routers =====
 +
 +==== Router 1 (R1) ====
 +
 +<​code>​
 +sysrc hostname=R1
 +sysrc ifconfig_vtnet3="​inet 192.168.1.1/​24"​
 +sysrc ifconfig_vtnet4="​inet 192.168.2.1/​24"​
 +sysrc freevrrpd_enable=YES
 +cat <<EOF > /​usr/​local/​etc/​freevrrpd.conf ​
 +[VRID]
 +serverid = 1
 +interface = vtnet3
 +# This router is the master
 +priority = 101
 +addr = 192.168.1.254/​24
 +# We want that this state is dependant with the state of vrid 2
 +vridsdep = 2
 +password = vrid1
 +
 +[VRID]
 +serverid = 2
 +interface = vtnet4
 +# This router is the master
 +priority = 101
 +addr = 192.168.2.254/​24
 +password = vrid2
 +# We want that this state is dependant with the state of vrid 1
 +vridsdep = 1
 +EOF
 +service netif restart
 +service freevrrpd start
 +config save
 +</​code>​
 +
 +==== Router 2 (R2) ====
 +
 +<​code>​
 +sysrc hostname=R2
 +sysrc ifconfig_vtnet3="​inet 192.168.1.2/​24"​
 +sysrc ifconfig_vtnet4="​inet 192.168.2.2/​24"​
 +sysrc freevrrpd_enable=YES
 +cat <<EOF > /​usr/​local/​etc/​freevrrpd.conf ​
 +[VRID]
 +serverid = 1
 +interface = vtnet3
 +# This router is the backup
 +priority = 100
 +addr = 192.168.1.254/​24
 +# We want that this state is dependant with the state of vrid 2
 +vridsdep = 2
 +password = vrid1
 +
 +[VRID]
 +serverid = 2
 +interface = vtnet4
 +# This router is the backup
 +priority = 100
 +addr = 192.168.2.254/​24
 +password = vrid2
 +# We want that this state is dependant with the state of vrid 1
 +vridsdep = 1
 +EOF
 +service netif restart
 +service freevrrpd start
 +config save
 +</​code>​
 +
 +==== Router 3 (R3) ====
 +
 +<​code>​
 +sysrc hostname=R3
 +sysrc ifconfig_vtnet3="​inet 192.168.1.3/​24"​
 +sysrc defaultrouter="​192.168.1.254"​
 +sysrc gateway_enable=NO
 +sysrc ipv6_gateway_enable=NO
 +service netif restart
 +service routing restart
 +config save
 +</​code>​
 +
 +==== Router 4 (R4) ====
 +
 +<​code>​
 +sysrc hostname=R4
 +sysrc ifconfig_vtnet4="​inet 192.168.2.4/​24"​
 +sysrc defaultrouter="​192.168.2.254"​
 +sysrc gateway_enable=NO
 +sysrc ipv6_gateway_enable=NO
 +service netif restart
 +service routing restart
 +config save
 +</​code>​
 +
 +===== Checking configuration =====
 +
 +==== VRRP state ====
 +
 +On R1:
 +
 +<​code>​
 +[root@R1]~# grep vrrp /​var/​log/​messages
 +Nov  5 11:37:15 R1 freevrrpd[1177]:​ launching daemon in background mode
 +Nov  5 11:37:15 R1 freevrrpd[1178]:​ initializing threads and all VRID
 +Nov  5 11:37:15 R1 freevrrpd[1178]:​ reading configuration file /​usr/​local/​etc/​freevrrpd.conf
 +Nov  5 11:37:15 R1 freevrrpd[1178]:​ monitored circuits engine initialized
 +Nov  5 11:37:16 R1 freevrrpd[1178]:​ server state vrid 1: backup
 +Nov  5 11:37:17 R1 freevrrpd[1178]:​ server state vrid 2: backup
 +Nov  5 11:37:20 R1 freevrrpd[1178]:​ server state vrid 1: master
 +Nov  5 11:37:21 R1 freevrrpd[1178]:​ server state vrid 2: master
 +</​code>​
 +
 +//R1 is VRRP master for vrid 1 and 2.//
 +
 +On R2:
 +
 +<​code>​
 +[root@R2]~# ​ grep vrrp /​var/​log/​messages
 +Nov  5 11:41:37 R2 freevrrpd[2091]:​ launching daemon in background mode
 +Nov  5 11:41:37 R2 freevrrpd[2092]:​ initializing threads and all VRID
 +Nov  5 11:41:37 R2 freevrrpd[2092]:​ reading configuration file /​usr/​local/​etc/​freevrrpd.conf
 +Nov  5 11:41:37 R2 freevrrpd[2092]:​ monitored circuits engine initialized
 +Nov  5 11:41:38 R2 freevrrpd[2092]:​ server state vrid 1: backup
 +Nov  5 11:41:39 R2 freevrrpd[2092]:​ server state vrid 2: backup
 +</​code>​
 +
 +//R2 is the VRRP backup for vrid 1 and 2.//
 +
 +==== Forwarding and ARP entry ====
 +
 +Pinging R4 from R3:
 +<​code>​
 +[root@R3]~# ping 192.168.2.4
 +PING 192.168.2.4 (192.168.2.4):​ 56 data bytes
 +64 bytes from 192.168.2.4:​ icmp_seq=0 ttl=63 time=0.669 ms
 +64 bytes from 192.168.2.4:​ icmp_seq=1 ttl=63 time=0.749 ms
 +64 bytes from 192.168.2.4:​ icmp_seq=2 ttl=63 time=0.718 ms
 +</​code>​
 +And checking ARP cache for a VRRP MAC address (00:​00:​5e:​00:​01:​xx)
 +
 +<​code>​
 +[root@R3]~#​arp -na | grep 192.168.1.254
 +? (192.168.1.254) at 00:​00:​5e:​00:​01:​01 on vtnet3 expires in 709 seconds [ethernet]
 +
 +</​code>​
 +
 +==== Testing VRRP swap ====
 +
 +Disable one interface on R1 for changing the VRRP states:
 +<​code>​
 +
 +[root@R1]~# ifconfig vtnet3 down
 +Nov  5 11:48:40 R1 freevrrpd[1178]:​ can't write to socket: Network is down
 +Nov  5 11:48:40 R1 freevrrpd[1178]:​ There is a big problem here !
 +Nov  5 11:48:42 R1 freevrrpd[1178]:​ interface vtnet3 is faulty, deactivated from VRRP VRIDs
 +Nov  5 11:48:42 R1 freevrrpd[1178]:​ VRID 2 (interface vtnet4) has been deactivated due to dependance
 +</​code>​
 +
 +And check that R2 became the master:
 +
 +<​code>​
 +[root@R2]~#​tail -f /​var/​log/​messages
 +Nov  5 11:48:45 R2 freevrrpd[2092]:​ server state vrid 1: master
 +Nov  5 11:48:48 R2 freevrrpd[2092]:​ server state vrid 2: master
 +</​code>​
 +
 +And check that R3 still can reach R4:
 +
 +<​code>​
 +[root@R3]~#​ping 192.168.2.4
 +PING 192.168.2.4 (192.168.2.4):​ 56 data bytes
 +64 bytes from 192.168.2.4:​ icmp_seq=0 ttl=63 time=0.571 ms
 +64 bytes from 192.168.2.4:​ icmp_seq=1 ttl=63 time=0.795 ms
 +</​code>​
documentation/examples/simple_vrrp_lab.txt ยท Last modified: 2017/07/07 00:23 (external edit)