Giter VIP home page Giter VIP logo

bess's Introduction

Build Status codecov

BESS (Berkeley Extensible Software Switch)

BESS (formerly known as SoftNIC) is a modular framework for software switches. BESS itself is not a virtual switch; it is neither pre-configured nor hardcoded to provide particular functionality, such as Ethernet bridging or OpenFlow-driven switching. Instead, you (or an external controller) can configure your own packet processing datapath by composing small "modules". While the basic concept is similar to Click, BESS does not sacrifice performance for programmability.

BESS was created by Sangjin Han and is developed at the University of California, Berkeley and at Nefeli Networks. Contributors to BESS include students, researchers, and developers who care about networking with high performance and high customizability. BESS is open-source under a BSD license.

If you are new to BESS, we recommend you start here:

  1. BESS Overview
  2. Build and Install BESS
  3. Write a BESS Configuration Script
  4. Connect BESS to a Network Interface, VM, or Container

To install BESS on Linux quickly, you can download the binary from Release. Please refer to GCC x86 Options to determine which tarball to use. Suppose bess-core2-linux.tar.gz is downloaded:

sudo apt-get install -y python python-pip libgraph-easy-perl
pip install --user protobuf grpcio scapy
sudo sysctl vm.nr_hugepages=1024  # For single NUMA node systems
tar -xf bess-core2-linux.tar.gz
cd bess/
make -C core/kmod # Build the kernel module (optional)
bessctl/bessctl

Documentation can be found here. Please consider contributing to the project!

bess's People

Contributors

ajamshed avatar apanda avatar azuresol avatar barath avatar bknuggetsfan avatar c2tonyc2 avatar changlan avatar chris3torek avatar ddiproietto avatar galsagie avatar gampel avatar justinemarie avatar keonjang avatar krsna1729 avatar levaitamas avatar melvinw avatar mukerjee avatar murphymc avatar natexornate avatar nemethf avatar nrdmao avatar pxgao avatar sangjinhan avatar sarsanaee avatar shague avatar shinae-woo avatar shwang avatar thejstone avatar trozet avatar vivi 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

bess's Issues

Issue with KMOD compile on Fedora 24

Hi,

I cannot seem to compile bess on Fedora 24 which is 4.7.x kernel based (4.7.6-200.fc24.x86_64). The problem is that in core/kmod/sndrv.c there is a check for " if (paravirt_enabled()) {" in the sndrv_init function. This is non-existent on 4.7 kernel. Maybe we need to use a different function to check this ?

daemon crash when run loopback_vport

localhost:10514 $ run perftest/loopback_vport 
Environment variable "SN_CORE_START" is not set. Using default value "1"
Environment variable "SN_CORE_END" is not set. Using default value "8"
Environment variable "SN_CORE_STEP" is not set. Using default value "1"
Environment variable "SN_INTERVAL" is not set. Using default value "2"
CPU                           1
Ports           (total)  vport0
--------------------------------
Outgoing (Mpps)   7.553   7.553
Incoming (Mpps)   7.553   7.553

*** Error: Not connected to BESS daemon
<disconnected> $ 
----------------------------------------------------------------------------
May 19 09:56:39 maryland bessd[13273]: /sys/devices/system/node/possible not available. Assuming a single-node system...
May 19 09:56:39 maryland bessd[13273]: EAL: Detected lcore 0 as core 0 on socket 0
May 19 09:56:39 maryland bessd[13273]: EAL: Detected lcore 1 as core 1 on socket 0
May 19 09:56:39 maryland bessd[13273]: EAL: Detected lcore 2 as core 2 on socket 0
May 19 09:56:39 maryland bessd[13273]: EAL: Detected lcore 3 as core 3 on socket 0
May 19 09:56:39 maryland bessd[13273]: EAL: Detected lcore 4 as core 0 on socket 0
May 19 09:56:39 maryland bessd[13273]: EAL: Detected lcore 5 as core 1 on socket 0
May 19 09:56:39 maryland bessd[13273]: EAL: Detected lcore 6 as core 2 on socket 0
May 19 09:56:39 maryland bessd[13273]: EAL: Detected lcore 7 as core 3 on socket 0
May 19 09:56:39 maryland bessd[13273]: EAL: Support maximum 128 logical core(s) by configuration.
May 19 09:56:39 maryland bessd[13273]: EAL: Detected 8 lcore(s)
May 19 09:56:39 maryland bessd[13273]: EAL: Probing VFIO support...
May 19 09:56:39 maryland bessd[13273]: EAL: Module /sys/module/vfio_pci not found! error 2 (No such file or directory)
May 19 09:56:39 maryland bessd[13273]: EAL: VFIO modules not loaded, skipping VFIO support...
May 19 09:56:39 maryland bessd[13273]: EAL: Setting up physically contiguous memory...
May 19 09:56:39 maryland bessd[13273]: EAL: Ask a virtual area of 0x1000000 bytes
May 19 09:56:39 maryland bessd[13273]: EAL: Virtual area found at 0x7fbab3400000 (size = 0x1000000)
May 19 09:56:39 maryland bessd[13273]: EAL: Ask a virtual area of 0x200000 bytes
May 19 09:56:39 maryland bessd[13273]: EAL: Virtual area found at 0x7fbab3000000 (size = 0x200000)
May 19 09:56:39 maryland bessd[13273]: EAL: Ask a virtual area of 0x200000 bytes
May 19 09:56:39 maryland bessd[13273]: EAL: Virtual area found at 0x7fbab2c00000 (size = 0x200000)
May 19 09:56:39 maryland bessd[13273]: EAL: Ask a virtual area of 0x200000 bytes
May 19 09:56:39 maryland bessd[13273]: EAL: Virtual area found at 0x7fbab2800000 (size = 0x200000)
May 19 09:56:39 maryland bessd[13273]: EAL: Ask a virtual area of 0x200000 bytes
May 19 09:56:39 maryland bessd[13273]: EAL: Virtual area found at 0x7fbab2400000 (size = 0x200000)
May 19 09:56:39 maryland bessd[13273]: EAL: Ask a virtual area of 0xd000000 bytes
May 19 09:56:39 maryland bessd[13273]: EAL: Virtual area found at 0x7fbaa5200000 (size = 0xd000000)
May 19 09:56:39 maryland bessd[13273]: EAL: Ask a virtual area of 0x200000 bytes
May 19 09:56:39 maryland bessd[13273]: EAL: Virtual area found at 0x7fbaa4e00000 (size = 0x200000)
May 19 09:56:39 maryland bessd[13273]: EAL: Ask a virtual area of 0x71400000 bytes
May 19 09:56:39 maryland bessd[13273]: EAL: Virtual area found at 0x7fba33800000 (size = 0x71400000)
May 19 09:56:39 maryland bessd[13273]: EAL: Ask a virtual area of 0x200000 bytes
May 19 09:56:39 maryland bessd[13273]: EAL: Virtual area found at 0x7fba33400000 (size = 0x200000)
May 19 09:56:39 maryland bessd[13273]: EAL: Requesting 1024 pages of size 2MB from socket 0
May 19 09:56:39 maryland bessd[13273]: EAL: TSC frequency is ~4008001 KHz
May 19 09:56:39 maryland bessd[13273]: EAL: Master lcore 127 is ready (tid=b5650cc0;cpuset=[0])
May 19 09:56:39 maryland bessd[13273]: EAL: lcore 3 is ready (tid=31bfc700;cpuset=[0])
May 19 09:56:39 maryland bessd[13273]: EAL: lcore 2 is ready (tid=323fd700;cpuset=[0])
May 19 09:56:39 maryland bessd[13273]: EAL: lcore 1 is ready (tid=32bfe700;cpuset=[0])
May 19 09:56:39 maryland bessd[13273]: EAL: lcore 0 is ready (tid=333ff700;cpuset=[0])
May 19 09:56:39 maryland bessd[13273]: EAL: PCI device 0000:03:00.0 on NUMA socket -1
May 19 09:56:39 maryland bessd[13273]: EAL:   probe driver: 8086:154d rte_ixgbe_pmd
May 19 09:56:39 maryland bessd[13273]: EAL:   PCI memory mapped at 0x7fbab64ce000
May 19 09:56:39 maryland bessd[13273]: EAL:   PCI memory mapped at 0x7fbab6592000
May 19 09:56:39 maryland bessd[13273]: PMD: eth_ixgbe_dev_init(): MAC: 2, PHY: 18, SFP+: 5
May 19 09:56:39 maryland bessd[13273]: PMD: eth_ixgbe_dev_init(): port 0 vendorID=0x8086 deviceID=0x154d
May 19 09:56:39 maryland bessd[13273]: EAL: PCI device 0000:03:00.1 on NUMA socket -1
May 19 09:56:39 maryland bessd[13273]: EAL:   probe driver: 8086:154d rte_ixgbe_pmd
May 19 09:56:39 maryland bessd[13273]: EAL:   PCI memory mapped at 0x7fbab644e000
May 19 09:56:39 maryland bessd[13273]: EAL:   PCI memory mapped at 0x7fbab658e000
May 19 09:56:39 maryland bessd[13273]: PMD: eth_ixgbe_dev_init(): MAC: 2, PHY: 18, SFP+: 6
May 19 09:56:39 maryland bessd[13273]: PMD: eth_ixgbe_dev_init(): port 1 vendorID=0x8086 deviceID=0x154d
May 19 09:56:40 maryland bessd[13273]: 524287 packet buffers allocated on socket 0
May 19 09:56:40 maryland bessd[13273]: 2 DPDK PMD ports have been recognized:
May 19 09:56:40 maryland bessd[13273]: DPDK port_id 0 (rte_ixgbe_pmd)   RXQ 128 TXQ 64  0000:03:00.00 8086:154d  
May 19 09:56:40 maryland bessd[13273]: DPDK port_id 1 (rte_ixgbe_pmd)   RXQ 128 TXQ 64  0000:03:00.01 8086:154d  
May 19 09:56:40 maryland bessd[13273]: Master: listening on 127.0.0.1:10514
May 19 09:56:43 maryland bessd[13273]: Master: a new client from 127.0.0.1:21704
May 19 09:56:47 maryland bessd[13273]: *** All workers have been paused ***
May 19 09:56:47 maryland bessd[13273]: Worker 0(0x7fba331ef220) is running on core 0 (socket 0)
May 19 09:56:47 maryland bessd[13273]: *** Resumed ***
May 19 09:56:47 maryland kernel: [244599.973764] bess - sn_register_netdev():872 vport0: registered - 26:d1:67:77:5e:b8 txq 1 rxq 1
May 19 09:56:49 maryland bessd[13273]: *** All workers have been paused ***
May 19 09:56:49 maryland kernel: [244601.982238] bess - sn_register_netdev():872 vport1: registered - 9a:71:0b:11:af:25 txq 1 rxq 1
May 19 09:56:49 maryland bessd[13273]: A critical error has occured. Aborting... (pid=13273, tid=13275)
May 19 09:56:49 maryland bessd[13273]: Signal: 11 (Segmentation fault), si_code: 128 (SI_KERNEL: sent by the kernel), address: (nil), IP: 0x441c45
May 19 09:56:49 maryland bessd[13273]: Backtrace (recent calls first) ---
May 19 09:56:49 maryland bessd[13273]: (0): bess/bin/bessd(sched_loop+0x4e5) [0x441c45]
May 19 09:56:49 maryland bessd[13273]: *** Resumed ***
May 19 09:56:49 maryland bessd[13273]:     accumulate at /opt/bess/core/tc.c:345
May 19 09:56:49 maryland bessd[13273]:          342: #011*((__m128i *)p1+1) = _mm_add_epi64(*((__m128i *)p1+1), *((__m128i *)p2+1));
May 19 09:56:49 maryland bessd[13273]:          343: #else
May 19 09:56:49 maryland bessd[13273]:          344: #011for (int i = 0; i < NUM_RESOURCES; i++)
May 19 09:56:49 maryland bessd[13273]:       -> 345: #011#011p1[i] += p2[i];
May 19 09:56:49 maryland bessd[13273]:          346: #endif
May 19 09:56:49 maryland bessd[13273]:          347: }
May 19 09:56:49 maryland bessd[13273]:          348: 
May 19 09:56:49 maryland bessd[13273]:      (inlined by) tc_account at /opt/bess/core/tc.c:360
May 19 09:56:49 maryland bessd[13273]:          357: 
May 19 09:56:49 maryland bessd[13273]:          358: #011int i;
May 19 09:56:49 maryland bessd[13273]:          359: 
May 19 09:56:49 maryland bessd[13273]:       -> 360: #011accumulate(c->stats.usage, usage);
May 19 09:56:49 maryland bessd[13273]:          361: 
May 19 09:56:49 maryland bessd[13273]:          362: #011if (!c->has_limit) {
May 19 09:56:49 maryland bessd[13273]:          363: #011#011c->last_tsc = tsc;
May 19 09:56:49 maryland bessd[13273]:      (inlined by) sched_done at /opt/bess/core/tc.c:439
May 19 09:56:49 maryland bessd[13273]:          436: #011#011assert(c->state.queued);
May 19 09:56:49 maryland bessd[13273]:          437: #011#011c->ss.pass += c->ss.stride * consumed / QUANTUM;
May 19 09:56:49 maryland bessd[13273]:          438: 
May 19 09:56:49 maryland bessd[13273]:       -> 439: #011#011throttled = tc_account(s, c, usage, tsc);
May 19 09:56:49 maryland bessd[13273]:          440: #011#011if (throttled) 
May 19 09:56:49 maryland bessd[13273]:          441: #011#011#011reschedule = 0;
May 19 09:56:49 maryland bessd[13273]:          442: 
May 19 09:56:49 maryland bessd[13273]:      (inlined by) sched_loop at /opt/bess/core/tc.c:691
May 19 09:56:49 maryland bessd[13273]:          688: #011#011#011usage[RESOURCE_PACKET] = ret.packets;
May 19 09:56:49 maryland bessd[13273]:          689: #011#011#011usage[RESOURCE_BIT] = ret.bits;
May 19 09:56:49 maryland bessd[13273]:          690: 
May 19 09:56:49 maryland bessd[13273]:       -> 691: #011#011#011sched_done(s, c, usage, 1, now);
May 19 09:56:49 maryland bessd[13273]:          692: #011#011} else {
May 19 09:56:49 maryland bessd[13273]:          693: #011#011#011now = rdtsc();
May 19 09:56:49 maryland bessd[13273]:          694: 
May 19 09:56:49 maryland bessd[13273]: (1): bess/bin/bessd() [0x442e35]
May 19 09:56:49 maryland bessd[13273]:     run_worker at /opt/bess/core/worker.c:213
May 19 09:56:49 maryland bessd[13273]:       -> 213: #011sched_loop(ctx.s);
May 19 09:56:49 maryland bessd[13273]: (2): bess/bin/bessd(eal_thread_loop+0x1d4) [0x490594]
May 19 09:56:49 maryland bessd[13273]:     eal_thread_loop at /opt/bess/deps/dpdk-16.04/lib/librte_eal/linuxapp/eal/eal_thread.c:184
May 19 09:56:49 maryland bessd[13273]:       -> 184: #011#011ret = lcore_config[lcore_id].f(fct_arg);
May 19 09:56:49 maryland bessd[13273]: (3): /lib/x86_64-linux-gnu/libpthread.so.0(+0x8181) [0x7fbab5e61181]
May 19 09:56:49 maryland bessd[13273]:     ?? ??:0
May 19 09:56:49 maryland bessd[13273]: (4): /lib/x86_64-linux-gnu/libc.so.6(clone+0x6c) [0x7fbab574c47c]
May 19 09:56:49 maryland bessd[13273]:     ?? ??:0
May 19 09:56:49 maryland kernel: [244602.026269] bess - sn_release_netdev():890 vport1: releasing netdev...
May 19 09:56:49 maryland kernel: [244602.052721] bess - sn_release_netdev():890 vport0: releasing netdev...

