documentation:examples:aggregating_multiple_isp_links_with_mlvpn
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
documentation:examples:aggregating_multiple_isp_links_with_mlvpn [2020/02/21 21:29] – [Aggregated bandwidth] olivier | documentation:examples:aggregating_multiple_isp_links_with_mlvpn [2020/02/21 21:40] – [Router 5 : MLVPN server] olivier | ||
---|---|---|---|
Line 13: | Line 13: | ||
{{: | {{: | ||
- | ===== Virtual Lab setp ===== | + | ===== Virtual Lab setup ===== |
- | This chapter will describe how to start each routers and configuring the 3 centrals routers. | + | This chapter will describe how to start each routers and configuring the 4 centrals routers. |
More information on these BSDRP lab scripts available on [[documentation: | More information on these BSDRP lab scripts available on [[documentation: | ||
Line 22: | Line 22: | ||
< | < | ||
- | # ./ | + | # ./ |
BSD Router Project (http:// | BSD Router Project (http:// | ||
- | Setting-up a virtual lab with 5 VM(s): | + | Setting-up a virtual lab with 6 VM(s): |
- | - Working directory: /tmp/BSDRP | + | - Working directory: /root/BSDRP-VMs |
- | - Each VM have 1 core(s) and 256M RAM | + | - Each VM has a total of 1 (1 cores and 1 threads) and 512M RAM |
+ | - Emulated NIC: virtio-net | ||
- Switch mode: bridge + tap | - Switch mode: bridge + tap | ||
- 0 LAN(s) between all VM | - 0 LAN(s) between all VM | ||
- Full mesh Ethernet links between each VM | - Full mesh Ethernet links between each VM | ||
- | VM 1 have the following NIC: | + | VM 1 has the following NIC: |
- | - vtnet0 connected to VM 2. | + | - vtnet0 connected to VM 2 |
- | - vtnet1 connected to VM 3. | + | - vtnet1 connected to VM 3 |
- | - vtnet2 connected to VM 4. | + | - vtnet2 connected to VM 4 |
- | - vtnet3 connected to VM 5. | + | - vtnet3 connected to VM 5 |
- | VM 2 have the following NIC: | + | - vtnet4 connected to VM 6 |
- | - vtnet0 connected to VM 1. | + | VM 2 has the following NIC: |
- | - vtnet1 connected to VM 3. | + | - vtnet0 connected to VM 1 |
- | - vtnet2 connected to VM 4. | + | - vtnet1 connected to VM 3 |
- | - vtnet3 connected to VM 5. | + | - vtnet2 connected to VM 4 |
- | VM 3 have the following NIC: | + | - vtnet3 connected to VM 5 |
- | - vtnet0 connected to VM 1. | + | - vtnet4 connected to VM 6 |
- | - vtnet1 connected to VM 2. | + | VM 3 has the following NIC: |
- | - vtnet2 connected to VM 4. | + | - vtnet0 connected to VM 1 |
- | - vtnet3 connected to VM 5. | + | - vtnet1 connected to VM 2 |
- | VM 4 have the following NIC: | + | - vtnet2 connected to VM 4 |
- | - vtnet0 connected to VM 1. | + | - vtnet3 connected to VM 5 |
- | - vtnet1 connected to VM 2. | + | - vtnet4 connected to VM 6 |
- | - vtnet2 connected to VM 3. | + | VM 4 has the following NIC: |
- | - vtnet3 connected to VM 5. | + | - vtnet0 connected to VM 1 |
- | VM 5 have the following NIC: | + | - vtnet1 connected to VM 2 |
- | - vtnet0 connected to VM 1. | + | - vtnet2 connected to VM 3 |
- | - vtnet1 connected to VM 2. | + | - vtnet3 connected to VM 5 |
- | - vtnet2 connected to VM 3. | + | - vtnet4 connected to VM 6 |
- | - vtnet3 connected to VM 4. | + | VM 5 has the following NIC: |
- | For connecting | + | - vtnet0 connected to VM 1 |
- | - VM 1 : cu -l /dev/nmdm1B | + | - vtnet1 connected to VM 2 |
- | - VM 2 : cu -l /dev/nmdm2B | + | - vtnet2 connected to VM 3 |
- | - VM 3 : cu -l /dev/nmdm3B | + | - vtnet3 connected to VM 4 |
- | - VM 4 : cu -l /dev/nmdm4B | + | - vtnet4 connected |
- | - VM 5 : cu -l /dev/nmdm5B | + | VM 6 has the following NIC: |
+ | - vtnet0 connected to VM 1 | ||
+ | - vtnet1 connected to VM 2 | ||
+ | - vtnet2 connected to VM 3 | ||
+ | - vtnet3 connected to VM 4 | ||
+ | To connect | ||
+ | - VM 1 : cu -l /dev/nmdm-BSDRP.1B | ||
+ | - VM 2 : cu -l /dev/nmdm-BSDRP.2B | ||
+ | - VM 3 : cu -l /dev/nmdm-BSDRP.3B | ||
+ | - VM 4 : cu -l /dev/nmdm-BSDRP.4B | ||
+ | - VM 5 : cu -l /dev/nmdm-BSDRP.5B | ||
+ | - VM 6 : cu -l / | ||
</ | </ | ||
Line 67: | Line 79: | ||
=== Router 2 === | === Router 2 === | ||
- | Router 2 is configured for rate-limiting traffic at 10 Mb/s on interface to/ | + | Router 2 is configured for rate-limiting traffic at 10 Mb/s on interface to/ |
< | < | ||
- | sysrc hostname=R2 | + | sysrc hostname=VM2 \ |
- | sysrc ifconfig_vtnet0=" | + | ifconfig_vtnet0=" |
- | sysrc ifconfig_vtnet2=" | + | |
- | sysrc static_routes="R5" | + | |
- | sysrc route_R5=" | + | firewall_enable=YES |
- | sysrc firewall_enable=YES | + | firewall_script="/ |
- | sysrc firewall_script="/ | + | cat > / |
- | + | ||
- | cat > / | + | |
#!/bin/sh | #!/bin/sh | ||
fwcmd="/ | fwcmd="/ | ||
kldstat -q -m dummynet || kldload dummynet | kldstat -q -m dummynet || kldload dummynet | ||
# Flush out the list before we begin. | # Flush out the list before we begin. | ||
- | ${fwcmd} -f flush | + | \${fwcmd} -f flush |
- | #Create pipes (one for each direction) | + | \${fwcmd} pipe 10 config bw 10Mbit/s |
- | ${fwcmd} pipe 10 config bw 10Mbit/s | + | \${fwcmd} pipe 20 config bw 10Mbit/s |
- | ${fwcmd} pipe 20 config bw 10Mbit/s | + | |
#Traffic getting out vtnet0 is limited to 10Mbit/s | #Traffic getting out vtnet0 is limited to 10Mbit/s | ||
- | ${fwcmd} add 1000 pipe 10 all from any to any out via vtnet0 | + | \${fwcmd} add 1000 pipe 10 all from any to any out via vtnet0 |
#Traffic getting int vtnet0 is limited to 10Mbit/s | #Traffic getting int vtnet0 is limited to 10Mbit/s | ||
- | ${fwcmd} add 2000 pipe 20 all from any to any in via vtnet0 | + | \${fwcmd} add 2000 pipe 20 all from any to any in via vtnet0 |
#We don't want to block traffic, only shape some | #We don't want to block traffic, only shape some | ||
- | ${fwcmd} add 3000 allow ip from any to any | + | \${fwcmd} add 3000 allow ip from any to any |
- | 'EOF' | + | EOF |
service netif restart | service netif restart | ||
service routing restart | service routing restart | ||
service ipfw start | service ipfw start | ||
+ | hostname VM2 | ||
config save | config save | ||
</ | </ | ||
Line 103: | Line 113: | ||
=== Router 3 === | === Router 3 === | ||
- | Router 3 is configured for rate-limiting traffic at 10 Mb/s on interface to/ | + | Router 3 is configured for rate-limiting traffic at 10 Mb/s on interface to/ |
< | < | ||
- | sysrc hostname=R3 | + | sysrc hostname=VM3 \ |
- | sysrc ifconfig_vtnet0=" | + | ifconfig_vtnet0=" |
- | sysrc ifconfig_vtnet2=" | + | |
- | sysrc static_routes="R5" | + | |
- | sysrc route_R5=" | + | firewall_enable=YES |
- | sysrc firewall_enable=YES | + | firewall_script="/ |
- | sysrc firewall_script="/ | + | |
- | cat > / | + | cat > / |
#!/bin/sh | #!/bin/sh | ||
fwcmd="/ | fwcmd="/ | ||
kldstat -q -m dummynet || kldload dummynet | kldstat -q -m dummynet || kldload dummynet | ||
# Flush out the list before we begin. | # Flush out the list before we begin. | ||
- | ${fwcmd} -f flush | + | \${fwcmd} -f flush |
- | #Create pipes (one for each direction) | + | \${fwcmd} pipe 10 config bw 10Mbit/s |
- | ${fwcmd} pipe 10 config bw 10Mbit/s | + | \${fwcmd} pipe 20 config bw 10Mbit/s |
- | ${fwcmd} pipe 20 config bw 10Mbit/s | + | |
#Traffic getting out vtnet0 is limited to 10Mbit/s | #Traffic getting out vtnet0 is limited to 10Mbit/s | ||
- | ${fwcmd} add 1000 pipe 10 all from any to any out via vtnet0 | + | \${fwcmd} add 1000 pipe 10 all from any to any out via vtnet0 |
#Traffic getting int vtnet0 is limited to 10Mbit/s | #Traffic getting int vtnet0 is limited to 10Mbit/s | ||
- | ${fwcmd} add 2000 pipe 20 all from any to any in via vtnet0 | + | \${fwcmd} add 2000 pipe 20 all from any to any in via vtnet0 |
#We don't want to block traffic, only shape some | #We don't want to block traffic, only shape some | ||
- | ${fwcmd} add 3000 allow ip from any to any | + | \${fwcmd} add 3000 allow ip from any to any |
- | 'EOF' | + | EOF |
service netif restart | service netif restart | ||
service routing restart | service routing restart | ||
service ipfw start | service ipfw start | ||
+ | hostname VM3 | ||
config save | config save | ||
</ | </ | ||
Line 139: | Line 148: | ||
=== Router 4 === | === Router 4 === | ||
- | Router 4 is the aggregating server' | + | Router 4 is configured for rate-limiting traffic at 10 Mb/s on interface to/from VM1. |
< | < | ||
- | sysrc hostname=R4 | + | sysrc hostname=VM4 \ |
- | sysrc ifconfig_vtnet1=" | + | |
- | sysrc ifconfig_vtnet2=" | + | ifconfig_vtnet3=" |
- | sysrc ifconfig_vtnet3=" | + | defaultrouter=" |
- | sysrc static_routes=" | + | firewall_enable=YES \ |
- | sysrc route_R2="-net 10.0.12.0/24 10.0.24.2" | + | firewall_script="/ |
- | sysrc route_R3="-net 10.0.13.0/24 10.0.34.3" | + | |
+ | cat > / | ||
+ | #!/bin/sh | ||
+ | fwcmd="/ | ||
+ | kldstat -q -m dummynet || kldload dummynet | ||
+ | # Flush out the list before we begin. | ||
+ | \${fwcmd} -f flush | ||
+ | \${fwcmd} pipe 10 config bw 10Mbit/s | ||
+ | \${fwcmd} pipe 20 config bw 10Mbit/s | ||
+ | #Traffic getting out vtnet0 is limited to 10Mbit/s | ||
+ | \${fwcmd} add 1000 pipe 10 all from any to any out via vtnet0 | ||
+ | #Traffic getting int vten0 is limited to 10Mbit/s | ||
+ | \${fwcmd} add 2000 pipe 20 all from any to any in via vtnet0 | ||
+ | #We don't want to block traffic, only shape some | ||
+ | \${fwcmd} add 3000 allow ip from any to any | ||
+ | EOF | ||
+ | |||
+ | service netif restart | ||
+ | service routing restart | ||
+ | service ipfw start | ||
+ | hostname VM4 | ||
+ | config save | ||
+ | </ | ||
+ | |||
+ | === Router 5 === | ||
+ | |||
+ | Router 5 is the aggregating server' | ||
+ | |||
+ | < | ||
+ | sysrc hostname=R5 \ | ||
+ | ifconfig_vtnet1=" | ||
+ | | ||
+ | ifconfig_vtnet3=" | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | route_ISP3=" | ||
service netif restart | service netif restart | ||
service routing restart | service routing restart | ||
+ | hostname VM5 | ||
config save | config save | ||
</ | </ | ||
Line 205: | Line 252: | ||
</ | </ | ||
- | ==== Router | + | ==== Router |
- | Router | + | Router |
< | < | ||
- | sysrc hostname=R5 | + | sysrc hostname=VM6 \ |
- | sysrc cloned_interfaces=" | + | cloned_interfaces=" |
- | sysrc ifconfig_lo1=" | + | ifconfig_lo1=" |
- | sysrc ifconfig_vtnet3=" | + | |
- | sysrc defaultrouter=10.0.45.4 | + | defaultrouter="10.0.56.5" |
- | sysrc mlvpn_enable=YES | + | cat > / |
- | + | ||
- | cat <<' | + | |
[general] | [general] | ||
statuscommand = "/ | statuscommand = "/ | ||
tuntap = " | tuntap = " | ||
mode = " | mode = " | ||
- | ip4 = "10.0.15.5/30" | + | ip4 = "10.0.16.2/30" |
- | ip4_gateway = "10.0.15.1" | + | ip4_gateway = "10.0.16.1" |
ip4_routes = " | ip4_routes = " | ||
timeout = 30 | timeout = 30 | ||
Line 231: | Line 276: | ||
[adsl2] | [adsl2] | ||
- | bindhost = "10.0.45.5" | + | bindhost = "10.0.56.6" |
bindport = 5082 | bindport = 5082 | ||
[adsl3] | [adsl3] | ||
- | bindhost = "10.0.45.5" | + | bindhost = "10.0.56.6" |
bindport = 5083 | bindport = 5083 | ||
- | ' | ||
+ | [adsl4] | ||
+ | bindhost = " | ||
+ | bindport = 5084 | ||
+ | |||
+ | EOF | ||
+ | |||
+ | service mlvpn enable | ||
service netif restart | service netif restart | ||
service routing restart | service routing restart | ||
service mlvpn start | service mlvpn start | ||
+ | hostname VM6 | ||
config save | config save | ||
</ | </ |
documentation/examples/aggregating_multiple_isp_links_with_mlvpn.txt · Last modified: 2020/02/21 21:42 by olivier