-
Notifications
You must be signed in to change notification settings - Fork 154
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Can't run v0.8.1 on both AWS and VMWare - results in RTE_HASH PANIC #649
Comments
Can you clarify which VM image you are using? I tried v0.8.1 on |
I also updated kernel and tested on Did you update DPDK when you switched between NFF-Go versions? |
@gshimansky we try to run it on |
It could be kernel version although grepping DPDK sources for this error doesn't produce kernel module sources. I am quite sure that key difference between 0.8.0 and 0.8.1 is DPDK version and something inside DPDK 19.08 stopped working in your environment. NFF-Go 0.8.0 used DPDK 19.04. |
@gshimansky I just update the kernel to
|
Can you also try different gcc version? Looking at DPDK sources I suppose it could be a compiler bug. |
@gshimansky hi, we tried to compile the binary with the following environment
but our binary still failed with
|
Is there a reason to use gcc of such old version? It was released on June 3, 2016 which is more than 3 years ago. |
we actually also tried GCC (Debian 8.3.0-6) 8.3.0 before with the same error. Then we checked that DPDK 19.08 is using gcc 5.4.0 in there CI, see: So I guess it's not a GCC related problem. |
Do you experience this problem only on your customized AMI? I need to find some configuration where I could reproduce this problem. |
I tried |
Yes, we have this problem on our customized AMI, the kernel is |
If I am not mistaken, there is some functionality in principle missing from 4.4. Have you tried to customize on top of 4.14.146-119.123.amzn2.x86_64? |
I believe that the problem happens in userspace DPDK code. I cannot say whether it is related to kernel version, but in my understanding it may be related to kernel version only through kernel headers, not through some kernel code directly. |
@gshimansky While we updated our application to use nff-go index f13d151b7..944269b1e 100644
--- a/gateway/router/driver/nff/runner_linux.go
+++ b/gateway/router/driver/nff/runner_linux.go
@@ -2,6 +2,10 @@
package nff
+/*
+#include <rte_ethdev.h>
+*/
+import "C"
import (
"fmt"
"net"
@@ -16,7 +20,6 @@ import (
"github.com/intel-go/nff-go/devices"
"github.com/intel-go/nff-go/flow"
- "github.com/intel-go/nff-go/low"
libpacket "github.com/intel-go/nff-go/packet"
)
func getEthPort(hwaddr net.HardwareAddr) portType {
- for p := 0; p < low.GetPortsNumber(); p++ {
- portMACAddress := low.GetPortMACAddress(portType(p))
+ for p := 0; p < int(C.rte_eth_dev_count()); p++ {
+ portMACAddress := flow.GetPortMACAddress(portType(p))
Without this patch it's working, so the problem is caused by including As you can see, we want to get the number of device ports by calling How about creating a |
For user who want to get the number of device ports on system, better to get it from rte_eth_dev_count function in rte_ethdev.h But while a Go application include this rte_ethdev.h header and nff-go library will cause a RTR_HASH error. See aregm#649 for detail information about the error message.
@gshimansky I create #680 for this, please have a look :) |
For user who want to get the number of device ports on system, better to get it from rte_eth_dev_count function in rte_ethdev.h But while a Go application include this rte_ethdev.h header and nff-go library will cause a RTR_HASH error. See aregm#649 for detail information about the error message.
It is great that you found the cause of this bug! I merged your PR, hope it will allow you to use the latest version of the framework. |
Hi, We just upgrade
nff-go
to0.8.1
, but it fails on EC2 and VMWare, we got this panic message.We also try to downgrade with
v0.8.0
tag, everything is working fine with it.The text was updated successfully, but these errors were encountered: