Skip to content

Consider adding --device virtio-net,type=unixgram for krunkit compatibility #352

@nirs

Description

@nirs

krunkit added new way to work with unix datagram socket:
containers/krunkit#63

--device virtio-net,type=unixgram,path=/path/to/socket.sock,mac=...,offloading=on,vfkitMagic=on

This device creates the same configuration as:

--device virtio-net,unixSocketPath=/path/to/socket.sock,mac=...

But unlike unixSocketPath it

  • supports multiple devices
  • does not enable offloading by default (7 times faster host-to-vm performance with vment-helper)
  • does not send the vfkit magic (VFKT) by default (not needed with vmnet-helper)

krunkit supports also other types like:

--device virtio-net,type=unixstream,path=/path/to/socket.sock,mac=...

This is required to use passt or socket_vment.

For vfkit type=unixstream is not relevant since the virtualization framework supports only unix datagram socket, but type=unixgrram is matches.

The offloading option is not relevant to vfkit since the virtualization framework does not have a way to enable offloading and using makes performance much worse.

The vfkitMagic flag makes sense since it is needed only for gvproxy and can be removed in future version of gvproxy.

Adding similar configuration will make it easier to use vfkit and krunkit.

Suggested change

krunkit compatible device:

--device virtio-net,type=unixgram,path=/path/to/socket.sock,mac=...,vfkitMagic=on

device without optional configuration (not compatible with krunkit):

--device virtio-net,path=/path/to/socket.sock,mac=...
  • nat: guest network traffic will be NAT'ed through the host. This is the default
  • path: path to unix datagram socket, alias of unixSocketPath
  • fd: unix datagram socket file descriptor
  • mac: mac address
  • 'type: (Optional) the only option is unixgram`, mainly for compatibility with krunkit when using path= and fd= options.
  • vfkitMagic: (Optional) send vfkit magic packet (needed for gvproxy)

Internally no change is needed except making the vfkit magic packet optional.

Issues:

  • type does not make sense for the nat option.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

Status

Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions