Giter VIP home page Giter VIP logo

freebsd-vpc's People

Contributors

gwydirsam avatar jen20 avatar sean- avatar stack72 avatar

Stargazers

 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

freebsd-vpc's Issues

bhyve provider for `packer`

  • Skeleton bhyve provider for Packer
  • Configure vpc(4) dynamically for packer builder
  • a. vpcsw
  • b. vpcp
  • c. vmnic
  • d. vpcnat
  • e. vpc vm run

`vpc_ctl(2)` `GET_FEATURES` meta operation

We need some way of querying vpc(4) to see what features are supported. I would suggest an extensible bit flag system, like:

n := vpc_ctl(..., GET_FEATURE_SIZE,...);
buf := [n]byte
n := vpc_ctl(..., GET_FEATURE_FLAGS, NULL, NULL, n, &buf);

Or something ascii where buf is a newline delimited list of features in the form of:

feature:switch.add=1
feature:switch.del=1
feature:vpcp.add=1

And this could just be a const char* in the kernel someplace.

Revise VPC IDs for Ports to match LLDP spec

It would be nice if the VPC ID for a Port ID mapped cleanly into LLDP TLVs.

Right now VPC IDs for vpcps are random and don't retain any mention of the Chassis ID. Unlike a vmnic, a vpcp belongs to a vpcsw and can not be moved between different vpcsw devices. A vpcp's VPC ID should therefore contain a hint of the parent vpcsw so that there is some semantic equivilance with hardware switches and discoverability via tools/protocols such as LLDP.

It's not high priority and it is unclear how to make this happen without using bits above the Node in a VPC ID.

https://en.wikipedia.org/wiki/Link_Layer_Discovery_Protocol

WTB the last 24bits or first 24bits of the UUID to match the Port ID TLV from LLDP.

https://www.juniper.net/documentation/en_US/junos/topics/reference/command-summary/show-lldp-neighbors-lldp-ex-series.html

`vagrant up` failures: first on "*jen20*/FreeBSD-12.0-CURRENT-VPC" private(?) box, then on "connect failed" in "compile" vm

First attempt after having installed the prereqs mentioned in the README.md:

[16:57:37 trentm@bluesteel:~/fase/freebsd-vpc (master t:coal)]
$ vagrant up
Bringing machine 'compile' up with 'vmware_fusion' provider...
==> compile: Box 'jen20/FreeBSD-12.0-CURRENT-VPC' could not be found. Attempting to find and install...
    compile: Box Provider: vmware_desktop, vmware_fusion, vmware_workstation
    compile: Box Version: >= 0
The box 'jen20/FreeBSD-12.0-CURRENT-VPC' could not be found or
could not be accessed in the remote catalog. If this is a private
box on HashiCorp's Vagrant Cloud, please verify you're logged in via
`vagrant login`. Also, please double-check the name. The expanded
URL and error message are shown below:

URL: ["https://vagrantcloud.com/jen20/FreeBSD-12.0-CURRENT-VPC"]
Error: The requested URL returned error: 404 Not Found

Had to apply this diff:

diff --git a/Vagrantfile b/Vagrantfile
index 02c7527..dc3f934 100644
--- a/Vagrantfile
+++ b/Vagrantfile
@@ -1,7 +1,7 @@
 # -*- mode: ruby -*-
 # vi: set ft=ruby :

-freebsd_box = 'jen20/FreeBSD-12.0-CURRENT-VPC'
+freebsd_box = 'joyent/FreeBSD-12.0-CURRENT-VPC'
 guest_disk_path = "#{File.dirname(__FILE__)}/vagrant/guest_disks"

Or should I have to "vagrant login" to get access to that image?

Second attempt:

[16:57:37 trentm@bluesteel:~/fase/freebsd-vpc (master t:coal)]
$ vagrant up
Bringing machine 'compile' up with 'vmware_fusion' provider...
==> compile: Box 'joyent/FreeBSD-12.0-CURRENT-VPC' could not be found. Attempting to find and install...
    compile: Box Provider: vmware_desktop, vmware_fusion, vmware_workstation
    compile: Box Version: >= 0
==> compile: Loading metadata for box 'joyent/FreeBSD-12.0-CURRENT-VPC'
    compile: URL: https://vagrantcloud.com/joyent/FreeBSD-12.0-CURRENT-VPC
