Open malebeau opened 8 months ago
@sknat As discussed last week at Calicocon, I tried with 24.02 VPP release without more luck. Same behaviour.
Hi @surfmax This is probably due to the way the ping operates in VPP, It was worth trying over the binary API as well (snippet below), but the problem seems to persist. As this is most probably a VPP issue, can you try reporting it to vpp-dev@lists.fd.io ?
func doPing(conn api.Connection) {
sub, err := conn.WatchEvent(context.Background(), (*ping.PingFinishedEvent)(nil))
if err != nil {
log.Fatalln("ERROR:", err)
}
var wg sync.WaitGroup
wg.Add(1)
go func() {
fmt.Println("waiting for events")
defer fmt.Println("done waiting for events")
for notif := range sub.Events() {
e, ok := notif.(*ping.PingFinishedEvent)
if !ok {
fmt.Printf("invalid notification type: %#v\n", e)
continue
}
fmt.Printf("Ping %+v\n", e)
wg.Done()
}
}()
c := ping.NewServiceClient(conn)
reply, err := c.WantPingFinishedEvents(context.Background(), &ping.WantPingFinishedEvents{
Address: ip_types.NewAddress(net.ParseIP("20.0.0.2")),
Repeat: 10,
Interval: 1.0,
})
if err != nil {
log.Fatalln("ERROR:", err)
}
fmt.Printf("ping ok: %+v\n", reply)
wg.Wait()
}
Intro
This issue tracks a potential bug or misbehaviour when using several worker on VPP (tested on VPP 23.06).
Problem
We are facing an issue when using several worker in the VPP startup config when sending a basic ping command through GoVPP CLI. Here are the logs (1 main thread + 2 workers):
We made some dpdk- input trace, and the icmp packets are well received but it seems it does not communicate properly the result. Is this because API is running on main thread ?
Here are the logs (1 main thread):
Solution
This problem can be solved by using only one main thread. Or by setting rx-placement on main queue : set interface rx-placement eth4 queue0 main