package tcpip

  1. Overview
  2. Docs

Description

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

Tags

org:mirage

Published: 27 Mar 2024

README

mirage-tcpip - an OCaml TCP/IP networking stack

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.

Dependencies (25)

  1. cmdliner >= "1.1.0"
  2. metrics
  3. lru >= "0.3.0"
  4. macaddr-cstruct
  5. ipaddr-cstruct
  6. mirage-flow >= "4.0.0"
  7. arp >= "3.0.0"
  8. ethernet >= "3.0.0"
  9. randomconv < "0.2.0"
  10. duration
  11. logs >= "0.6.0"
  12. lwt-dllist
  13. lwt >= "4.0.0"
  14. fmt >= "0.8.7"
  15. macaddr-cstruct
  16. macaddr >= "4.0.0"
  17. ipaddr >= "5.0.0"
  18. mirage-time >= "2.0.0"
  19. mirage-random >= "2.0.0" & < "4.0.0"
  20. mirage-clock >= "3.0.0"
  21. mirage-net >= "3.0.0"
  22. cstruct-lwt
  23. cstruct >= "6.0.0"
  24. ocaml >= "4.08.0"
  25. dune >= "2.7.0"

Dev Dependencies (6)

  1. mirage-random-test with-test & >= "0.1.0"
  2. mirage-clock-unix with-test & >= "3.0.0"
  3. pcap-format with-test
  4. alcotest with-test & >= "1.5.0"
  5. mirage-vnetif with-test & >= "0.5.0" & < "0.6.1"
  6. bisect_ppx dev & >= "2.5.0"

Used by (46)

  1. arp < "0.2.0"
  2. caldav
  3. capnp-rpc-mirage >= "0.3.2" & < "0.6.0" | >= "0.9.0" & < "1.1" | >= "1.2.2"
  4. caqti-mirage < "2.1.2"
  5. charrua >= "1.5.0"
  6. charrua-client >= "1.4.0"
  7. charrua-client-lwt >= "0.11.1" & < "0.12.0"
  8. charrua-client-mirage >= "0.11.1" & < "0.12.0"
  9. charrua-core >= "0.11.2"
  10. charrua-server >= "1.4.0"
  11. charrua-unix >= "1.4.0"
  12. conduit = "0.10.0"
  13. conduit-mirage >= "2.3.0"
  14. dkim-mirage >= "0.4.0"
  15. dns-certify >= "6.1.3" & < "9.0.0"
  16. dns-client >= "6.1.3" & < "7.0.0"
  17. dns-client-mirage < "9.0.0"
  18. dns-mirage >= "6.1.3" & < "9.0.0"
  19. dns-resolver >= "6.1.3" & < "9.0.0"
  20. dns-server >= "6.1.3" & < "9.0.0"
  21. dns-stub >= "6.1.3" & < "9.0.0"
  22. frenetic >= "5.0.0" & < "5.0.5"
  23. git-mirage >= "3.7.0"
  24. git-paf >= "3.7.0"
  25. git-unix >= "3.0.0"
  26. happy-eyeballs-mirage >= "0.1.2"
  27. http-mirage-client
  28. letsencrypt-mirage
  29. mehari-lwt-unix
  30. mehari-mirage
  31. mirage-conduit >= "2.0.0" & < "2.2.0"
  32. mirage-dns < "2.6.0"
  33. mirage-monitoring
  34. mirage-nat = "2.2.4" | >= "3.0.2"
  35. mirage-protocols >= "8.0.0"
  36. mirage-qubes-ipv4 >= "0.8.3" & < "0.10.0"
  37. mirage-vnetif-stack >= "0.6.1"
  38. mirage-www >= "1.1.0"
  39. packet >= "0.4.0"
  40. paf
  41. paf-cohttp
  42. paf-le >= "0.0.8"
  43. pgx_lwt_mirage >= "2.1"
  44. spoke
  45. tftp
  46. vpnkit >= "0.1.1"

Conflicts (3)

  1. result < "1.5"
  2. ocaml-freestanding
  3. mirage-xen < "6.0.0"
OCaml

Innovation. Community. Security.