Skip to content

Conversation

@dinosaure
Copy link
Member

/cc @palainp You might be interested in this prototype. At this stage, domain names can already be resolved via UDPv4 and TCPv4. However, Xen support is not yet available. TLS support is not complete, but this is a first attempt in which we no longer have bigarray allocated per packet!

@palainp
Copy link
Member

palainp commented Sep 30, 2025

Dear @dinosaure, thank you for this PR, I think I'll have hard time to figure out how big is the change from Ocaml4 to Ocaml5. With this PR, all is like we deal config.ml+unikernel.ml for a couple of dune files (do we need to write and maintain them manually?) and the need to write a lot of things by hand in resolver.ml.
To have TLS support, isn't possible to be in an in-between situation and use the same libraries as the current Ocaml4 code? (I have not followed the current evolution and only conducted some tests with monocore unikernelks and an up-to-date ocaml-solo5 repo).

@dinosaure
Copy link
Member Author

With this PR, all is like we deal config.ml+unikernel.ml for a couple of dune files (do we need to write and maintain them manually?) and the need to write a lot of things by hand in resolver.ml.

The biggest change in this PR is that there is no longer a unikernel manifest such as the config.ml. This means that:

  1. there are no longer any functors
  2. the code is, in fact, specialised to work with mkernel/mnet. But the goal is still to create a unikernel with Solo5 (Unikraft support is not yet fully complete).

I think there are quite a few meta questions you may have that are not necessarily related to this particular unikernel, which I would be happy to answer via other more direct channels (such as Matrix).

The main thing to remember is that this PR is a summary of the work done on utcp to avoid memory leaks as much as possible (via bigarrays), as we have already seen with mirage-tcpip (in addition, this PR no longer uses mirage-tcpip), see:

A README.md has been added to help you build the unikernel if you wish (which requires solo5-hvt).

To have TLS support, isn't possible to be in an in-between situation and use the same libraries as the current Ocaml4 code? (I have not followed the current evolution and only conducted some tests with monocore unikernelks and an up-to-date ocaml-solo5 repo).

TLS support from mnet is already operational, but its use in this unikernel is not yet complete. There are a few issues (currently, we ignore ICMP packets that warn us that port 853 is closed, which can cause the unikernel to run into a dead end when querying an external DNS server via TLS).

I think that in your case, Xen support may be the most important, and we could focus on that particular task together.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants