cmd-forwarder-vpp

command module
v1.14.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 25, 2024 License: Apache-2.0 Imports: 49 Imported by: 0

README

Build

Build cmd binary locally

You can build the locally by executing

go build ./...

Build Docker container

You can build the docker container by running:

docker build .

Usage

Environment config

  • NSM_NAME - Name of Endpoint
  • NSM_LABELS - Labels related to this forwarder-vpp instance
  • NSM_NSNAME - Name of Network Service to Register with Registry
  • NSM_CONNECT_TO - url to connect to
  • NSM_LISTEN_ON - url to listen on
  • NSM_MAX_TOKEN_LIFETIME - maximum lifetime of tokens
  • NSM_REGISTRY_CLIENT_POLICIES - paths to files and directories that contain registry client policies
  • NSM_LOG_LEVEL - Log level
  • NSM_DIAL_TIMEOUT - Timeout for the dial the next endpoint
  • NSM_OPEN_TELEMETRY_ENDPOINT - OpenTelemetry Collector Endpoint
  • NSM_METRICS_EXPORT_INTERVAL - interval between mertics exports
  • NSM_PPROF_ENABLED - is pprof enabled (default: "false")
  • NSM_PPROF_LISTEN_ON - pprof URL to ListenAndServe (default: "localhost:6060")
  • NSM_PROMETHEUS_LISTEN_ON - Prometheus URL to ListenAndServe (default: ":8081")
  • NSM_PROMETHEUS_SERVER_HEADER_TIMEOUT - sets the header timeout for the Prometheus metrics server (default: "5s")
  • NSM_TUNNEL_IP - IP to use for tunnels
  • NSM_VXLAN_PORT - VXLAN port to use
  • NSM_VPP_API_SOCKET - filename of socket to connect to existing VPP instance.
  • NSM_VPP_INIT - type of VPP initialization. Must be AF_XDP, AF_PACKET or NONE
  • NSM_VPP_INIT_PARAMS - Configuration file path containing VPP API parameters for initialization
  • NSM_VPP_MIN_OPERATION_TIMEOUT - minimum timeout for every vpp operation
  • NSM_RESOURCE_POLL_TIMEOUT - device plugin polling timeout
  • NSM_DEVICE_PLUGIN_PATH - path to the device plugin directory
  • NSM_POD_RESOURCES_PATH - path to the pod resources directory
  • NSM_DEVICE_SELECTOR_FILE - config file for device name to label matching
  • NSM_SRIOV_CONFIG_FILE - PCI resources config path
  • NSM_PCI_DEVICES_PATH - path to the PCI devices directory
  • NSM_PCI_DRIVERS_PATH - path to the PCI drivers directory
  • NSM_CGROUP_PATH - path to the host cgroup directory
  • NSM_VFIO_PATH - path to the host VFIO directory
  • NSM_MECHANISM_PRIORITY - sets priorities for mechanisms

Testing

Testing Docker container

Testing is run via a Docker container. To run testing run:

docker run --privileged --rm $(docker build -q --target test .)

Debugging

Debugging the tests

If you wish to debug the test code itself, that can be acheived by running:

docker run --privileged --rm -p 40000:40000 $(docker build -q --target debug .)

This will result in the tests running under dlv. Connecting your debugger to localhost:40000 will allow you to debug.

-p 40000:40000

forwards port 40000 in the container to localhost:40000 where you can attach with your debugger.

--target debug

Runs the debug target, which is just like the test target, but starts tests with dlv listening on port 40000 inside the container.

Debugging the cmd

When you run 'cmd' you will see an early line of output that tells you:

Setting env variable DLV_LISTEN_FORWARDER to a valid dlv '--listen' value will cause the dlv debugger to execute this binary and listen as directed.

If you follow those instructions when running the Docker container:

docker run --privileged -e DLV_LISTEN_FORWARDER=:50000 -p 50000:50000 --rm $(docker build -q --target test .)

-e DLV_LISTEN_FORWARDER=:50000 tells docker to set the environment variable DLV_LISTEN_FORWARDER to :50000 telling dlv to listen on port 50000.

-p 50000:50000 tells docker to forward port 50000 in the container to port 50000 in the host. From there, you can just connect dlv using your favorite IDE and debug cmd.

Debugging the tests and the cmd

docker run --privileged -e DLV_LISTEN_FORWARDER=:50000 -p 40000:40000 -p 50000:50000 --rm $(docker build -q --target debug .)

Please note, the tests start the cmd, so until you connect to port 40000 with your debugger and walk the tests through to the point of running cmd, you will not be able to attach a debugger on port 50000 to the cmd.

A Note on Running golangci-lint

Because cmd-forwarder-vpp is only anticipated to run in Linux, you will need to run golangci-lint run with:

GOOS=linux golangci-lint run

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal
config
Package config - contain environment variables used by cmd-forwarder-vpp
Package config - contain environment variables used by cmd-forwarder-vpp
devicecfg
Package devicecfg provides service domain to device config
Package devicecfg provides service domain to device config
imports
Package imports is used for generating list of imports to optimize use of docker build cache
Package imports is used for generating list of imports to optimize use of docker build cache
tests/ns
Package ns - simple NetworkServiceClient chain element that will change the nsNet of the client to ns before calling the next chain element and return it to its original netNS before returning
Package ns - simple NetworkServiceClient chain element that will change the nsNet of the client to ns before calling the next chain element and return it to its original netNS before returning
vppinit
Package vppinit contains initialization code for vpp
Package vppinit contains initialization code for vpp
xconnectns
Package xconnectns provides an endpoint implementing xconnectns
Package xconnectns provides an endpoint implementing xconnectns

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL