Hello,

I'm in trouble with VPP and frr/static routing.
My setup is the following:

- O.S. Ubuntu 20.04LTS server
- VPP from https://gerrit.fd.io/r/vpp (git clone) v22.10-rc0~1
- FRR from frr deb repository

To build/configure all I followed the great Pim van Pelt guide at ipng.ch, adapting it to the 22.10 version.

("ip netns exec dataplane bash --login" typed at the beginning)

This is my /etc/vpp/startup.conf

root@vpp-router:~# cat /etc/vpp/startup.conf
unix {
  nodaemon
  log /var/log/vpp/vpp.log
  full-coredump
  cli-listen /run/vpp/cli.sock
  gid vpp

  ## This makes VPP sleep 1ms between each DPDK poll, greatly
  ## reducing CPU usage, at the expense of latency/throughput.
  poll-sleep-usec 1000

  ## Execute all CLI commands from this file upon startup
  exec /etc/vpp/bootstrap.vpp
}

api-trace { on }
api-segment { gid vpp }
socksvr { default }

memory {
  main-heap-size 512M
  main-heap-page-size default-hugepage
}

buffers {
  buffers-per-numa 128000
  default data-size 2048
  page-size default-hugepage
}

statseg {
  size 512M
  page-size default-hugepage
  per-node-counters off
}

plugins {
  plugin linux_nl_plugin.so { enable }
  plugin linux_cp_plugin.so { enable }
}

logging {
  default-log-level info
  default-syslog-log-level notice
  class linux-cp/if { rate-limit 10000 level debug syslog-level debug }
  class linux-cp/nl { rate-limit 10000 level debug syslog-level debug }
}

and this is my /etc/vpp/bootstrap.vpp
root@vpp-router:~# cat /etc/vpp/bootstrap.vpp
comment { Set lcp defaults }
lcp default netns dataplane
lcp lcp-sync on
lcp lcp-auto-subint on

comment { Create a loopback interface }
create loopback interface instance 0
lcp create loop0 host-if loop0
set interface state loop0 up
set interface ip address loop0 2a02:4d80:602:11::1/128
set interface ip address loop0 10.0.0.1/32

comment { Create Linux Control Plane interfaces }
lcp create GigabitEthernet6/0/0 host-if gbe0
lcp create GigabitEthernet6/0/1 host-if gbe1
lcp create GigabitEthernet7/0/0 host-if gbe2
lcp create GigabitEthernet7/0/1 host-if gbe3
set interface state GigabitEthernet6/0/0 up
set interface state GigabitEthernet7/0/1 up

comment { Create Subinterfaces and set IP Addresses }
create sub GigabitEthernet6/0/0 100
set interface state GigabitEthernet6/0/0.100 up
set interface ip address GigabitEthernet6/0/0.100 172.16.1.2/24
create sub GigabitEthernet7/0/1 100
set interface state GigabitEthernet7/0/1.100 up
set interface ip address GigabitEthernet7/0/1.100 192.168.1.1/24

All works fine and under the kernel dataplane namespace and under vpp I see all the interfaces, the one with ip addresses ping their gateways.

Frr (started in the dataplane netns) has a bgp peer on gbe0.100 interface and it learns the 192.168.4.0/24 network from it's peer and inject the route in the dataplane RIB:

root@vpp-router:~# vtysh

Hello, this is FRRouting (version 8.2.2).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

vpp-router# show ip bgp summary

IPv4 Unicast Summary (VRF default):
BGP router identifier 10.0.0.1, local AS number 65000 vrf-id 0
BGP table version 2
RIB entries 3, using 552 bytes of memory
Peers 1, using 723 KiB of memory

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd PfxSnt Desc 172.16.1.1 4 8968 69 71 0 0 0 01:06:10 1 2 N/A

Total number of neighbors 1
vpp-router# show ip bgp
BGP table version is 2, local router ID is 10.0.0.1, vrf id 0
Default local pref 100, local AS 65000
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

   Network          Next Hop            Metric LocPrf Weight Path
*> 192.168.1.0/24   0.0.0.0                  0         32768 i
*> 192.168.4.0/24   172.16.1.1               0             0 8968 i

Displayed  2 routes and 2 total paths
vpp-router# q
root@vpp-router:~# ip route show
172.16.1.0/24 dev gbe0.100 proto kernel scope link src 172.16.1.2
192.168.1.0/24 dev gbe3.100 proto kernel scope link src 192.168.1.1
192.168.4.0/24 nhid 19 via 172.16.1.1 dev gbe0.100 proto bgp metric 20
root@vpp-router:~#

But when I try to look at the vpp fib, the entry for 192.168.4.0/24 is missing. :(

vpp# show ip fib 192.168.4.0/24
ipv4-VRF:0, fib_index:0, flow hash:[src dst sport dport proto flowlabel ] epoch:0 flags:none locks:[adjacency:1, default-route:1, lcp-rt: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


I try to inject a static route directly with "ip route add 192.168.4.0/24 via 172.16.1.1 dev gbe0.100" but with the same result, no fib entry.

Any hint/suggestion? :)

Many thanks.

        Fabio.

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#21471): https://lists.fd.io/g/vpp-dev/message/21471
Mute This Topic: https://lists.fd.io/mt/91356280/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