Git Product home page Git Product logo

nff-go's Introduction

Go Report Card GoDoc Dev chat at https://gitter.im/intel-yanff/Lobby Build Status

Network Function Framework for Go (former YANFF)

Wonderful news : we are now supporting AF_XDP and supporting(almost) getting packets directly from Linux. So you do not need to write 3(three) different applications to process packets coming from different type of drivers of PMDs. You just write everything in NFF-Go, and it can dynamically use whatever you would like underneath. Contact us if you need help.

What it is

NFF-Go is a set of libraries for creating and deploying cloud-native Network Functions (NFs). It simplifies the creation of network functions without sacrificing performance.

  • Higher level abstractions than DPDK. Using DPDK as a fast I/O engine for performance
  • Go language: safety, productivity, performance, concurrency
  • Network functions are application programs not virtual machines
  • Built-in scheduler to auto-scale processing based on input traffic. Both up and down.

Benefits:

  • Easily leverage Intel hardware capabilities: multi-cores, AES-NI, CAT, QAT, DPDK
  • 10x reduction in lines of code
  • No need to be an expert network programmer to develop performant network function
  • Similar performance with C/DPDK per box
  • No need to worry on elasticity - done automatically
  • Take advantage of cloud native deployment: continuous delivery, micro-services, containers

Feel the difference

Simple ACL based firewall

func main() {
	// Initialize NFF-GO library to use 8 cores max.
	config := flow.Config{
		CPUCoresNumber: 8,
	}
	flow.CheckFatal(flow.SystemInit(&config))

	// Get filtering rules from access control file.
	L3Rules, err := packet.GetL3ACLFromTextTable("Firewall.conf")
	flow.CheckFatal(err)

	// Receive packets from zero port. Receive queue will be added automatically.
	inputFlow, err := flow.SetReceiver(uint8(0))
	flow.CheckFatal(err)

	// Separate packet flow based on ACL.
	rejectFlow, err := flow.SetSeparator(inputFlow, L3Separator, nil)
	flow.CheckFatal(err)

	// Drop rejected packets.
	flow.CheckFatal(flow.SetStopper(rejectFlow))

	// Send accepted packets to first port. Send queue will be added automatically.
	flow.CheckFatal(flow.SetSender(inputFlow, uint8(1)))

	// Begin to process packets.
	flow.CheckFatal(flow.SystemStart())
}

// User defined function for separating packets
func L3Separator(currentPacket *packet.Packet, context flow.UserContext) bool {
	currentPacket.ParseL4()
	// Return whether packet is accepted or not. Based on ACL rules.
	return currentPacket.L3ACLPermit(L3Rules)
}

NFF-GO is an Open Source BSD licensed project that runs mostly in Linux user land. The most recent patches and enhancements provided by the community are available in the develop branch. master branch provides the latest stable released version under the appropriate tag.

Getting NFF-GO

Starting with release 0.7.0 NFF-Go uses go.mod for getting dependencies, therefore Go version 1.11 or later is required. To checkout NFF-Go sources use the following command

    git clone --recurse-submodules http://github.com/intel-go/nff-go

Setting up the build and run environment

DPDK

NFF-GO uses DPDK, so you must setup your system to build and run DPDK. See System Requirements in the DPDK Getting Started Guide for Linux for more information.

By default NFF-Go is build with Mellanox cards support out of the box you need to install additional dependencies required for MLX network drivers. On Ubuntu they are called libmnl-dev and libibverbs-dev. For more details see MLX drivers respective pages for MLX4 and MLX5. If these dependencies cannot be satisfied, and Mellanox drivers are not needed, you can set variable NFF_GO_NO_MLX_DRIVERS to some unempty value to disable MLX drivers compilation.

Additional dependencies are required for pktgen, especially if you are running RedHat or CentOS Linux distributions. See this file for details. LUA section for RedHat and CentOS is in its end.

After building a DPDK driver with the make command, you must register network cards to work with the DPDK driver, load necessary kernel modules, and bind cards to the modules. See Compiling the DPDK Target from Source and How to get best performance with NICs on Intel platforms in the DPDK Getting Started Guide for Linux for more information.

The kernel module, which is required for DPDK user-mode drivers, is built but not installed into kernel directory. You can load it using the full path to the module file: nff-go/test/dpdk/dpdk/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko

Go

Use Go version 1.11.4 or higher. To check the version of Go, do:

    go version

AF_XDP support

AF_XDP support is enabled by default, and it requires you to install libbpf package. At the time of writing Ubuntu doesn't have this library among its packages, so it is necessary to build libbpf from sources or disable AF_XDP socket support.

To disable it set variable NFF_GO_NO_BPF_SUPPORT to some unempty value. When NFF_GO is built with it, AF_XDP support is disaled and using it results in errors.

If you want to build libbpf from sources you can do it in two different ways.

  • If you are using stock Linux kernel from distribution, download libbpf from GitHub, then execute cd src; make; sudo make install. Add /usr/lib64 to your ldconfig path.
  • If you build Linux kernel from sources, you can build libbpf from Linux source tree using commands cd tools/lib/bpf; make; sudo make install install_headers. Add /usr/local/lib64 to your ldconfig path.

Building NFF-GO

When Go compiler runs for the first time it downloads all dependent packages listed in go.mod file. This operation cannot be done in parallel because otherwise Go package cache gets corrupted. Because of that it is necessary to run command go mod download before first make is done. Another option is to use single process make -j1 when it is run for the first time, but may be quite slow.

    cd nff-go
    go mod download        # do it once before first build
    make -j8

Building NFF-GO in debug mode

	make debug -j8

Running NFF-GO

Documentation

Online API documentation is available on godoc.org site. API usage is explained on our Wiki pages.

Tests

Invoking make in the top-level directory builds the testing framework and examples. NFF-GO distributed tests are packaged inside of Docker container images. There are also single node unit tests in some packages that you can run using the command:

     make testing

Docker images

To create Docker images on the local default target (either the default UNIX socket in /var/run/docker.sock or whatever is defined in the DOCKER_HOST variable), use the make images command.

To deploy Docker images for use in distributed testing, use the make deploy command. This command requires two environment variables:

  • NFF_GO_HOSTS="hostname1 hostname2 ... hostnameN"* - a list of all hostnames for deployed test Docker images
  • DOCKER_PORT=2375* - the port number to connect to Docker daemons running on hosts in the NFF_GO_HOSTS variable

To delete generated images in the default Docker target, use the make clean-images command.

Running tests

After the Docker images are deployed on all test hosts, you can run distributed network tests. The test framework is located in the test/main directory and accepts a JSON file with a test specification. There are predefined configs for performance and stability tests in the same directory. To run these tests, change hostname1 and hostname2 to the hosts from the NFF_GO_HOSTS list in these JSON files.

Cleaning-up

To clean all generated binaries, use the make clean command. To delete all deployed images listed in NFF_GO_HOSTS, use the make cleanall command.

Contributing

If you want to contribute to NFF-Go, check our Contributing guide. We also recommend checking the bugs with 'help-wanted' or 'easyfix' in our list of open issues; these bugs can be solved without an extensive knowledge of NFF-Go. We would love to help you start contributing.

You can reach the NFF-Go development team via our mailing list.

nff-go's People

Contributors

ader1990 avatar adigadi avatar aregm avatar dannypsnl avatar darinkes avatar dkolistratova avatar florianl avatar gshimansky avatar guesslin avatar harrisonmc555 avatar ifilippov avatar marcusschiesser avatar mercimat avatar mkfsn avatar nak3 avatar quasilyte avatar rscohn2 avatar scroot avatar tempdban avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nff-go's Issues

gotest testChecksum

We have ~10 checksum tests in stability.json and only one in cksum_test.go. Is this right? You can use SystemStop now.

Missing cleanup of rte_eal_cleanup from DPDK 18.02

Hi, we are using nff-go and want to re-init it during process executing, but always got errors like

Apr 10 03:29:52 ubuntu router[951]: ------------***-------- Initializing DPDK --------***------------
Apr 10 03:29:52 ubuntu router[951]: EAL: FATAL: already called initialization.
Apr 10 03:29:52 ubuntu router[951]: EAL: already called initialization.
Apr 10 03:29:52 ubuntu router[954]: EAL: Error - exiting with code: 1
Apr 10 03:29:52 ubuntu router[951]:   Cause: Error with EAL initialization
Apr 10 03:29:52 ubuntu router[954]: Error with EAL initialization

I checked DPDK 18.02 Release, they have a new function rte_eal_cleanup to cleanup resource of DPDK used.
Is there any reason nff-go not calling rte_eal_cleanup?

Broken mailing list link

On the CONTRIBUTING.md page, it claims that the mailing list is a "durable communication channel", but the link is broken. I wasn't able to find a live link to any mailing list for YANFF.

I tried the IRC channel but either I didn't do it right (I've never used IRC before) or nobody was on when I tried.

Test problems (checksum)

We identifier problem with VLAN at VM, however it doesn't explain why checksum tests fail without VM?

panic: runtime error: invalid memory address or nil pointer dereference during merge of copied and generated flows.

Program failed with error:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0xa0 pc=0x4e1155]

goroutine 21 [running, locked to thread]:
github.com/intel-go/nff-go/packet.(*Packet).GetRawPacketBytes(...)
/projects/src/github.com/intel-go/nff-go/packet/packet.go:700
github.com/intel-go/nff-go/flow.pcopy(0x69a200, 0xc42000c120, 0xc4201a40c0, 0xc42018c000, 0x0, 0x0, 0x0)
/projects/src/github.com/intel-go/nff-go/flow/flow.go:1139 +0x435
github.com/intel-go/nff-go/flow.(*scheduler).startFF.func1(0xc42018a140, 0x3)
/projects/src/github.com/intel-go/nff-go/flow/scheduler.go:202 +0x238
created by github.com/intel-go/nff-go/flow.(*scheduler).startFF
/projects/src/github.com/intel-go/nff-go/flow/scheduler.go:196 +0x22a

Code:

package main

import (
	"log"
	"sync"
	"sync/atomic"
	"time"

	"github.com/intel-go/nff-go/flow"
	"github.com/intel-go/nff-go/packet"
	"github.com/intel-go/nff-go/test/stability/stabilityCommon"
)

var (
	totalPackets uint64 = 100

	payloadSize uint   = 16

	sentPacketsGroup1 uint64
	
	recvPackets       uint64
	testDoneEvent *sync.Cond
	progStart     time.Time

	// T second timeout is used to let generator reach required speed
	// During timeout packets are skipped and not counted
	T = 10 * time.Second
)

