Skip to content

[Catpowder] Windows: support co-hosting of Demikernel when XDP is in use #1435

Open
@kyleholohan

Description

@kyleholohan

Context

Currently, the XDP programs created by catpowder will capture all traffic on the interface. This is not necessarily desirable, as it will prevent regular traffic from flowing through the Windows kernel data path. Additionally, the port allocation schema will not respect ports reserved by the kernel.

Proposed Solution

Restructure the Catpowder windows LibOS to rebind XDP rules when a socket is bound or connected. Scope the rules such that XDP only inspects traffic relevant to the protocol/port. Add a new port manager to the layer4 components to replace the ephemeral port allocation and port binding which will validate ports against kernel-allocated ports (e.g., but creating a WinSock socket and binding it) and reserve those ports for use by Demikernel (i.e., so that no other application can attempt to use them through the kernel networking stack)

Alternative Solutions

I have no idea whether this is supported by XDP for Windows, but in theory unneeded traffic could be re-injected to the driver stack for processing by the kernel.

Metadata

Metadata

Assignees

Labels

enhancementEnhancement Request on an Existing Feature

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions