Universal Pathfinding (L2-L4) with NetGrph
- Results are always subsecond
- Quick Paths shows full L2-L4 header summary
- Detailed Paths default to single-path, can show all paths
- Will scale across any path depth, O(N+L) complexity
- TODO: Add configuration snippets for each hop/layer
- NetGrph Link
Example 1: L2 -> L2 : Quick Path between two devices on the same Switch/VLAN
./netgrph.py 10.26.72.142 10.26.73.17
┌─[ PATHs L2-L4 ]
│
├── L2 Path : art7t1sw1 (Gi2/42) -> art7t1sw1 (Gi4/2)
├── Traversal Type : All Paths
│
├─────[ SRC 10.26.72.142 04bd.88cb.xxxx art7t1sw1(Gi2/42) [vid:260] ]
│
└─────[ DST 10.26.72.142 40e3.d6c5.xxxx art7t1sw1(Gi4/2) [vid:260] ]
Example 2: L2 -> L2 : Detailed Path between two devices on different switches, same VLAN
$ ./netgrph.py -all -p 10.26.72.142 10.26.73.254
┌─[ PATHs L2-L4 ]
│
├── L2 Path : art7t1sw1 (Gi2/42) -> art1t2sw1 (Gi2/0/37)
├── Traversal Type : All Paths
│
├─────[ SRC 10.26.72.142 04bd.88cb.xxxx art7t1sw1(Gi2/42) [vid:260] ]
│ ├── FQDN : art7035-nw-ap1.xxxx
│ ├── MAC : 04bd.88cb.xxxx
│ ├── Switch : art7t1sw1
│ ├── SwitchPort : Gi2/42
│ ├── UserID : utility-vlan
│ ├── VLAN : 260
│ ├── firstSeen : 2015-10-22 10:33:11
│ ├── lastSeen : 2016-08-22 10:10:44
│ └── vendor : Aruba Networks
│
├───┬─[ L2-PATH art7t1sw1 -> art1t2sw1 ]
│ ├── Distance : 2
│ ├── Links : 4
│ ├── Traversal Type : All Paths
│ │
│ ├───┬─[ L2-HOP #1 art7t1sw1(Te5/1) -> artmdf1(Eth1/8) [pc:1->108] ]
│ │ ├── From Channel : 1
│ │ ├── From Port : Te5/1
│ │ ├── From Switch : art7t1sw1
│ │ ├── Link VLANs : 1-1005
│ │ ├── Link rVLANs : 50,70,72,74,76,78,130,220,260,270-272,277,280,300,310,340,470,472,474,476,478,826
│ │ ├── Native VLAN : 1
│ │ ├── To Channel : 108
│ │ ├── To Port : Eth1/8
│ │ ├── To Switch : artmdf1
│ │ └── distance : 1
│ │
│ ├───┬─[ L2-HOP #1 art7t1sw1(Te6/1) -> artmdf2(Eth1/8) [pc:1->108] ]
│ │ ├── From Channel : 1
│ │ ├── From Port : Te6/1
│ │ ├── From Switch : art7t1sw1
│ │ ├── Link VLANs : 1-1005
│ │ ├── Link rVLANs : 50,70,72,74,76,78,130,220,260,270-272,277,280,300,310,340,470,472,474,476,478,826
│ │ ├── Native VLAN : 1
│ │ ├── To Channel : 108
│ │ ├── To Port : Eth1/8
│ │ ├── To Switch : artmdf2
│ │ └── distance : 1
│ │
│ ├───┬─[ L2-HOP #2 artmdf1(Eth1/10) -> art1t2sw1(Gi1/1/1) [pc:110->1] ]
│ │ ├── From Channel : 110
│ │ ├── From Port : Eth1/10
│ │ ├── From Switch : artmdf1
│ │ ├── Link VLANs : 1-1005,1246
│ │ ├── Link rVLANs : 1246
│ │ ├── Native VLAN : 1
│ │ ├── To Channel : 1
│ │ ├── To Port : Gi1/1/1
│ │ ├── To Switch : art1t2sw1
│ │ └── distance : 2
│ │
│ └───┬─[ L2-HOP #2 artmdf2(Eth1/10) -> art1t2sw1(Gi2/1/1) [pc:110->1] ]
│ ├── From Channel : 110
│ ├── From Port : Eth1/10
│ ├── From Switch : artmdf2
│ ├── Link VLANs : 1-1005,1246
│ ├── Link rVLANs : 1246
│ ├── Native VLAN : 1
│ ├── To Channel : 1
│ ├── To Port : Gi2/1/1
│ ├── To Switch : art1t2sw1
│ └── distance : 2
│
└─────[ DST 10.26.72.142 6cf3.7fcd.xxxx art1t2sw1(Gi2/0/37) [vid:260] ]
├── FQDN : art1302-c-ap1.xxxx
├── MAC : 6cf3.7fcd.xxxx
├── Switch : art1t2sw1
├── SwitchPort : Gi2/0/37
├── UserID : utility-vlan
├── VLAN : 260
├── firstSeen : 2013-06-23 20:42:53
├── lastSeen : 2016-08-22 10:10:44
└── vendor : Aruba Networks
Example 3: L2 -> L3 -> L2: Quick Path between two devices on the same Switch, different VLAN
┌─[ PATHs L2-L4 ]
│
├── L2 Path : art7t1sw1 (Gi2/42) -> art7t1sw1 (Gi9/47)
├── L3 Path : 10.26.72.0/22 -> 10.28.4.0/22
├── Lx Path : 10.26.72.142 -> 10.28.7.137
├── Traversal Type : All Paths
│
├─────[ SRC 10.26.72.142 04bd.88cb.xxxx art7t1sw1(Gi2/42) [vid:260] ]
│
├───┬─[ L2-PATH art7t1sw1 -> artmdf1|artmdf2 ]
│ │
│ ├─────[ L2-HOP #1 art7t1sw1(Te5/1) -> artmdf1(Eth1/8) [pc:1->108] ]
│ │
│ └─────[ L2-HOP #1 art7t1sw1(Te6/1) -> artmdf2(Eth1/8) [pc:1->108] ]
│
├─────[ L3GW 10.26.72.0/22 artmdf1|artmdf2 ]
│
├─────[ L3GW 10.28.4.0/22 artmdf1|artmdf2 ]
│
├───┬─[ L2-PATH artmdf1|artmdf2 -> art7t1sw1 ]
│ │
│ ├─────[ L2-HOP #1 artmdf1(Eth1/8) -> art7t1sw1(Te5/1) [pc:108->1] ]
│ │
│ └─────[ L2-HOP #1 artmdf2(Eth1/8) -> art7t1sw1(Te6/1) [pc:108->1] ]
│
└─────[ DST 10.26.72.142 ecb1.d7f7.xxxx art7t1sw1(Gi9/47) [vid:280] ]
Example 4: L2 -> L4 -> L2: Quick Paths between two devices on the same Switch, different VRF
┌─[ PATHs L2-L4 ]
│
├── L2 Path : art7t1sw1 (Gi2/42) -> art7t1sw1 (Gi1/38)
├── L3 Path : 10.26.72.0/22 -> 10.34.72.0/22
├── L4 Path : VRF:default -> FwutilFW -> VRF:utility
├── Lx Path : 10.26.72.142 -> 10.34.72.24
├── Traversal Type : All Paths
│
├─────[ SRC 10.26.72.142 04bd.88cb.xxxx art7t1sw1(Gi2/42) ]
│
├───┬─[ L2-PATH art7t1sw1 -> artmdf1|artmdf2 ]
│ │
│ ├─────[ L2-HOP #1 art7t1sw1(Te5/1) -> artmdf1(Eth1/8) [pc:1->108] ]
│ │
│ └─────[ L2-HOP #1 art7t1sw1(Te6/1) -> artmdf2(Eth1/8) [pc:1->108] ]
│
├─────[ L3GW 10.26.72.0/22 artmdf1|artmdf2 ]
│
├───┬─[ L3-PATH 10.26.72.0/22 -> 10.25.11.0/24 ]
│ │
│ ├───┬─[ L3-HOP #1 artmdf1(10.23.74.11) -> core1(10.23.74.10) [vid:2074] ]
│ │ │
│ │ └─────[ L2-HOP #1 artmdf1(Eth2/26) -> core1(Eth7/27) ]
│ │
│ ├───┬─[ L3-HOP #1 artmdf1(10.23.74.21) -> core2(10.23.74.20) [vid:3074] ]
│ │ │
│ │ └─────[ L2-HOP #1 artmdf1(Eth3/8) -> core2(Eth4/25) ]
│ │
│ ├───┬─[ L3-HOP #1 artmdf2(10.23.78.11) -> core1(10.23.78.10) [vid:2078] ]
│ │ │
│ │ └─────[ L2-HOP #1 artmdf2(Eth2/26) -> core1(Eth8/25) ]
│ │
│ └───┬─[ L3-HOP #1 artmdf2(10.23.78.21) -> core2(10.23.78.20) [vid:3078] ]
│ │
│ └─────[ L2-HOP #1 artmdf2(Eth3/8) -> core2(Eth8/25) ]
│
├─────[ L4GW 10.25.11.0/24 [rtr: vid:1601 vrf:default] ]
│
├─────[ L4FW FwutilFW ]
│
├─────[ L4GW 10.25.12.0/24 [rtr: vid:1602 vrf:utility] ]
│
├───┬─[ L3-PATH 10.25.12.0/24 -> 10.34.72.0/22 ]
│ │
│ ├───┬─[ L3-HOP #1 core1(10.23.74.10) -> artmdf1(10.23.74.11) [vid:2461] ]
│ │ │
│ │ └─────[ L2-HOP #1 core1(Eth7/27) -> artmdf1(Eth2/26) ]
│ │
│ ├───┬─[ L3-HOP #1 core1(10.23.78.10) -> artmdf2(10.23.78.11) [vid:2462] ]
│ │ │
│ │ └─────[ L2-HOP #1 core1(Eth8/25) -> artmdf2(Eth2/26) ]
│ │
│ ├───┬─[ L3-HOP #1 core2(10.23.74.20) -> artmdf1(10.23.74.21) [vid:3461] ]
│ │ │
│ │ └─────[ L2-HOP #1 core2(Eth4/25) -> artmdf1(Eth3/8) ]
│ │
│ └───┬─[ L3-HOP #1 core2(10.23.78.20) -> artmdf2(10.23.78.21) [vid:3462] ]
│ │
│ └─────[ L2-HOP #1 core2(Eth8/25) -> artmdf2(Eth3/8) ]
│
├─────[ L3GW 10.34.72.0/22 artmdf1|artmdf2 ]
│
├───┬─[ L2-PATH artmdf1|artmdf2 -> art7t1sw1 ]
│ │
│ ├─────[ L2-HOP #1 artmdf1(Eth1/8) -> art7t1sw1(Te5/1) [pc:108->1] ]
│ │
│ └─────[ L2-HOP #1 artmdf2(Eth1/8) -> art7t1sw1(Te6/1) [pc:108->1] ]
│
└─────[ DST 10.34.72.24 000a.b004.xxxx art7t1sw1(Gi1/38) ]
Example 5: L2 -> L3 -> L4 -> L3 -> L2: Single Detailed Path between two devices on the same Switch, different VRF
$ ./netgrph.py -p 10.26.72.142 10.34.72.24
┌─[ PATHs L2-L4 ]
│
├── L2 Path : art7t1sw1 (Gi2/42) -> art7t1sw1 (Gi1/38)
├── L3 Path : 10.26.72.0/22 -> 10.34.72.0/22
├── L4 Path : VRF:default -> FwutilFW -> VRF:utility
├── Lx Path : 10.26.72.142 -> 10.34.72.24
├── Traversal Type : Single Path
│
├───┬─[ SRC 10.26.72.142 04bd.88cb.xxxx art7t1sw1(Gi2/42) ]
│ ├── FQDN : art7035-nw-ap1.xxxx
│ ├── MAC : 04bd.88cb.xxxx
│ ├── Switch : art7t1sw1
│ ├── SwitchPort : Gi2/42
│ ├── UserID : utility-vlan
│ ├── VLAN : 260
│ ├── firstSeen : 2015-10-22 10:33:11
│ ├── lastSeen : 2016-08-22 10:15:45
│ └── vendor : Aruba Networks
│
├───┬─[ L2-PATH art7t1sw1 -> artmdf1|artmdf2 ]
│ ├── Distance : 1
│ ├── Links : 2
│ ├── Traversal Coverage : 50%
│ ├── Traversal Type : Single Path
│ │
│ └───┬─[ L2-HOP #1 art7t1sw1(Te5/1) -> artmdf1(Eth1/8) [pc:1->108] ]
│ ├── From Channel : 1
│ ├── From Port : Te5/1
│ ├── From Switch : art7t1sw1
│ ├── Link VLANs : 1-1005
│ ├── Link rVLANs : 50,70,72,74,76,78,130,220,260,270-272,277,280,300,310,340,470,472,474,476,478,826
│ ├── Native VLAN : 1
│ ├── To Channel : 108
│ ├── To Port : Eth1/8
│ ├── To Switch : artmdf1
│ └── distance : 1
│
├───┬─[ L3GW 10.26.72.0/22 artmdf1|artmdf2 ]
│ ├── Broadcast : 10.26.75.255
│ ├── Description : ART-UTILITY
│ ├── Gateway : 10.26.72.50
│ ├── IP : 10.26.72.142
│ ├── Location : ART-DC
│ ├── Netmask : 255.255.252.0
│ ├── Role : utility
│ ├── Router : artmdf1
│ ├── Security Level : 100
│ ├── Size : 1022 nodes
│ ├── StandbyRouter : artmdf2
│ ├── VLAN : 260
│ ├── VRF : default
│ └── vrfcidr : default-10.26.72.0/22
│
├───┬─[ L3-PATH 10.26.72.0/22 -> 10.25.11.0/24 ]
│ ├── Distance : 1
│ ├── Hops : 4
│ ├── Path : 10.26.72.0/22 -> 10.25.11.0/24
│ ├── Traversal Coverage : 25%
│ ├── Traversal Type : Single Path
│ ├── VRF : default
│ │
│ └───┬─[ L3-HOP #1 artmdf1(10.23.74.11) -> core1(10.23.74.10) [vid:2074] ]
│ ├── From IP : 10.23.74.11
│ ├── From Router : artmdf1
│ ├── To IP : 10.23.74.10
│ ├── To Router : core1
│ ├── VLAN : 2074
│ ├── distance : 1
│ │
│ └───┬─[ L2-HOP #1 artmdf1(Eth2/26) -> core1(Eth7/27) ]
│ ├── From Channel : 0
│ ├── From Port : Eth2/26
│ ├── From Switch : artmdf1
│ ├── Link VLANs : 1246,2074,2446-2450,2461
│ ├── Link rVLANs : 1246,2074,2446-2450,2461
│ ├── Native VLAN : 1
│ ├── To Channel : 0
│ ├── To Port : Eth7/27
│ ├── To Switch : core1
│ └── distance : 1
│
├───┬─[ L4GW 10.25.11.0/24 [rtr: vid:1601 vrf:default] ]
│ ├── cidr : 10.25.11.0/24
│ ├── desc : None
│ ├── gateway : 10.25.11.50
│ ├── name : default-10.25.11.0/24
│ ├── time : 2016-08-21 12:03:14.277146
│ ├── vid : 1601
│ ├── vrf : default
│ └── vrfcidr : default-10.25.11.0/24
│
├───┬─[ L4FW FwutilFW ]
│ ├── hostname : fsm-fwutil
│ ├── logIndex : firewalls
│ ├── name : FwutilFW
│ └── time : 2016-08-21 12:03:39.133668
│
├───┬─[ L4GW 10.25.12.0/24 [rtr: vid:1602 vrf:utility] ]
│ ├── cidr : 10.25.12.0/24
│ ├── desc : None
│ ├── gateway : 10.25.12.50
│ ├── name : utility-10.25.12.0/24
│ ├── time : 2016-08-21 12:03:14.287521
│ ├── vid : 1602
│ ├── vrf : utility
│ └── vrfcidr : utility-10.25.12.0/24
│
├───┬─[ L3-PATH 10.25.12.0/24 -> 10.34.72.0/22 ]
│ ├── Distance : 1
│ ├── Hops : 4
│ ├── Path : 10.25.12.0/24 -> 10.34.72.0/22
│ ├── Traversal Coverage : 25%
│ ├── Traversal Type : Single Path
│ ├── VRF : utility
│ │
│ └───┬─[ L3-HOP #1 core1(10.23.74.10) -> artmdf1(10.23.74.11) [vid:2461] ]
│ ├── From IP : 10.23.74.10
│ ├── From Router : core1
│ ├── To IP : 10.23.74.11
│ ├── To Router : artmdf1
│ ├── VLAN : 2461
│ ├── distance : 1
│ │
│ └───┬─[ L2-HOP #1 core1(Eth7/27) -> artmdf1(Eth2/26) ]
│ ├── From Channel : 0
│ ├── From Port : Eth7/27
│ ├── From Switch : core1
│ ├── Link VLANs : 1246,2074,2446-2450,2461
│ ├── Link rVLANs : 1246,2074,2446-2450,2461
│ ├── Native VLAN : 1
│ ├── To Channel : 0
│ ├── To Port : Eth2/26
│ ├── To Switch : artmdf1
│ └── distance : 1
│
├───┬─[ L3GW 10.34.72.0/22 ]
│ ├── Broadcast : 10.34.75.255
│ ├── Description : ART-UTILITY-SEC
│ ├── Gateway : 10.34.72.50
│ ├── IP : 10.34.72.24
│ ├── Location : ART-DC
│ ├── Netmask : 255.255.252.0
│ ├── Role : utility
│ ├── Router : artmdf1
│ ├── Security Level : 150
│ ├── Size : 1022 nodes
│ ├── StandbyRouter : artmdf2
│ ├── VLAN : 340
│ ├── VRF : utility
│ └── vrfcidr : utility-10.34.72.0/22
│
├───┬─[ L2-PATH artmdf1|artmdf2 -> art7t1sw1 ]
│ ├── Distance : 1
│ ├── Links : 2
│ ├── Traversal Coverage : 50%
│ ├── Traversal Type : Single Path
│ │
│ └───┬─[ L2-HOP #1 artmdf1(Eth1/8) -> art7t1sw1(Te5/1) [pc:108->1] ]
│ ├── From Channel : 108
│ ├── From Port : Eth1/8
│ ├── From Switch : artmdf1
│ ├── Link VLANs : 1-1005
│ ├── Link rVLANs : 50,70,72,74,76,78,130,220,260,270-272,277,280,300,310,340,470,472,474,476,478,826
│ ├── Native VLAN : 1
│ ├── To Channel : 1
│ ├── To Port : Te5/1
│ ├── To Switch : art7t1sw1
│ └── distance : 1
│
└───┬─[ DST 10.34.72.24 000a.b004.xxxx art7t1sw1(Gi1/38) ]
├── FQDN : 320LOYTEC01.xxxx
├── MAC : 000a.b004.xxxx
├── Switch : art7t1sw1
├── SwitchPort : Gi1/38
├── UserID : nac-xxx
├── VLAN : 340
├── firstSeen : 2015-10-10 09:52:44
├── lastSeen : 2016-08-22 10:15:45
└── vendor : LOYTEC electronics GmbH