User Tools

Site Tools


documentation:examples:graphpath

Differences

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

Link to this comparison view

documentation:examples:graphpath [2018/10/15 23:51] (current)
Line 1: Line 1:
 +====== Testing graphpath, the ASCII network diagram tool ======
 +
 +This lab show an jail/vnet based diagram used for testing BSDRP's [[https://github.com/ocochard/graphpath|graphpath]].
 +
 +===== Presentation =====
 +
 +[[https://github.com/ocochard/graphpath|graphpath]] generates an ASCII network diagram of the path, view from the host, from a source toward a destination IP address.
 +
 +For testing this tools, we need to create a network with a topology allowing all graphpath use cases.
 +
 +==== Network diagram ====
 +
 +{{:documentation:examples:graphpath.png|}}
 +
 +
 +===== Setting-up the lab =====
 +
 +==== Downloading BSD Router Project images ====
 +
 +Download BSDRP serial image (prevent to have to use an X display) on Sourceforge.
 +
 +==== Download Lab scripts =====
 +
 +More information on these BSDRP lab scripts available on [[documentation:examples:How to build a BSDRP router lab]].
 +
 +Start the lab with only one router, example with bhyve under FreeBSD:
 +<code>
 +user:~ # tools/BSDRP-lab-bhyve.sh -i /usr/obj/BSDRPstable.amd64/BSDRP-1.801-full-amd64-serial.img.xz
 +BSD Router Project (http://bsdrp.net) - bhyve full-meshed lab script
 +Setting-up a virtual lab with 1 VM(s):
 +- Working directory: /tmp/BSDRP
 +- Each VM has 1 core(s) and 512M RAM
 +- Emulated NIC: virtio-net
 +- Switch mode: bridge + tap
 +- 1 LAN(s) between all VM
 +- Full mesh Ethernet links between each VM
 +VM 1 have the following NIC:
 +- vtnet0 connected to LAN number 1
 +For connecting to VM'serial console, you can use:
 +- VM 1 : cu -l /dev/nmdm1B
 +</code>
 +
 +===== Network setup =====
 +
 +From BSDRP, you can configure all these with only one command line:
 +<code>
 +labconfig graphpath
 +</code>
 +==== Host (me) ====
 +
 +<code>
 +sysrc hostname="me"
 +sysrc cloned_interfaces="bridge1 bridge2 bridge11 bridge12 bridge21"
 +sysrc ifconfig_bridge1="inet 10.0.1.1/24"
 +sysrc ifconfig_bridge1_ipv6="inet6 2001:db8:1::1 prefixlen 64"
 +sysrc ifconfig_bridge2="inet 10.0.2.1/24"
 +sysrc ifconfig_bridge2_ipv6="inet6 2001:db8:2::1 prefixlen 64"
 +sysrc ifconfig_bridge11="up"
 +sysrc ifconfig_bridge12="up"
 +sysrc ifconfig_bridge21="up"
 +sysrc static_routes="host11 host12 host21"
 +sysrc route_host11="-net 10.0.11.0/24 10.0.1.11"
 +sysrc route_host12="-net 10.0.12.0/24 10.0.1.12"
 +sysrc route_host21="-net 10.0.21.0/24 10.0.2.21"
 +sysrc ipv6_static_routes="host11 host12 host21"
 +sysrc ipv6_route_host11="2001:db8:11:: -prefixlen 64 2001:db8:1::11"
 +sysrc ipv6_route_host12="2001:db8:12:: -prefixlen 64 2001:db8:1::12"
 +sysrc ipv6_route_host21="2001:db8:21:: -prefixlen 64 2001:db8:2::21"
 +hostname me
 +service netif restart
 +service routing restart
 +</code>
 +
 +==== Jail host11 ====
 +
 +host11 is configured as a simple host:
 +
 +<code>
 +tenant -c -j host11 -i bridge11
 +cat > /etc/jails/host11/rc.conf <<EOF
 +hostname="host11"
 +ifconfig_epair111b="inet 10.0.11.11/24"
 +ifconfig_epair111b_ipv6="inet6 2001:db8:11::11 prefixlen 64"
 +defaultrouter="10.0.11.254"
 +ipv6_defaultrouter="2001:db8:11::254"
 +EOF
 +</code>
 +
 +==== Jail host12 ====
 +
 +host12 is configured as a simple host:
 +
 +<code>
 +tenant -c -j host12 -i bridge12
 +cat > /etc/jails/host12/rc.conf <<EOF
 +hostname="host12"
 +ifconfig_epair212b="inet 10.0.12.12/24"
 +ifconfig_epair212b_ipv6="inet6 2001:db8:12::12 prefixlen 64"
 +defaultrouter="10.0.12.254"
 +ipv6_defaultrouter="2001:db8:12::254"
 +EOF
 +</code>
 +
 +==== Jail router11 ====
 +
 +router11 is configured as a router:
 +
 +<code>
 +tenant -c -j router11 -i bridge1,bridge11
 +cat > /etc/jails/router11/rc.conf <<EOF
 +hostname="router11"
 +gateway_enable=YES
 +ipv6_gateway_enable=YES
 +ifconfig_epair31b="inet 10.0.1.11/24"
 +ifconfig_epair31b_ipv6="inet6 2001:db8:1::11 prefixlen 64"
 +ifconfig_epair311b="inet 10.0.11.254/24"
 +ifconfig_epair311b_ipv6="inet6 2001:db8:11::254 prefixlen 64"
 +defaultrouter="10.0.1.1"
 +ipv6_defaultrouter="2001:db8:1::1"
 +EOF
 +</code>
 +
 +==== Jail router12 ====
 +
 +router12 is configured as a router:
 +
 +<code>
 +tenant -c -j router12 -i bridge1,bridge12
 +cat > /etc/jails/router12/rc.conf <<EOF
 +hostname=router12
 +gateway_enable=YES
 +ipv6_gateway_enable=YES
 +ifconfig_epair41b="inet 10.0.1.12/24"
 +ifconfig_epair41b_ipv6="inet6 2001:db8:1::12 prefixlen 64"
 +ifconfig_epair412b="inet 10.0.12.254/24"
 +ifconfig_epair412b_ipv6="inet6 2001:db8:12::254 prefixlen 64"
 +defaultrouter="10.0.1.1"
 +ipv6_defaultrouter="2001:db8:1::1"
 +EOF
 +</code>
 +
 +==== Jail router21 ====
 +
 +router21 is configured as a router:
 +
 +<code>
 +tenant -c -j router21 -i bridge2,bridge21
 +cat > /etc/jails/router21/rc.conf <<EOF
 +hostname="router21"
 +gateway_enable=YES
 +ipv6_gateway_enable=YES
 +ifconfig_epair52b="inet 10.0.2.21/24"
 +ifconfig_epair52b_ipv6="inet6 2001:db8:2::21 prefixlen 64"
 +ifconfig_epair521b="inet 10.0.21.254/24"
 +ifconfig_epair521b_ipv6="inet6 2001:db8:21::254 prefixlen 64"
 +defaultrouter="10.0.2.1"
 +ipv6_defaultrouter="2001:db8:2::1"
 +EOF
 +</code>
 +
 +==== Jail host21 ====
 +
 +host21 is configured as a simple host:
 +
 +<code>
 +tenant -c -j host21 -i bridge21
 +cat > /etc/jails/host21/rc.conf <<EOF
 +hostname="host21"
 +ifconfig_epair621b="inet 10.0.21.21/24"
 +ifconfig_epair621b_ipv6="inet6 2001:db8:21::21 prefixlen 64"
 +defaultrouter="10.0.21.254"
 +ipv6_defaultrouter="2001:db8:21::254"
 +EOF
 +</code>
 +
 +==== Start the jails ====
 +
 +<code>
 +[root@me]~# service jail start
 +Starting jails:epair111a: Ethernet address: 02:ff:c0:00:09:0a
 +epair111b: Ethernet address: 02:00:90:00:0a:0b
 +epair212a: Ethernet address: 02:ff:c0:00:0b:0a
 +epair212b: Ethernet address: 02:00:90:00:0c:0b
 +epair31a: Ethernet address: 02:ff:c0:00:0a:0a
 +epair31b: Ethernet address: 02:00:90:00:0d:0b
 +epair41a: Ethernet address: 02:ff:c0:00:0c:0a
 +epair41b: Ethernet address: 02:00:90:00:0e:0b
 +epair311a: Ethernet address: 02:ff:c0:00:0f:0a
 +epair311b: Ethernet address: 02:00:90:00:10:0b
 +epair52a: Ethernet address: 02:ff:c0:00:11:0a
 +epair52b: Ethernet address: 02:00:90:00:12:0b
 +epair412a: Ethernet address: 02:ff:c0:00:13:0a
 +epair412b: Ethernet address: 02:00:90:00:14:0b
 +epair621a: Ethernet address: 02:ff:c0:00:0d:0a
 +epair621b: Ethernet address: 02:00:90:00:10:0b
 +epair521a: Ethernet address: 02:ff:c0:00:15:0a
 +epair521b: Ethernet address: 02:00:90:00:16:0b
 + host11 host12 host21 router21 router11 router12.
 +</code>
 +
 +And test host11 can reach host21:
 +<code>
 +[root@me]~# jexec host11 traceroute 10.0.21.21
 +traceroute to 10.0.21.21 (10.0.21.21), 64 hops max, 40 byte packets
 +  10.0.11.254 (10.0.11.254)  0.055 ms  0.051 ms  0.039 ms
 +  10.0.1.1 (10.0.1.1)  0.043 ms  0.048 ms  0.041 ms
 +  10.0.2.21 (10.0.2.21)  0.044 ms  0.056 ms  0.043 ms
 +  10.0.21.21 (10.0.21.21)  0.047 ms  0.052 ms  0.045 ms
 +[root@me]~# jexec host11 traceroute6 2001:db8:21::21
 +traceroute6 to 2001:db8:21::21 (2001:db8:21::21) from 2001:db8:11::11, 64 hops max, 20 byte packets
 +  2001:db8:11::254  0.127 ms  0.103 ms  0.091 ms
 +  2001:db8:1:: 0.101 ms  0.106 ms  0.094 ms
 +  2001:db8:2::21  0.139 ms  0.108 ms  0.098 ms
 +  2001:db8:21::21  0.159 ms  0.112 ms  0.102 ms
 +</code>
 +
 +===== Testing graphpath =====
 +
 +Now, from the main host, we should be able to generate some ASCII network diagrams:
 +
 +==== Inet4 ====
 +<code>
 +[root@me]~# ping -c 1 10.0.11.11
 +[root@me]~# ping -c 1 10.0.12.12
 +[root@me]~# ping -c 1 10.0.21.21
 +[root@me]~# graphpath 10.0.11.11 10.0.12.12
 ++-----------------------------+  +-----------------------------+
 +| SOURCE HOST                  | DESTINATION HOST            |
 +| IP:   10.0.11.11            |  | IP:   10.0.12.12            |
 ++-----------------------------+  +-----------------------------+
 +              |                            |
 ++-----------------------------+  +-----------------------------+
 +| ROUTER TOWARDS SOURCE        | ROUTER TOWARDS DESTINATION  |
 +| IP:   10.0.1.11              | IP:   10.0.1.12             |
 +| ARP:  02:01:6c:01:b0:03      | ARP:  02:01:6c:01:b0:04     |
 ++-----------------------------+  +-----------------------------+
 +              |                            |
 +            --+---+------------------------+---
 +                  |
 ++-----------------------------+
 +| IF:   bridge1               |
 +| MAC:  02:e7:49:ed:fc:01     |
 +| IP:   10.0.1.1              |
 +| net:  10.0.11.0             |
 +| mask: 255.255.255.0         |
 +|                             |
 +|         THIS ROUTER         |
 ++-----------------------------+
 +
 +[root@me]~# graphpath 10.0.11.11 10.0.21.21
 ++-----------------------------+
 +| SOURCE HOST                 |
 +| IP:   10.0.11.11            |
 ++-----------------------------+
 +              |
 ++-----------------------------+
 +| ROUTER TOWARDS SOURCE       |
 +| IP:   10.0.1.11             |
 +| ARP:  02:01:6c:01:b0:03     |
 ++-----------------------------+
 +              |
 ++-----------------------------+
 +| IF:   bridge1               |
 +| MAC:  02:e7:49:ed:fc:01     |
 +| IP:   10.0.1.1              |
 +| net:  10.0.11.0             |
 +| mask: 255.255.255.0         |
 +|                             |
 +|         THIS ROUTER         |
 +|                             |
 +| net:  10.0.21.0             |
 +| mask: 255.255.255.0         |
 +| IP:   10.0.2.1              |
 +| MAC:  02:e7:49:ed:fc:02     |
 +| IF:   bridge2               |
 ++-----------------------------+
 +              |
 ++-----------------------------+
 +| ROUTER TOWARDS DESTINATION  |
 +| IP:   10.0.2.21             |
 +| ARP:  02:02:6c:01:b0:05     |
 ++-----------------------------+
 +              |
 ++-----------------------------+
 +| DESTINATION HOST            |
 +| IP:   10.0.21.21            |
 ++-----------------------------+
 +
 +[root@me]~# graphpath 10.0.11.11 10.0.1.12
 ++-----------------------------+  +-----------------------------+
 +| SOURCE HOST                  | DESTINATION HOST            |
 +| IP:   10.0.11.11            |  | IP:   10.0.1.12             |
 +|                              | ARP:  02:01:6c:01:b0:04     |
 ++-----------------------------+  +-----------------------------+
 +              |                            |
 ++-----------------------------+            |
 +| ROUTER TOWARDS SOURCE                  |
 +| IP:   10.0.1.11                        |
 +| ARP:  02:01:6c:01:b0:03                |
 ++-----------------------------+            |
 +              |                            |
 +            --+---+------------------------+---
 +                  |
 ++-----------------------------+
 +| IF:   bridge1               |
 +| MAC:  02:e7:49:ed:fc:01     |
 +| IP:   10.0.1.1              |
 +| net:  10.0.11.0             |
 +| mask: 255.255.255.0         |
 +|                             |
 +|         THIS ROUTER         |
 ++-----------------------------+
 +
 +[root@me]~#  graphpath 10.0.1.12 10.0.11.11
 ++-----------------------------+  +-----------------------------+
 +| SOURCE HOST                  | DESTINATION HOST            |
 +| IP:   10.0.1.12              | IP:   10.0.11.11            |
 +| ARP:  02:01:c9:01:b0:04      |                             |
 ++-----------------------------+  +-----------------------------+
 +              |                            |
 +              |                  +-----------------------------+
 +              |                  | ROUTER TOWARDS DESTINATION  |
 +              |                  | IP:   10.0.1.11             |
 +              |                  | ARP:  02:01:c9:01:b0:03     |
 +              |                  +-----------------------------+
 +              |                            |
 +            --+---+------------------------+---
 +                  |
 ++-----------------------------+
 +| IF:   bridge1               |
 +| MAC:  02:de:f2:41:54:01     |
 +| IP:   10.0.1.1              |
 +| net:  10.0.1.0              |
 +| mask: 255.255.255.0         |
 +|                             |
 +|         THIS ROUTER         |
 ++-----------------------------+
 +</code>
 +
 +==== Inet6 ====
 +
 +<code>
 +[root@me]~# ping6 -c 1 2001:db8:11::11
 +[root@me]~# ping6 -c 1 2001:db8:12::12
 +[root@me]~# ping6 -c 1 2001:db8:21::21
 +[root@me]~# graphpath 2001:db8:11::11 2001:db8:12::12
 ++---------------------------------------------------+  +---------------------------------------------------+
 +| SOURCE HOST                                        | DESTINATION HOST                                  |
 +| IP:   2001:db8:11::11                              | IP:   2001:db8:12::12                             |
 ++---------------------------------------------------+  +---------------------------------------------------+
 +                                                                          |
 ++---------------------------------------------------+  +---------------------------------------------------+
 +| ROUTER TOWARDS SOURCE                              | ROUTER TOWARDS DESTINATION                        |
 +| IP:   2001:db8:1::11                              |  | IP:   2001:db8:1::12                              |
 +| NDP:  02:01:c9:01:b0:03                            | NDP:  02:01:c9:01:b0:04                           |
 ++---------------------------------------------------+  +---------------------------------------------------+
 +                                                                          |
 +                       --+---+----------------------------------------------+---
 +                             |
 ++---------------------------------------------------+
 +| IF:   bridge1                                     |
 +| MAC:  02:de:f2:41:54:01                           |
 +| IP:   2001:db8:1::                              |
 +| net:  2001:db8:11::                               |
 +| mask: ffff:ffff:ffff:ffff::                       |
 +|                                                   |
 +|                    THIS ROUTER                    |
 ++---------------------------------------------------+
 +
 +[root@me]~# graphpath 2001:db8:11::11 2001:db8:21::21
 ++---------------------------------------------------+
 +| SOURCE HOST                                       |
 +| IP:   2001:db8:11::11                             |
 ++---------------------------------------------------+
 +                         |
 ++---------------------------------------------------+
 +| ROUTER TOWARDS SOURCE                             |
 +| IP:   2001:db8:1::11                              |
 +| NDP:  02:01:c9:01:b0:03                           |
 ++---------------------------------------------------+
 +                         |
 ++---------------------------------------------------+
 +| IF:   bridge1                                     |
 +| MAC:  02:de:f2:41:54:01                           |
 +| IP:   2001:db8:1::                              |
 +| net:  2001:db8:11::                               |
 +| mask: ffff:ffff:ffff:ffff::                       |
 +|                                                   |
 +|                    THIS ROUTER                    |
 +|                                                   |
 +| net:  2001:db8:21::                               |
 +| mask: ffff:ffff:ffff:ffff::                       |
 +| IP:   2001:db8:2::                              |
 +| MAC:  02:de:f2:41:54:02                           |
 +| IF:   bridge2                                     |
 ++---------------------------------------------------+
 +                         |
 ++---------------------------------------------------+
 +| ROUTER TOWARDS DESTINATION                        |
 +| IP:   2001:db8:2::21                              |
 +| NDP:  02:02:c9:01:b0:05                           |
 ++---------------------------------------------------+
 +
 +[root@me]~# graphpath 2001:db8:11::11 2001:db8:1::12
 ++---------------------------------------------------+  +---------------------------------------------------+
 +| SOURCE HOST                                        | DESTINATION HOST                                  |
 +| IP:   2001:db8:11::11                              | IP:   2001:db8:1::12                              |
 +|                                                    | NDP:  02:01:c9:01:b0:04                           |
 ++---------------------------------------------------+  +---------------------------------------------------+
 +                                                                          |
 ++---------------------------------------------------+                       |
 +| ROUTER TOWARDS SOURCE                                                   |
 +| IP:   2001:db8:1::11                              |                       |
 +| NDP:  02:01:c9:01:b0:03                                                 |
 ++---------------------------------------------------+                       |
 +                                                                          |
 +                       --+---+----------------------------------------------+---
 +                             |
 ++---------------------------------------------------+
 +| IF:   bridge1                                     |
 +| MAC:  02:de:f2:41:54:01                           |
 +| IP:   2001:db8:1::                              |
 +| net:  2001:db8:11::                               |
 +| mask: ffff:ffff:ffff:ffff::                       |
 +|                                                   |
 +|                    THIS ROUTER                    |
 ++---------------------------------------------------+
 +
 +[root@me]~# graphpath 2001:db8:1::12 2001:db8:11::11
 ++---------------------------------------------------+  +---------------------------------------------------+
 +| SOURCE HOST                                        | DESTINATION HOST                                  |
 +| IP:   2001:db8:1::12                              |  | IP:   2001:db8:11::11                             |
 +| NDP:  02:01:c9:01:b0:04                            |                                                   |
 ++---------------------------------------------------+  +---------------------------------------------------+
 +                                                                          |
 +                                                     +---------------------------------------------------+
 +                                                     | ROUTER TOWARDS DESTINATION                        |
 +                                                     | IP:   2001:db8:1::11                              |
 +                                                     | NDP:  02:01:c9:01:b0:03                           |
 +                                                     +---------------------------------------------------+
 +                                                                          |
 +                       --+---+----------------------------------------------+---
 +                             |
 ++---------------------------------------------------+
 +| IF:   bridge1                                     |
 +| MAC:  02:de:f2:41:54:01                           |
 +| IP:   2001:db8:1::                              |
 +| net:  2001:db8:1::                                |
 +| mask: ffff:ffff:ffff:ffff::                       |
 +|                                                   |
 +|                    THIS ROUTER                    |
 ++---------------------------------------------------+
 +</code>
  
documentation/examples/graphpath.txt ยท Last modified: 2018/10/15 23:51 (external edit)