func main() {
	// Init NFF-GO system
	config := flow.Config{
		DPDKArgs: []string{"--log-level=0"},
	}
	flow.CheckFatal(flow.SystemInit(&config))
	var m sync.Mutex
	testDoneEvent = sync.NewCond(&m)

	flow1 := flow.SetGenerator(generatePacketGroup1, nil)

	flow2 := flow.SetGenerator(generatePacketGroup1, nil)


	flow.CheckFatal(flow.SetStopper(flow2))
	var err error
	flow2, err = flow.SetCopier(flow1)
	flow.CheckFatal(err)

	checkedFlow, err := flow.SetMerger(flow1, flow2)
	flow.CheckFatal(err)
	
	flow.CheckFatal(flow.SetHandler(checkedFlow, checkPackets, nil))
	flow.CheckFatal(flow.SetStopper(checkedFlow))
	
	// Start pipeline
	go func() {
		err = flow.SystemStart()
	}()
	flow.CheckFatal(err)
	progStart = time.Now()
	
	// Wait for enough packets to arrive
	testDoneEvent.L.Lock()
	testDoneEvent.Wait()
	testDoneEvent.L.Unlock()
}


func generatePacketGroup1(pkt *packet.Packet, context flow.UserContext) {
	if pkt == nil {
		log.Fatal("Failed to create new packet")
	}
	if packet.InitEmptyIPv4UDPPacket(pkt, payloadSize) == false {
		log.Fatal("Failed to init empty packet")
	}

	// We do not consider the start time of the system in this test
	if time.Since(progStart) >= T && atomic.LoadUint64(&recvPackets) < totalPackets {
		atomic.AddUint64(&sentPacketsGroup1, 1)
	}
}


// Count and check packets in received flow
func checkPackets(pkt *packet.Packet, context flow.UserContext) {
	if time.Since(progStart) < T || stabilityCommon.ShouldBeSkipped(pkt) {
		return
	}
	if atomic.AddUint64(&recvPackets, 1) >= totalPackets {
		testDoneEvent.Signal()
		return
	}
}

By the way, there is no such problem in the same code with fast generator!

First I tried the same code with many totalpackets, got really huge amount of the same warnings:
"WARNING: GeneratePacketFromByte: Cannot append mbuf", then run with 100 packets and got this error.

Need tests for using NAT in VLAN tagged network

NAT example supports VLAN tags, but there are no tests for it. It is necessary to add such tests. For this it is necessary to add more virtual interfaces between VMs or an ability to reconvigure networking settings on Linux interfaces to add/remove VLAN tags.

Incorrect timings in pcap trace when debug dump is enabled in NAT

When I enable debug dump for NAT in config.go, it starts dumping packets into pcap files. When I view these files I can see that timing information is incorrect. For example I can see a lot of packets have negative timestamps. I cannot trust timing information when it is positive too because timings sometimes jump unpredictably increasing and decreasing.

dump.zip

TestInitEmptyIPv4Packet failing on fresh install

Greetings!

Can I please get a nudge in the right direction on how to diagnose this issue in โ€œpacket_test.goโ€? I am going through the code now, but, wanted to see if this was a common issue.

Configuration:

  • OS - Ubuntu 16.10
  • Go - 1.9.1 (installed from tarball)
  • Compiler - gcc 6.2.0
  • Real HW - MacBookPro13,3 (10.12.6, 16G29)
  • Hypervisor - VMware Fusion 8.5.8 (yep, old)
  • Ethernet - e1000e (82574L Gigabit Network Connection 10d3)
  • Binding - IGB UIO
  • GIT hash - e95c0bf

How could a packet get changed during the โ€œTestInitEmptyIPv4Packetโ€ test? Logs below.

Thanks for any help!
-Timothy

========================================

[DPDK] vagrant@ubuntu-dpdk:~/go/src/github.com/intel-go/yanff$ sudo env PATH=$PATH make testing
Checking for AVX support... AVX and AVX2
make -C packet testing
make[1]: Entering directory '/home/vagrant/go/src/github.com/intel-go/yanff/packet'
Checking for AVX support... AVX and AVX2
go test
EAL: Detected lcore 0 as core 0 on socket 0
EAL: Detected lcore 1 as core 0 on socket 0
EAL: Detected lcore 2 as core 0 on socket 0
EAL: Detected lcore 3 as core 0 on socket 0
EAL: Support maximum 128 logical core(s) by configuration.
EAL: Detected 4 lcore(s)
EAL: Probing VFIO support...
EAL: Module /sys/module/vfio_pci not found! error 2 (No such file or directory)
EAL: VFIO modules not loaded, skipping VFIO support...
EAL: Module /sys/module/vfio_pci not found! error 2 (No such file or directory)
EAL: Setting up physically contiguous memory...
EAL: Trying to obtain current memory policy.
EAL: Hugepage /dev/hugepages/rtemap_1 is on socket 0
EAL: Hugepage /dev/hugepages/rtemap_0 is on socket 0
EAL: Ask a virtual area of 0x40000000 bytes
EAL: Virtual area found at 0x7fff00000000 (size = 0x40000000)
EAL: Ask a virtual area of 0x40000000 bytes
EAL: Virtual area found at 0x7ffe80000000 (size = 0x40000000)
EAL: Requesting 2 pages of size 1024MB from socket 0
EAL: TSC frequency is ~2903750 KHz
EAL: Master lcore 0 is ready (tid=f7fea8c0;cpuset=[0])
EAL: lcore 2 is ready (tid=ef7fe700;cpuset=[2])
EAL: lcore 3 is ready (tid=eeffd700;cpuset=[3])
EAL: lcore 1 is ready (tid=effff700;cpuset=[1])
EAL: PCI device 0000:03:00.0 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 8086:10d3 net_e1000_em
EAL: Not managed by a supported kernel driver, skipped
EAL: PCI device 0000:0b:00.0 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 8086:10d3 net_e1000_em
EAL: PCI memory mapped at 0x7fff40000000
EAL: PCI memory mapped at 0x7fff40020000
EAL: PCI memory mapped at 0x7fff40040000
PMD: eth_em_dev_init(): port_id 0 vendorID=0x8086 deviceID=0x10d3
--- FAIL: TestInitEmptyIPv4Packet (0.00s)
packet_test.go:501: Incorrect result:
got: 00000000000000000000000008004500001c00000000003b00007f00000180090905ffdd0000bbaa0000,
want: 00000000000000000000000008004500001c00000000000000007f00000180090905ffdd0000bbaa0000

--- FAIL: TestInitEmptyIPv6Packet (0.00s)
packet_test.go:526: Incorrect result:
got: 00000000000000000000000086dd6000000000083b00dead000000000000000000000000beaf00000000000000000000000000000000ffdd0000bbaa0000,
want: 00000000000000000000000086dd6000000000080000dead000000000000000000000000beaf00000000000000000000000000000000ffdd0000bbaa0000

FAIL
exit status 1
FAIL github.com/intel-go/yanff/packet 0.605s
Makefile:10: recipe for target 'testing' failed
make[1]: *** [testing] Error 1
make[1]: Leaving directory '/home/vagrant/go/src/github.com/intel-go/yanff/packet'
Makefile:21: recipe for target 'packet' failed
make: *** [packet] Error 2

Duplicated code

We have tons of duplicated code now.

As first step to eliminate this we need to remove CheckFatal from all tests and examples and place it to flow package as default error checker.

Renaming YANFF to NFF-Go

There was a decision made to rename the YANFF to NFF-Go. I will leave this issue for a while to see are there any concerns, up-votes/down-votes.

We need to clean Merge test

Now we have three merges:

  1. inside segment
  2. outside segment
  3. between outside and some branches from segment

Need to consider all these variants in testMerge

Overhead of nff-go compared to using DPDK with C

Hi,

Calling C functions with CGO has high overhead, how nff-go get around it?

Are there any benchmarks/measurements of similar high pps processing programs to see overhead of nff-go (CGO/Go) compared to using DPDK with C?

Go vet: possible misuse of unsafe.Pointer

Problem: many (by measures of "awesome-go") go vet warnings.

There are many integer to pointer casts rule triggers in go vet report for Yanff.

Most (all?) cases go from pointer->uintptr->pointer, so it should not be unsafe as lint
assumes (it references Go 1.3a changes to GC).

What do you think about these solutions ("workarounds", actually):

  1. Add more methods like unparsed, which return unsafe.Pointer with offset calculations applied, without additional type cast to uintptr. This way, 3-level casts will go away and related lint warnings will go avay.
    Note: go vet allows this constructions: unsafe.Pointer(uintptr(p) + offset).

  2. Move this kind of data casts (maywith struct itself) in separate package. Go can do cross-package inlining, so no performance will be lost, right? Report on Yanff will increase.

Related to adding YANFF to awesome-go.

Kernel Panic after closing

Hi, I'm using nff-go and facing a kernel panic problem.

Here is a sample code:

https://gist.github.com/mkfsn/139274a9d0368c76c86f13ea0aa41fcc

The devices package is similar to devbind script in DPDK, for binding and unbinding driver (e.g. virtio_net, uio_pci_generic)

I use iperf3 to send packets and if I close the nff runner (including unbinding uio driver, binding to original kernel driver, and bringing up the network device) while sending packets, kernel sometimes panic:

