From: Mechthild Buescher <mechthild.buesc...@ericsson.com>
Date: Thursday, 1 July 2021 at 14:51
To: Neale Ranns <ne...@graphiant.com>, Benoit Ganne (bganne) 
<bga...@cisco.com>, vpp-dev@lists.fd.io <vpp-dev@lists.fd.io>
Subject: RE: [vpp-dev] next-hop-table between two FIB tables results in punt 
and 'unknown ip protocol'
Hi all,

I still don’t have success. This is the configuration I tried:
set interface state NCIC-1-v1 up

create host-interface name Vpp2Host
set interface state host-Vpp2Host up


ip table add 4093
create sub-interfaces host-Vpp2Host 4093
set interface state host-Vpp2Host.4093 up
set interface ip table host-Vpp2Host.4093 4093
set interface ip address host-Vpp2Host.4093 198.19.255.249/29

ip table add 1
create sub-interfaces NCIC-1-v1 1
set interface state NCIC-1-v1.1 up
set interface ip table NCIC-1-v1.1 1

did you miss giving the interface an address here…

ip route add 198.19.255.248/29 table 1 via 0.0.0.0 next-hop-table 4093

this …

ip table add 2
create sub-interfaces NCIC-1-v1 2
set interface state NCIC-1-v1.2 up
set interface ip table NCIC-1-v1.2 2
set interface ip address NCIC-1-v1.2 10.10.203.19/29
ip route add 198.19.255.248/29 table 2 via 198.19.255.249 next-hop-table 4093

this …

ip table add 3
create sub-interfaces NCIC-1-v1 3
set interface state NCIC-1-v1.3 up
set interface ip table NCIC-1-v1.3 3
set interface ip address NCIC-1-v1.3 10.10.203.19/29
ip route add 198.19.255.248/29 table 3 via 198.19.255.249 ip4-look-in-table 4093

and this are all different. Are you hedging your bets 😊

This is how I tried the config:
vppctl ping 198.19.255.253 table-id 4093
116 bytes from 198.19.255.253: icmp_seq=2 ttl=64 time=9.2805 ms
vppctl ping 198.19.255.253 table-id 1
Failed: no egress interface
vppctl ping vppctl sh int addr
Ext-0 (dn):
NCIC-1-v1 (up):
NCIC-1-v1.1 (up):
NCIC-1-v1.2 (up):
  L3 10.10.203.19/29 ip4 table-id 2 fib-idx 3
NCIC-1-v1.3 (up):
  L3 10.10.203.19/29 ip4 table-id 3 fib-idx 4
NCIC-1-v2 (dn):
Radio-0 (dn):
host-Vpp2Host (up):
host-Vpp2Host.4093 (up):
  L3 198.19.255.249/29 ip4 table-id 4093 fib-idx 1
local0 (dn):table-id 2
Statistics: 5 sent, 0 received, 100% packet loss
vppctl ping 198.19.255.253 table-id 3
Failed: no egress interface

The ping code uses the FIB to find egress interface. To do this it does a 
lookup on the destination address and then asks of the resulting FIB entry to 
get a resolving interface. A FIB entry that requires a second lookup cannot 
return a resolving interface. Two options, try ‘ping X source <ITF>’ to give 
ping the interface you want used, or add the routes the right way.
  ip route add 198.19.255.248/29 table 3 via host-Vpp2Host.4093

/neale


This is what I see in vpp:
vppctl sh int addr
Ext-0 (dn):
NCIC-1-v1 (up):
NCIC-1-v1.1 (up):
NCIC-1-v1.2 (up):
  L3 10.10.203.19/29 ip4 table-id 2 fib-idx 3
NCIC-1-v1.3 (up):
  L3 10.10.203.19/29 ip4 table-id 3 fib-idx 4
NCIC-1-v2 (dn):
Radio-0 (dn):
host-Vpp2Host (up):
host-Vpp2Host.4093 (up):
  L3 198.19.255.249/29 ip4 table-id 4093 fib-idx 1
local0 (dn):

vppctl sh ip fib 198.19.255.253
ipv4-VRF:0, fib_index:0, flow hash:[src dst sport dport proto flowlabel ] 
epoch:0 flags:none locks:[default-route:1, ]
0.0.0.0/0 fib:0 index:0 locks:2
  default-route refs:1 entry-flags:drop, src-flags:added,contributing,active,
    path-list:[0] locks:2 flags:drop, uPRF-list:0 len:0 itfs:[]
      path:[0] pl-index:0 ip4 weight=1 pref=0 special:  cfg-flags:drop,
        [@0]: dpo-drop ip4

forwarding:   unicast-ip4-chain
  [@0]: dpo-load-balance: [proto:ip4 index:1 buckets:1 uRPF:0 to:[0:0]]
    [0] [@0]: dpo-drop ip4
