2020-11-09 10:09:42 +00:00
|
|
|
.. _debugging:
|
|
|
|
|
|
|
|
Debugging
|
|
|
|
---------
|
|
|
|
|
|
|
|
the anatomy of a route:
|
|
|
|
|
|
|
|
.. code-block:: console
|
|
|
|
|
|
|
|
BGvpp# sh ip fib 1.1.1.3/32
|
|
|
|
ipv4-VRF:0, fib_index:0, flow hash:[src dst sport dport proto ] epoch:0 flags:none locks:[adjacency:1, recursive-resolution:4, default-route:1, ]
|
|
|
|
1.1.1.0/24 fib:0 index:9 locks:2
|
|
|
|
CLI refs:1 src-flags:added,contributing,active,
|
|
|
|
path-list:[24] locks:4 flags:shared, uPRF-list:11 len:1 itfs:[1, ]
|
|
|
|
path:[26] pl-index:24 ip4 weight=1 pref=0 attached-nexthop: oper-flags:resolved,
|
|
|
|
10.0.0.1 loop0
|
|
|
|
[@0]: arp-ipv4: via 10.0.0.1 loop0
|
|
|
|
|
|
|
|
forwarding: unicast-ip4-chain
|
|
|
|
[@0]: dpo-load-balance: [proto:ip4 index:11 buckets:1 uRPF:11 to:[0:0]]
|
|
|
|
[0] [@3]: arp-ipv4: via 10.0.0.1 loop0
|
|
|
|
|
|
|
|
let's go line by line.
|
|
|
|
|
|
|
|
.. code-block:: console
|
|
|
|
|
|
|
|
ipv4-VRF:0, fib_index:0, flow hash:[src dst sport dport proto ] epoch:0 flags:none locks:[adjacency:1, recursive-resolution:4, default-route:1, ]
|
|
|
|
|
|
|
|
Each field in turn:
|
|
|
|
|
|
|
|
- ipv4-VRF:0: the name of the table (as given by the user, or
|
|
|
|
automatically generated by VPP).
|
|
|
|
- fib-index:0; in the VPP pool of FIB objects, this is index 0
|
|
|
|
- flow hash:[src dst sport dport proto ]: When calculating the flow
|
2021-08-19 11:38:06 +02:00
|
|
|
hash to use for load-balancing, these are the fields in the packet
|
2020-11-09 10:09:42 +00:00
|
|
|
that are used. There is an API to change this per-table.
|
|
|
|
- epoch:0; Used during mark-n-sweep.
|
|
|
|
- flags:none; use the force, to find the per-table flags.
|
|
|
|
- locks: per-source reference counting, a table can only be deleted
|
|
|
|
when all sources no longer reference it.
|
|
|
|
|
|
|
|
next line:
|
|
|
|
|
|
|
|
.. code-block:: console
|
|
|
|
|
|
|
|
1.1.1.0/24 fib:0 index:9 locks:2
|
|
|
|
|
|
|
|
this shows the route that matched the show request. note that it is not
|
|
|
|
an exact match, it's an LPM. The route is in FIB index 0, its index
|
|
|
|
(in the VPP pool of fib_entry_t objects) is nine and there are two
|
|
|
|
references to the entry.
|
|
|
|
You'll get the same output if you type "sh fib entry 9"
|
|
|
|
|
|
|
|
next line:
|
|
|
|
|
|
|
|
.. code-block:: console
|
|
|
|
|
|
|
|
CLI refs:1 src-flags:added,contributing,active,
|
|
|
|
|
|
|
|
the 'CLI' has sourced this route (it was added via CLI). This source
|
|
|
|
has been added (well duh) it is 'active', meaning it is the best
|
|
|
|
source, and it is contributing a forwarding object. There are some
|
|
|
|
scenarios where sources other than the active source contribute,
|
|
|
|
namely interpose sources.
|
|
|
|
|
|
|
|
next line:
|
|
|
|
|
|
|
|
.. code-block:: console
|
|
|
|
|
|
|
|
path-list:[24] locks:4 flags:shared, uPRF-list:11 len:1 itfs:[1, ]
|
|
|
|
|
|
|
|
This is path-list inex 24 (see "sh fib path-list 24" this will also
|
|
|
|
show the children), it is 'shared',
|
|
|
|
meaning that if other prefixes were to use the same set of paths,
|
|
|
|
then they would also use this path-list object. It has uRPF list 11 of
|
|
|
|
length 1 containing interface index 1 (which is loop0, see "sh int").
|
|
|
|
|
|
|
|
next line:
|
|
|
|
|
|
|
|
.. code-block:: console
|
|
|
|
|
|
|
|
path:[26] pl-index:24 ip4 weight=1 pref=0 attached-nexthop: oper-flags:resolved,
|
|
|
|
10.0.0.1 loop0
|
|
|
|
[@0]: arp-ipv4: via 10.0.0.1 loop0
|
|
|
|
|
|
|
|
This is path 26 (see "sh fib path 26"). It's a member of
|
|
|
|
path-list 24. It's ip4 has a weight of 1 and a preference of 0. It's
|
|
|
|
of type 'attached-nexthop' and currently resolved - woohoo.
|
|
|
|
It is a path 'via 10.0.0.1 loop0'. It is contributing an incomplete adjacency.
|
2021-08-19 11:38:06 +02:00
|
|
|
|
2020-11-09 10:09:42 +00:00
|
|
|
next line:
|
|
|
|
|
|
|
|
.. code-block:: console
|
|
|
|
|
|
|
|
forwarding: unicast-ip4-chain
|
|
|
|
[@0]: dpo-load-balance: [proto:ip4 index:11 buckets:1 uRPF:11 to:[0:0]]
|
|
|
|
[0] [@3]: arp-ipv4: via 10.0.0.1 loop0
|
|
|
|
|
|
|
|
This section describes how packets of type 'unicast-ip4' will be
|
|
|
|
forwarded. It is the result of processing the path information from
|
|
|
|
above.
|
|
|
|
Here we see load-balance object 11, which has 1 bucket/choice. It is
|
|
|
|
also linked to uRPF instance 11 (which it got from path-list 24).
|
2021-08-19 11:38:06 +02:00
|
|
|
In bucket 0 there is the incomplete adjacency that was contributed by
|
2020-11-09 10:09:42 +00:00
|
|
|
path 26.
|
|
|
|
|