Apr 16 07:21:27 ubuntu kernel: [15074.868458] virtio-pci 0000:00:04.0: virtio_pci: leaving for legacy driver
Apr 16 07:21:27 ubuntu kernel: [15074.882968] net eth1: netmap queues/slots: TX 1/256, RX 1/256
Apr 16 07:21:27 ubuntu kernel: [15074.882974] 287.301852 [ 746] virtio_netmap_attach      virtio attached txq=1, txd=256 rxq=1, rxd=256
Apr 16 07:21:27 ubuntu kernel: [15074.920581] BUG: unable to handle kernel NULL pointer dereference at 000000000000000d
Apr 16 07:21:27 ubuntu kernel: [15074.920627] IP: [<000000000000000d>] 0xd
Apr 16 07:21:27 ubuntu kernel: [15074.920649] PGD 0
Apr 16 07:21:27 ubuntu kernel: [15074.920661] Oops: 0010 [#1] SMP
Apr 16 07:21:27 ubuntu kernel: [15074.920679] Modules linked in: nfnetlink_queue nfnetlink xt_NFQUEUE xt_NETMAP iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack iptable_mangle xt_mark uio_pci_generic uio ip6table_filter ip6_tables iptable_filter ip_tables x_tables cirrus hid_generic ttm usbhid drm_kms_helper hid joydev psmouse crct10dif_pclmul crc32_pclmul drm ghash_clmulni_intel ppdev aesni_intel fb_sys_fops aes_x86_64 syscopyarea lrw gf128mul glue_helper input_leds floppy ablk_helper serio_raw cryptd sysfillrect parport_pc sysimgblt parport i2c_piix4 8250_fintek pata_acpi mac_hid virtio_net(O) netmap(O) autofs4
Apr 16 07:21:27 ubuntu kernel: [15074.921002] CPU: 2 PID: 2864 Comm: nff Tainted: G           O    4.4.98 #1
Apr 16 07:21:27 ubuntu kernel: [15074.921035] Hardware name: OpenStack Foundation OpenStack Nova, BIOS 1.10.2-1ubuntu1~cloud0 04/01/2014
Apr 16 07:21:27 ubuntu kernel: [15074.921078] task: ffff880236272a00 ti: ffff880037f90000 task.ti: ffff880037f90000
Apr 16 07:21:27 ubuntu kernel: [15074.921113] RIP: 0010:[<000000000000000d>]  [<000000000000000d>] 0xd
Apr 16 07:21:27 ubuntu kernel: [15074.921144] RSP: 0018:ffff880037f93c18  EFLAGS: 00010202
Apr 16 07:21:27 ubuntu kernel: [15074.921169] RAX: 000000000000000d RBX: ffff880234c8c9e0 RCX: 0000000000000001
Apr 16 07:21:27 ubuntu kernel: [15074.921202] RDX: ffff88021dbff800 RSI: ffff8802349ee1a8 RDI: ffff88021dbff800
Apr 16 07:21:27 ubuntu kernel: [15074.921235] RBP: ffff880037f93c38 R08: 0000000000000000 R09: 0000000000000000
Apr 16 07:21:27 ubuntu kernel: [15074.921268] R10: ffff8802349ee1a8 R11: ffff880235618210 R12: ffff88021d94b698
Apr 16 07:21:27 ubuntu kernel: [15074.921301] R13: 0000000000000000 R14: ffff8802362fe620 R15: ffff880043365d80
Apr 16 07:21:27 ubuntu kernel: [15074.921335] FS:  0000000000000000(0000) GS:ffff88023fd00000(0000) knlGS:0000000000000000
Apr 16 07:21:27 ubuntu kernel: [15074.921372] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
Apr 16 07:21:27 ubuntu kernel: [15074.921399] CR2: 000000000000000d CR3: 0000000001e0a000 CR4: 00000000003406e0
Apr 16 07:21:27 ubuntu kernel: [15074.921436] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
Apr 16 07:21:27 ubuntu kernel: [15074.921469] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Apr 16 07:21:27 ubuntu kernel: [15074.921502] Stack:
Apr 16 07:21:27 ubuntu kernel: [15074.921512]  ffffffffc01924c4 ffff880235618200 0000000000000008 ffff8802349ee1a8
Apr 16 07:21:27 ubuntu kernel: [15074.921551]  ffff880037f93c80 ffffffff812120a4 ffff8802349ee1a8 ffff880235618210
Apr 16 07:21:27 ubuntu kernel: [15074.921589]  ffff880236272a00 ffffffff82109d50 ffff880235618200 ffff8802352d0800
Apr 16 07:21:27 ubuntu kernel: [15074.921629] Call Trace:
Apr 16 07:21:27 ubuntu kernel: [15074.921645]  [<ffffffffc01924c4>] ? uio_release+0x34/0x60 [uio]
Apr 16 07:21:27 ubuntu kernel: [15074.922814]  [<ffffffff812120a4>] __fput+0xe4/0x220
Apr 16 07:21:27 ubuntu kernel: [15074.924372]  [<ffffffff8121221e>] ____fput+0xe/0x10
Apr 16 07:21:27 ubuntu kernel: [15074.925588]  [<ffffffff8109ef71>] task_work_run+0x81/0xa0
Apr 16 07:21:27 ubuntu kernel: [15074.926727]  [<ffffffff81083e91>] do_exit+0x2e1/0xb00
Apr 16 07:21:27 ubuntu kernel: [15074.927870]  [<ffffffff8183de97>] ? wait_for_completion+0x37/0x140
Apr 16 07:21:27 ubuntu kernel: [15074.929022]  [<ffffffff81084733>] do_group_exit+0x43/0xb0
Apr 16 07:21:27 ubuntu kernel: [15074.930160]  [<ffffffff81090992>] get_signal+0x292/0x600
Apr 16 07:21:27 ubuntu kernel: [15074.931281]  [<ffffffff8102e567>] do_signal+0x37/0x6f0
Apr 16 07:21:27 ubuntu kernel: [15074.932386]  [<ffffffff8112e484>] ? kprobe_flush_task+0x94/0x130
Apr 16 07:21:27 ubuntu kernel: [15074.933513]  [<ffffffff810a9c72>] ? finish_task_switch+0x1b2/0x220
Apr 16 07:21:27 ubuntu kernel: [15074.934664]  [<ffffffff8183ce06>] ? __schedule+0x3b6/0xa30
Apr 16 07:21:27 ubuntu kernel: [15074.935808]  [<ffffffff8100320c>] exit_to_usermode_loop+0x8c/0xd0
Apr 16 07:21:27 ubuntu kernel: [15074.936920]  [<ffffffff81003c16>] prepare_exit_to_usermode+0x26/0x30
Apr 16 07:21:27 ubuntu kernel: [15074.938007]  [<ffffffff818420e5>] retint_user+0x8/0x10
Apr 16 07:21:27 ubuntu kernel: [15074.939100] Code:  Bad RIP value.
Apr 16 07:21:27 ubuntu kernel: [15074.940185] RIP  [<000000000000000d>] 0xd
Apr 16 07:21:27 ubuntu kernel: [15074.941276]  RSP <ffff880037f93c18>
Apr 16 07:21:27 ubuntu kernel: [15074.942338] CR2: 000000000000000d
Apr 16 07:21:27 ubuntu kernel: [15074.945828] ---[ end trace fb8bf404b90ddb84 ]---
Apr 16 07:21:27 ubuntu kernel: [15074.946862] Fixing recursive fault but reboot is needed!

I didn't get any error when closing but "stopped successfully".

I would appreciate if you have any suggestions or ideas.

linker error multiple definition of `rte_distributor_request_pkt_v20'

Hi there, I tried this both on debian unstable and archlinux with the same result:
In Debian, I installed the dpdk dpdk-doc and dpdk-dev packages before starting.
In Archlinux, I pacaur -S dpdk

I did observe on both occasions both the depends script and the Makefile do not detect the intalled 17.11 version of dpdk which was more recent than 17.08 version as fetched by the Makefile.

/home/dma2/Code/go/src/github.com/intel-go/nff-go/dpdk/dpdk-17.08/x86_64-native-linuxapp-gcc/lib/librte_distributor.a(rte_distributor_v20.o): In function rte_distributor_request_pkt_v20': rte_distributor_v20.c:(.text+0x0): multiple definition of rte_distributor_request_pkt_v20'
/home/dma2/Code/go/src/github.com/intel-go/nff-go/dpdk/dpdk-17.08/x86_64-native-linuxapp-gcc/lib/librte_distributor.a(rte_distributor_v20.o):rte_distributor_v20.c:(.text+0x0): first defined here
/home/dma2/Code/go/src/github.com/intel-go/nff-go/dpdk/dpdk-17.08/x86_64-native-linuxapp-gcc/lib/librte_distributor.a(rte_distributor_v20.o): In function rte_distributor_poll_pkt_v20': rte_distributor_v20.c:(.text+0x50): multiple definition of rte_distributor_poll_pkt_v20'

Thank you.

New VLAN checksum tests fail

I see that newly merged VLAN checksum tests from pull request #223 fail on VirtualBox VMs:

[11:19:34]	[Step 4/4] 2018/03/05 13:19:35 /--- Running test cksums_ipv4_tcp_vlan ---
[11:19:34]	[Step 4/4] 2018/03/05 13:19:35 DD: Created client for cksums_ipv4_tcp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum: , client = &{http tcp://localhost:2218 tcp localhost:2218  0xc420160930 1.24 map[User-Agent:engine-api-cli-1.0] false} , err = <nil>
[11:19:34]	[Step 4/4] 2018/03/05 13:19:35 DD: Created container for cksums_ipv4_tcp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum:e42324e775b1ab143569fb67a26d7b1227321be57ca0d7da3c537a27d5e135d6 , response = {e42324e775b1ab143569fb67a26d7b1227321be57ca0d7da3c537a27d5e135d6 []} , err = <nil>
[11:19:35]	[Step 4/4] 2018/03/05 13:19:35 DD: Started container for cksums_ipv4_tcp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum:e42324e775b1ab143569fb67a26d7b1227321be57ca0d7da3c537a27d5e135d6 err = <nil>
[11:19:35]	[Step 4/4] 2018/03/05 13:19:35 DD: Created client for cksums_ipv4_tcp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum: , client = &{http tcp://localhost:2220 tcp localhost:2220  0xc4202484b0 1.24 map[User-Agent:engine-api-cli-1.0] false} , err = <nil>
[11:19:35]	[Step 4/4] 2018/03/05 13:19:35 DD: Created container for cksums_ipv4_tcp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum:917fab38a49995a8d8583a845be53434fb577f3ba15a4dc51b9875337b68afa9 , response = {917fab38a49995a8d8583a845be53434fb577f3ba15a4dc51b9875337b68afa9 []} , err = <nil>
[11:19:35]	[Step 4/4] 2018/03/05 13:19:36 DD: Started container for cksums_ipv4_tcp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum:917fab38a49995a8d8583a845be53434fb577f3ba15a4dc51b9875337b68afa9 err = <nil>
[11:19:35]	[Step 4/4] 2018/03/05 13:19:36 DD: Trying to read logs from container 917fab38a49995a8d8583a845be53434fb577f3ba15a4dc51b9875337b68afa9
[11:19:35]	[Step 4/4] 2018/03/05 13:19:36 DD: Trying to read logs from container e42324e775b1ab143569fb67a26d7b1227321be57ca0d7da3c537a27d5e135d6
[11:19:36]	[Step 4/4] 2018/03/05 13:19:36 0 IPv4 L3 and TCP L4 mode is enabled
[11:19:36]	[Step 4/4] 2018/03/05 13:19:36 0 ------------***-------- Initializing DPDK --------***------------
[11:19:36]	[Step 4/4] 2018/03/05 13:19:36 1 No L3 IP mode selected. Enabling IPv4 by default
[11:19:36]	[Step 4/4] 2018/03/05 13:19:36 1 No L4 packet type mode selected. Enabling UDP by default
[11:19:36]	[Step 4/4] 2018/03/05 13:19:36 1 UDP L4 mode is enabled
[11:19:36]	[Step 4/4] 2018/03/05 13:19:36 1 ------------***-------- Initializing DPDK --------***------------
[11:19:37]	[Step 4/4] 2018/03/05 13:19:37 0 ------------***-------- Initializing ports -------***------------
[11:19:37]	[Step 4/4] 2018/03/05 13:19:37 0 ------------***------ Initializing scheduler -----***------------
[11:19:37]	[Step 4/4] 2018/03/05 13:19:37 0 DEBUG: Scheduler can use cores: [0 1 2 3 4 5 6 7]
[11:19:37]	[Step 4/4] 2018/03/05 13:19:37 0 ------------***------ Filling FlowFunctions ------***------------
[11:19:37]	[Step 4/4] 2018/03/05 13:19:37 0 ------------***--------- Checking system ---------***------------
[11:19:37]	[Step 4/4] 2018/03/05 13:19:37 0 ------------***---------- Creating ports ---------***------------
[11:19:37]	[Step 4/4] 2018/03/05 13:19:37 0 DEBUG: Port 0 MAC address: 08 00 27 a4 a0 33
[11:19:37]	[Step 4/4] 2018/03/05 13:19:37 0 DEBUG: Port 1 MAC address: 08 00 27 71 63 aa
[11:19:38]	[Step 4/4] 2018/03/05 13:19:38 1 ------------***-------- Initializing ports -------***------------
[11:19:38]	[Step 4/4] 2018/03/05 13:19:38 1 ------------***------ Initializing scheduler -----***------------
[11:19:38]	[Step 4/4] 2018/03/05 13:19:38 1 DEBUG: Scheduler can use cores: [0 1 2 3 4 5 6 7]
[11:19:38]	[Step 4/4] 2018/03/05 13:19:38 1 ------------***------ Filling FlowFunctions ------***------------
[11:19:38]	[Step 4/4] 2018/03/05 13:19:38 1 ------------***--------- Checking system ---------***------------
[11:19:38]	[Step 4/4] 2018/03/05 13:19:38 1 ------------***---------- Creating ports ---------***------------
[11:19:38]	[Step 4/4] 2018/03/05 13:19:38 1 DEBUG: Port 0 MAC address: 08 00 27 2f c9 8c
[11:19:38]	[Step 4/4] 2018/03/05 13:19:38 1 DEBUG: Port 1 MAC address: 08 00 27 35 9f 1e
[11:19:39]	[Step 4/4] 2018/03/05 13:19:39 0 ------------***------ Starting FlowFunctions -----***------------
[11:19:39]	[Step 4/4] 2018/03/05 13:19:39 0 DEBUG: Start SCHEDULER at 0 core
[11:19:39]	[Step 4/4] 2018/03/05 13:19:39 0 DEBUG: Start STOP at scheduler 0 core
[11:19:39]	[Step 4/4] 2018/03/05 13:19:39 0 DEBUG: Start unclonable FlowFunction generator 1 at 1 core
[11:19:39]	[Step 4/4] 2018/03/05 13:19:39 0 DEBUG: Start unclonable FlowFunction sender 2 at 2 core
[11:19:39]	[Step 4/4] 2018/03/05 13:19:39 0 DEBUG: Start unclonable FlowFunction receiver 3 at 3 core
[11:19:39]	[Step 4/4] 2018/03/05 13:19:39 0 DEBUG: Start clonable FlowFunction handler 4 at 4 core
[11:19:39]	[Step 4/4] 2018/03/05 13:19:39 0 DEBUG: Start clonable FlowFunction handler 5 at 5 core
[11:19:39]	[Step 4/4] 2018/03/05 13:19:39 0 ------------***--------- NFF-GO-GO Started --------***------------
[11:19:40]	[Step 4/4] 2018/03/05 13:19:40 0 DEBUG: ---------------
[11:19:40]	[Step 4/4] 2018/03/05 13:19:40 0 DEBUG: System is using 6 cores now. 2 cores are left available.
[11:19:40]	[Step 4/4] 2018/03/05 13:19:40 0 DEBUG: Number of packets in queue for separate:  0
[11:19:40]	[Step 4/4] 2018/03/05 13:19:40 0 DEBUG: Current speed of handler 4 is 0 PKT/S
[11:19:40]	[Step 4/4] 2018/03/05 13:19:40 0 DEBUG: Number of packets in queue for handle:  0
[11:19:40]	[Step 4/4] 2018/03/05 13:19:40 0 DEBUG: Current speed of handler 5 is 0 PKT/S
[11:19:40]	[Step 4/4] 2018/03/05 13:19:40 0 DEBUG: Mempool N 0 used 513 from 32764
[11:19:40]	[Step 4/4] 2018/03/05 13:19:40 0 DEBUG: Mempool N 1 used 128 from 32764
[11:19:40]	[Step 4/4] 2018/03/05 13:19:40 1 ------------***------ Starting FlowFunctions -----***------------
[11:19:40]	[Step 4/4] 2018/03/05 13:19:40 1 DEBUG: Start SCHEDULER at 0 core
[11:19:40]	[Step 4/4] 2018/03/05 13:19:40 1 DEBUG: Start STOP at scheduler 0 core
[11:19:40]	[Step 4/4] 2018/03/05 13:19:40 1 DEBUG: Start unclonable FlowFunction receiver 1 at 1 core
[11:19:40]	[Step 4/4] 2018/03/05 13:19:40 1 DEBUG: Start unclonable FlowFunction sender 5 at 2 core
[11:19:40]	[Step 4/4] 2018/03/05 13:19:40 1 DEBUG: Start clonable FlowFunction handler 2 at 3 core
[11:19:40]	[Step 4/4] 2018/03/05 13:19:40 1 DEBUG: Start clonable FlowFunction handler 3 at 4 core
[11:19:40]	[Step 4/4] 2018/03/05 13:19:40 1 DEBUG: Start clonable FlowFunction handler 4 at 5 core
[11:19:40]	[Step 4/4] 2018/03/05 13:19:41 1 ------------***--------- NFF-GO-GO Started --------***------------
[11:19:40]	[Step 4/4] 2018/03/05 13:19:41 1 IPv4 ICMP checksum mismatch 15290 should be 2866
[11:19:40]	[Step 4/4] 2018/03/05 13:19:41 1 TEST FAILED
[11:19:40]	[Step 4/4] 2018/03/05 13:19:41 DD: Finished with code TestReportedFailed
[11:19:40]	[Step 4/4] 2018/03/05 13:19:41 DD: Trying to kill container for app cksums_ipv4_tcp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum:e42324e775b1ab143569fb67a26d7b1227321be57ca0d7da3c537a27d5e135d6
[11:19:40]	[Step 4/4] 2018/03/05 13:19:41 DD: Trying to remove container for app cksums_ipv4_tcp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum:e42324e775b1ab143569fb67a26d7b1227321be57ca0d7da3c537a27d5e135d6
[11:19:41]	[Step 4/4] 2018/03/05 13:19:41 DD: Trying to kill container for app cksums_ipv4_tcp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum:917fab38a49995a8d8583a845be53434fb577f3ba15a4dc51b9875337b68afa9
[11:19:41]	[Step 4/4] 2018/03/05 13:19:41 DD: Trying to remove container for app cksums_ipv4_tcp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum:917fab38a49995a8d8583a845be53434fb577f3ba15a4dc51b9875337b68afa9
[11:19:41]	[Step 4/4] 2018/03/05 13:19:42 \--- Finished test cksums_ipv4_tcp_vlan --- status: TestRunning
[11:19:41]	[Step 4/4] 2018/03/05 13:19:42 /--- Running test cksums_ipv4_udp_vlan ---
[11:19:41]	[Step 4/4] 2018/03/05 13:19:42 DD: Created client for cksums_ipv4_udp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum: , client = &{http tcp://localhost:2218 tcp localhost:2218  0xc420249890 1.24 map[User-Agent:engine-api-cli-1.0] false} , err = <nil>
[11:19:42]	[Step 4/4] 2018/03/05 13:19:42 DD: Created container for cksums_ipv4_udp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum:d5e33023425e970c48ae8ca07eec641b6dc913f9edfcdea983675d07ab0668c2 , response = {d5e33023425e970c48ae8ca07eec641b6dc913f9edfcdea983675d07ab0668c2 []} , err = <nil>
[11:19:42]	[Step 4/4] 2018/03/05 13:19:43 DD: Started container for cksums_ipv4_udp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum:d5e33023425e970c48ae8ca07eec641b6dc913f9edfcdea983675d07ab0668c2 err = <nil>
[11:19:42]	[Step 4/4] 2018/03/05 13:19:43 DD: Created client for cksums_ipv4_udp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum: , client = &{http tcp://localhost:2220 tcp localhost:2220  0xc420338120 1.24 map[User-Agent:engine-api-cli-1.0] false} , err = <nil>
[11:19:42]	[Step 4/4] 2018/03/05 13:19:43 DD: Created container for cksums_ipv4_udp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum:229c1276fb473a1f16bfd81f7e84dc98fd55dbc526cdcb00c48b7baa3c7ca61b , response = {229c1276fb473a1f16bfd81f7e84dc98fd55dbc526cdcb00c48b7baa3c7ca61b []} , err = <nil>
[11:19:43]	[Step 4/4] 2018/03/05 13:19:43 DD: Started container for cksums_ipv4_udp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum:229c1276fb473a1f16bfd81f7e84dc98fd55dbc526cdcb00c48b7baa3c7ca61b err = <nil>
[11:19:43]	[Step 4/4] 2018/03/05 13:19:43 DD: Trying to read logs from container 229c1276fb473a1f16bfd81f7e84dc98fd55dbc526cdcb00c48b7baa3c7ca61b
[11:19:43]	[Step 4/4] 2018/03/05 13:19:43 DD: Trying to read logs from container d5e33023425e970c48ae8ca07eec641b6dc913f9edfcdea983675d07ab0668c2
[11:19:43]	[Step 4/4] 2018/03/05 13:19:43 0 IPv4 L3 and UDP L4 mode is enabled
[11:19:43]	[Step 4/4] 2018/03/05 13:19:43 0 ------------***-------- Initializing DPDK --------***------------
[11:19:43]	[Step 4/4] 2018/03/05 13:19:43 1 No L3 IP mode selected. Enabling IPv4 by default
[11:19:43]	[Step 4/4] 2018/03/05 13:19:43 1 No L4 packet type mode selected. Enabling UDP by default
[11:19:43]	[Step 4/4] 2018/03/05 13:19:43 1 UDP L4 mode is enabled
[11:19:43]	[Step 4/4] 2018/03/05 13:19:43 1 ------------***-------- Initializing DPDK --------***------------
[11:19:44]	[Step 4/4] 2018/03/05 13:19:44 0 ------------***-------- Initializing ports -------***------------
[11:19:44]	[Step 4/4] 2018/03/05 13:19:44 0 ------------***------ Initializing scheduler -----***------------
[11:19:44]	[Step 4/4] 2018/03/05 13:19:44 0 DEBUG: Scheduler can use cores: [0 1 2 3 4 5 6 7]
[11:19:44]	[Step 4/4] 2018/03/05 13:19:44 0 ------------***------ Filling FlowFunctions ------***------------
[11:19:44]	[Step 4/4] 2018/03/05 13:19:44 0 ------------***--------- Checking system ---------***------------
[11:19:44]	[Step 4/4] 2018/03/05 13:19:44 0 ------------***---------- Creating ports ---------***------------
[11:19:44]	[Step 4/4] 2018/03/05 13:19:44 0 DEBUG: Port 0 MAC address: 08 00 27 a4 a0 33
[11:19:44]	[Step 4/4] 2018/03/05 13:19:45 0 DEBUG: Port 1 MAC address: 08 00 27 71 63 aa
[11:19:45]	[Step 4/4] 2018/03/05 13:19:45 1 ------------***-------- Initializing ports -------***------------
[11:19:45]	[Step 4/4] 2018/03/05 13:19:45 1 ------------***------ Initializing scheduler -----***------------
[11:19:45]	[Step 4/4] 2018/03/05 13:19:45 1 DEBUG: Scheduler can use cores: [0 1 2 3 4 5 6 7]
[11:19:45]	[Step 4/4] 2018/03/05 13:19:45 1 ------------***------ Filling FlowFunctions ------***------------
[11:19:45]	[Step 4/4] 2018/03/05 13:19:45 1 ------------***--------- Checking system ---------***------------
[11:19:45]	[Step 4/4] 2018/03/05 13:19:45 1 ------------***---------- Creating ports ---------***------------
[11:19:45]	[Step 4/4] 2018/03/05 13:19:45 1 DEBUG: Port 0 MAC address: 08 00 27 2f c9 8c
[11:19:45]	[Step 4/4] 2018/03/05 13:19:45 1 DEBUG: Port 1 MAC address: 08 00 27 35 9f 1e
[11:19:46]	[Step 4/4] 2018/03/05 13:19:47 0 ------------***------ Starting FlowFunctions -----***------------
[11:19:46]	[Step 4/4] 2018/03/05 13:19:47 0 DEBUG: Start SCHEDULER at 0 core
[11:19:46]	[Step 4/4] 2018/03/05 13:19:47 0 DEBUG: Start STOP at scheduler 0 core
[11:19:46]	[Step 4/4] 2018/03/05 13:19:47 0 DEBUG: Start unclonable FlowFunction generator 1 at 1 core
[11:19:46]	[Step 4/4] 2018/03/05 13:19:47 0 DEBUG: Start unclonable FlowFunction sender 2 at 2 core
[11:19:46]	[Step 4/4] 2018/03/05 13:19:47 0 DEBUG: Start unclonable FlowFunction receiver 3 at 3 core
[11:19:46]	[Step 4/4] 2018/03/05 13:19:47 0 DEBUG: Start clonable FlowFunction handler 4 at 4 core
[11:19:46]	[Step 4/4] 2018/03/05 13:19:47 0 DEBUG: Start clonable FlowFunction handler 5 at 5 core
[11:19:46]	[Step 4/4] 2018/03/05 13:19:47 0 ------------***--------- NFF-GO-GO Started --------***------------
[11:19:47]	[Step 4/4] 2018/03/05 13:19:47 1 ------------***------ Starting FlowFunctions -----***------------
[11:19:47]	[Step 4/4] 2018/03/05 13:19:47 1 DEBUG: Start SCHEDULER at 0 core
[11:19:47]	[Step 4/4] 2018/03/05 13:19:47 1 DEBUG: Start STOP at scheduler 0 core
[11:19:47]	[Step 4/4] 2018/03/05 13:19:47 1 DEBUG: Start unclonable FlowFunction receiver 1 at 1 core
[11:19:47]	[Step 4/4] 2018/03/05 13:19:47 1 DEBUG: Start unclonable FlowFunction sender 5 at 2 core
[11:19:47]	[Step 4/4] 2018/03/05 13:19:47 1 DEBUG: Start clonable FlowFunction handler 2 at 3 core
[11:19:47]	[Step 4/4] 2018/03/05 13:19:47 1 DEBUG: Start clonable FlowFunction handler 3 at 4 core
[11:19:47]	[Step 4/4] 2018/03/05 13:19:47 1 DEBUG: Start clonable FlowFunction handler 4 at 5 core
[11:19:47]	[Step 4/4] 2018/03/05 13:19:47 1 ------------***--------- NFF-GO-GO Started --------***------------
[11:19:47]	[Step 4/4] 2018/03/05 13:19:47 1 IPv4 ICMP checksum mismatch 15290 should be 34360
[11:19:47]	[Step 4/4] 2018/03/05 13:19:47 1 TEST FAILED
[11:19:47]	[Step 4/4] 2018/03/05 13:19:47 DD: Finished with code TestReportedFailed
[11:19:47]	[Step 4/4] 2018/03/05 13:19:47 DD: Trying to kill container for app cksums_ipv4_udp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum:d5e33023425e970c48ae8ca07eec641b6dc913f9edfcdea983675d07ab0668c2
[11:19:47]	[Step 4/4] 2018/03/05 13:19:47 DD: Trying to remove container for app cksums_ipv4_udp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum:d5e33023425e970c48ae8ca07eec641b6dc913f9edfcdea983675d07ab0668c2
[11:19:47]	[Step 4/4] 2018/03/05 13:19:48 DD: Trying to kill container for app cksums_ipv4_udp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum:229c1276fb473a1f16bfd81f7e84dc98fd55dbc526cdcb00c48b7baa3c7ca61b
[11:19:48]	[Step 4/4] 2018/03/05 13:19:48 DD: Trying to remove container for app cksums_ipv4_udp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum:229c1276fb473a1f16bfd81f7e84dc98fd55dbc526cdcb00c48b7baa3c7ca61b
[11:19:48]	[Step 4/4] 2018/03/05 13:19:49 \--- Finished test cksums_ipv4_udp_vlan --- status: TestRunning
[11:19:48]	[Step 4/4] 2018/03/05 13:19:49 /--- Running test cksums_ipv6_tcp_vlan ---
[11:19:48]	[Step 4/4] 2018/03/05 13:19:49 DD: Created client for cksums_ipv6_tcp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum: , client = &{http tcp://localhost:2218 tcp localhost:2218  0xc420392630 1.24 map[User-Agent:engine-api-cli-1.0] false} , err = <nil>
[11:19:48]	[Step 4/4] 2018/03/05 13:19:49 DD: Created container for cksums_ipv6_tcp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum:3b477ba8d39370d625e9c29ad638ad4f0791acc6c927284272aa4b80bb370efd , response = {3b477ba8d39370d625e9c29ad638ad4f0791acc6c927284272aa4b80bb370efd []} , err = <nil>
[11:19:49]	[Step 4/4] 2018/03/05 13:19:49 DD: Started container for cksums_ipv6_tcp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum:3b477ba8d39370d625e9c29ad638ad4f0791acc6c927284272aa4b80bb370efd err = <nil>
[11:19:49]	[Step 4/4] 2018/03/05 13:19:49 DD: Created client for cksums_ipv6_tcp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum: , client = &{http tcp://localhost:2220 tcp localhost:2220  0xc420392f00 1.24 map[User-Agent:engine-api-cli-1.0] false} , err = <nil>
[11:19:49]	[Step 4/4] 2018/03/05 13:19:49 DD: Created container for cksums_ipv6_tcp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum:411361dbaeac529c6db243ebc6e58414caa13ce449e5061802ed07d13d977910 , response = {411361dbaeac529c6db243ebc6e58414caa13ce449e5061802ed07d13d977910 []} , err = <nil>
[11:19:50]	[Step 4/4] 2018/03/05 13:19:50 DD: Started container for cksums_ipv6_tcp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum:411361dbaeac529c6db243ebc6e58414caa13ce449e5061802ed07d13d977910 err = <nil>
[11:19:50]	[Step 4/4] 2018/03/05 13:19:50 DD: Trying to read logs from container 411361dbaeac529c6db243ebc6e58414caa13ce449e5061802ed07d13d977910
[11:19:50]	[Step 4/4] 2018/03/05 13:19:50 DD: Trying to read logs from container 3b477ba8d39370d625e9c29ad638ad4f0791acc6c927284272aa4b80bb370efd
[11:19:50]	[Step 4/4] 2018/03/05 13:19:50 0 IPv6 L3 and TCP L4 mode is enabled
[11:19:50]	[Step 4/4] 2018/03/05 13:19:50 0 ------------***-------- Initializing DPDK --------***------------
[11:19:50]	[Step 4/4] 2018/03/05 13:19:50 1 No L3 IP mode selected. Enabling IPv4 by default
[11:19:50]	[Step 4/4] 2018/03/05 13:19:50 1 No L4 packet type mode selected. Enabling UDP by default
[11:19:50]	[Step 4/4] 2018/03/05 13:19:50 1 UDP L4 mode is enabled
[11:19:50]	[Step 4/4] 2018/03/05 13:19:50 1 ------------***-------- Initializing DPDK --------***------------
[11:19:50]	[Step 4/4] 2018/03/05 13:19:51 0 ------------***-------- Initializing ports -------***------------
[11:19:50]	[Step 4/4] 2018/03/05 13:19:51 0 ------------***------ Initializing scheduler -----***------------
[11:19:50]	[Step 4/4] 2018/03/05 13:19:51 0 DEBUG: Scheduler can use cores: [0 1 2 3 4 5 6 7]
[11:19:50]	[Step 4/4] 2018/03/05 13:19:51 0 ------------***------ Filling FlowFunctions ------***------------
[11:19:51]	[Step 4/4] 2018/03/05 13:19:51 0 ------------***--------- Checking system ---------***------------
[11:19:51]	[Step 4/4] 2018/03/05 13:19:51 0 ------------***---------- Creating ports ---------***------------
[11:19:51]	[Step 4/4] 2018/03/05 13:19:51 0 DEBUG: Port 0 MAC address: 08 00 27 a4 a0 33
[11:19:51]	[Step 4/4] 2018/03/05 13:19:51 0 DEBUG: Port 1 MAC address: 08 00 27 71 63 aa
[11:19:52]	[Step 4/4] 2018/03/05 13:19:53 1 ------------***-------- Initializing ports -------***------------
[11:19:52]	[Step 4/4] 2018/03/05 13:19:53 1 ------------***------ Initializing scheduler -----***------------
[11:19:52]	[Step 4/4] 2018/03/05 13:19:53 1 DEBUG: Scheduler can use cores: [0 1 2 3 4 5 6 7]
[11:19:52]	[Step 4/4] 2018/03/05 13:19:53 1 ------------***------ Filling FlowFunctions ------***------------
[11:19:52]	[Step 4/4] 2018/03/05 13:19:53 1 ------------***--------- Checking system ---------***------------
[11:19:52]	[Step 4/4] 2018/03/05 13:19:53 1 ------------***---------- Creating ports ---------***------------
[11:19:52]	[Step 4/4] 2018/03/05 13:19:53 1 DEBUG: Port 0 MAC address: 08 00 27 2f c9 8c
[11:19:52]	[Step 4/4] 2018/03/05 13:19:53 1 DEBUG: Port 1 MAC address: 08 00 27 35 9f 1e
[11:19:53]	[Step 4/4] 2018/03/05 13:19:53 0 ------------***------ Starting FlowFunctions -----***------------
[11:19:53]	[Step 4/4] 2018/03/05 13:19:53 0 DEBUG: Start SCHEDULER at 0 core
[11:19:53]	[Step 4/4] 2018/03/05 13:19:53 0 DEBUG: Start STOP at scheduler 0 core
[11:19:53]	[Step 4/4] 2018/03/05 13:19:53 0 DEBUG: Start unclonable FlowFunction generator 1 at 1 core
[11:19:53]	[Step 4/4] 2018/03/05 13:19:53 0 DEBUG: Start unclonable FlowFunction sender 2 at 2 core
[11:19:53]	[Step 4/4] 2018/03/05 13:19:53 0 DEBUG: Start unclonable FlowFunction receiver 3 at 3 core
[11:19:53]	[Step 4/4] 2018/03/05 13:19:53 0 DEBUG: Start clonable FlowFunction handler 4 at 4 core
[11:19:53]	[Step 4/4] 2018/03/05 13:19:53 0 DEBUG: Start clonable FlowFunction handler 5 at 5 core
[11:19:53]	[Step 4/4] 2018/03/05 13:19:53 0 ------------***--------- NFF-GO-GO Started --------***------------
[11:19:54]	[Step 4/4] 2018/03/05 13:19:54 0 DEBUG: ---------------
[11:19:54]	[Step 4/4] 2018/03/05 13:19:54 0 DEBUG: System is using 6 cores now. 2 cores are left available.
[11:19:54]	[Step 4/4] 2018/03/05 13:19:54 0 DEBUG: Number of packets in queue for separate:  0
[11:19:54]	[Step 4/4] 2018/03/05 13:19:54 0 DEBUG: Current speed of handler 4 is 0 PKT/S
[11:19:54]	[Step 4/4] 2018/03/05 13:19:54 0 DEBUG: Number of packets in queue for handle:  0
[11:19:54]	[Step 4/4] 2018/03/05 13:19:54 0 DEBUG: Current speed of handler 5 is 0 PKT/S
[11:19:54]	[Step 4/4] 2018/03/05 13:19:54 0 DEBUG: Mempool N 0 used 513 from 32764
[11:19:54]	[Step 4/4] 2018/03/05 13:19:54 0 DEBUG: Mempool N 1 used 128 from 32764
[11:19:54]	[Step 4/4] 2018/03/05 13:19:55 1 ------------***------ Starting FlowFunctions -----***------------
[11:19:54]	[Step 4/4] 2018/03/05 13:19:55 1 DEBUG: Start SCHEDULER at 0 core
[11:19:54]	[Step 4/4] 2018/03/05 13:19:55 1 DEBUG: Start STOP at scheduler 0 core
[11:19:54]	[Step 4/4] 2018/03/05 13:19:55 1 DEBUG: Start unclonable FlowFunction receiver 1 at 1 core
[11:19:54]	[Step 4/4] 2018/03/05 13:19:55 1 DEBUG: Start unclonable FlowFunction sender 5 at 2 core
[11:19:54]	[Step 4/4] 2018/03/05 13:19:55 1 DEBUG: Start clonable FlowFunction handler 2 at 3 core
[11:19:54]	[Step 4/4] 2018/03/05 13:19:55 1 DEBUG: Start clonable FlowFunction handler 3 at 4 core
[11:19:54]	[Step 4/4] 2018/03/05 13:19:55 1 DEBUG: Start clonable FlowFunction handler 4 at 5 core
[11:19:54]	[Step 4/4] 2018/03/05 13:19:55 1 IPv4 ICMP checksum mismatch 15290 should be 9588
[11:19:54]	[Step 4/4] 2018/03/05 13:19:55 1 TEST FAILED
[11:19:54]	[Step 4/4] 2018/03/05 13:19:55 DD: Finished with code TestReportedFailed
[11:19:54]	[Step 4/4] 2018/03/05 13:19:55 DD: Trying to kill container for app cksums_ipv6_tcp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum:3b477ba8d39370d625e9c29ad638ad4f0791acc6c927284272aa4b80bb370efd
[11:19:54]	[Step 4/4] 2018/03/05 13:19:55 DD: Trying to remove container for app cksums_ipv6_tcp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum:3b477ba8d39370d625e9c29ad638ad4f0791acc6c927284272aa4b80bb370efd
[11:19:55]	[Step 4/4] 2018/03/05 13:19:55 DD: Trying to kill container for app cksums_ipv6_tcp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum:411361dbaeac529c6db243ebc6e58414caa13ce449e5061802ed07d13d977910
[11:19:55]	[Step 4/4] 2018/03/05 13:19:55 DD: Trying to remove container for app cksums_ipv6_tcp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum:411361dbaeac529c6db243ebc6e58414caa13ce449e5061802ed07d13d977910
[11:19:55]	[Step 4/4] 2018/03/05 13:19:56 \--- Finished test cksums_ipv6_tcp_vlan --- status: TestRunning
[11:19:55]	[Step 4/4] 2018/03/05 13:19:56 /--- Running test cksums_ipv6_udp_vlan ---
[11:19:55]	[Step 4/4] 2018/03/05 13:19:56 DD: Created client for cksums_ipv6_udp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum: , client = &{http tcp://localhost:2218 tcp localhost:2218  0xc4202cf260 1.24 map[User-Agent:engine-api-cli-1.0] false} , err = <nil>
[11:19:56]	[Step 4/4] 2018/03/05 13:19:56 DD: Created container for cksums_ipv6_udp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum:1389c685c4e076f3a56bcd9b946b2543263788c24fed98c70fa829bc2dd0d161 , response = {1389c685c4e076f3a56bcd9b946b2543263788c24fed98c70fa829bc2dd0d161 []} , err = <nil>
[11:19:56]	[Step 4/4] 2018/03/05 13:19:57 DD: Started container for cksums_ipv6_udp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum:1389c685c4e076f3a56bcd9b946b2543263788c24fed98c70fa829bc2dd0d161 err = <nil>
[11:19:56]	[Step 4/4] 2018/03/05 13:19:57 DD: Created client for cksums_ipv6_udp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum: , client = &{http tcp://localhost:2220 tcp localhost:2220  0xc4202cfb60 1.24 map[User-Agent:engine-api-cli-1.0] false} , err = <nil>
[11:19:56]	[Step 4/4] 2018/03/05 13:19:57 DD: Created container for cksums_ipv6_udp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum:a6ada1a1e7975f9208cf5b9319ff9e1b86a2c05280ae35f21e73b1e5a222d0a1 , response = {a6ada1a1e7975f9208cf5b9319ff9e1b86a2c05280ae35f21e73b1e5a222d0a1 []} , err = <nil>
[11:19:57]	[Step 4/4] 2018/03/05 13:19:57 DD: Started container for cksums_ipv6_udp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum:a6ada1a1e7975f9208cf5b9319ff9e1b86a2c05280ae35f21e73b1e5a222d0a1 err = <nil>
[11:19:57]	[Step 4/4] 2018/03/05 13:19:57 DD: Trying to read logs from container a6ada1a1e7975f9208cf5b9319ff9e1b86a2c05280ae35f21e73b1e5a222d0a1
[11:19:57]	[Step 4/4] 2018/03/05 13:19:57 DD: Trying to read logs from container 1389c685c4e076f3a56bcd9b946b2543263788c24fed98c70fa829bc2dd0d161
[11:19:57]	[Step 4/4] 2018/03/05 13:19:57 1 No L3 IP mode selected. Enabling IPv4 by default
[11:19:57]	[Step 4/4] 2018/03/05 13:19:57 1 No L4 packet type mode selected. Enabling UDP by default
[11:19:57]	[Step 4/4] 2018/03/05 13:19:57 1 UDP L4 mode is enabled
[11:19:57]	[Step 4/4] 2018/03/05 13:19:57 1 ------------***-------- Initializing DPDK --------***------------
[11:19:57]	[Step 4/4] 2018/03/05 13:19:57 0 IPv6 L3 and UDP L4 mode is enabled
[11:19:57]	[Step 4/4] 2018/03/05 13:19:57 0 ------------***-------- Initializing DPDK --------***------------
[11:19:58]	[Step 4/4] 2018/03/05 13:19:58 0 ------------***-------- Initializing ports -------***------------
[11:19:58]	[Step 4/4] 2018/03/05 13:19:58 0 ------------***------ Initializing scheduler -----***------------
[11:19:58]	[Step 4/4] 2018/03/05 13:19:58 0 DEBUG: Scheduler can use cores: [0 1 2 3 4 5 6 7]
[11:19:58]	[Step 4/4] 2018/03/05 13:19:58 0 ------------***------ Filling FlowFunctions ------***------------
[11:19:58]	[Step 4/4] 2018/03/05 13:19:59 0 ------------***--------- Checking system ---------***------------
[11:19:58]	[Step 4/4] 2018/03/05 13:19:59 0 ------------***---------- Creating ports ---------***------------
[11:19:58]	[Step 4/4] 2018/03/05 13:19:59 0 DEBUG: Port 0 MAC address: 08 00 27 a4 a0 33
[11:19:58]	[Step 4/4] 2018/03/05 13:19:59 0 DEBUG: Port 1 MAC address: 08 00 27 71 63 aa
[11:19:59]	[Step 4/4] 2018/03/05 13:19:59 1 ------------***-------- Initializing ports -------***------------
[11:19:59]	[Step 4/4] 2018/03/05 13:19:59 1 ------------***------ Initializing scheduler -----***------------
[11:19:59]	[Step 4/4] 2018/03/05 13:19:59 1 DEBUG: Scheduler can use cores: [0 1 2 3 4 5 6 7]
[11:19:59]	[Step 4/4] 2018/03/05 13:19:59 1 ------------***------ Filling FlowFunctions ------***------------
[11:19:59]	[Step 4/4] 2018/03/05 13:19:59 1 ------------***--------- Checking system ---------***------------
[11:19:59]	[Step 4/4] 2018/03/05 13:19:59 1 ------------***---------- Creating ports ---------***------------
[11:19:59]	[Step 4/4] 2018/03/05 13:19:59 1 DEBUG: Port 0 MAC address: 08 00 27 2f c9 8c
[11:19:59]	[Step 4/4] 2018/03/05 13:20:00 1 DEBUG: Port 1 MAC address: 08 00 27 35 9f 1e
[11:20:00]	[Step 4/4] 2018/03/05 13:20:01 0 ------------***------ Starting FlowFunctions -----***------------
[11:20:00]	[Step 4/4] 2018/03/05 13:20:01 0 DEBUG: Start SCHEDULER at 0 core
[11:20:00]	[Step 4/4] 2018/03/05 13:20:01 0 DEBUG: Start STOP at scheduler 0 core
[11:20:00]	[Step 4/4] 2018/03/05 13:20:01 0 DEBUG: Start unclonable FlowFunction generator 1 at 1 core
[11:20:00]	[Step 4/4] 2018/03/05 13:20:01 0 DEBUG: Start unclonable FlowFunction sender 2 at 2 core
[11:20:00]	[Step 4/4] 2018/03/05 13:20:01 0 DEBUG: Start unclonable FlowFunction receiver 3 at 3 core
[11:20:00]	[Step 4/4] 2018/03/05 13:20:01 0 DEBUG: Start clonable FlowFunction handler 4 at 4 core
[11:20:00]	[Step 4/4] 2018/03/05 13:20:01 0 DEBUG: Start clonable FlowFunction handler 5 at 5 core
[11:20:00]	[Step 4/4] 2018/03/05 13:20:01 0 ------------***--------- NFF-GO-GO Started --------***------------
[11:20:01]	[Step 4/4] 2018/03/05 13:20:02 1 ------------***------ Starting FlowFunctions -----***------------
[11:20:01]	[Step 4/4] 2018/03/05 13:20:02 1 DEBUG: Start SCHEDULER at 0 core
[11:20:01]	[Step 4/4] 2018/03/05 13:20:02 1 DEBUG: Start STOP at scheduler 0 core
[11:20:01]	[Step 4/4] 2018/03/05 13:20:02 1 DEBUG: Start unclonable FlowFunction receiver 1 at 1 core
[11:20:01]	[Step 4/4] 2018/03/05 13:20:02 1 DEBUG: Start unclonable FlowFunction sender 5 at 2 core
[11:20:01]	[Step 4/4] 2018/03/05 13:20:02 1 DEBUG: Start clonable FlowFunction handler 2 at 3 core
[11:20:01]	[Step 4/4] 2018/03/05 13:20:02 1 DEBUG: Start clonable FlowFunction handler 3 at 4 core
[11:20:01]	[Step 4/4] 2018/03/05 13:20:02 1 DEBUG: Start clonable FlowFunction handler 4 at 5 core
[11:20:01]	[Step 4/4] 2018/03/05 13:20:02 1 ------------***--------- NFF-GO-GO Started --------***------------
[11:20:01]	[Step 4/4] 2018/03/05 13:20:02 1 IPv4 ICMP checksum mismatch 15290 should be 5658
[11:20:01]	[Step 4/4] 2018/03/05 13:20:02 1 TEST FAILED
[11:20:01]	[Step 4/4] 2018/03/05 13:20:02 DD: Finished with code TestReportedFailed
[11:20:01]	[Step 4/4] 2018/03/05 13:20:02 DD: Trying to kill container for app cksums_ipv6_udp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum:1389c685c4e076f3a56bcd9b946b2543263788c24fed98c70fa829bc2dd0d161
[11:20:01]	[Step 4/4] 2018/03/05 13:20:02 DD: Trying to remove container for app cksums_ipv6_udp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum:1389c685c4e076f3a56bcd9b946b2543263788c24fed98c70fa829bc2dd0d161
[11:20:02]	[Step 4/4] 2018/03/05 13:20:02 DD: Trying to kill container for app cksums_ipv6_udp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum:a6ada1a1e7975f9208cf5b9319ff9e1b86a2c05280ae35f21e73b1e5a222d0a1
[11:20:02]	[Step 4/4] 2018/03/05 13:20:02 DD: Trying to remove container for app cksums_ipv6_udp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum:a6ada1a1e7975f9208cf5b9319ff9e1b86a2c05280ae35f21e73b1e5a222d0a1
[11:20:03]	[Step 4/4] 2018/03/05 13:20:03 \--- Finished test cksums_ipv6_udp_vlan --- status: TestRunning
[11:20:03]	[Step 4/4] 2018/03/05 13:20:03 /--- Running test cksums_ipv4_icmp_vlan ---
[11:20:03]	[Step 4/4] 2018/03/05 13:20:03 DD: Created client for cksums_ipv4_icmp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum: , client = &{http tcp://localhost:2218 tcp localhost:2218  0xc4202801e0 1.24 map[User-Agent:engine-api-cli-1.0] false} , err = <nil>
[11:20:03]	[Step 4/4] 2018/03/05 13:20:03 DD: Created container for cksums_ipv4_icmp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum:c4b9580153b7c6e890b621f68f58bac932cf9940cba0f7b6c784b151890369ba , response = {c4b9580153b7c6e890b621f68f58bac932cf9940cba0f7b6c784b151890369ba []} , err = <nil>
[11:20:03]	[Step 4/4] 2018/03/05 13:20:04 DD: Started container for cksums_ipv4_icmp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum:c4b9580153b7c6e890b621f68f58bac932cf9940cba0f7b6c784b151890369ba err = <nil>
[11:20:03]	[Step 4/4] 2018/03/05 13:20:04 DD: Created client for cksums_ipv4_icmp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum: , client = &{http tcp://localhost:2220 tcp localhost:2220  0xc4202808a0 1.24 map[User-Agent:engine-api-cli-1.0] false} , err = <nil>
[11:20:03]	[Step 4/4] 2018/03/05 13:20:04 DD: Created container for cksums_ipv4_icmp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum:d1578f94425dc8d3c8b5cf13f444e60043113e0bacd83a7e614b2841b3e81c46 , response = {d1578f94425dc8d3c8b5cf13f444e60043113e0bacd83a7e614b2841b3e81c46 []} , err = <nil>
[11:20:04]	[Step 4/4] 2018/03/05 13:20:05 DD: Started container for cksums_ipv4_icmp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum:d1578f94425dc8d3c8b5cf13f444e60043113e0bacd83a7e614b2841b3e81c46 err = <nil>
[11:20:04]	[Step 4/4] 2018/03/05 13:20:05 DD: Trying to read logs from container d1578f94425dc8d3c8b5cf13f444e60043113e0bacd83a7e614b2841b3e81c46
[11:20:04]	[Step 4/4] 2018/03/05 13:20:05 DD: Trying to read logs from container c4b9580153b7c6e890b621f68f58bac932cf9940cba0f7b6c784b151890369ba
[11:20:04]	[Step 4/4] 2018/03/05 13:20:05 0 IPv4 L3 and ICMP L4 mode is enabled
[11:20:04]	[Step 4/4] 2018/03/05 13:20:05 0 Warning: cannot use HW offloading with ICMP protocol, only for L3 ipv4
[11:20:04]	[Step 4/4] 2018/03/05 13:20:05 0 ------------***-------- Initializing DPDK --------***------------
[11:20:04]	[Step 4/4] 2018/03/05 13:20:05 1 No L3 IP mode selected. Enabling IPv4 by default
[11:20:04]	[Step 4/4] 2018/03/05 13:20:05 1 No L4 packet type mode selected. Enabling UDP by default
[11:20:04]	[Step 4/4] 2018/03/05 13:20:05 1 UDP L4 mode is enabled
[11:20:04]	[Step 4/4] 2018/03/05 13:20:05 1 ------------***-------- Initializing DPDK --------***------------
[11:20:05]	[Step 4/4] 2018/03/05 13:20:06 0 ------------***-------- Initializing ports -------***------------
[11:20:05]	[Step 4/4] 2018/03/05 13:20:06 0 ------------***------ Initializing scheduler -----***------------
[11:20:05]	[Step 4/4] 2018/03/05 13:20:06 0 DEBUG: Scheduler can use cores: [0 1 2 3 4 5 6 7]
[11:20:05]	[Step 4/4] 2018/03/05 13:20:06 0 ------------***------ Filling FlowFunctions ------***------------
[11:20:05]	[Step 4/4] 2018/03/05 13:20:06 0 ------------***--------- Checking system ---------***------------
[11:20:05]	[Step 4/4] 2018/03/05 13:20:06 0 ------------***---------- Creating ports ---------***------------
[11:20:05]	[Step 4/4] 2018/03/05 13:20:06 0 DEBUG: Port 0 MAC address: 08 00 27 a4 a0 33
[11:20:05]	[Step 4/4] 2018/03/05 13:20:06 0 DEBUG: Port 1 MAC address: 08 00 27 71 63 aa
[11:20:06]	[Step 4/4] 2018/03/05 13:20:07 1 ------------***-------- Initializing ports -------***------------
[11:20:06]	[Step 4/4] 2018/03/05 13:20:07 1 ------------***------ Initializing scheduler -----***------------
[11:20:06]	[Step 4/4] 2018/03/05 13:20:07 1 DEBUG: Scheduler can use cores: [0 1 2 3 4 5 6 7]
[11:20:06]	[Step 4/4] 2018/03/05 13:20:07 1 ------------***------ Filling FlowFunctions ------***------------
[11:20:06]	[Step 4/4] 2018/03/05 13:20:07 1 ------------***--------- Checking system ---------***------------
[11:20:06]	[Step 4/4] 2018/03/05 13:20:07 1 ------------***---------- Creating ports ---------***------------
[11:20:06]	[Step 4/4] 2018/03/05 13:20:07 1 DEBUG: Port 0 MAC address: 08 00 27 2f c9 8c
[11:20:06]	[Step 4/4] 2018/03/05 13:20:07 1 DEBUG: Port 1 MAC address: 08 00 27 35 9f 1e
[11:20:07]	[Step 4/4] 2018/03/05 13:20:08 0 ------------***------ Starting FlowFunctions -----***------------
[11:20:07]	[Step 4/4] 2018/03/05 13:20:08 0 DEBUG: Start SCHEDULER at 0 core
[11:20:07]	[Step 4/4] 2018/03/05 13:20:08 0 DEBUG: Start STOP at scheduler 0 core
[11:20:07]	[Step 4/4] 2018/03/05 13:20:08 0 DEBUG: Start unclonable FlowFunction generator 1 at 1 core
[11:20:07]	[Step 4/4] 2018/03/05 13:20:08 0 DEBUG: Start unclonable FlowFunction sender 2 at 2 core
[11:20:07]	[Step 4/4] 2018/03/05 13:20:08 0 DEBUG: Start unclonable FlowFunction receiver 3 at 3 core
[11:20:07]	[Step 4/4] 2018/03/05 13:20:08 0 DEBUG: Start clonable FlowFunction handler 4 at 4 core
[11:20:07]	[Step 4/4] 2018/03/05 13:20:08 0 DEBUG: Start clonable FlowFunction handler 5 at 5 core
[11:20:07]	[Step 4/4] 2018/03/05 13:20:08 0 ------------***--------- NFF-GO-GO Started --------***------------
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 0 DEBUG: ---------------
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 0 DEBUG: System is using 6 cores now. 2 cores are left available.
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 0 DEBUG: Number of packets in queue for separate:  0
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 0 DEBUG: Current speed of handler 4 is 0 PKT/S
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 0 DEBUG: Number of packets in queue for handle:  0
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 0 DEBUG: Current speed of handler 5 is 0 PKT/S
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 0 DEBUG: Mempool N 0 used 513 from 32764
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 0 DEBUG: Mempool N 1 used 128 from 32764
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 1 ------------***------ Starting FlowFunctions -----***------------
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 1 DEBUG: Start SCHEDULER at 0 core
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 1 DEBUG: Start STOP at scheduler 0 core
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 1 DEBUG: Start unclonable FlowFunction receiver 1 at 1 core
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 1 DEBUG: Start unclonable FlowFunction sender 5 at 2 core
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 1 DEBUG: Start clonable FlowFunction handler 2 at 3 core
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 1 DEBUG: Start clonable FlowFunction handler 3 at 4 core
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 1 DEBUG: Start clonable FlowFunction handler 4 at 5 core
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 0 IPv4 ICMP checksum mismatch 65049 should be 34102
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 0 TEST FAILED
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 DD: Finished with code TestReportedFailed
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 DD: Trying to kill container for app cksums_ipv4_icmp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum:c4b9580153b7c6e890b621f68f58bac932cf9940cba0f7b6c784b151890369ba
[11:20:08]	[Step 4/4] 2018/03/05 13:20:09 DD: Trying to remove container for app cksums_ipv4_icmp_vlan:TestTypeScenario:localhost:2218:nff-go-test-cksum:c4b9580153b7c6e890b621f68f58bac932cf9940cba0f7b6c784b151890369ba
[11:20:09]	[Step 4/4] 2018/03/05 13:20:09 DD: Trying to kill container for app cksums_ipv4_icmp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum:d1578f94425dc8d3c8b5cf13f444e60043113e0bacd83a7e614b2841b3e81c46
[11:20:09]	[Step 4/4] 2018/03/05 13:20:09 DD: Trying to remove container for app cksums_ipv4_icmp_vlan:TestTypeScenario:localhost:2220:nff-go-test-cksum:d1578f94425dc8d3c8b5cf13f444e60043113e0bacd83a7e614b2841b3e81c46
[11:20:09]	[Step 4/4] 2018/03/05 13:20:10 \--- Finished test cksums_ipv4_icmp_vlan --- status: TestReportedFailed
[11:20:09]	[Step 4/4] 2018/03/05 13:20:10 TESTS EXECUTED: 16
[11:20:09]	[Step 4/4] 2018/03/05 13:20:10 PASSED: 11
[11:20:09]	[Step 4/4] 2018/03/05 13:20:10 FAILED: 5
[11:20:09]	[Step 4/4] Process exited with code 105

ICMP checksum calculation produces segmentation fault

After recent changes to ICMP checksum calculation NAT example crashes when pinged:

DEBUG: ---------------
DEBUG: System is using 7 cores now. 1 cores are left available.
DEBUG: Number of packets in queue for split:  0
DEBUG: Current speed of splitter 2 is 0 PKT/S
DEBUG: Number of packets in queue for split:  0
DEBUG: Current speed of splitter 4 is 0 PKT/S
DEBUG: Mempool N 0 used 128 from 32764
DEBUG: Mempool N 1 used 128 from 32764
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x5056ca]

goroutine 57 [running, locked to thread]:
github.com/intel-go/yanff/packet.calculateDataChecksum(0x0, 0x38, 0x0, 0xc42072a000)
        /home/ubuntu/go/src/github.com/intel-go/yanff/packet/checksum.go:148 +0x1a
github.com/intel-go/yanff/packet.CalculateIPv4ICMPChecksum(0x7fa415c0134e, 0x7fa415c01362, 0x0, 0x7fa48c0091e0)
        /home/ubuntu/go/src/github.com/intel-go/yanff/packet/checksum.go:292 +0x4c
github.com/intel-go/yanff/examples/nat.setIPv4ICMPChecksum(0x7fa415c012c0, 0xc420720101)
        /home/ubuntu/go/src/github.com/intel-go/yanff/examples/nat/cksum.go:68 +0xaf
github.com/intel-go/yanff/examples/nat.(*ipv4Port).handleICMP(0xc4200a63c0, 0x7fa415c012c0, 0x0)
        /home/ubuntu/go/src/github.com/intel-go/yanff/examples/nat/translation.go:366 +0xf4
github.com/intel-go/yanff/examples/nat.PublicToPrivateTranslation(0x7fa415c012c0, 0xa7d0c0, 0xb7eda0, 0xa7d0c0)
        /home/ubuntu/go/src/github.com/intel-go/yanff/examples/nat/translation.go:95 +0x6ce
github.com/intel-go/yanff/flow.split(0x703f00, 0xc42007c4e0, 0xc42009e1e0, 0xc4200b8000, 0x7fa49dc772d0, 0xb7eda0)
        /home/ubuntu/go/src/github.com/intel-go/yanff/flow/flow.go:1183 +0x5cd
github.com/intel-go/yanff/scheduler.(*Scheduler).startClonable.func1(0xc42005e0b0, 0x5)
        /home/ubuntu/go/src/github.com/intel-go/yanff/scheduler/scheduler.go:201 +0xe7
created by github.com/intel-go/yanff/scheduler.(*Scheduler).startClonable
        /home/ubuntu/go/src/github.com/intel-go/yanff/scheduler/scheduler.go:196 +0x1cc

You can use https://github.com/intel-go/yanff/wiki/NAT-example instruction to run NAT example.

Wrong debug statistics: sent speed value differs from generator speed value

I changed in low.c multiplier to 1, so it writes packets per second now,
Current speed of fast generator 1 is 6212778 PKT/S, but sent 9229088 PKTs/s
It differs too much, I think its a bug.

DEBUG: ---------------
DEBUG: System is using 6 cores now. 4 cores are left available.
DEBUG: Current speed of all receives: received 4440827 PKTs/s, pushed 4440827 PKTs/s
DEBUG: Current speed of all sends: required 9298656 PKTs/s, sent 9298656 PKTs/s
DEBUG: Current speed of stop ring: freed 4440922 PKTs/s
DEBUG: Number of packets in queue for handle: 0
DEBUG: Current speed of handler 4 is 2961944 PKT/S
DEBUG: Current speed of fast generator 1 is 6201237 PKT/S, target speed is 6000000 PKT/S
DEBUG: Mempool N 0 used 575 from 32764
DEBUG: Mempool N 1 used 262 from 32764
DEBUG: ---------------
DEBUG: System is using 6 cores now. 4 cores are left available.
DEBUG: Current speed of all receives: received 4437748 PKTs/s, pushed 4437748 PKTs/s
DEBUG: Current speed of all sends: required 9254240 PKTs/s, sent 9254240 PKTs/s
DEBUG: Current speed of stop ring: freed 4437869 PKTs/s
DEBUG: Number of packets in queue for handle: 0
DEBUG: Current speed of handler 4 is 2959896 PKT/S
DEBUG: Current speed of fast generator 1 is 6199040 PKT/S, target speed is 6000000 PKT/S
DEBUG: Mempool N 0 used 575 from 32764
DEBUG: Mempool N 1 used 121 from 32764
DEBUG: ---------------
DEBUG: System is using 6 cores now. 4 cores are left available.
DEBUG: Current speed of all receives: received 8907874 PKTs/s, pushed 8907874 PKTs/s
DEBUG: Current speed of all sends: required 18626432 PKTs/s, sent 18626432 PKTs/s
DEBUG: Current speed of stop ring: freed 8907763 PKTs/s
DEBUG: Number of packets in queue for handle: 46
DEBUG: Current speed of handler 4 is 2965938 PKT/S
DEBUG: Current speed of fast generator 1 is 6201941 PKT/S, target speed is 6000000 PKT/S
DEBUG: Mempool N 0 used 575 from 32764
DEBUG: Mempool N 1 used 518 from 32764
DEBUG: ---------------
DEBUG: System is using 6 cores now. 4 cores are left available.
DEBUG: Current speed of all receives: received 4411869 PKTs/s, pushed 4411869 PKTs/s
DEBUG: Current speed of all sends: required 9229088 PKTs/s, sent 9229088 PKTs/s
DEBUG: Current speed of stop ring: freed 4412054 PKTs/s
DEBUG: Number of packets in queue for handle: 0
DEBUG: Current speed of handler 4 is 2970708 PKT/S
DEBUG: Current speed of fast generator 1 is 6212778 PKT/S, target speed is 6000000 PKT/S
DEBUG: Mempool N 0 used 575 from 32764
DEBUG: Mempool N 1 used 176 from 32764

Input output test

We need a stability test which will test
SetReceiveKNI
SetReceiveFile
SetGenerator
SetFastGenerator
SetVectorFastGenerator
SetSendKNI
SetSendFile
Test should

  1. have a structure like testDivide
  2. be executed as go test
  3. be named testInputOutput

(choose yourself who will make it)

Need to rewrite NAT

Need to rewrite NAT using DirectSend for ARP requests, instead of confusing merges.

Need NAT performance tests

We need performance tests to run NAT with apache benchmark and compare it with Linux iptables performance.

Race conditions

As new tests point we have some race conditions after recent stopping commit:

  1. Scheduler can sleep and then begin to clone removed flow functions
  2. receive and send can work after port is closed
  3. Generate and other flow function can work after mempools are released

Also we need to re-init ring number to not face problems with big number of rings

Stable version

Hi, for now we a referencing the latest commit of master. When can we expect a stable tag or release?

Build problem.

Hitting an error at top level make. Smells like a GOROOT problem, but I am using a standard Ubuntu 16.04 install. One difference seems to be the Ubuntu install installs to /usr/lib/go-1.9 ran than /usr/local. Spinning up a new VM using the standard location but having issues with our cloud. Seen this before?

make[2]: Entering directory '/mnt/Code/gocode/src/github.com/intel-go/nff-go/test/framework'
Checking for AVX support... AVX and AVX2
go generate
stringer: checking package: types.go:8:2: could not import encoding/json (can't find import: )
types.go:12: running "stringer": exit status 1
Makefile:11: recipe for target 'apptype_string.go' failed
make[2]: *** [apptype_string.go] Error 1
make[2]: Leaving directory '/mnt/Code/gocode/src/github.com/intel-go/nff-go/test/framework'
../mk/intermediate.mk:13: recipe for target 'framework' failed
make[1]: *** [framework] Error 2
make[1]: Leaving directory '/mnt/Code/gocode/src/github.com/intel-go/nff-go/test'
mk/intermediate.mk:13: recipe for target 'test' failed
make: *** [test] Error 2

go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/mnt/Code/gocode"
GORACE=""
GOROOT="/usr/lib/go-1.9"
GOTOOLDIR="/usr/lib/go-1.9/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build721947677=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"

go version
go version go1.9.4 linux/amd64

Types correction

Ports should be uint16 due to DPDK
Split should be uint8 due to vectors

Need checksum tests for VLAN tagged packets

We support packets with VLAN tags but there are no tests for them yet. One important area is checksum calculation tests because these tests may be used as examples of correctly using functions for checksum calculation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.