ipv4-VRF:4093, fib_index:1, flow hash:[src dst sport dport proto flowlabel ] 
epoch:0 flags:none locks:[CLI:2, adjacency:1, recursive-resolution:2, ]
198.19.255.253/32 fib:1 index:41 locks:2
  adjacency refs:1 entry-flags:attached, src-flags:added,contributing,active, 
cover:12
    path-list:[54] locks:2 uPRF-list:46 len:1 itfs:[6, ]
      path:[60] pl-index:54 ip4 weight=1 pref=0 attached-nexthop:  
oper-flags:resolved,
        198.19.255.253 host-Vpp2Host.4093
      [@0]: ipv4 via 198.19.255.253 host-Vpp2Host.4093: mtu:9000 next:3 
flags:[] a215f39524f302fe349f8c8a81000ffd0800
    Extensions:
     path:60 adj-flags:[refines-cover]
forwarding:   unicast-ip4-chain
  [@0]: dpo-load-balance: [proto:ip4 index:42 buckets:1 uRPF:46 to:[6:576]]
    [0] [@5]: ipv4 via 198.19.255.253 host-Vpp2Host.4093: mtu:9000 next:3 
flags:[] a215f39524f302fe349f8c8a81000ffd0800
ipv4-VRF:1, fib_index:2, flow hash:[src dst sport dport proto flowlabel ] 
epoch:0 flags:none locks:[CLI:2, ]
198.19.255.248/29 fib:2 index:21 locks:2
  CLI refs:1 src-flags:added,contributing,active,
    path-list:[31] locks:2 flags:shared, uPRF-list:23 len:0 itfs:[]
      path:[33] pl-index:31 ip4 weight=1 pref=0 deag:  oper-flags:resolved,
         fib-index:1

forwarding:   unicast-ip4-chain
  [@0]: dpo-load-balance: [proto:ip4 index:22 buckets:1 uRPF:23 to:[0:0]]
    [0] [@11]: dst-address,unicast lookup in ipv4-VRF:4093
ipv4-VRF:2, fib_index:3, flow hash:[src dst sport dport proto flowlabel ] 
epoch:0 flags:none locks:[CLI:2, ]
198.19.255.248/29 fib:3 index:31 locks:2
  CLI refs:1 src-flags:added,contributing,active,
    path-list:[42] locks:2 flags:shared, uPRF-list:34 len:0 itfs:[]
      path:[46] pl-index:42 ip4 weight=1 pref=0 recursive:  oper-flags:resolved,
        via 198.19.255.249 in fib:1 via-fib:15 via-dpo:[dpo-load-balance:16]

forwarding:   unicast-ip4-chain
  [@0]: dpo-load-balance: [proto:ip4 index:32 buckets:1 uRPF:34 to:[5:480]]
    [0] [@12]: dpo-load-balance: [proto:ip4 index:16 buckets:1 uRPF:18 
to:[6:576] via:[5:480]]
          [0] [@2]: dpo-receive: 198.19.255.249 on host-Vpp2Host.4093
ipv4-VRF:3, fib_index:4, flow hash:[src dst sport dport proto flowlabel ] 
epoch:0 flags:none locks:[CLI:2, ]
0.0.0.0/0 fib:4 index:32 locks:2
  default-route refs:1 entry-flags:drop, src-flags:added,contributing,active,
    path-list:[44] locks:2 flags:drop, uPRF-list:36 len:0 itfs:[]
      path:[48] pl-index:44 ip4 weight=1 pref=0 special:  cfg-flags:drop,
        [@0]: dpo-drop ip4

forwarding:   unicast-ip4-chain
  [@0]: dpo-load-balance: [proto:ip4 index:33 buckets:1 uRPF:36 to:[0:0]]
    [0] [@0]: dpo-drop ip4

Do you have any ideas?

BR/Mechthild

From: Neale Ranns <ne...@graphiant.com>
Sent: Thursday, 1 July 2021 11:42
To: Benoit Ganne (bganne) <bga...@cisco.com>; Mechthild Buescher 
<mechthild.buesc...@ericsson.com>; vpp-dev@lists.fd.io
Subject: Re: [vpp-dev] next-hop-table between two FIB tables results in punt 
and 'unknown ip protocol'




From: Benoit Ganne (bganne) <bga...@cisco.com<mailto:bga...@cisco.com>>
Date: Thursday, 1 July 2021 at 11:35
To: Neale Ranns <ne...@graphiant.com<mailto:ne...@graphiant.com>>, Mechthild 
Buescher 
<mechthild.buesc...@ericsson.com<mailto:mechthild.buesc...@ericsson.com>>, 
vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io> 
<vpp-dev@lists.fd.io<mailto:vpp-dev@lists.fd.io>>
Subject: RE: [vpp-dev] next-hop-table between two FIB tables results in punt 
and 'unknown ip protocol'
>> As 198.19.255.249 is the IP of host-Vpp2Host.4093, VPP interprets it as
>> you want to deliver the packet locally instead of forwarding it. Try
>> changing it to:
>> ip route add 198.19.255.248/29 table 1 via 0.0.0.0 next-hop-table 4093

