You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+49-16Lines changed: 49 additions & 16 deletions
Original file line number
Diff line number
Diff line change
@@ -24,40 +24,53 @@ It integrates a VMM (Virtual Machine Monitor, the userspace side of an Hyperviso
24
24
25
25
* Become a generic VMM.
26
26
* Be compatible with all kinds of workloads.
27
-
* Provide the best possible performance.
28
27
29
-
## Device support
28
+
## Variants
30
29
31
-
### Virtio devices
30
+
This project provides two different variants of the library:
31
+
32
+
-**libkrun**: Generic variant compatible with all Virtualization-capable systems.
33
+
-**libkrun-sev**: Variant including support for AMD SEV (bare SEV and SEV-ES) memory encryption and remote attestation. Requires an SEV-capable CPU.
34
+
35
+
Each variant generates a dynamic library with a different name (and ```soname```), so both can be installed at the same time in the same system.
36
+
37
+
## Virtio device support
38
+
39
+
### All variants
32
40
33
41
* virtio-console
42
+
* virtio-vsock (specialized for TSI, Transparent Socket Impersonation)
43
+
44
+
### libkrun
45
+
34
46
* virtio-fs
35
-
* virtio-vsock
36
47
* virtio-balloon (only free-page reporting)
48
+
* virtior-rng
37
49
38
-
### Networking
50
+
### libkrun-sev
39
51
40
-
In ```libkrun```, networking is implemented using a novel technique called **socket-to-vsock impersonation**. This allows the VM to have network connectivity without a virtual interface (hence, ```virtio-net``` is not among the list of supported devices).
52
+
*virtio-block
41
53
42
-
The current implementation of this technique, found part in this repository and the other part in the kernel patches included with [libkrunfw](https://github.com/containers/libkrunfw) is just a **proof-of-concept**. It's limited to IPv4 TCP and UNIX connections, only supports recv/send operations, and the implementation itself is still quite hacky. We expect this technique to mature within ```libkrun```, so it can be eventually upstreamed into the Linux kernel and other VMMs.
54
+
## Networking
43
55
44
-
#### DNS resolutions issues
56
+
In ```libkrun```, networking is implemented using a novel technique called **Transparent Socket Impersonation**, or **TSI**. This allows the VM to have network connectivity without a virtual interface (hence, ```virtio-net``` is not among the list of supported devices).
45
57
46
-
As, by default, ```glibc``` will use UDP for DNS requests, which is not yet supported by the **socket-to-vsock impersonation** technique described above, name resolution will fail with the default configuration. To work around this, you need to add the following line to the ```/etc/resolv.conf``` of the root filesystem servicing the isolated process:
58
+
This technique supports both outgoing and incoming connections. It's possible for userspace applications running in the VM are able to transparently connect to endpoints outside the VM, and also receive connections from the outside to ports listening inside the VM.
47
59
48
-
```
49
-
options use-vc
50
-
```
60
+
### Limitations
61
+
62
+
**TSI** only supports impersonating AF_INET SOCK_DGRAM and SOCK_STREAM sockets. This implies it's not possible to communicate outside the VM with raw sockets.
While functional, ```libkrun``` is still in a **very early development stage**.
137
-
138
-
Our first priority now is **getting feedback from potential users of the library**, to build a Community around it that would **help us set the priorities and shape it** to be useful for them.
171
+
```libkrun``` has achieved maturity and starting version ```1.0.0``` the public API is guaranteed to be stable, following [SemVer](https://semver.org/).
0 commit comments