Skip to content

Releases: mirage/mirage-tcpip

Limit TCP MSS

14 May 19:15
Compare
Choose a tag to compare
  • impose a maximum TCP MSS of 1460 to avoid sending over-large datagrams on 1500 MTU links
    (#309, by @hannesm)

Parsing fixes, lwt 2.7.0+ compat

14 May 10:26
Compare
Choose a tag to compare

MTU + bugfixes

14 Mar 15:22
Compare
Choose a tag to compare
  • implement MTU setting and querying in the Ethernet module (compatibility with mirage-protocols version 1.1.0), and use this value to inform TCP's MSS. (#288, by @djs55)
  • rename the ~payload argument of TCP/UDP marshallers to ~payload_len, in an attempt to clarify that the payload will not be copied to the Cstruct.t returned by these functions (#301, by @talex5)
  • functorize ipv6 over a random implementation (#298, by @olleolleolle and @hannesm)
  • add tests for sending and receiving UDP packets over IPv6 (#300, by @mattgray)
  • avoid float in TCP RTO calculations. (#295, by @olleolleolle and @mattgray)
  • numerous bugfixes in header marshallers and unmarshallers (#301, by @talex5 and @yomimono)
  • replace polymorphic equality in _packet.equals functions (#302, by @yomimono)

MirageOS 3 + many improvements

24 Jan 16:15
Compare
Choose a tag to compare
  • adapt to MirageOS 3 API changes (many PRs, from @hannesm, @samoht, and @yomimono):
    • replace error polyvars in many functions with result types
    • define and use error types
    • connect in various modules now returns the device directly or raises an exception
    • refer to mirage-protocols and mirage-stacks, rather than mirage-types
  • remove DHCP module. Users may be interested in the replacement charrua-core (#260, by @yomimono)
  • the Ethernet layer now uses source and destination, the IP layer uses src and dst, and the TCP and UDP layers use src_port and dst_port consistently. TCP.get_dest, for getting an IP and port from a given flow, has been replaced by TCP.dst. (#214 by @yomimono)
  • if no UDP source port is given to UDP.write, choose a random one (#272, by @hannesm)
  • remove exceptions Ipv4.Routing.No_route_to_destination_address exception and Tcp.Refused
  • Ipv6.connect takes a list of IPs (#268, by @yomimono)
  • move Ipv4 to Static_ipv4, which can be used by other IPv4 modules with their own configuration logic (#260, by @yomimono)
  • remove mode from STACKV4 record and configuration; Ipv4.connect now requires address parameters and the module exposes no methods for modifying them. (#260, by @yomimono)
  • remove unused id types no longer required by mirage-types (#255, by @yomimono)
  • overhaul how random is used and handled (#254 and others, by @hannesm)
  • fix redundant memset that zeroed out options in Tcp_packet.Marshal.into_cstruct (#250, by @balrajsingh)
  • add vnetif backend for triggering fast retransmit in iperf tests (#248, by @MagnusS)
  • fixes for incorrect timer values (#247, by @balrajsingh)
  • add vnetif backend that drops packets with no payload (#246, by @MagnusS)
  • fix a race when closing test pcap files (#246, by @MagnusS)

Better TCP fast-retransmission

12 Sep 19:21
Compare
Choose a tag to compare
  • Set the TCP congestion window correctly when going into fast-recovery mode. (#244, by @balrajsingh)
  • When TCP packet loss is discovered by timeout, allow transition into fast-recovery mode. (#244, by @balrajsingh)

Independent ICMP

06 Apr 12:16
Compare
Choose a tag to compare
  • Provide an implementation for the ICMPV4 module type defined in mirage-types 2.8.0. Remove default ICMP handling from the IPv4 module, but preserve it in tcpip-stack-direct. (#195 by @yomimono)
  • Explicitly require the use of an OCaml compiler >= 4.02.3 . (#195 by @yomimono)
  • Explicitly depend on result. (#195 by @yomimono)

Lots of fixes, better tests, no more camlp4 dependency

22 Mar 14:32
Compare
Choose a tag to compare

Expose IPv4 exception and add optional arguments to the connect functions

15 Sep 15:19
Compare
Choose a tag to compare
  • Add optional arguments for settings in ip v6 and v4 connects (#170, by @Drup)
  • Expose Ipv4.Routing.No_route_to_destination_address (#166, by @yomimono)

Better ARP

30 Jul 16:41
Compare
Choose a tag to compare
  • ARP now handles ARP frames, not Ethernet frames with ARP payload
    (#164, by @hannesm)
  • Check length of received ethernet frame to avoid cstruct exceptions
    (#117, by @hannesm)
  • Pull arpv4 module out of ipv4. Also add unit-tests for the newly created
    ARP library (#155, by @yomimono)

Fix regression which causes slow-downs on packet loss, close connection cleanly and extract the channels out

07 Jul 10:57
Compare
Choose a tag to compare
  • Fix regression introduced in 2.5.0 where packet loss could lead to the
    connection to become very slow (#157, MagnusS, @talex5, @yomimono and
    @balrajsingh)
  • Improve the tests: more logging, more tracing and compile to native code when
    available, etc (@MagnusS and @talex5)
  • Do not raise Invalid_argument("Lwt.wakeup_result") everytime a connection
    is closed. Also now pass the raised exceptions to Lwt.async_exception_hook
    instead of ignoring them transparently, so the user can decide to shutdown
    its application if something wrong happens (#153, #156, @yomomino and @talex5)
  • The channel library now lives in a separate repository and is released
    separately (#159, @samoht)