Unable to re-run IPLookup pipelines

Hi,
The re-run of pipelines containing IPLookup module always causes an EEXIST DPDK error. Changing pipelines does not cause any error unless the new pipeline was loaded by the daemon before. The error is reproducible with the iplookup.bess sample:

<disconnected> $ daemon start
Done.
localhost:10514 $ run samples/iplookup 
Environment variable "SN_PKT_SIZE" is not set.             Using default value "60"
Done.
localhost:10514 $ run samples/iplookup 
WARNING: The current pipeline will be reset. Are you sure? (type "yes") yes
Environment variable "SN_PKT_SIZE" is not set.             Using default value "60"
*** Error: Unhandled exception in the configuration script (most recent call last)
  File "/export/netsys/src/bess/bessctl/conf/samples/iplookup.bess", line 23, in <module>
    Source() -> Rewrite(templates=packets) -> ipfwd::IPLookup()
  File "/export/netsys/src/bess/bessctl/commands.py", line 73, in __bess_module__
    obj = mclass_obj(*args, name=module_names, **kwargs)
  File "/export/netsys/src/bess/bessctl/module.py", line 25, in __init__
    self.choose_arg(None, kwargs))
  File "/export/netsys/src/bess/bessctl/../libbess-python/bess.py", line 255, in create_module
    return self._request('CreateModule', request)
  File "/export/netsys/src/bess/bessctl/../libbess-python/bess.py", line 147, in _request
    raise self.Error(err, errmsg, details)
*** Error: DPDK error: File exists
  BESS daemon response - errno=17 (EEXIST: File exists)

Null pointer access in RoundRobin scheduler

https://travis-ci.org/NetSys/bess/jobs/200183293
(I guess it's not easily reproducible)

$ ./sanity_check.sh
This script runs a collection of BESS sample scripts and makes sure nothing blows up. Sit back and relax.
Running exactmatch.bess...
Running flowgen.bess...
Running generic_encap.bess...
Running hash_lb.bess...
Running igate.bess...
Running iplookup.bess...
Running l2_forward.bess...
Running multicore.bess...
Running queue.bess...
*** Error: RPC failed to localhost:10514 - <_Rendezvous of RPC that terminated with (StatusCode.UNAVAILABLE, {"created":"@1486687737.094491478","description":"Endpoint read failed","file":"src/core/ext/transport/chttp2/transport/chttp2_transport.c","file_line":1851,"grpc_status":14,"occurred_during_write":0,"referenced_errors":[{"created":"@1486687737.094483678","description":"Socket closed","fd":6,"file":"src/core/lib/iomgr/tcp_posix.c","file_line":249,"target_address":"ipv4:127.0.0.1:10514"}]})>
From /tmp/bessd_crash.log (Fri Feb 10 00:48:57 2017):
A critical error has occured. Aborting...
Signal: 11 (Segmentation fault), si_code: 1 (SEGV_MAPERR: address not mapped to object)
pid: 6845, tid: 6851, address: 0x20, IP: 0x600615
Backtrace (recent calls first) ---
(0): /home/travis/build/NetSys/bess/core/bessd(_ZNK4bess22RoundRobinTrafficClass8TraverseEPFvPKNS_12TrafficClassEPvES4_+0x35) [0x600615]
    bess::RoundRobinTrafficClass::Traverse(void (*)(bess::TrafficClass const*, void*), void*) const at /build/bess/core/traffic_class.cc:252
        (file/line not available)
(1): /home/travis/build/NetSys/bess/core/bessd(_ZNK4bess20PriorityTrafficClass8TraverseEPFvPKNS_12TrafficClassEPvES4_+0x43) [0x600523]
    bess::PriorityTrafficClass::Traverse(void (*)(bess::TrafficClass const*, void*), void*) const at /build/bess/core/traffic_class.cc:83
        (file/line not available)
(2): /home/travis/build/NetSys/bess/core/bessd(_ZN15BESSControlImpl11ListWorkersEPN4grpc13ServerContextEPKN4bess2pb12EmptyRequestEPNS4_19ListWorkersResponseE+0xe1) [0x5d5cb1]
    bess::Scheduler::NumTcs() const at /build/bess/core/hooks/../traffic_class.h:131
        (file/line not available)
     (inlined by) BESSControlImpl::ListWorkers(grpc::ServerContext*, bess::pb::EmptyRequest const*, bess::pb::ListWorkersResponse*) at /build/bess/core/bessctl.cc:390
        (file/line not available)
(3): /home/travis/build/NetSys/bess/core/bessd(_ZNSt17_Function_handlerIFN4grpc6StatusEPN4bess2pb11BESSControl7ServiceEPNS0_13ServerContextEPKNS3_12EmptyRequestEPNS3_19ListWorkersResponseEESt7_Mem_fnIMS5_FS1_S8_SB_SD_EEE9_M_invokeERKSt9_Any_dataOS6_OS8_OSB_OSD_+0x33) [0x6ded23]
    grpc::Status std::_Mem_fn_base<grpc::Status (bess::pb::BESSControl::Service::*)(grpc::ServerContext*, bess::pb::EmptyRequest const*, bess::pb::ListWorkersResponse*), true>::operator()<grpc::ServerContext*, bess::pb::EmptyRequest const*, bess::pb::ListWorkersResponse*, void>(bess::pb::BESSControl::Service*, grpc::ServerContext*&&, bess::pb::EmptyRequest const*&&, bess::pb::ListWorkersResponse*&&) const at /usr/include/c++/5/functional:600
        (file/line not available)
     (inlined by) std::_Function_handler<grpc::Status (bess::pb::BESSControl::Service*, grpc::ServerContext*, bess::pb::EmptyRequest const*, bess::pb::ListWorkersResponse*), std::_Mem_fn<grpc::Status (bess::pb::BESSControl::Service::*)(grpc::ServerContext*, bess::pb::EmptyRequest const*, bess::pb::ListWorkersResponse*)> >::_M_invoke(std::_Any_data const&, bess::pb::BESSControl::Service*&&, grpc::ServerContext*&&, bess::pb::EmptyRequest const*&&, bess::pb::ListWorkersResponse*&&) at /usr/include/c++/5/functional:1857
        (file/line not available)
(4): /home/travis/build/NetSys/bess/core/bessd(_ZN4grpc16RpcMethodHandlerIN4bess2pb11BESSControl7ServiceENS2_12EmptyRequestENS2_19ListWorkersResponseEE10RunHandlerERKNS_13MethodHandler16HandlerParameterE+0x9b) [0x6f138b]
    std::function<grpc::Status (bess::pb::BESSControl::Service*, grpc::ServerContext*, bess::pb::EmptyRequest const*, bess::pb::ListWorkersResponse*)>::operator()(bess::pb::BESSControl::Service*, grpc::ServerContext*, bess::pb::EmptyRequest const*, bess::pb::ListWorkersResponse*) const at /usr/include/c++/5/functional:2267
        (file/line not available)
     (inlined by) grpc::RpcMethodHandler<bess::pb::BESSControl::Service, bess::pb::EmptyRequest, bess::pb::ListWorkersResponse>::RunHandler(grpc::MethodHandler::HandlerParameter const&) at /usr/local/include/grpc++/impl/codegen/method_handler_impl.h:59
        (file/line not available)
(5): /home/travis/build/NetSys/bess/core/bessd(_ZN4grpc6Server6RunRpcEv+0x25b) [0x98e7eb]
    grpc::Server::RunRpc() at ??:?
(6): /home/travis/build/NetSys/bess/core/bessd(_ZN4grpc17DynamicThreadPool10ThreadFuncEv+0xe1) [0x9a8e31]
    grpc::DynamicThreadPool::ThreadFunc() at ??:?
(7): /home/travis/build/NetSys/bess/core/bessd(_ZN4grpc17DynamicThreadPool13DynamicThread10ThreadFuncEv+0x12) [0x9a9022]
    grpc::DynamicThreadPool::DynamicThread::ThreadFunc() at ??:?
(8): /home/travis/build/NetSys/bess/core/bessd() [0xb1216f]
    execute_native_thread_routine at thread.o:?
        (file/line not available)
(9): /lib/x86_64-linux-gnu/libpthread.so.0(+0x8183) [0x7f1e4987c183]
    ?? ??:0
(10): /lib/x86_64-linux-gnu/libc.so.6(clone+0x6c) [0x7f1e495a937c]
    ?? ??:0
  Command failed: daemon stop
Test failed. Sorry.

Memory corruption and missing syslog for printf

  • if there is no variable arguments other than a format string for printf, the message does not appear syslog.
  • instead, the message overwrite some memory region, corrupting random data structures.

gcc automatically replaces simple printf() functions into puts().However, it seems that puts() does not honor fopencookie().

Another issue is that we use close(STDXXX_FILENO) to daemonize, which incurs undefined behavior of stdout and stderr (struct FILE *) afterwards. Writes to them will contaminate file descriptor number 1 and 2, which may be reused later by other files.

Incorrect error location in .bess files

Consider the following .bess file:

Source() -> Bypass() -> Sink()

# arbitrary large number of correct python commands
a = 1
b = 2

print(a, b))  # Extra closing parenthesis

It has a syntax error, but bessclt points to an incorrect location, which makes hard to pinpoint the cause of the error.

$ ./bessctl daemon start -- run my/bug
Traceback (most recent call last):
  File "./bessctl", line 164, in <module>
    main()
  File "./bessctl", line 161, in main
    run_cli(cStringIO.StringIO('\n'.join(cmds)))
  File "./bessctl", line 137, in run_cli
    cli.loop()
  File "./bessctl", line 112, in loop
    super(BESSCLI, self).loop()
  File "/home/bess/bess/bessctl/cli.py", line 492, in loop
    self.process_one_line()
  File "/home/bess/bess/bessctl/cli.py", line 403, in process_one_line
    self.call_func(func, args)
  File "./bessctl", line 64, in call_func
    super(BESSCLI, self).call_func(func, args)
  File "/home/bess/bess/bessctl/cli.py", line 378, in call_func
    func(*args)
  File "/home/bess/bess/bessctl/commands.py", line 743, in run_conf
    _run_file(cli, conf_file, env_map)
  File "/home/bess/bess/bessctl/commands.py", line 735, in _run_file
    _do_run_file(cli, conf_file)
  File "/home/bess/bess/bessctl/commands.py", line 684, in _do_run_file
    code = compile(xformed, conf_file, 'exec')
  File "/home/bess/bess/bessctl/conf/my/bug.bess", line 1
    Source() -> Bypass() -> Sink()
              ^
SyntaxError: invalid syntax

Multi queue support for VM

Hi,

Can we provide multiple queues to a VM using PMDPort created using following script?

my_vhost0::PMDPort(vdev='eth_vhost0,iface=/tmp/my_vhost0.sock,queues=1')
my_vhost1::PMDPort(vdev='eth_vhost1,iface=/tmp/my_vhost1.sock,queues=1')

input0::QueueInc(port=my_vhost0, qid=0) #This module will read from my_vhost0 on queue 0
input1::QueueInc(port=my_vhost1, qid=0) #This module will read from my_vhost1 on queue 0

output0::QueueOut(port=my_vhost0, qid=0) #This module will write to my_vhost0 on queue 0
output1::QueueOut(port=my_vhost1, qid=0) #This module will write to my_vhost1 on queue 0

input0 -> output1
input1 -> output0

Virtual PMD devices are not freed up

According to @tootoonchian, in the deinit() function of the PMD driver should do something more than just calling rte_eth_dev_stop(). I suspect rte_eth_dev_stop() is enough for physical PMDs, but for virtual PMDs (e.g., bonding) we need explicit resource deallocation.

Error in dmesg --> "bess - free_snb_bulk():155 vport0: RX free queue overflow!"

Hi,

I am running BESS in a KVM VM with virtio N/W interfaces. I am using VPort sample configuration i.e. "physical" virtio NIC is represented by a bess "vport0" netdev in Linux kernel. I have a assigned an IPv4 address to this vport0 interface and am running a simple iperf tcp test on it. Everytime the test runs, I see this message
bess - free_snb_bulk():155 vport0: RX free queue overflow!

