inetstack
inetstack copied to clipboard
Demikernel's TCP/UDP Stack
Added support for building on Windows: 1. Changed makefile(s) 2. Used WinSock instead of libc for Windows
This PR changes the `TcpSegment` struct so that the `data` field is now `Option` instead of `Buffer`. This struct is used in issuing transmission requests to the runtime. Before this...
Currently, the TcpSegment structure has a "data" field of type Buffer, which is used to specify the packet payload data to be sent. This field is not optional, so even...
Description ======== The standard socket API normally accepts `INADDR_ANY` (the all-zeroes address) as the wildcard (or "unspecified") address, meaning it matches all addresses. We don't appear to currently support this....
Context -------- When processing incoming packets, we prioritize searching for a socket bound to a specific address rather than searching for a matching socket bound to the wildcard address `INADDR_ANY`:...
Description ======== First the good: catnip's Ephemeral Port allocator uses the correct (RFC 6335 designated) range. And it allocates them in a random fashion (recommended to thwart certain types of...
This is about code clarity. Currently, the stack has several structures referred to as "options" that are really configuration parameters. This can be confusing, as some protocols (particularly TCP) have...
The stack currently only supports a single network interface, which is expected to have a single MAC address and a single IPv4 address. Even if we decide we only care...
Description ======== Catnip uses the ~~`Ipv4Endpoint`~~ `SocketAddrV4` structure to refer to remote and local endpoints. While this is fine when supporting IPv4 addresses only, once we add support to IPv6...
Description ------------- In UDP, is currently packet oriented. That is, each slot in the receive queue is a UDP packet. https://github.com/demikernel/inetstack/blob/a7fa47d1d2f93c9475f5d6cbbb4dbf725cc4fdab/src/protocols/udp/peer.rs#L309-L333 Expected Behavior ------------------ The receive queue should be byte...