> 0.0.0.0/32 in any table is a drop. One cannot specify a route to be
> recursive via another network, i.e. via 0.0.0.0/0, VPP doesn't support
> that.

I do not disagree with the rest of your comment, however this worked for me 
though - maybe because of some odd cli behavior?

probably 😊


vpp# create packet-generator interface pg0
vpp# create packet-generator interface pg1
vpp# set int ip addr pg0 192.168.1.1/24
vpp# set int st pg0 up
vpp# ip table add 4093
vpp# set int st pg1 up
vpp# set int ip table pg1 4093
vpp# set int ip address pg1 198.19.255.249/29
vpp# ip neigh pg1 198.19.255.253 1.2.3 static
vpp# ip route add 198.19.255.248/29 via 0.0.0.0 next-hop-table 4093
vpp# sh ip fib 198.19.255.253 table 0
ipv4-VRF:0, fib_index:0, flow hash:[src dst sport dport proto flowlabel ] 
epoch:0 flags:none locks:[default-route:1, ]
198.19.255.248/29 fib:0 index:21 locks:2
  CLI refs:1 src-flags:added,contributing,active,
    path-list:[29] locks:2 flags:shared, uPRF-list:27 len:0 itfs:[]
      path:[33] pl-index:29 ip4 weight=1 pref=0 deag:  oper-flags:resolved,
         fib-index:1

 forwarding:   unicast-ip4-chain
  [@0]: dpo-load-balance: [proto:ip4 index:23 buckets:1 uRPF:27 to:[1:100]]
    [0] [@12]: dst-address,unicast lookup in ipv4-VRF:4093

this is a lookup-DPO.

Looks like the CLI interprets ‘via 0.0.0.0 next-hop-table 4093’ and ‘via 
ip4-look-in-table 4093’ as the same thing.

/neale



And tracing seems to give the expected result:
00:00:02:247022: pg-input
  stream x, 100 bytes, sw_if_index 1
  current data 0, length 100, buffer-pool 0, ref-count 1, trace handle 0x0
  UDP: 192.168.1.2 -> 198.19.255.253
    tos 0x00, ttl 64, length 100, checksum 0xf2cd dscp CS0 ecn NON_ECN
    fragment id 0x0000
  UDP: 4321 -> 1234
    length 72, checksum 0x7deb
00:00:02:247055: ip4-input
  UDP: 192.168.1.2 -> 198.19.255.253
    tos 0x00, ttl 64, length 100, checksum 0xf2cd dscp CS0 ecn NON_ECN
    fragment id 0x0000
  UDP: 4321 -> 1234
    length 72, checksum 0x7deb
00:00:02:247079: ip4-lookup
  fib 0 dpo-idx 0 flow hash: 0x00000000
  UDP: 192.168.1.2 -> 198.19.255.253
    tos 0x00, ttl 64, length 100, checksum 0xf2cd dscp CS0 ecn NON_ECN
    fragment id 0x0000
  UDP: 4321 -> 1234
    length 72, checksum 0x7deb
00:00:02:247088: lookup-ip4-dst
     fib-index:1 addr:198.19.255.253 load-balance:22
00:00:02:247092: ip4-rewrite
  tx_sw_if_index 2 dpo-idx 4 : ipv4 via 198.19.255.253 pg1: mtu:9000 next:3 
flags:[] 00010002000302fe257345030800 flow hash: 0x00000000
  00000000: 00010002000302fe25734503080045000064000000003f11f3cdc0a80102c613
  00000020: fffd10e104d200487deb000102030405060708090a0b0c0d0e0f1011
00:00:02:247099: pg1-output
  pg1
  IP4: 02:fe:25:73:45:03 -> 00:01:00:02:00:03
  UDP: 192.168.1.2 -> 198.19.255.253
    tos 0x00, ttl 63, length 100, checksum 0xf3cd dscp CS0 ecn NON_ECN
    fragment id 0x0000
  UDP: 4321 -> 1234
    length 72, checksum 0x7deb
00:00:02:247106: pg1-tx
    buffer 0x9ffd4: current data -14, length 114, buffer-pool 0, ref-count 1, 
trace handle 0x0
                    loop-counter 1
  IP4: 02:fe:25:73:45:03 -> 00:01:00:02:00:03
  UDP: 192.168.1.2 -> 198.19.255.253
    tos 0x00, ttl 63, length 100, checksum 0xf3cd dscp CS0 ecn NON_ECN
    fragment id 0x0000
  UDP: 4321 -> 1234
    length 72, checksum 0x7deb

ben
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#19691): https://lists.fd.io/g/vpp-dev/message/19691
Mute This Topic: https://lists.fd.io/mt/83895986/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to