IIUC this means that the producer is overwhelming the consumer. Is there a config I could tune to make the ring be bigger ? Is this a serious issue ?

Error handling when head-room is too small

When there's not enough room to increase the size of the packet header with pkt->prepend(), then different encapsulation modules simply forward the packet unmodified. See, for example, the
vxlan encapsulation module. Wouldn't it be better to drop these packets, send them to a special gate, or somehow notify the pipeline writer?

A bit unrelated, but conf/sample/latency.bess shows a good example how we can test the raw performance of a module or pipeline. But is there a recommended way to test the correctness of a new module or a complex pipeline? I was able to come up with something: encap.bess, but I hoped there's a simpler way without using VPort and scapy's send-receive function.

(Additionally, the byte order of the value_bin in SetMetadata().Attribute is not documented and it's not straightforward to figure out what is expected.)

Incorrect offset assignment for metadata attributes

samples/vxlan.bess fails (ping fails), due to incorrect offset assignment. I am not sure this is the only bug with samples/vxlan.bess, though.

In the chain of ... -> ip_encap0 -> setattr1 -> ether_encap0 -> ... (see below),

  • ip_encap0 sets the offset of ether_type to 10
  • setattr1 sets the offset of ether_dst (6-byte long) to 8, which overwrites ether_type
  • ether_encap0 reads the incorrect ether_type from offset 10.

Perhaps the bug is in Pipeline::AssignOffsets()?

localhost:10514 $ show module
  bpf::BPF ()
    Input gates:
          0: batches N/A packets N/A port_inc0:0 ->
    Output gates:
          1: batches 41               packets 42               -> 0:vxlan_decap0
    Dump:
      None
  ether_encap0::EtherEncap ()
    Per-packet metadata fields:
      ether_src: read   6 bytes at offset 0
      ether_dst: read   6 bytes at offset 8
     ether_type: read   2 bytes at offset 10
    Input gates:
          0: batches N/A packets N/A setattr1:0 ->
    Output gates:
          0: batches 17               packets 18               -> 0:port_out1
    Dump:
      None
  ip_encap0::IPEncap ()
    Per-packet metadata fields:
         ip_src: read   4 bytes at offset 0
         ip_dst: read   4 bytes at offset 4
       ip_proto: read   1 bytes at offset 8
     ip_nexthop: write  4 bytes (no downstream reader)
     ether_type: write  2 bytes at offset 10
    Input gates:
          0: batches N/A packets N/A vxlan_encap0:0 ->
    Output gates:
          0: batches 17               packets 18               -> 0:setattr1
    Dump:
      None
  port_inc0::PortInc (vport1/VPort)
    Output gates:
          0: batches 70               packets 75               -> 0:bpf
    Dump:
      None
  port_inc1::PortInc (vport0/VPort)
    Output gates:
          0: batches 17               packets 18               -> 0:setattr0
    Dump:
      None
  port_out0::PortOut (vport0/VPort)
    Input gates:
          0: batches N/A packets N/A vxlan_decap0:0 ->
    Dump:
      None
  port_out1::PortOut (vport1/VPort)
    Input gates:
          0: batches N/A packets N/A ether_encap0:0 ->
    Dump:
      None
  setattr0::SetMetadata ()
    Per-packet metadata fields:
     tun_ip_src: write  4 bytes at offset 12
     tun_ip_dst: write  4 bytes at offset 16
         tun_id: write  4 bytes at offset 20
    Input gates:
          0: batches N/A packets N/A port_inc1:0 ->
    Output gates:
          0: batches 17               packets 18               -> 0:vxlan_encap0
    Dump:
      None
  setattr1::SetMetadata ()
    Per-packet metadata fields:
      ether_src: write  6 bytes at offset 0
      ether_dst: write  6 bytes at offset 8
    Input gates:
          0: batches N/A packets N/A ip_encap0:0 ->
    Output gates:
          0: batches 17               packets 18               -> 0:ether_encap0
    Dump:
      None
  vxlan_decap0::VXLANDecap ()
    Per-packet metadata fields:
     tun_ip_src: write  4 bytes (no downstream reader)
     tun_ip_dst: write  4 bytes (no downstream reader)
         tun_id: write  4 bytes (no downstream reader)
    Input gates:
          0: batches N/A packets N/A bpf:1 ->
    Output gates:
          0: batches 41               packets 42               -> 0:port_out0
    Dump:
      None
  vxlan_encap0::VXLANEncap ()
    Per-packet metadata fields:
     tun_ip_src: read   4 bytes at offset 12
     tun_ip_dst: read   4 bytes at offset 16
         tun_id: read   4 bytes at offset 20
         ip_src: write  4 bytes at offset 0
         ip_dst: write  4 bytes at offset 4
       ip_proto: write  1 bytes at offset 8
    Input gates:
          0: batches N/A packets N/A setattr0:0 ->
    Output gates:
          0: batches 17               packets 18               -> 0:ip_encap0
    Dump:
      None

rdtsc usage

Regarding -->

static inline uint64_t rdtsc(void)
{
        uint32_t hi, lo; 
        __asm__ __volatile__ ("rdtsc" : "=a"(lo), "=d"(hi));
        return (uint64_t)lo | ((uint64_t)hi << 32);
}

IIUC This code is being used to calculate time-stamps and use it in sched_loop. AFAIK rdtsc is prone to CPU instruction re-ordering and hence may not be accurate for time-stamping and thus people tend to use "rdtscp" or "mfence+rdtsc". ( http://stackoverflow.com/questions/12631856/difference-between-rdtscp-rdtsc-memory-and-cpuid-rdtsc )

Is use of rdtsc in bess, for time-stamping, a potential issue ?

How to do tcpdump ?

Hi,

I would like to add the ability to do a "tcpdump" or "mirror" on packets coming in from PMD port and destined towards VPort (ideally in both directions).
So far I have not been able to understand how to define that pipeline in a .bess file.

I tried something on the lines of the following but it does not work. How would we get this to work ? Is there a known format for this ?

v = VPort()
p = PMDPort(port_id=0)
PortInc(port=p) -> rewrite::Rewrite() -> bpf::BPF() -> PortOut(port=v)
PortInc(port=v) -> PortOut(port=p)

Issues with Mellanox NIC rx queue setup

Hello,

We are trying to run bess on a machine that has a single port Mellanox ConnectX-3 NIC. We were able to run bessd and detect the mellanox port. But when we are trying to create a PMDPort from bessctl CLI (add port PMDPort pport0 port_id=0) an exception is being thrown. We traced back the root of the reason and it seems rte_eth_rx_queue_setup is returning -EINVAL, i.e., "The size of network buffers which can be allocated from the memory pool does not fit the various buffer sizes allowed by the device controller". Any suggestions as to what configuration/parameter in bess might be causing this problem?

a little test of bess and ovs-dpdk

The performance of bess is not better than that of ovs-dpdk. Is there any problem in my configuration? And is the experimental environment suitable for bess?

environment
Linux  4.4.0-45-generic
Memory: 8G
Ethernet controller: Intel Corporation 82572EI Gigabit Ethernet Controller (Copper)

1. configuration

1.1 configuration of bess
#sysctl -w vm.nr_hugepages=2048
#modprobe uio_pci_generic
#bin/dpdk_devbind.py -b uio_pci_generic 03:00.0
#bin/bessd
#bin/bessctl
$run sample/vport
#ifconfig vport0 133.133.134.124/16
1.2 configuration of ovs-dpdk
#mkdir -p /usr/local/etc/openvswitch
#mkdir -p /usr/local/var/run/openvswitch
#ovsdb-tool create /usr/local/etc/openvswitch/conf.db /usr/local/share/openvswitch/vswitch.ovsschema
#sudo ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,Open_vSwitch,manager_options --pidfile --detach
#ovs-vsctl --no-wait init

#sysctl vm.nr_hugepages=2048
#mkdir -p /dev/hugepages
#mount -t hugetlbfs hugetlbfs /dev/hugepages
#modprobe uio_pci_generic
#ifconfig enp3s0 down
#$DPDK_DIR/tools/dpdk-devbind.py -b uio_pci_generic 03:00.0

#ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true
#ovs-vswitchd unix:$DB_SOCK --pidfile --detach

#ovs-vsctl add-br br0 -- set bridge br0 datapath_type=netdev
#ovs-vsctl add-port br0 dpdk0 -- set Interface dpdk0 type=dpdk

#ifconfig br0 up
#ifconfig br0 133.133.134.126/16

2. result:

2.1 phy-phy

ping 0.65ms

# iperf -c 133.133.134.124 -p12345 -i -1 -t 10 -w 1K
WARNING: interval too small, increasing from -1.00 to 0.5 seconds.
WARNING: TCP window size set to 1024 bytes. A small window size
will give poor performance. See the Iperf documentation.
------------------------------------------------------------
Client connecting to 133.133.134.124, TCP port 12345
TCP window size: 4.50 KByte (WARNING: requested 1.00 KByte)
------------------------------------------------------------
[ 3] local 133.133.134.72 port 35558 connected with 133.133.134.124 port 12345
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 0.5 sec 5.38 MBytes 90.2 Mbits/sec
[ 3] 0.5- 1.0 sec 5.12 MBytes 86.0 Mbits/sec
[ 3] 1.0- 1.5 sec 4.88 MBytes 81.8 Mbits/sec
[ 3] 1.5- 2.0 sec 4.88 MBytes 81.8 Mbits/sec
[ 3] 2.0- 2.5 sec 4.88 MBytes 81.8 Mbits/sec
[ 3] 2.5- 3.0 sec 4.88 MBytes 81.8 Mbits/sec
[ 3] 3.0- 3.5 sec 4.88 MBytes 81.8 Mbits/sec
[ 3] 3.5- 4.0 sec 4.75 MBytes 79.7 Mbits/sec
[ 3] 4.0- 4.5 sec 4.88 MBytes 81.8 Mbits/sec
[ 3] 4.5- 5.0 sec 4.88 MBytes 81.8 Mbits/sec
[ 3] 5.0- 5.5 sec 4.75 MBytes 79.7 Mbits/sec
[ 3] 5.5- 6.0 sec 4.88 MBytes 81.8 Mbits/sec
[ 3] 6.0- 6.5 sec 4.88 MBytes 81.8 Mbits/sec
[ 3] 6.5- 7.0 sec 4.75 MBytes 79.7 Mbits/sec
[ 3] 7.0- 7.5 sec 4.88 MBytes 81.8 Mbits/sec
[ 3] 7.5- 8.0 sec 4.88 MBytes 81.8 Mbits/sec
[ 3] 8.0- 8.5 sec 4.88 MBytes 81.8 Mbits/sec
[ 3] 8.5- 9.0 sec 4.75 MBytes 79.7 Mbits/sec
[ 3] 9.0- 9.5 sec 4.88 MBytes 81.8 Mbits/sec
[ 3] 9.5-10.0 sec 4.75 MBytes 79.7 Mbits/sec
[ 3] 0.0-10.0 sec 97.8 MBytes 81.9 Mbits/sec
2.2 bess

ping 0.28ms

# iperf -c 133.133.134.126 -p12345 -i -1 -t 10 -w 1k
WARNING: interval too small, increasing from -1.00 to 0.5 seconds.
WARNING: TCP window size set to 1024 bytes. A small window size
will give poor performance. See the Iperf documentation.
------------------------------------------------------------
Client connecting to 133.133.134.126, TCP port 12345
TCP window size: 4.50 KByte (WARNING: requested 1.00 KByte)
------------------------------------------------------------
[ 3] local 133.133.134.127 port 57700 connected with 133.133.134.126 port 12345
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 0.5 sec 1.38 MBytes 23.1 Mbits/sec
[ 3] 0.5- 1.0 sec 1.12 MBytes 18.9 Mbits/sec
[ 3] 1.0- 1.5 sec 1.25 MBytes 21.0 Mbits/sec
[ 3] 1.5- 2.0 sec 1.12 MBytes 18.9 Mbits/sec
[ 3] 2.0- 2.5 sec 1.25 MBytes 21.0 Mbits/sec
[ 3] 2.5- 3.0 sec 1.25 MBytes 21.0 Mbits/sec
[ 3] 3.0- 3.5 sec 1.25 MBytes 21.0 Mbits/sec
[ 3] 3.5- 4.0 sec 1.12 MBytes 18.9 Mbits/sec
[ 3] 4.0- 4.5 sec 1.12 MBytes 18.9 Mbits/sec
[ 3] 4.5- 5.0 sec 1.25 MBytes 21.0 Mbits/sec
[ 3] 5.0- 5.5 sec 1.25 MBytes 21.0 Mbits/sec
[ 3] 5.5- 6.0 sec 1.25 MBytes 21.0 Mbits/sec
[ 3] 6.0- 6.5 sec 1.12 MBytes 18.9 Mbits/sec
[ 3] 6.5- 7.0 sec 1.25 MBytes 21.0 Mbits/sec
[ 3] 7.0- 7.5 sec 1.12 MBytes 18.9 Mbits/sec
[ 3] 7.5- 8.0 sec 1.25 MBytes 21.0 Mbits/sec
[ 3] 8.0- 8.5 sec 1.25 MBytes 21.0 Mbits/sec
[ 3] 8.5- 9.0 sec 1.12 MBytes 18.9 Mbits/sec
[ 3] 9.0- 9.5 sec 1.25 MBytes 21.0 Mbits/sec
[ 3] 9.5-10.0 sec 1.12 MBytes 18.9 Mbits/sec
[ 3] 0.0-10.0 sec 24.2 MBytes 20.2 Mbits/sec
2.3 ovs-dpdk

ping 0.28ms

# iperf -c 133.133.134.126 -p12345 -i -1 -t 10 -w 1K
WARNING: interval too small, increasing from -1.00 to 0.5 seconds.
WARNING: TCP window size set to 1024 bytes. A small window size
will give poor performance. See the Iperf documentation.
------------------------------------------------------------
Client connecting to 133.133.134.126, TCP port 12345
TCP window size: 4.50 KByte (WARNING: requested 1.00 KByte)
------------------------------------------------------------
[ 3] local 133.133.134.127 port 52702 connected with 133.133.134.126 port 12345
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 0.5 sec 5.50 MBytes 92.3 Mbits/sec
[ 3] 0.5- 1.0 sec 5.38 MBytes 90.2 Mbits/sec
[ 3] 1.0- 1.5 sec 5.38 MBytes 90.2 Mbits/sec
[ 3] 1.5- 2.0 sec 5.38 MBytes 90.2 Mbits/sec
[ 3] 2.0- 2.5 sec 5.50 MBytes 92.3 Mbits/sec
[ 3] 2.5- 3.0 sec 5.38 MBytes 90.2 Mbits/sec
[ 3] 3.0- 3.5 sec 5.38 MBytes 90.2 Mbits/sec
[ 3] 3.5- 4.0 sec 5.38 MBytes 90.2 Mbits/sec
[ 3] 4.0- 4.5 sec 5.38 MBytes 90.2 Mbits/sec
[ 3] 4.5- 5.0 sec 5.25 MBytes 88.1 Mbits/sec
[ 3] 5.0- 5.5 sec 5.50 MBytes 92.3 Mbits/sec
[ 3] 5.5- 6.0 sec 5.38 MBytes 90.2 Mbits/sec
[ 3] 6.0- 6.5 sec 5.38 MBytes 90.2 Mbits/sec
[ 3] 6.5- 7.0 sec 5.38 MBytes 90.2 Mbits/sec
[ 3] 7.0- 7.5 sec 5.38 MBytes 90.2 Mbits/sec
[ 3] 7.5- 8.0 sec 5.38 MBytes 90.2 Mbits/sec
[ 3] 8.0- 8.5 sec 5.38 MBytes 90.2 Mbits/sec
[ 3] 8.5- 9.0 sec 5.38 MBytes 90.2 Mbits/sec
[ 3] 9.0- 9.5 sec 5.38 MBytes 90.2 Mbits/sec
[ 3] 9.5-10.0 sec 5.38 MBytes 90.2 Mbits/sec
[ 3] 0.0-10.0 sec 108 MBytes 90.4 Mbits/sec

SoftNIC performance and NIC offload features (scatter-gather lists and TSO)

Hi,

I'm currently working on a project where I am evaluating changes to how NIC hardware schedules packets. In my evaluation, I want to compare the performance of different POSIX applications given different NIC packet scheduling behaviors. From what I can tell so far, BESS/SoftNIC seems like it could be a good platform for evaluating the NIC changes I have in mind. However, as it is currently implemented, it seems like SoftNIC doesn't provide good enough performance (thoughput) to be useful in my experiments. I go into more detail about exactly what these performance issues are in the rest of this message, but I believe these performance issues do not stem from any performance issue in the BESS daemon in userspace but instead stem from the overheads of the kernel interfacing with the SoftNIC driver because the SoftNIC driver does not implement important offloading features like scatter-gather lists and TSO. As a result, even on only a 10Gbps link with SoftNIC configured to use a large number of queues and BESS configured with multiple worker threads, traditional POSIX applications struggle to drive line-rate when sending data over a SoftNIC VPort. Given this performance problem, I have the following questions:

  1. Is there a reason that SoftNIC does not currently support scatter-gather lists or TSO? From line 702 in core/kmod/sn_netdev.c (https://github.com/NetSys/bess/blob/master/core/kmod/sn_netdev.c#L702), it seems like supporting these features was considered at some point in time before they were disabled in the current version.

  2. Is there any development branch or plan to support scatter-gather lists and TSO in SoftNIC in the future?

  3. If I wanted to implement support scatter-gather lists and TSO in SoftNIC myself, are there any caveats or design challenges that I should know about?

  4. Is there some other best practice for hooking up applications to BESS so that they can drive a 10Gbps link?

In the rest of this message, I provide some more background on my methodology and why I think the performance problems I observe are caused by a lack of scatter-gather and TSO support.

I've observed this problem on two different platforms. My methodology is as follows: Both systems use an Intel 82599 10Gbps NIC. The first is a machine on my local testbed that uses a 4-core/8-thread 2.8GHz Xeon E5-1410, and the second is a machine on CloudLab Clemson that two sockets of "Intel(R) Xeon(R) CPU E5-2683 v3 @ 2.00GHz" cores for a total of 56 logical threads. In my BESS configuration, I create a VPort with 16 queues, I configure a PMDPort to run the physical 82599 device also with 16 queues, and I directly connect the incoming and outgoing queues on the VPort and PMDPort. Also, I configured BESS to use 4 worker threads.

To measure throughput, I have been using the "iperf3" network benchmarking tool with a variable number of parallel connections "-P <x>". With the default ixgbe driver, iperf3 can drive 10Gbps line rate with any number of parallel connections that I've used, including only using a single connection. However, with SoftNIC/BESS, iperf3 can only drive ~6Gbps. Further, performance with SoftNIC/BESS can be highly variable. As best as I can tell, this poor performance is solely because the SoftNIC driver does not implement scatter-gather lists or TSO. I think this because of the following results:

  • With the ixgbe driver which supports SG and TSO, no core is ever saturated according to dstat/htop and iperf3 can consistently drive line-rate.

  • With SoftNIC/BESS, in addition to the BESS daemon cores, some of the cores running application and kernel code become saturated. In this experiment, the application can drive at most ~6Gbps.

  • If I disable SG (and TSO) on the ixgbe driver, then the performance of ixgbe matches that of SoftNIC in both that throughput is limited to ~6Gbps and that at least one of the kernel/app cores is saturated.

  • Out of curiosity, I also looked at the example KNI application in the DPDK repository because SoftNIC seems to be derived from KNI. The performance of KNI is comparable to that of SoftNIC. It is worth noting that KNI does also not implement SG or TSO.

Thanks for taking the time to help me look into this problem,

~Brent

invalid SN_PORTS in pktgen

It looks like the pktgen does not release port correctly when input an invalid SN_PORTS:

run perftest/pktgen SN_PORTS=3
*** Error: Port id 1 is not available
BESS daemon response - errno=19 (ENODEV: No such device)

localhost:10514 $ run perftest/pktgen SN_PORTS=1
*** Error: rte_eth_dev_configure() failed
BESS daemon response - errno=16 (EBUSY: Device or resource busy)

queue.bess can't run with g++6 and -Ofast/-O3 are enabled.

When you run queue.bess with g++6 and -Ofast it crashes.

Here's what you see in GDB:
Thread 20 "bessd" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffedb27700 (LWP 41252)]
0x000000000062990e in __llring_mp_do_enqueue (behavior=LLRING_QUEUE_VARIABLE, n=32, obj_table=, r=0x7fffe001a5f0) at modules/../kmod/llring.h:433
433 modules/../kmod/llring.h: No such file or directory.

And the backtrace:
#0 0x000000000062990e in __llring_mp_do_enqueue (behavior=LLRING_QUEUE_VARIABLE, n=32, obj_table=, r=0x7fffe001a5f0) at modules/../kmod/llring.h:433
#1 llring_mp_enqueue_burst (n=32, obj_table=, r=0x7fffe001a5f0) at modules/../kmod/llring.h:1009
#2 Queue::ProcessBatch (this=, batch=0x7fffed916770) at modules/queue.cc:109
#3 0x000000000063a6c6 in Module::RunChooseModule (batch=0x7fffed916770, ogate_idx=0, this=) at modules/../module.h:321
#4 Module::RunNextModule (batch=0x7fffed916770, this=) at modules/../module.h:325
#5 Source::RunTask (this=) at modules/source.cc:83
#6 0x00000000005fa085 in Task::Scheduled (this=) at task.cc:36
#7 0x00000000005f8c0e in bess::LeafTrafficClass::RunTasks (this=0x7fffe0026620) at traffic_class.h:440
#8 bess::Scheduler::ScheduleOnce (this=) at scheduler.h:69
#9 bess::Scheduler::ScheduleLoop (this=0x7fffe4210c10) at scheduler.cc:30
#10 0x00000000005fd9e6 in Worker::Run (this=0x7fffed917340, _arg=_arg@entry=0x7ffff64a84e0) at worker.cc:241
#11 0x00000000005fe063 in run_worker (_arg=0x7ffff64a84e0) at worker.cc:254
#12 0x0000000000b00faf in execute_native_thread_routine ()
#13 0x00007ffff749d6ba in start_thread (arg=0x7fffedb27700) at pthread_create.c:333
#14 0x00007ffff71d382d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Unfortunately, many of the variables wind up optimized out so it's not easy to figure out how the code winds up at this point...

`track disable` command crashes BESS daemon

localhost:10514 $ run samples/exactmatch
Done.
localhost:10514 $ track disable *
*** Error: RPC failed to localhost:10514 - <_Rendezvous of RPC that terminated with (StatusCode.UNAVAILABLE, )>
From /tmp/bessd_crash.log (Tue Apr 18 18:41:33 2017):
A critical error has occured. Aborting...
Signal: 11 (Segmentation fault), si_code: 1 (SEGV_MAPERR: address not mapped to object)
pid: 88736, tid: 88753, address: 0x18, IP: 0x62410e
Backtrace (recent calls first) ---
(0): /home/sangjin/bess/core/bessd(_ZN4bess4Gate10RemoveHookERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0xe) [0x62410e]
    __gnu_cxx::__normal_iterator<bess::GateHook**, std::vector<bess::GateHook*, std::allocator<bess::GateHook*> > >::__normal_iterator(bess::GateHook** const&) at /usr/include/c++/5/bits/stl_iterator.h:741
         738:
         739:       explicit
         740:       __normal_iterator(const _Iterator& __i) _GLIBCXX_NOEXCEPT
      -> 741:       : _M_current(__i) { }
         742:
         743:       // Allow iterator to const_iterator conversion
         744:       template<typename _Iter>
     (inlined by) std::vector<bess::GateHook*, std::allocator<bess::GateHook*> >::begin() at /usr/include/c++/5/bits/stl_vector.h:548
         545:        */
         546:       iterator
         547:       begin() _GLIBCXX_NOEXCEPT
      -> 548:       { return iterator(this->_M_impl._M_start); }
         549:
         550:       /**
         551:        *  Returns a read-only (constant) iterator that points to the
     (inlined by) bess::Gate::RemoveHook(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) at /home/sangjin/bess/core/gate.cc:30
         27: }
         28:
         29: void Gate::RemoveHook(const std::string &name) {
      -> 30:   for (auto it = hooks_.begin(); it != hooks_.end(); ++it) {
         31:     GateHook *hook = *it;
         32:     if (hook->name() == name) {
         33:       delete hook;
(1): /home/sangjin/bess/core/bessd() [0x6641d8]
    disable_track_for_module(Module const*, unsigned short, bool, bool) [clone .constprop.530] at /home/sangjin/bess/core/bessctl.cc:136
      -> 136:       gate->RemoveHook(kGateHookTrackGate);
(2): /home/sangjin/bess/core/bessd(_ZN15BESSControlImpl12DisableTrackEPN4grpc13ServerContextEPKN4bess2pb19DisableTrackRequestEPNS4_13EmptyResponseE+0x138) [0x66bf08]
    BESSControlImpl::DisableTrack(grpc::ServerContext*, bess::pb::DisableTrackRequest const*, bess::pb::EmptyResponse*) at /home/sangjin/bess/core/bessctl.cc:1227
      -> 1227:             disable_track_for_module(it.second, request->gate(),
(3): /home/sangjin/bess/core/bessd(_ZNSt17_Function_handlerIFN4grpc6StatusEPN4bess2pb11BESSControl7ServiceEPNS0_13ServerContextEPKNS3_19DisableTrackRequestEPNS3_13EmptyResponseEESt7_Mem_fnIMS5_FS1_S8_SB_SD_EEE9_M_invokeERKSt9_Any_dataOS6_OS8_OSB_OSD_+0x47) [0x6d2257]
    grpc::Status std::_Mem_fn_base<grpc::Status (bess::pb::BESSControl::Service::*)(grpc::ServerContext*, bess::pb::DisableTrackRequest const*, bess::pb::EmptyResponse*), true>::operator()<grpc::ServerContext*, bess::pb::DisableTrackRequest const*, bess::pb::EmptyResponse*, void>(bess::pb::BESSControl::Service*, grpc::ServerContext*&&, bess::pb::DisableTrackRequest const*&&, bess::pb::EmptyResponse*&&) const at /usr/include/c++/5/functional:600
      -> 600: 	{ return (__object->*_M_pmf)(std::forward<_Args>(__args)...); }
     (inlined by) std::_Function_handler<grpc::Status (bess::pb::BESSControl::Service*, grpc::ServerContext*, bess::pb::DisableTrackRequest const*, bess::pb::EmptyResponse*), std::_Mem_fn<grpc::Status (bess::pb::BESSControl::Service::*)(grpc::ServerContext*, bess::pb::DisableTrackRequest const*, bess::pb::EmptyResponse*)> >::_M_invoke(std::_Any_data const&, bess::pb::BESSControl::Service*&&, grpc::ServerContext*&&, bess::pb::DisableTrackRequest const*&&, bess::pb::EmptyResponse*&&) at /usr/include/c++/5/functional:1857
      -> 1857: 	    std::forward<_ArgTypes>(__args)...);
(4): /home/sangjin/bess/core/bessd(_ZN4grpc16RpcMethodHandlerIN4bess2pb11BESSControl7ServiceENS2_19DisableTrackRequestENS2_13EmptyResponseEE10RunHandlerERKNS_13MethodHandler16HandlerParameterE+0xae) [0x6ed30e]
    std::function<grpc::Status (bess::pb::BESSControl::Service*, grpc::ServerContext*, bess::pb::DisableTrackRequest const*, bess::pb::EmptyResponse*)>::operator()(bess::pb::BESSControl::Service*, grpc::ServerContext*, bess::pb::DisableTrackRequest const*, bess::pb::EmptyResponse*) const at /usr/include/c++/5/functional:2267
      -> 2267:       return _M_invoker(_M_functor, std::forward<_ArgTypes>(__args)...);
     (inlined by) grpc::RpcMethodHandler<bess::pb::BESSControl::Service, bess::pb::DisableTrackRequest, bess::pb::EmptyResponse>::RunHandler(grpc::MethodHandler::HandlerParameter const&) at /usr/local/include/grpc++/impl/codegen/method_handler_impl.h:59
      -> 59:       status = func_(service_, param.server_context, &req, &rsp);
(5): /home/sangjin/bess/core/bessd(_ZN4grpc6Server6RunRpcEv+0xa48) [0x9e2848]
    grpc::Server::RunRpc() at ??:?
(6): /home/sangjin/bess/core/bessd(_ZN4grpc17DynamicThreadPool10ThreadFuncEv+0xd0) [0x9ec2c0]
    grpc::DynamicThreadPool::ThreadFunc() at ??:?
(7): /home/sangjin/bess/core/bessd(_ZN4grpc17DynamicThreadPool13DynamicThread10ThreadFuncEv+0x24) [0x9ec4c4]
    grpc::DynamicThreadPool::DynamicThread::ThreadFunc() at ??:?
(8): /home/sangjin/bess/core/bessd() [0xc232cf]
    execute_native_thread_routine at thread.o:?
(9): /lib/x86_64-linux-gnu/libpthread.so.0(+0x76b9) [0x7f8c287176b9]
    start_thread at ??:?
(10): /lib/x86_64-linux-gnu/libc.so.6(clone+0x6c) [0x7f8c2844d82c]
    clone at /build/glibc-9tT8Do/glibc-2.23/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:109
        (file/line not available)

bess reset all

reproduce_error.py.zip
When running ./bessctl/bessctl -- daemon start -- run testing/run_module_tests
after putting reproduce_error.py (the file within the zip above) into ./bessctl/conf/testing/module_tests/, there exists a name clash between two different tests that have the same name for a module (i.e. s1::Source() ) even though bess.reset_all() is called before the second declaration. This indicates that reset_all might not be properly resetting everything. This is the error that occurs:

-- Running Module Tests for /home/vagrant/bess/bessctl/conf/testing/module_tests/reproduce_error.py --

   <function initial at 0x7fa12608c7d0>  custom test: PASS
Test failed!
Return value: <class 'commands.ConfError'>
*** Error: Unhandled exception in the configuration script (most recent call last)
  File "/home/vagrant/bess/bessctl/conf/testing/run_module_tests.bess", line 151, in <module>
    sys.exit(1)
SystemExit: 1
  Command failed: run testing/run_module_tests

When removing the exception catch at line 146 in ./bessctl/conf/testing/run_module_tests.bess, the full error is shown:

-- Running Module Tests for /home/vagrant/bess/bessctl/conf/testing/module_tests/reproduce_error.py --

*** Error: Unhandled exception in the configuration script (most recent call last)
  File "/home/vagrant/bess/bessctl/conf/testing/run_module_tests.bess", line 150, in <module>
    test()
  File "<string>", line 8, in initial
  File "/home/vagrant/bess/bessctl/commands.py", line 72, in __bess_module__
    raise ConfError("Module name %s already exists" % module_names)
ConfError: Module name s1 already exists
  Command failed: run testing/run_module_tests

Connecting VMs to BESS

Hello All,
We are doing a bess setup for inter-VM communication on the same host. We were looking through the GitHub page and bess wiki but are unable to find how to assign bess port to a VM. Please help us in setting up VM vNIC in bess setup.

Thanks

bessctl: error in _choose_arg error handling

When passed both positional and keyword args, _choose_arg() attempts to raise an exception and fails (resulting in an exception, but -- you know -- not the right one :) ).

There are two problems here. First, bess isn't in scope. I think this can be fixed by removing the staticmethod decorator and using self.bess. The second issue is that I think Error is the wrong exception here (as evidenced by the wrong number of constructor arguments, I believe), but I'm not sure what the right one is.

Add keyword argument support to `bessctl`

This is based on looking at #351 -- currently bessctl seems to only support positional arguments, which is a problem when multiple arguments to the same command are optional (in particular requiring one to decide between what is more likely to be omitted and ordering arguments to allow that). We should add support for some sort of keyword arguments, this would fix this problem. The challenge of course is making sure that the commands don't become too verbose as a result.

Is there any way to use ZeroCopyVPort inside a container?

Hi Sangjin,

I am using bess to build a cluster for running NFV applications.

I create 2 ZeroCopyVport in the host and connect these 2 ZeroCopyVPort in the host. And I can successfully run /core/nvport/native_app/source.c and /core/nvport/native_app/sink.c from the host.

Then I create a docker container and try to run /core/nvport/native_app/source.c in side the container, but it doesn't work. The problem is that I can't successfully initialize DPDK EAL.

I'm wondering if it is possible to use ZeroCopyVPort in the container? Do I need to mount some directories inside the file system?

KMOD disabled in Guest Mode.

Hi,

I see that this commit disabled "guest mode". I assume that means we cannot load KMOD under a para-virtualized kernel (CONFIG_PARAVIRT). My question is -

  1. Why is this restriction in place ?
  2. Is it going to be supported in the future ?

git show 0ada460
commit 0ada460
Author: Sangjin Han [email protected]
Date: Tue Dec 1 01:02:58 2015 -0800

disable guest mode

when running bessctl, an SyntaxError raised

Traceback (most recent call last):
File "./bessctl", line 9, in
import commands
File "/home/hepeng/bess/bessctl/commands.py", line 507
exec(code in new_globals, locals())
SyntaxError: unqualified exec is not allowed in function '_do_run_file' it contains a nested function with free variables

NameError: name 'PMDPort' is not defined

Hi I am using the develop branch, when I try to use the PMDPort in the bess configuration, I got complains as above. Any idea why this is happening? Thanks a lot!

I updated it and it is working. Never mind.

Memory leak in PcapHandle

To reproduce:

make CXX=clang++ SANITIZE=1
utils/pcap_handle_test

output:

[==========] Running 4 tests from 2 test cases.
[----------] Global test environment set-up.
[----------] 2 tests from PcapHandleBasicTest
[ RUN      ] PcapHandleBasicTest.EmptyConstructor
[       OK ] PcapHandleBasicTest.EmptyConstructor (0 ms)
[ RUN      ] PcapHandleBasicTest.BadDevice
[       OK ] PcapHandleBasicTest.BadDevice (0 ms)
[----------] 2 tests from PcapHandleBasicTest (1 ms total)

[----------] 2 tests from PcapHandleFixtureTest
[ RUN      ] PcapHandleFixtureTest.MoveAssignment
[       OK ] PcapHandleFixtureTest.MoveAssignment (0 ms)
[ RUN      ] PcapHandleFixtureTest.MoveConstructor
[       OK ] PcapHandleFixtureTest.MoveConstructor (0 ms)
[----------] 2 tests from PcapHandleFixtureTest (0 ms total)

[----------] Global test environment tear-down
[==========] 4 tests from 2 test cases ran. (1 ms total)
[  PASSED  ] 4 tests.

=================================================================
==32111==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 1 byte(s) in 1 object(s) allocated from:
    #0 0x57a978  (/home/vagrant/bess/core/utils/pcap_handle_test+0x57a978)
    #1 0x7fd318a668d9  (/lib/x86_64-linux-gnu/libc.so.6+0x8a8d9)
    #2 0x8923d9  (/home/vagrant/bess/core/utils/pcap_handle_test+0x8923d9)

SUMMARY: AddressSanitizer: 1 byte(s) leaked in 1 allocation(s).

Can't assign PortInc, QueueInc to TC

If you try to assign these modules to tc, bessctl just hangs for a while and never comes back. They default assign just fine, but if you try to add them somewhere in the tree specifically the script hangs forever.

Misaligned memory addresses

In vport.cc and vport_zc.cc, the memory address given to llring_init() and other llring functions may be misaligned, which is an undefined behavior. Unaligned memory accesses perhaps also have performance impact?

How to reproduce:

make CXX=clang++ SANITIZE=1
./all_test

Errors found by LLVM sanitizer:

drivers/../kmod/llring.h:255:5: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:255:5 in
drivers/../kmod/llring.h:255:5: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct (anonymous struct at drivers/../kmod/llring.h:173:2)', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:255:5 in
drivers/../kmod/llring.h:255:12: runtime error: store to misaligned address 0x7f2b780fbd48 for type 'uint32_t' (aka 'unsigned int'), which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:255:12 in
drivers/../kmod/llring.h:256:5: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:256:5 in
drivers/../kmod/llring.h:256:5: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct (anonymous struct at drivers/../kmod/llring.h:173:2)', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:256:5 in
drivers/../kmod/llring.h:257:5: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:257:5 in
drivers/../kmod/llring.h:257:5: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct (anonymous struct at drivers/../kmod/llring.h:173:2)', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:257:5 in
drivers/../kmod/llring.h:257:12: runtime error: store to misaligned address 0x7f2b780fbd58 for type 'uint32_t' (aka 'unsigned int'), which requires 16 byte alignment
0x7f2b780fbd58: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:257:12 in
drivers/../kmod/llring.h:258:5: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  00 04 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:258:5 in
drivers/../kmod/llring.h:258:5: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct (anonymous struct at drivers/../kmod/llring.h:173:2)', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  00 04 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:258:5 in
drivers/../kmod/llring.h:259:5: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  00 04 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:259:5 in
drivers/../kmod/llring.h:259:5: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct (anonymous struct at drivers/../kmod/llring.h:173:2)', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  00 04 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:259:5 in
drivers/../kmod/llring.h:261:20: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  00 04 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:261:20 in
drivers/../kmod/llring.h:261:20: runtime error: member access within misaligned address 0x7f2b780fbdc8 for type 'struct (anonymous struct at drivers/../kmod/llring.h:189:2)', which requires 64 byte alignment
0x7f2b780fbdc8: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:261:20 in
drivers/../kmod/llring.h:261:25: runtime error: store to misaligned address 0x7f2b780fbdc8 for type 'volatile uint32_t' (aka 'volatile unsigned int'), which requires 64 byte alignment
0x7f2b780fbdc8: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:261:25 in
drivers/../kmod/llring.h:261:5: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  00 04 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:261:5 in
drivers/../kmod/llring.h:261:5: runtime error: member access within misaligned address 0x7f2b780fbd88 for type 'struct (anonymous struct at drivers/../kmod/llring.h:183:2)', which requires 64 byte alignment
0x7f2b780fbd88: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:261:5 in
drivers/../kmod/llring.h:261:10: runtime error: store to misaligned address 0x7f2b780fbd88 for type 'volatile uint32_t' (aka 'volatile unsigned int'), which requires 64 byte alignment
0x7f2b780fbd88: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:261:10 in
drivers/../kmod/llring.h:262:20: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  00 04 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:262:20 in
drivers/../kmod/llring.h:262:20: runtime error: member access within misaligned address 0x7f2b780fbdc8 for type 'struct (anonymous struct at drivers/../kmod/llring.h:189:2)', which requires 64 byte alignment
0x7f2b780fbdc8: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:262:20 in
drivers/../kmod/llring.h:262:5: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  00 04 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:262:5 in
drivers/../kmod/llring.h:262:5: runtime error: member access within misaligned address 0x7f2b780fbd88 for type 'struct (anonymous struct at drivers/../kmod/llring.h:183:2)', which requires 64 byte alignment
0x7f2b780fbd88: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:262:5 in
drivers/../kmod/llring.h:287:18: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  00 04 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:287:18 in
drivers/../kmod/llring.h:287:18: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct (anonymous struct at drivers/../kmod/llring.h:173:2)', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  00 04 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:287:18 in
drivers/../kmod/llring.h:287:25: runtime error: load of misaligned address 0x7f2b780fbd48 for type 'uint32_t' (aka 'unsigned int'), which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  00 04 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:287:25 in
drivers/../kmod/llring.h:294:5: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  00 04 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:294:5 in
drivers/../kmod/llring.h:294:5: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct (anonymous struct at drivers/../kmod/llring.h:173:2)', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  00 04 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:294:5 in
drivers/../kmod/llring.h:294:12: runtime error: store to misaligned address 0x7f2b780fbd58 for type 'uint32_t' (aka 'unsigned int'), which requires 16 byte alignment
0x7f2b780fbd58: note: pointer points here
 00 00 00 00  00 04 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:294:12 in
drivers/../kmod/llring.h:729:9: runtime error: member access within misaligned address 0x7f2b780fde88 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fde88: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:729:9 in
drivers/../kmod/llring.h:729:9: runtime error: member access within misaligned address 0x7f2b780fde88 for type 'struct (anonymous struct at drivers/../kmod/llring.h:173:2)', which requires 64 byte alignment
0x7f2b780fde88: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:729:9 in
drivers/../kmod/llring.h:395:21: runtime error: member access within misaligned address 0x7f2b780fde88 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fde88: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:395:21 in
drivers/../kmod/llring.h:395:21: runtime error: member access within misaligned address 0x7f2b780fde88 for type 'struct (anonymous struct at drivers/../kmod/llring.h:173:2)', which requires 64 byte alignment
0x7f2b780fde88: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:395:21 in
drivers/../kmod/llring.h:403:18: runtime error: member access within misaligned address 0x7f2b780fde88 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fde88: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:403:18 in
drivers/../kmod/llring.h:403:18: runtime error: member access within misaligned address 0x7f2b780fdec8 for type 'struct (anonymous struct at drivers/../kmod/llring.h:183:2)', which requires 64 byte alignment
0x7f2b780fdec8: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:403:18 in
drivers/../kmod/llring.h:403:23: runtime error: load of misaligned address 0x7f2b780fdec8 for type 'volatile uint32_t' (aka 'volatile unsigned int'), which requires 64 byte alignment
0x7f2b780fdec8: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:403:23 in
drivers/../kmod/llring.h:404:18: runtime error: member access within misaligned address 0x7f2b780fde88 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fde88: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:404:18 in
drivers/../kmod/llring.h:404:18: runtime error: member access within misaligned address 0x7f2b780fdf08 for type 'struct (anonymous struct at drivers/../kmod/llring.h:189:2)', which requires 64 byte alignment
0x7f2b780fdf08: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:404:18 in
drivers/../kmod/llring.h:429:34: runtime error: member access within misaligned address 0x7f2b780fde88 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fde88: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:429:34 in
drivers/../kmod/llring.h:429:34: runtime error: member access within misaligned address 0x7f2b780fdec8 for type 'struct (anonymous struct at drivers/../kmod/llring.h:183:2)', which requires 64 byte alignment
0x7f2b780fdec8: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:429:34 in
drivers/../kmod/llring.h:433:2: runtime error: member access within misaligned address 0x7f2b780fde88 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fde88: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:433:2 in
drivers/../kmod/llring.h:433:2: runtime error: member access within misaligned address 0x7f2b780fde88 for type 'struct (anonymous struct at drivers/../kmod/llring.h:173:2)', which requires 64 byte alignment
0x7f2b780fde88: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:433:2 in
drivers/../kmod/llring.h:433:2: runtime error: load of misaligned address 0x7f2b780fde88 for type 'uint32_t' (aka 'unsigned int'), which requires 64 byte alignment
0x7f2b780fde88: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:433:2 in
drivers/../kmod/llring.h:433:2: runtime error: member access within misaligned address 0x7f2b780fde88 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fde88: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:433:2 in
drivers/../kmod/llring.h:433:2: runtime error: member access within misaligned address 0x7f2b780fde88 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fde88: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:433:2 in
drivers/../kmod/llring.h:433:2: runtime error: member access within misaligned address 0x7f2b780fde88 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fde88: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:433:2 in
drivers/../kmod/llring.h:433:2: runtime error: member access within misaligned address 0x7f2b780fde88 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fde88: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:433:2 in
drivers/../kmod/llring.h:437:6: runtime error: member access within misaligned address 0x7f2b780fde88 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fde88: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:437:6 in
drivers/../kmod/llring.h:437:6: runtime error: member access within misaligned address 0x7f2b780fde88 for type 'struct (anonymous struct at drivers/../kmod/llring.h:173:2)', which requires 64 byte alignment
0x7f2b780fde88: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:437:6 in
drivers/../kmod/llring.h:437:6: runtime error: load of misaligned address 0x7f2b780fde98 for type 'uint32_t' (aka 'unsigned int'), which requires 16 byte alignment
0x7f2b780fde98: note: pointer points here
 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:437:6 in
drivers/../kmod/llring.h:452:9: runtime error: member access within misaligned address 0x7f2b780fde88 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fde88: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:452:9 in
drivers/../kmod/llring.h:452:9: runtime error: member access within misaligned address 0x7f2b780fdec8 for type 'struct (anonymous struct at drivers/../kmod/llring.h:183:2)', which requires 64 byte alignment
0x7f2b780fdec8: note: pointer points here
 00 00 00 00  20 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:452:9 in
drivers/../kmod/llring.h:455:5: runtime error: member access within misaligned address 0x7f2b780fde88 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fde88: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:455:5 in
drivers/../kmod/llring.h:455:5: runtime error: member access within misaligned address 0x7f2b780fdec8 for type 'struct (anonymous struct at drivers/../kmod/llring.h:183:2)', which requires 64 byte alignment
0x7f2b780fdec8: note: pointer points here
 00 00 00 00  20 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:455:5 in
drivers/vport_zc.cc:132:53: runtime error: member access within misaligned address 0x7f2b780fde48 for type 'struct vport_out_regs', which requires 64 byte alignment
0x7f2b780fde48: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/vport_zc.cc:132:53 in
[       OK ] ZeroCopyVPortTest.Send (357 ms)
[ RUN      ] ZeroCopyVPortTest.Recv
drivers/../kmod/llring.h:729:9: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:729:9 in
drivers/../kmod/llring.h:729:9: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct (anonymous struct at drivers/../kmod/llring.h:173:2)', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:729:9 in
drivers/../kmod/llring.h:395:21: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:395:21 in
drivers/../kmod/llring.h:395:21: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct (anonymous struct at drivers/../kmod/llring.h:173:2)', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:395:21 in
drivers/../kmod/llring.h:403:18: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:403:18 in
drivers/../kmod/llring.h:403:18: runtime error: member access within misaligned address 0x7f2b780fbd88 for type 'struct (anonymous struct at drivers/../kmod/llring.h:183:2)', which requires 64 byte alignment
0x7f2b780fbd88: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:403:18 in
drivers/../kmod/llring.h:403:23: runtime error: load of misaligned address 0x7f2b780fbd88 for type 'volatile uint32_t' (aka 'volatile unsigned int'), which requires 64 byte alignment
0x7f2b780fbd88: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:403:23 in
drivers/../kmod/llring.h:404:18: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:404:18 in
drivers/../kmod/llring.h:404:18: runtime error: member access within misaligned address 0x7f2b780fbdc8 for type 'struct (anonymous struct at drivers/../kmod/llring.h:189:2)', which requires 64 byte alignment
0x7f2b780fbdc8: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:404:18 in
drivers/../kmod/llring.h:429:34: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:429:34 in
drivers/../kmod/llring.h:429:34: runtime error: member access within misaligned address 0x7f2b780fbd88 for type 'struct (anonymous struct at drivers/../kmod/llring.h:183:2)', which requires 64 byte alignment
0x7f2b780fbd88: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:429:34 in
drivers/../kmod/llring.h:433:2: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:433:2 in
drivers/../kmod/llring.h:433:2: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct (anonymous struct at drivers/../kmod/llring.h:173:2)', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:433:2 in
drivers/../kmod/llring.h:433:2: runtime error: load of misaligned address 0x7f2b780fbd48 for type 'uint32_t' (aka 'unsigned int'), which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:433:2 in
drivers/../kmod/llring.h:433:2: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:433:2 in
drivers/../kmod/llring.h:433:2: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:433:2 in
drivers/../kmod/llring.h:433:2: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:433:2 in
drivers/../kmod/llring.h:433:2: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:433:2 in
drivers/../kmod/llring.h:437:6: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:437:6 in
drivers/../kmod/llring.h:437:6: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct (anonymous struct at drivers/../kmod/llring.h:173:2)', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:437:6 in
drivers/../kmod/llring.h:437:6: runtime error: load of misaligned address 0x7f2b780fbd58 for type 'uint32_t' (aka 'unsigned int'), which requires 16 byte alignment
0x7f2b780fbd58: note: pointer points here
 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:437:6 in
drivers/../kmod/llring.h:452:9: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:452:9 in
drivers/../kmod/llring.h:452:9: runtime error: member access within misaligned address 0x7f2b780fbd88 for type 'struct (anonymous struct at drivers/../kmod/llring.h:183:2)', which requires 64 byte alignment
0x7f2b780fbd88: note: pointer points here
 00 00 00 00  20 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:452:9 in
drivers/../kmod/llring.h:455:5: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:455:5 in
drivers/../kmod/llring.h:455:5: runtime error: member access within misaligned address 0x7f2b780fbd88 for type 'struct (anonymous struct at drivers/../kmod/llring.h:183:2)', which requires 64 byte alignment
0x7f2b780fbd88: note: pointer points here
 00 00 00 00  20 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:455:5 in
drivers/../kmod/llring.h:1117:9: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:1117:9 in
drivers/../kmod/llring.h:1117:9: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct (anonymous struct at drivers/../kmod/llring.h:173:2)', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:1117:9 in
drivers/../kmod/llring.h:576:21: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:576:21 in
drivers/../kmod/llring.h:576:21: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct (anonymous struct at drivers/../kmod/llring.h:173:2)', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:576:21 in
drivers/../kmod/llring.h:583:18: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:583:18 in
drivers/../kmod/llring.h:583:18: runtime error: member access within misaligned address 0x7f2b780fbdc8 for type 'struct (anonymous struct at drivers/../kmod/llring.h:189:2)', which requires 64 byte alignment
0x7f2b780fbdc8: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:583:18 in
drivers/../kmod/llring.h:583:23: runtime error: load of misaligned address 0x7f2b780fbdc8 for type 'volatile uint32_t' (aka 'volatile unsigned int'), which requires 64 byte alignment
0x7f2b780fbdc8: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:583:23 in
drivers/../kmod/llring.h:584:18: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:584:18 in
drivers/../kmod/llring.h:584:18: runtime error: member access within misaligned address 0x7f2b780fbd88 for type 'struct (anonymous struct at drivers/../kmod/llring.h:183:2)', which requires 64 byte alignment
0x7f2b780fbd88: note: pointer points here
 00 00 00 00  20 00 00 00 20 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:584:18 in
drivers/../kmod/llring.h:608:34: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:608:34 in
drivers/../kmod/llring.h:608:34: runtime error: member access within misaligned address 0x7f2b780fbdc8 for type 'struct (anonymous struct at drivers/../kmod/llring.h:189:2)', which requires 64 byte alignment
0x7f2b780fbdc8: note: pointer points here
 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:608:34 in
drivers/../kmod/llring.h:612:2: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:612:2 in
drivers/../kmod/llring.h:612:2: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct (anonymous struct at drivers/../kmod/llring.h:173:2)', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:612:2 in
drivers/../kmod/llring.h:612:2: runtime error: load of misaligned address 0x7f2b780fbd48 for type 'uint32_t' (aka 'unsigned int'), which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:612:2 in
drivers/../kmod/llring.h:612:2: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:612:2 in
drivers/../kmod/llring.h:612:2: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:612:2 in
drivers/../kmod/llring.h:612:2: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:612:2 in
drivers/../kmod/llring.h:612:2: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:612:2 in
drivers/../kmod/llring.h:619:9: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:619:9 in
drivers/../kmod/llring.h:619:9: runtime error: member access within misaligned address 0x7f2b780fbdc8 for type 'struct (anonymous struct at drivers/../kmod/llring.h:189:2)', which requires 64 byte alignment
0x7f2b780fbdc8: note: pointer points here
 00 00 00 00  20 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:619:9 in
drivers/../kmod/llring.h:623:5: runtime error: member access within misaligned address 0x7f2b780fbd48 for type 'struct llring', which requires 64 byte alignment
0x7f2b780fbd48: note: pointer points here
 00 00 00 00  00 04 00 00 ff 03 00 00  00 00 00 00 00 00 00 00  80 03 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:623:5 in
drivers/../kmod/llring.h:623:5: runtime error: member access within misaligned address 0x7f2b780fbdc8 for type 'struct (anonymous struct at drivers/../kmod/llring.h:189:2)', which requires 64 byte alignment
0x7f2b780fbdc8: note: pointer points here
 00 00 00 00  20 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00
              ^
SUMMARY: AddressSanitizer: undefined-behavior drivers/../kmod/llring.h:623:5 in
[       OK ] ZeroCopyVPortTest.Recv (83 ms)
[----------] 2 tests from ZeroCopyVPortTest (441 ms total)

Command 'interactive' does not work

It seems some part of #24 hasn't been pulled correctly.
Reapplying the following hunk of @MurphyMc, the problem disappears.

diff --git a/bessctl/cli.py b/bessctl/cli.py
index 2ea19a2..6d58b98 100644
--- a/bessctl/cli.py
+++ b/bessctl/cli.py
@@ -34,7 +34,16 @@ class CLI(object):
         self.last_cmd = ''

         self.interactive = interactive
-        if not interactive:
+        self.rl = None
+
+        self.maybe_go_interactive()
+
+    def maybe_go_interactive(self):
+        if self.interactive: return
+
+        self.interactive = self.fin.isatty() and self.fout.isatty()
+
+        if not self.interactive:
             self.rl = None
             return

without the patch:

 ./bessctl interactive
Traceback (most recent call last):
  File "./bessctl", line 202, in <module>
    run_cmds(cStringIO.StringIO('\n'.join(cmds)))
  File "./bessctl", line 178, in run_cmds
    cli.loop()
  File "./bessctl", line 112, in loop
    super(BESSCLI, self).loop()
  File "/export/netsys/src/bess/bessctl/cli.py", line 452, in loop
    self.process_one_line()
  File "/export/netsys/src/bess/bessctl/cli.py", line 394, in process_one_line
    self.call_func(func, args)
  File "./bessctl", line 64, in call_func
    super(BESSCLI, self).call_func(func, args)
  File "/export/netsys/src/bess/bessctl/cli.py", line 369, in call_func
    func(*args)
  File "/export/netsys/src/bess/bessctl/commands.py", line 1532, in interactive
    cli.maybe_go_interactive()
AttributeError: 'BESSCLI' object has no attribute 'maybe_go_interactive'

with the patch:

$ ./bessctl interactive
Type "help" for more information.
localhost:10514 $ 

or in more useful example:

$ ./bessctl show pipeline -- interactive
+-------------------+                      +----------+                      +-------------------+
|     port_inc0     |                      | macswap0 |                      |     port_out0     |
|      PortInc      |  :0 52231913504 0:   | MACSwap  |  :0 52231718560 0:   |      PortOut      |
| pmd_port0/PMDPort | -------------------> |          | -------------------> | pmd_port0/PMDPort |
+-------------------+                      +----------+                      +-------------------+
Type "help" for more information.
localhost:10514 $

docker.yml

Noticed while running ansible for install the docker.yml is missing the "cs" tag required to install community version these days -- $(lsb_release -cs)

From docs:
$ sudo add-apt-repository
"deb [arch=amd64] https://download.docker.com/linux/ubuntu
$(lsb_release -cs)
stable"

Memory leak in TrafficClass

This is already known and discussed. Posting here so that we don't forget to fix it.

How to reproduce

make CXX=clang++ SANITIZE=1
./all_test

Error message:

vagrant@nefeli-vm:/bess/core$ ./all_test
[==========] Running 80 tests from 31 test cases.
[----------] Global test environment set-up.
[----------] 1 test from ProcessCommandLineArgs
[ RUN      ] ProcessCommandLineArgs.DumpTypes
gcc: 4.2.1
glibc: 2.23-stable
DPDK: DPDK 16.07.0
sizeof(char)=1
sizeof(short)=2
sizeof(int)=4
sizeof(long)=8
sizeof(long long)=8
sizeof(intmax_t)=8
sizeof(void *)=8
sizeof(size_t)=8
sizeof(HTableBase)=96
sizeof(rte_mbuf)=128
sizeof(Packet)=2560
sizeof(pkt_batch)=264
sizeof(Scheduler)=120 sizeof(sched_stats)=48
sizeof(TrafficClass)=96 sizeof(tc_stats)=40
sizeof(Task)=32
sizeof(Module)=168
sizeof(Gate)=48
sizeof(IGate)=72
sizeof(OGate)=64
sizeof(worker_context)=2163024
[       OK ] ProcessCommandLineArgs.DumpTypes (218 ms)
[----------] 1 test from ProcessCommandLineArgs (218 ms total)

[----------] 1 test from CheckRunningAsRoot
[ RUN      ] CheckRunningAsRoot.NonRoot
[       OK ] CheckRunningAsRoot.NonRoot (200 ms)
[----------] 1 test from CheckRunningAsRoot (200 ms total)

[----------] 1 test from WriteAndReadPidFile
[ RUN      ] WriteAndReadPidFile.GoodFile
[       OK ] WriteAndReadPidFile.GoodFile (4 ms)
[----------] 1 test from WriteAndReadPidFile (4 ms total)

[----------] 1 test from WritePidFile
[ RUN      ] WritePidFile.BadFile
[       OK ] WritePidFile.BadFile (679 ms)
[----------] 1 test from WritePidFile (679 ms total)

[----------] 2 tests from ReadPidFile
[ RUN      ] ReadPidFile.BadFileDesciptor
[       OK ] ReadPidFile.BadFileDesciptor (731 ms)
[ RUN      ] ReadPidFile.BadFile
E1216 20:03:37.815279  5574 bessd.cc:153] read(pidfile=/var/run/bessd.pid) at EOF
[       OK ] ReadPidFile.BadFile (2 ms)
[----------] 2 tests from ReadPidFile (733 ms total)

[----------] 4 tests from TryAcquirePidfileLock
[ RUN      ] TryAcquirePidfileLock.BadFd
[       OK ] TryAcquirePidfileLock.BadFd (706 ms)
[ RUN      ] TryAcquirePidfileLock.GoodFd
[       OK ] TryAcquirePidfileLock.GoodFd (0 ms)
[ RUN      ] TryAcquirePidfileLock.AlreadyHeld
[       OK ] TryAcquirePidfileLock.AlreadyHeld (58 ms)
[ RUN      ] TryAcquirePidfileLock.AlreadyHeldPidReadFails
[       OK ] TryAcquirePidfileLock.AlreadyHeldPidReadFails (2251 ms)
[----------] 4 tests from TryAcquirePidfileLock (3015 ms total)

[----------] 4 tests from CheckUniqueInstance
[ RUN      ] CheckUniqueInstance.BadPidfilePath
[       OK ] CheckUniqueInstance.BadPidfilePath (713 ms)
[ RUN      ] CheckUniqueInstance.NotHeld
[       OK ] CheckUniqueInstance.NotHeld (1 ms)
[ RUN      ] CheckUniqueInstance.Held
[       OK ] CheckUniqueInstance.Held (2340 ms)
[ RUN      ] CheckUniqueInstance.HeldKillCurrentHolder
[       OK ] CheckUniqueInstance.HeldKillCurrentHolder (1020 ms)
[----------] 4 tests from CheckUniqueInstance (4074 ms total)

[----------] 1 test from Daemonize
[ RUN      ] Daemonize.BasicRun
[       OK ] Daemonize.BasicRun (69 ms)
[----------] 1 test from Daemonize (70 ms total)

[----------] 1 test from SetResourceLimit
[ RUN      ] SetResourceLimit.BasicRun
[       OK ] SetResourceLimit.BasicRun (0 ms)
[----------] 1 test from SetResourceLimit (0 ms total)

[----------] 5 tests from CreateTree
[ RUN      ] CreateTree.Leaf
[       OK ] CreateTree.Leaf (1 ms)
[ RUN      ] CreateTree.PriorityRootAndLeaf
[       OK ] CreateTree.PriorityRootAndLeaf (1 ms)
[ RUN      ] CreateTree.WeightedFairRootAndLeaf
[       OK ] CreateTree.WeightedFairRootAndLeaf (2 ms)
[ RUN      ] CreateTree.RoundRobinRootAndLeaf
[       OK ] CreateTree.RoundRobinRootAndLeaf (1 ms)
[ RUN      ] CreateTree.RateLimitRootAndLeaf
[       OK ] CreateTree.RateLimitRootAndLeaf (1 ms)
[----------] 5 tests from CreateTree (8 ms total)

[----------] 5 tests from SchedulerNext
[ RUN      ] SchedulerNext.BasicTreePriority
[       OK ] SchedulerNext.BasicTreePriority (1 ms)
[ RUN      ] SchedulerNext.BasicTreeWeightedFair
[       OK ] SchedulerNext.BasicTreeWeightedFair (1 ms)
[ RUN      ] SchedulerNext.BasicTreeRoundRobin
[       OK ] SchedulerNext.BasicTreeRoundRobin (0 ms)
[ RUN      ] SchedulerNext.BasicTreeRateLimit
[       OK ] SchedulerNext.BasicTreeRateLimit (0 ms)
[ RUN      ] SchedulerNext.TwoLeavesWeightedFairOneBlocked
[       OK ] SchedulerNext.TwoLeavesWeightedFairOneBlocked (1 ms)
[----------] 5 tests from SchedulerNext (4 ms total)

[----------] 4 tests from ScheduleOnce
[ RUN      ] ScheduleOnce.TwoLeavesWeightedFair
[       OK ] ScheduleOnce.TwoLeavesWeightedFair (1 ms)
[ RUN      ] ScheduleOnce.TwoLeavesPriority
[       OK ] ScheduleOnce.TwoLeavesPriority (0 ms)
[ RUN      ] ScheduleOnce.TwoLeavesRoundRobin
[       OK ] ScheduleOnce.TwoLeavesRoundRobin (0 ms)
[ RUN      ] ScheduleOnce.LeavesWeightedFairAndRoundRobin
[       OK ] ScheduleOnce.LeavesWeightedFairAndRoundRobin (1 ms)
[----------] 4 tests from ScheduleOnce (5 ms total)

[----------] 1 test from RateLimit
[ RUN      ] RateLimit.BasicBlockUnblock
[       OK ] RateLimit.BasicBlockUnblock (2 ms)
[----------] 1 test from RateLimit (2 ms total)

[----------] 2 tests from ModuleBuilderTest
[ RUN      ] ModuleBuilderTest.RegisterModuleClass
[       OK ] ModuleBuilderTest.RegisterModuleClass (2 ms)
[ RUN      ] ModuleBuilderTest.GenerateDefaultNameTemplate
[       OK ] ModuleBuilderTest.GenerateDefaultNameTemplate (1 ms)
[----------] 2 tests from ModuleBuilderTest (4 ms total)

[----------] 5 tests from ModuleTester
[ RUN      ] ModuleTester.CreateModuleWithName
[       OK ] ModuleTester.CreateModuleWithName (5 ms)
[ RUN      ] ModuleTester.CreateModuleGenerateName
[       OK ] ModuleTester.CreateModuleGenerateName (0 ms)
[ RUN      ] ModuleTester.RunCommand
[       OK ] ModuleTester.RunCommand (1 ms)
[ RUN      ] ModuleTester.ConnectModules
[       OK ] ModuleTester.ConnectModules (2 ms)
[ RUN      ] ModuleTester.ResetModules
[       OK ] ModuleTester.ResetModules (1 ms)
[----------] 5 tests from ModuleTester (10 ms total)

[----------] 8 tests from PortTest
[ RUN      ] PortTest.CreatePort
[       OK ] PortTest.CreatePort (1 ms)
[ RUN      ] PortTest.AddPort
[       OK ] PortTest.AddPort (0 ms)
[ RUN      ] PortTest.GetPortStats
[       OK ] PortTest.GetPortStats (0 ms)
[ RUN      ] PortTest.AcquireAndReleaseQueues
E1216 20:03:45.014201  5574 port.cc:173] Incorrect packet dir 2
[       OK ] PortTest.AcquireAndReleaseQueues (1 ms)
[ RUN      ] PortTest.DestroyPort
[       OK ] PortTest.DestroyPort (0 ms)
[ RUN      ] PortTest.DestroyAllPorts
[       OK ] PortTest.DestroyAllPorts (0 ms)
[ RUN      ] PortTest.InitPortClass
[       OK ] PortTest.InitPortClass (0 ms)
[ RUN      ] PortTest.InitDrivers
[       OK ] PortTest.InitDrivers (0 ms)
[----------] 8 tests from PortTest (7 ms total)

[----------] 3 tests from PortBuilderTest
[ RUN      ] PortBuilderTest.RegisterPortClassDirectCall
[       OK ] PortBuilderTest.RegisterPortClassDirectCall (0 ms)
[ RUN      ] PortBuilderTest.RegisterPortClassMacroCall
[       OK ] PortBuilderTest.RegisterPortClassMacroCall (0 ms)
[ RUN      ] PortBuilderTest.GenerateDefaultPortNameTemplate
[       OK ] PortBuilderTest.GenerateDefaultPortNameTemplate (0 ms)
[----------] 3 tests from PortBuilderTest (2 ms total)

[----------] 2 tests from Metadata
[ RUN      ] Metadata.RegisterSizeMismatchFails
E1216 20:03:45.022128  5574 metadata.cc:471] Attribute 'attr0' has size mismatch: registered(1) vs new(2)
[       OK ] Metadata.RegisterSizeMismatchFails (2 ms)
[ RUN      ] Metadata.RegisterCount
E1216 20:03:45.023066  5574 metadata.cc:471] Attribute 'a' has size mismatch: registered(4) vs new(8)
E1216 20:03:45.023317  5574 metadata.cc:471] Attribute 'a' has size mismatch: registered(4) vs new(8)
E1216 20:03:45.023591  5574 metadata.cc:471] Attribute 'a' has size mismatch: registered(4) vs new(8)
[       OK ] Metadata.RegisterCount (1 ms)
[----------] 2 tests from Metadata (4 ms total)

[----------] 7 tests from MetadataTest
[ RUN      ] MetadataTest.DisconnectedFails
[       OK ] MetadataTest.DisconnectedFails (3 ms)
[ RUN      ] MetadataTest.SingleAttrSimplePipe
[       OK ] MetadataTest.SingleAttrSimplePipe (1 ms)
[ RUN      ] MetadataTest.SingleAttrSimplePipeBackwardsFails
[       OK ] MetadataTest.SingleAttrSimplePipeBackwardsFails (1 ms)
[ RUN      ] MetadataTest.MultipleAttrSimplePipeNoSpaceFails
[       OK ] MetadataTest.MultipleAttrSimplePipeNoSpaceFails (1 ms)
[ RUN      ] MetadataTest.MultipeAttrSimplePipe
[       OK ] MetadataTest.MultipeAttrSimplePipe (1 ms)
[ RUN      ] MetadataTest.MultipeAttrComplexPipe
[       OK ] MetadataTest.MultipeAttrComplexPipe (1 ms)
[ RUN      ] MetadataTest.ScopeComponentDegreeOrder
[       OK ] MetadataTest.ScopeComponentDegreeOrder (1 ms)
[----------] 7 tests from MetadataTest (9 ms total)

[----------] 4 tests from GateTest
[ RUN      ] GateTest.AddExistingHookFails
[       OK ] GateTest.AddExistingHookFails (0 ms)
[ RUN      ] GateTest.HookPriority
[       OK ] GateTest.HookPriority (0 ms)
[ RUN      ] GateTest.FindHook
[       OK ] GateTest.FindHook (0 ms)
[ RUN      ] GateTest.RemoveHook
[       OK ] GateTest.RemoveHook (0 ms)
[----------] 4 tests from GateTest (3 ms total)

[----------] 1 test from HookTest
[ RUN      ] HookTest.TrackGate
[       OK ] HookTest.TrackGate (0 ms)
[----------] 1 test from HookTest (0 ms total)

[----------] 2 tests from IOGateTest
[ RUN      ] IOGateTest.OGate
[       OK ] IOGateTest.OGate (0 ms)
[ RUN      ] IOGateTest.IGate
[       OK ] IOGateTest.IGate (0 ms)
[----------] 2 tests from IOGateTest (1 ms total)

[----------] 3 tests from EthHeaderTest
[ RUN      ] EthHeaderTest.AddressInStr
[       OK ] EthHeaderTest.AddressInStr (1 ms)
[ RUN      ] EthHeaderTest.AddrEquality
[       OK ] EthHeaderTest.AddrEquality (0 ms)
[ RUN      ] EthHeaderTest.RandomAddr
[       OK ] EthHeaderTest.RandomAddr (0 ms)
[----------] 3 tests from EthHeaderTest (3 ms total)

[----------] 2 tests from PcapHandleBasicTest
[ RUN      ] PcapHandleBasicTest.EmptyConstructor
[       OK ] PcapHandleBasicTest.EmptyConstructor (0 ms)
[ RUN      ] PcapHandleBasicTest.BadDevice
[       OK ] PcapHandleBasicTest.BadDevice (2 ms)
[----------] 2 tests from PcapHandleBasicTest (2 ms total)

[----------] 2 tests from PcapHandleFixtureTest
[ RUN      ] PcapHandleFixtureTest.MoveAssignment
[       OK ] PcapHandleFixtureTest.MoveAssignment (0 ms)
[ RUN      ] PcapHandleFixtureTest.MoveConstructor
[       OK ] PcapHandleFixtureTest.MoveConstructor (0 ms)
[----------] 2 tests from PcapHandleFixtureTest (0 ms total)

[----------] 1 test from RdtscTest
[ RUN      ] RdtscTest.NonDecreasing
[       OK ] RdtscTest.NonDecreasing (0 ms)
[----------] 1 test from RdtscTest (0 ms total)

[----------] 2 tests from TscToUs
[ RUN      ] TscToUs.Frequency
[       OK ] TscToUs.Frequency (0 ms)
[ RUN      ] TscToUs.NonNegative
[       OK ] TscToUs.NonNegative (0 ms)
[----------] 2 tests from TscToUs (0 ms total)

[----------] 1 test from GetEpochTime
[ RUN      ] GetEpochTime.NonNegative
[       OK ] GetEpochTime.NonNegative (0 ms)
[----------] 1 test from GetEpochTime (0 ms total)

[----------] 1 test from GetCpuTime
[ RUN      ] GetCpuTime.NonNegative
[       OK ] GetCpuTime.NonNegative (0 ms)
[----------] 1 test from GetCpuTime (0 ms total)

[----------] 1 test from RoundRobinTest
[ RUN      ] RoundRobinTest.PositiveGates
[       OK ] RoundRobinTest.PositiveGates (1 ms)
[----------] 1 test from RoundRobinTest (1 ms total)

[----------] 2 tests from ZeroCopyVPortTest
[ RUN      ] ZeroCopyVPortTest.Send
[       OK ] ZeroCopyVPortTest.Send (116 ms)
[ RUN      ] ZeroCopyVPortTest.Recv
[       OK ] ZeroCopyVPortTest.Recv (0 ms)
[----------] 2 tests from ZeroCopyVPortTest (118 ms total)

[----------] Global test environment tear-down
[==========] 80 tests from 31 test cases ran. (9182 ms total)
[  PASSED  ] 80 tests.

=================================================================
==5574==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 256 byte(s) in 2 object(s) allocated from:
    #0 0x6f8980 in operator new(unsigned long) (/bess/core/all_test+0x6f8980)
    #1 0x72c912 in bess::LeafTrafficClass* bess::TrafficClassBuilder::CreateTrafficClass<bess::LeafTrafficClass>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /bess/core/./traffic_class.h:514:12
    #2 0x72c912 in bess::TrafficClassBuilder::CreateTree(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bess::TrafficClassBuilder::LeafArgs) /bess/core/./traffic_class.h:623

bessd crashes when it restarts

How to reproduce:

$ bessctl daemon start
$ bessctl daemon start

E1025 00:19:47.651084 63354 bessd.cc:72] read(pidfile=/var/run/bessd.pid): Resource temporarily unavailable [11]
F1025 00:19:47.651481 63354 bessd.cc:97] Couldn't read pidfile: Resource temporarily unavailable [11]
*** Check failure stack trace: ***
@ 0x7fd6f911f5cd google::LogMessage::Fail()
@ 0x7fd6f9121433 google::LogMessage::SendToLog()
@ 0x7fd6f911f15b google::LogMessage::Flush()
@ 0x7fd6f911f379 google::LogMessage::~LogMessage()
@ 0x7fd6f912040a google::ErrnoLogMessage::~ErrnoLogMessage()
@ 0x52f1a7 bess::bessd::TryAcquirePidfileLock()
@ 0x52f224 bess::bessd::CheckUniqueInstance()
@ 0x4b8431 main
@ 0x7fd6f75c9830 __libc_start_main
@ 0x4c0b79 _start
@ (nil) (unknown)
F1025 00:19:47.839265 63353 bessd.cc:183] Failed. (syslog may have details)
*** Check failure stack trace: ***
@ 0x7fd6f911f5cd google::LogMessage::Fail()
@ 0x7fd6f9121433 google::LogMessage::SendToLog()
@ 0x7fd6f911f15b google::LogMessage::Flush()
@ 0x7fd6f9121e1e google::LogMessageFatal::~LogMessageFatal()
@ 0x52f693 bess::bessd::StartDaemon()
@ 0x4b84a5 main
@ 0x7fd6f75c9830 __libc_start_main
@ 0x4c0b79 _start
@ (nil) (unknown)
Aborted (core dumped)
*** Error: Cannot start BESS daemon

Cannot change HW MAC for Vport netdevice

Right now we cannot use ifconfig to change mac address of vport device. This patch adds the ability for the same.

From c3d332ad87c96a4186421172738bd281bcff6eae Mon Sep 17 00:00:00 2001
From: Chaitanya Lala <[email protected]>
Date: Wed, 26 Oct 2016 15:59:24 -0700
Subject: [PATCH] bess_kmod_netdev: Add ability to change MAC for vport

Right now vport does not have the ability to have it's HW MAC 
changed via SIOC* ioctls. Add this ability.

---
 core/kmod/sn_netdev.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/core/kmod/sn_netdev.c b/core/kmod/sn_netdev.c
index 436880c..6a5041f 100644
--- a/core/kmod/sn_netdev.c
+++ b/core/kmod/sn_netdev.c
@@ -687,6 +687,8 @@ static const struct net_device_ops sn_netdev_ops = {
        .ndo_select_queue       = sn_select_queue,
        .ndo_get_stats64        = sn_get_stats64,
        .ndo_fix_features       = sn_fix_features,
+       .ndo_set_mac_address    = eth_mac_addr,
+       .ndo_validate_addr      = eth_validate_addr,
 };

 extern const struct ethtool_ops sn_ethtool_ops;
-- 
2.7.4

BESS daemon response - errno=22 (EINVAL: Invalid argument)

when connecting a physical NIC to BESS, the error raised on CentOS 7

localhost:10514 $ add port PMD P pci="00:19.0"
*** Error: rte_eth_rx_queue_setup() failed
  BESS daemon response - errno=22 (EINVAL: Invalid argument)

NICs status:

[root@133-133-134-85 bess]# ./bin/dpdk-devbind.py --status

Network devices using DPDK-compatible driver
============================================
0000:00:19.0 'Ethernet Connection I218-LM' drv=uio_pci_generic unused=

Network devices using kernel driver
===================================
0000:03:00.0 'Wireless 7260' if=wlp3s0 drv=iwlwifi unused=uio_pci_generic *Active*

Other network devices
=====================
<none>

/var/log/messages:

Sep  8 15:07:54 133-133-134-85 bessd[6022]: PMD: eth_em_rx_queue_setup(): drop_en functionality not supported by device

Daemon reset no longer works correctly when using PMD ports

This is for the C++ branch (not develop or mainline).

The problem is in port initialization. I can take a look at fixing this in a bit, but just wanted to put it out there in case someone could fix it before I got around to it.

bin/bessctl run samples/s2p2s -- daemon reset -- run samples/s2p2s
Environment variable "SN_PORTS" is not set.             Using default value "1"
Using 1 DPDK ports... (envvar "SN_PORTS")
{'name': None, 'num_inc_q': 0, 'size_inc_q': 0, 'driver': 'PMDPort', 'num_out_q': 0, 'size_out_q': 0, 'mac_addr': ''}
{'port_id': 0}
{'name': None, 'mclass': 'Source'}
{}
Module source0::Source created
{'name': None, 'mclass': 'PortOut'}
{'port': u'pmd_port0'}
Module port_out0::PortOut created
Connecting source0:0 -> 0:port_out0
{'name': None, 'mclass': 'PortInc'}
{'port': u'pmd_port0'}
Module port_inc0::PortInc created
{'name': None, 'mclass': 'Sink'}
{}
Module sink0::Sink created
Connecting port_inc0:0 -> 0:sink0
Environment variable "SN_PORTS" is not set.             Using default value "1"
Using 1 DPDK ports... (envvar "SN_PORTS")
{'name': None, 'num_inc_q': 0, 'size_inc_q': 0, 'driver': 'PMDPort', 'num_out_q': 0, 'size_out_q': 0, 'mac_addr': ''}
{'port_id': 0}
*** Error: Unhandled exception in the configuration script (most recent call last)
  File "/home/apanda/bess-radhika/bessctl/conf/samples/s2p2s.bess", line 5, in <module>
    p = PMDPort(port_id=i)
  File "/home/apanda/bess-radhika/bessctl/port.py", line 10, in __init__
    ret = self.bess.create_port(self.driver, name, kwargs)
  File "/home/apanda/bess-radhika/bessctl/../libbess-python/bess.py", line 161, in create_port
    return self._request(self.stub.CreatePort, request)
  File "/home/apanda/bess-radhika/bessctl/../libbess-python/bess.py", line 96, in _request
    raise self.Error(err, errmsg, details)
*** Error: rte_eth_dev_configure() failed
  BESS daemon response - errno=16 (EBUSY: Device or resource busy)

AddActiveWorker() fails with pipeline loops

AddActiveWorker() loops forever for some pipeline. One example is samples/nat.bess:

Source() -> Rewrite(templates=packets) -> 0:nat:0 -> mac -> ip -> 1:nat:1 -> Sink()

bessctl command:

localhost:10514 $ run samples/nat

Output from bessd (with ASAN enabled):

...
W0427 19:48:35.617143  5857 module.h:466] Adding active worker for wid 0 to source0
ASAN:DEADLYSIGNAL
=================================================================
==5855==ERROR: AddressSanitizer: stack-overflow on address 0x7f77eee69fe8 (pc 0x000000889b1d bp 0x7f77eee6a040 sp 0x7f77eee69fd0 T2)
    #0 0x889b1c in std::_Hashtable<int, int, std::allocator<int>, std::__detail::_Identity, std::equal_to<int>, std::hash<int>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_find_before_node(unsigned long, int const&, unsigned long) const /usr/bin/../lib/gcc/x86_64-linux-gnu/6.2.0/../../../../include/c++/6.2.0/bits/hashtable.h:1412
    #1 0x889303 in std::_Hashtable<int, int, std::allocator<int>, std::__detail::_Identity, std::equal_to<int>, std::hash<int>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_find_node(unsigned long, int const&, unsigned long) const /usr/bin/../lib/gcc/x86_64-linux-gnu/6.2.0/../../../../include/c++/6.2.0/bits/hashtable.h:634:28
    #2 0x888e15 in std::pair<std::__detail::_Node_iterator<int, true, false>, bool> std::_Hashtable<int, int, std::allocator<int>, std::__detail::_Identity, std::equal_to<int>, std::hash<int>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_insert<int const&, std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<int, false> > > >(int const&, std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<int, false> > > const&, std::integral_constant<bool, true>) /usr/bin/../lib/gcc/x86_64-linux-gnu/6.2.0/../../../../include/c++/6.2.0/bits/hashtable.h:1686:21
    #3 0x888bd1 in std::__detail::_Insert_base<int, int, std::allocator<int>, std::__detail::_Identity, std::equal_to<int>, std::hash<int>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::insert(int const&) /usr/bin/../lib/gcc/x86_64-linux-gnu/6.2.0/../../../../include/c++/6.2.0/bits/hashtable_policy.h:713:9
    #4 0x852485 in Module::AddActiveWorker(int) /bess/core/module.cc:267:3
    #5 0x8527a4 in Module::AddActiveWorker(int) /bess/core/module.cc:272:9
...
    #251 0x8527a4 in Module::AddActiveWorker(int) /bess/core/module.cc:272:9

SUMMARY: AddressSanitizer: stack-overflow /usr/bin/../lib/gcc/x86_64-linux-gnu/6.2.0/../../../../include/c++/6.2.0/bits/hashtable.h:1412 in std::_Hashtable<int, int, std::allocator<int>, std::__detail::_Identity, std::equal_to<int>, std::hash<int>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_find_before_node(unsigned long, int const&, unsigned long) const
Thread T2 created by T0 here:
    #0 0x7755d9 in pthread_create (/bess/core/bessd+0x7755d9)
    #1 0x14eb162 in std::thread::_M_start_thread(std::shared_ptr<std::thread::_Impl_base>, void (*)()) (/bess/core/bessd+0x14eb162)

==5855==ABORTING

Where is the vhost driver?

Hi,

I am testing the release of BESS v0.2. I cannot add a vhost for my kvm VM. And I cannot find the vhost driver in core/driver folder.

So, how to add a vhost port for BESS v0.2?

Edit:
I found you abandoned Vhost driver at 184f8b5

But, is there an instruction on how to use kvm nic in following versions of BESS? The old instructions on wiki doesn't work.

Thanks!

BESS can't re-start pipeline when running with url filter

When I run a script using the url filter and I start a new script (without restarting BESS daemon), I see errors and bess crashes. Most other scripts I can just load up a new script without restarting the daemon.

 File "/home/justine/bess/bessctl/cli.py", line 399, in process_one_line
    self.call_func(func, args)
  File "./bessctl", line 53, in call_func
    super(BESSCLI, self).call_func(func, args)
  File "/home/justine/bess/bessctl/cli.py", line 374, in call_func
    func(*args)
  File "/home/justine/bess/bessctl/commands.py", line 706, in run_conf
    _run_file(cli, conf_file, env_map)
  File "/home/justine/bess/bessctl/commands.py", line 698, in _run_file
    _do_run_file(cli, conf_file)
  File "/home/justine/bess/bessctl/commands.py", line 653, in _do_run_file
    ret = warn(cli, 'The current pipeline will be reset.', _clear_pipeline)
  File "/home/justine/bess/bessctl/commands.py", line 496, in warn
    func(cli, *args)
  File "/home/justine/bess/bessctl/commands.py", line 610, in _clear_pipeline
    cli.bess.reset_all()
  File "/home/justine/bess/bessctl/../libbess-python/bess.py", line 129, in reset_all
    return self._request('ResetAll')
  File "/home/justine/bess/bessctl/../libbess-python/bess.py", line 92, in _request
    response = req_fn(request)
  File "/usr/local/lib/python2.7/dist-packages/grpc/_channel.py", line 481, in __call__
    return _end_unary_response_blocking(state, False, deadline)
  File "/usr/local/lib/python2.7/dist-packages/grpc/_channel.py", line 432, in _end_unary_response_blocking
    raise _Rendezvous(state, None, None, deadline)
grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with (StatusCode.UNAVAILABLE, {"created":"@1484689968.104340248","description":"EOF","file":"src/core/lib/iomgr/tcp_posix.c","file_line":235,"grpc_status":14})>

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.