tcpip

OCaml TCP/IP networking stack, used in MirageOS
README

mirage-tcpip provides a networking stack for the Mirage operating
system
. It provides implementations for the following module types
(which correspond with the similarly-named protocols):

  • IP (via the IPv4 and IPv6 modules)

  • ICMP

  • UDP

  • TCP

Implementations

There are two implementations of the IP, ICMP, UDP, and TCP module types -
the socket stack, and the direct stack.

The socket stack

The socket stack uses socket calls to a traditional operating system to
provide the functionality described in the module types.

See the src/stack-unix/ directory for the modules used as implementations of the
socket stack.

The socket stack is used for testing or other applications which do not
expect to run as unikernels.

The direct stack

The direct stack expects to write to a device implementing the NETIF module
type defined for MirageOS.

See the src/ directory for the modules used as implementations of the
direct stack, which is the expected stack for most MirageOS applications.

The direct stack is the only usable set of implementations for
applications which will run as unikernels on a hypervisor target.

Community

License

mirage-tcpip is distributed under the ISC license.

Install
Published
21 Jul 2021
Maintainers
Sources
tcpip-v6.2.0.tbz
sha256=d0f6e643ce04da808d5f977c5ab2422cdb4f67e7abdc46dd6776ceada7151e1b
sha512=538ac43ef232a6836c290a71b529d9805c11814968f07d392117ce5ec1a97ab498917c73fdba0d2432cf4d24d4751bd1eddadbb1035d1d40d324c7524b309d37
Dependencies
lru
>= "0.3.0"
arp
with-test & >= "2.3.0"
mirage-random-test
with-test & >= "0.1.0"
mirage-clock-unix
with-test & >= "3.0.0"
pcap-format
with-test
alcotest
with-test & >= "0.7.0"
mirage-vnetif
with-test & >= "0.5.0"
mirage-flow
with-test & >= "2.0.0"
ethernet
>= "2.0.0" & < "3.0.0"
logs
>= "0.6.0"
lwt
>= "4.0.0"
fmt
>= "0.8.0"
macaddr
>= "4.0.0"
ipaddr
>= "5.0.0"
mirage-time
>= "2.0.0"
mirage-protocols
>= "5.0.0" & < "6.0.0"
mirage-stack
>= "2.2.0" & < "4.0.0"
mirage-random
>= "2.0.0"
mirage-clock
>= "3.0.0"
mirage-net
>= "3.0.0"
cstruct
>= "3.2.0" & < "6.1.0"
rresult
>= "0.5.0"
ocaml
>= "4.06.0"
bisect_ppx
dev & >= "2.5.0"
dune
>= "2.7.0"
Reverse Dependencies
arp
< "0.2.0"
capnp-rpc-mirage
>= "0.3.2" & < "0.6.0" | >= "0.9.0" & < "1.2.2"
charrua
>= "1.2.2" & < "1.5.0"
charrua-client
>= "1.4.0" & < "1.5.0"
charrua-client-lwt
>= "0.11.1" & < "0.12.0"
charrua-client-mirage
>= "0.11.1" & < "0.12.0"
charrua-core
>= "0.11.2"
charrua-server
>= "1.4.0" & < "1.5.0"
charrua-unix
>= "1.4.0" & < "1.5.0"
conduit
= "0.10.0"
conduit-mirage
>= "2.3.0" & < "5.1.0"
frenetic
>= "5.0.0" & < "5.0.5"
git-unix
>= "3.0.0" & < "3.7.0"
mirage-conduit
>= "2.0.0" & < "2.2.0"
mirage-dns
< "2.6.0"
mirage-nat
>= "2.2.3" & < "2.2.5"
mirage-qubes-ipv4
>= "0.8.3" & < "0.9.2"
mirage-www
>= "1.1.0"
packet
>= "0.4.0"
paf
< "0.0.8"
vpnkit
>= "0.1.1"