==> compile: Adding box 'joyent/FreeBSD-12.0-CURRENT-VPC' (v0.1.0) for provider: vmware_desktop
    compile: Downloading: https://vagrantcloud.com/joyent/boxes/FreeBSD-12.0-CURRENT-VPC/versions/0.1.0/providers/vmware_desktop.box
==> compile: Successfully added box 'joyent/FreeBSD-12.0-CURRENT-VPC' (v0.1.0) for 'vmware_desktop'!
==> compile: Cloning VMware VM: 'joyent/FreeBSD-12.0-CURRENT-VPC'. This can take some time...
==> compile: Checking if box 'joyent/FreeBSD-12.0-CURRENT-VPC' is up to date...
==> compile: Verifying vmnet devices are healthy...
==> compile: Preparing network adapters...
==> compile: Starting the VMware VM...
==> compile: Waiting for the VM to receive an address...
==> compile: Forwarding ports...
    compile: -- 22 => 2222
==> compile: Waiting for machine to boot. This may take a few minutes...
    compile: SSH address: 127.0.0.1:2222
    compile: SSH username: vagrant
    compile: SSH auth method: private key
    compile:
    compile: Vagrant insecure key detected. Vagrant will automatically replace
    compile: this with a newly generated keypair for better security.
    compile:
    compile: Inserting generated public key within guest...
    compile: Removing insecure key from the guest if it's present...
    compile: Key inserted! Disconnecting and reconnecting using new SSH key...
==> compile: Machine booted and ready!
==> compile: Setting hostname...
==> compile: Configuring network adapters within the VM...
==> compile: Exporting NFS shared folders...
==> compile: Preparing to edit /etc/exports. Administrator privileges will be required...
Password:
The nfsd service does not appear to be running.
Starting the nfsd service
==> compile: Mounting NFS shared folders...
==> compile: Running provisioner: file...
==> compile: Running provisioner: file...
==> compile: Running provisioner: file...
==> compile: Running provisioner: shell...
    compile: Running: /var/folders/7n/tzb0b89x61d3bgkvd38468840000gq/T/vagrant-shell20180315-35921-56mwzz.sh
    compile: Updating FreeBSD repository catalogue...
    compile: FreeBSD repository is up to date.
    compile: All repositories are up to date.
    compile: Updating FreeBSD repository catalogue...
    compile: FreeBSD repository is up to date.
    compile: All repositories are up to date.
    compile: The following 16 package(s) will be affected (of 0 checked):
    compile:
    compile: New packages to be INSTALLED:
    compile: 	cockroach: 1.1.5
    compile: 	git: 2.16.2
    compile: 	vim-console: 8.0.1594
    compile: 	go: 1.10,1
    compile: 	bash: 4.4.19
    compile: 	tmux: 2.6_1
    compile: 	tree: 1.7.0
    compile: 	expat: 2.2.5
    compile: 	p5-Authen-SASL: 2.16_1
    compile: 	p5-GSSAPI: 0.28_1
    compile: 	p5-Digest-HMAC: 1.03_1
    compile: 	p5-Error: 0.17025
    compile: 	curl: 7.58.0_3
    compile: 	libnghttp2: 1.31.0
    compile: 	cvsps: 2.1_2
    compile: 	libevent: 2.1.8_1
    compile:
    compile: Number of packages to be installed: 16
    compile:
    compile: The process will require 413 MiB more space.
    compile: 80 MiB to be downloaded.
    compile: [1/16] Fetching cockroach-1.1.5.txz:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: . done
    compile: [2/16] Fetching git-2.16.2.txz:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: . done
    compile: [3/16] Fetching vim-console-8.0.1594.txz:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: . done
    compile: [4/16] Fetching go-1.10,1.txz:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: . done
    compile: [5/16] Fetching bash-4.4.19.txz:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: . done
    compile: [6/16] Fetching tmux-2.6_1.txz:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: . done
    compile: [7/16] Fetching tree-1.7.0.txz:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .. done
    compile: [8/16] Fetching expat-2.2.5.txz:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: . done
    compile: [9/16] Fetching p5-Authen-SASL-2.16_1.txz:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .. done
    compile: [10/16] Fetching p5-GSSAPI-0.28_1.txz:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .. done
    compile: [11/16] Fetching p5-Digest-HMAC-1.03_1.txz:
    compile: .. done
    compile: [12/16] Fetching p5-Error-0.17025.txz:
    compile: .
    compile: .
    compile: . done
    compile: [13/16] Fetching curl-7.58.0_3.txz:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: . done
    compile: [14/16] Fetching libnghttp2-1.31.0.txz:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: . done
    compile: [15/16] Fetching cvsps-2.1_2.txz:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: . done
    compile: [16/16] Fetching libevent-2.1.8_1.txz:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: . done
    compile: Checking integrity...
    compile:  done (0 conflicting)
    compile: [1/16] Installing p5-GSSAPI-0.28_1...
    compile: [1/16] Extracting p5-GSSAPI-0.28_1:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: . done
    compile: [2/16] Installing p5-Digest-HMAC-1.03_1...
    compile: [2/16] Extracting p5-Digest-HMAC-1.03_1:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .. done
    compile: [3/16] Installing libnghttp2-1.31.0...
    compile: [3/16] Extracting libnghttp2-1.31.0:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .. done
    compile: [4/16] Installing expat-2.2.5...
    compile: [4/16] Extracting expat-2.2.5:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .. done
    compile: [5/16] Installing p5-Authen-SASL-2.16_1...
    compile: [5/16] Extracting p5-Authen-SASL-2.16_1:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: . done
    compile: [6/16] Installing p5-Error-0.17025...
    compile: [6/16] Extracting p5-Error-0.17025:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .. done
    compile: [7/16] Installing curl-7.58.0_3...
    compile: [7/16] Extracting curl-7.58.0_3:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: . done
    compile: [8/16] Installing cvsps-2.1_2...
    compile: [8/16] Extracting cvsps-2.1_2:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .. done
    compile: [9/16] Installing libevent-2.1.8_1...
    compile: [9/16] Extracting libevent-2.1.8_1:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: . done
    compile: [10/16] Installing cockroach-1.1.5...
    compile: ===> Creating groups.
    compile: Creating group 'cockroach' with gid '771'.
    compile: ===> Creating users
    compile: Creating user 'cockroach' with uid '771'.
    compile: [10/16] Extracting cockroach-1.1.5:
    compile: .
    compile: .
    compile: .
    compile: .. done
    compile: [11/16] Installing git-2.16.2...
    compile: ===> Creating groups.
    compile: Creating group 'git_daemon' with gid '964'.
    compile: ===> Creating users
    compile: Creating user 'git_daemon' with uid '964'.
    compile: [11/16] Extracting git-2.16.2:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: . done
    compile: [12/16] Installing vim-console-8.0.1594...
    compile: [12/16] Extracting vim-console-8.0.1594:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: . done
    compile: [13/16] Installing go-1.10,1...
    compile: [13/16] Extracting go-1.10,1:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: . done
    compile: [14/16] Installing bash-4.4.19...
    compile: [14/16] Extracting bash-4.4.19:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: . done
    compile: [15/16] Installing tmux-2.6_1...
    compile: [15/16] Extracting tmux-2.6_1:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .. done
    compile: [16/16] Installing tree-1.7.0...
    compile: [16/16] Extracting tree-1.7.0:
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .
    compile: .. done
    compile: Message from cvsps-2.1_2:
    compile:
    compile: ===>   NOTICE:
    compile:
    compile: The cvsps port currently does not have a maintainer. As a result, it is
    compile: more likely to have unresolved issues, not be up-to-date, or even be removed in
    compile: the future. To volunteer to maintain this port, please create an issue at:
    compile:
    compile: https://bugs.freebsd.org/bugzilla
    compile:
    compile: More information about port maintainership is available at:
    compile:
    compile: https://www.freebsd.org/doc/en/articles/contributing/ports-contributing.html#maintain-port
    compile: Message from git-2.16.2:
    compile:
    compile: ------------------------------------------------------------------------
    compile: *************************** GITWEB *************************************
    compile: If you installed the GITWEB option please follow these instructions:
    compile:
    compile: In the directory /usr/local/share/examples/git/gitweb you can find all files to
    compile: make gitweb work as a public repository on the web.
    compile:
    compile: All you have to do to make gitweb work is:
    compile: 1) Copy the files /usr/local/share/examples/git/gitweb/* to a directory on
    compile:    your web server (e.g. Apache2) in which you are able to execute
    compile:    CGI-scripts.
    compile: 2) In gitweb.cgi, adjust the variable $projectroot to point to
    compile:    your git repository (that is where you have your *.git project
    compile:    directories).
    compile: *************************** GITWEB *************************************
    compile:
    compile: *************************** CONTRIB ************************************
    compile: If you installed the CONTRIB option please note that the scripts are
    compile: installed in /usr/local/share/git-core/contrib. Some of them require
    compile: other ports to be installed (perl, python, etc), which you may need to
    compile: install manually.
    compile: *************************** CONTRIB ************************************
    compile: ------------------------------------------------------------------------
    compile: chsh: user information updated
    compile: chsh: user information updated
==> compile: Running provisioner: shell...
    compile: Running: /var/folders/7n/tzb0b89x61d3bgkvd38468840000gq/T/vagrant-shell20180315-35921-1ehbxuu.sh
    compile: go get -u github.com/ahmetb/govvv
    compile: go get -u github.com/jteeuwen/go-bindata/...
    compile: go get -u github.com/golang/dep/cmd/dep
    compile: go get -u github.com/sean-/cfgt
    compile: go get -u github.com/hashicorp/packer
    compile: go get -u github.com/alecthomas/gometalinter
    compile: gometalinter --install
    compile: Installing:
    compile:   deadcode
    compile:   dupl
    compile:   errcheck
    compile:   gas
    compile:   goconst
    compile:   gocyclo
    compile:   goimports
    compile:   golint
    compile:   gosimple
    compile:   gotype
    compile:   gotypex
    compile:   ineffassign
    compile:   interfacer
    compile:   lll
    compile:   maligned
    compile:   megacheck
    compile:   misspell
    compile:   nakedret
    compile:   safesql
    compile:   staticcheck
    compile:   structcheck
    compile:   unconvert
    compile:   unparam
    compile:   unused
    compile:   varcheck
    compile:   vet
    compile: cd db/migrations &&  /opt/gopath/bin/go-bindata  -o bindata.go  -pkg migrations  -ignore '(~|\.bak)$'  -prefix crdb crdb/
    compile: mkdir -p ./bin
    compile: govvv build -ldflags "-X main.DocsDate=2018-02-28T23:59:59Z" -o bin/vpc ./cmd/vpc
    compile: bin/vpc shell autocomplete bash -d docs/bash.d/ | cat
    compile: {"level":"info","time":"2018-03-16T00:05:56.503745447Z","message":"Installation completed successfully."}
    compile: bin/vpc docs man | cat
    compile: {"level":"info","MANDIR":"./docs/man","section":8,"time":"2018-03-16T00:05:56.513141055Z","message":"Installing man(1) pages"}
    compile: {"level":"info","time":"2018-03-16T00:05:56.559302788Z","message":"Installation completed successfully."}
    compile: bin/vpc docs md | cat
    compile: {"level":"info","doc.markdown-dir":"./docs/md","time":"2018-03-16T00:05:56.567074725Z","message":"Installing markdown documentation"}
    compile: {"level":"info","time":"2018-03-16T00:05:56.596437675Z","message":"Installation completed successfully."}
    compile: {"level":"info","cmd":"migrate","time":"2018-03-16T00:05:56.603011974Z"}
    compile: {"level":"info","address":"172.27.10.11:26257","network":"tcp","time":"2018-03-16T00:05:56.614463150Z","message":"Dialing PostgreSQL server"}
    compile: {"level":"error","err":"dial tcp 172.27.10.11:26257: i/o timeout","time":"2018-03-16T00:06:06.638322607Z","message":"connect failed"}
    compile: {"level":"fatal","error":"unable to create a new DB connection pool: dial tcp 172.27.10.11:26257: i/o timeout","time":"2018-03-16T00:06:06.639594557Z","message":"unable to create database pool"}
The SSH command responded with a non-zero exit status. Vagrant
assumes that this means the command failed. The output for this command
should be in the log above. Please read the output to determine what
went wrong.

Given this I'm not sure what to do now:

$ vagrant up
Bringing machine 'compile' up with 'vmware_fusion' provider...
==> compile: Checking if box 'joyent/FreeBSD-12.0-CURRENT-VPC' is up to date...
==> compile: Machine is already running.


$ vagrant box list
joyent/FreeBSD-12.0-CURRENT-VPC (vmware_desktop, 0.1.0)

$ vagrant status
Creating disk 'cn1_guests.vmdk'
Virtual disk creation successful.
Creating disk 'cn2_guests.vmdk'
Virtual disk creation successful.
Current machine states:

compile                   running (vmware_fusion)
crdb1                     not created (vmware_fusion)
crdb2                     not created (vmware_fusion)
crdb3                     not created (vmware_fusion)
cn1                       not created (vmware_fusion)
cn2                       not created (vmware_fusion)

This environment represents multiple VMs. The VMs are all listed
above with their current state. For more information about a specific
VM, run `vagrant status NAME`.

Document the ability to spin up test VMs

  • 2 vCPU, 64GB, 1 dedicated disk
  • 2 vCPU, 8GB
  • 4 vCPU, 16GB
  • 8 vCPU, 32GB
  • 16 vCPU, 64GB
  • 14 vCPU, 64GB, 3 dedicated disks
  • 56 vCPU, 256GB, 12 dedicated disks
  • 10 vCPU 128GB, 1 GPU
  • 20 vCPU, 256GB, 2 GPU
  • 80 vCPU, 1TB, 8 GPU

VM metadata Service

  • mdata client
  • mdata server
  • Add user
  • Remove user
  • Lock user
  • Unlock user
  • Add user .ssh/authorized_key entry
  • Service discovery
  • Query instance tag
  • cmd support (i.e. provider-level doas/sudo) - optional and disabled by default
  • Route add
  • Route remove
  • Route list

how is "joyent/FreeBSD-12.0-CURRENT-VPC" built?

https://app.vagrantup.com/joyent/boxes/FreeBSD-12.0-CURRENT-VPC

How is that image built? Sean and Sam didn't know. For example, if (for starters) I wanted to update /home/vagrant/.profile like so:

[vagrant@freebsd-compile ~]$ diff -u .profile.bak .profile
--- .profile.bak	2018-03-16 18:51:59.288037000 +0000
+++ .profile	2018-03-16 18:49:45.273190000 +0000
@@ -29,4 +29,4 @@
 export GOPATH=/opt/gopath
 export PATH=$GOPATH/bin:$PATH

-cd /opt/gopath/src/github.com/sean-/vpc
+cd /opt/gopath/src/github.com/joyent/freebsd-vpc

How would I go about doing that and getting a new image?

Ensure guest queue count

In the guest we need to set the number of queues. On the CLI the command is:

ethtool -L enp0s6 combined <nqueues>

and you verify with:

ethtool -l enp0s6

On a memory-bound system this is the difference between 56Gbps for the guest and 65Gbps for the guest.

Tab-completion for VPC ID support

Tab completion already works, however it only works for verbs and argument names, not argument values. When tab completing a VPC ID, the UUID needs to be looked up and completed using a prefix search. i.e.

# vpc list -t vpcsw
 TYPE   ID                                    UNIT NAME 
 vpcsw  da64c3f3-095d-91e5-df01-5aabcfc52468  vpcsw0    

  TOTAL                   1                               
# vpc sw destroy --switch-id=da[tab]

Should work.

Debug `flow-id` for TX

flow-id is disabled atm. It's not required for the performance we're getting atm, but it would be good to figure out why we need to have this disabled.

Duplicate `vpcp` adds permissible in VPC switch

It is possible to re-add the same vpcp to a vpcsw. Both a vpcp needs to prevent reuse (pretty certain this is the case now) and the vpcsw needs to ensure uniqueness for all vpcps added to itself.

This issue can be closed if a vpcp can only be assigned to a vpcsw and can not be reused. At present vpcps are created by the vpcsw however this is going to be broken out so that a vpcp's lifecycle is independent of a vpcsw.

Add MPLSLink interface

This came up in conversation with someone at AsiaBSD who was interested in being able to use vpc(4) to participate in MPLS networks. I never thought about this before, but we could bridge between vpc(4) and MPLS networks using hosts that spanned the two encapsulation technologies in order to bridge VPC hosts across MPLS virtualized circuits.

I'm putting this on the back-burner as a really clever idea that someone else can implement.

Add regression testing for CI

When running CI testing, two or more hosts should be spun up and perform basic regression testing between the two hosts. Tests should include:

  • iperf benchmarking with low-watermark alarms
  • cat random-file | nc && md5 verification for stream integrity checking

Document external toolchain for building joyent/freebsd

/usr/src/.envrc:

export STRIP=/usr/local/bin/strip
export YACC=/usr/local/bin/yacc
export OBJCOPY=/usr/local/bin/objcopy
export NM=/usr/local/bin/nm
export LD=/usr/local/bin/ld.lld60
export CC=/usr/local/bin/clang60
export CXX=/usr/local/bin/clang++60
export CPP=/usr/local/bin/clang-cpp60
export CLANG_BOOTSTRAP=no
export KERNFAST=1
# export MAKEOBJDIRPREFIX=/usr/obj

export TARGET_ARCH=amd64
export TARGET=amd64
#export CROSS_TOOLCHAIN=amd64-gcc
export CROSS_TOOLCHAIN=llvm60

PSA: periodically it's required to build kernel with env -u KERNFAST make...

/etc/src.conf:

MK_ELFTOOLCHAIN_BOOSTRAP=no
MK_ELFTOOLCHAIN=no
WITH_EXTRA_TCP_STACKS=true
WITHOUT_AMD=true
WITHOUT_APM=true
WITHOUT_ATM=true
WITHOUT_AUDIT=true
WITHOUT_AUTOFS=true
WITHOUT_BINUTILS_BOOTSTRAP=true
WITHOUT_BINUTILS=true
WITHOUT_BLUETOOTH=true
WITHOUT_BSDINSTALL=true
WITHOUT_CLANG_BOOTSTRAP=true
WITHOUT_CLANG=true
WITHOUT_CTM=true
WITHOUT_ELFTOOLCHAIN_BOOTSTRAP=true
WITHOUT_FLOPPY=true
WITHOUT_FREEBSD_UPDATE=true
WITHOUT_FTP=true
WITHOUT_GAMES=true
#WITHOUT_GSSAPI=true
WITHOUT_HESIOD=true
WITHOUT_HYPERV=true
WITHOUT_INETD=true
WITHOUT_IPFILTER=true
WITHOUT_KERBEROS=true
WITHOUT_LIB32=true
WITHOUT_LLD_BOOTSTRAP=true
WITHOUT_LLD=true
WITHOUT_LLDB=true
WITHOUT_NDIS=true
WITHOUT_NIS=true
# Use net/chrony instead
#WITHOUT_NTP=false
WITHOUT_PF=true
WITHOUT_QUOTAS=true
WITHOUT_RBOOTD=true
# WITHOUT_RESCUE must be commented out, not set to false
#WITHOUT_RESCUE=true
WITHOUT_ROUTED=true
WITHOUT_SENDMAIL=true
WITHOUT_SVNLITE=true
WITHOUT_TESTS_SUPPORT=true
WITHOUT_TESTS=true
WITHOUT_TIMED=true
WITHOUT_TOOLCHAIN=true
WITHOUT_UNBOUND=true
WITHOUT_WIRELESS_SUPPORT=true
WITHOUT_WIRELESS=true

`vpc vtep` subcommand

VTEP support in vpc agent is a required prerequisite for vpclink(4).

  • integrate gcache
  • listen for v4/v6 ND packets via kqueue(2)
  • Parse ND packets
  • Resolve ND from CRDB
  • write through asdine/storm
  • vpc_ctl(2) write the results back to the kernel

`vpc` MVP

  • vpc vtep subcommand - #12
  • vpc vm create - #27
  • vpc vm run - #28
  • vpc vm destroy - #29
  • vpc vtep dump - debugging aid
  • vpc vm list
  • vmnic list - already possible with vpc list -t vmnic, wtb symmetric UX
  • vpcsw get using info from vpc_ctl(2)
  • vmnic set option: mac - currently inferred from VPC ID
  • vmnic set option: mtu - defaults to 1500
  • port connect interface - not currently expoesd
  • vpc vm list - wtb package that handles state of individual bhyve VMs
  • vpc vm get
  • vpc account list - list VNIs for each account
  • vpc account destroy
  • vpc subnet create - Adds a subnet to a vpcsw
  • vpc subnet list - Lists subnets on a given vpcsw
  • vpc subnet destroy - Removes a given subnet
  • vpc mux subcommand - #41
  • vpc hostlink subcommand - #40

There are more, but this was the identified critical path.

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.