Homa icon indicating copy to clipboard operation
Homa copied to clipboard

More changes to enable Shenango integration.

Open yilongli opened this issue 5 years ago • 0 comments

The biggest challenge is to move away from the poll-based execution model previously embedded in the implementation. For example, Shenango can't afford to drive the execution of the transport by calling Transport::poll in a busy loop. Also, Shenango needs to allow users to block on a socket waiting for incoming messages.

Another refactoring that results in small code changes all over the place is the Driver::Packet interface. The old interface cannot prevent the driver from modifying the payload (e.g., prepend L3 headers). This will lead to corrupted message when the packet needs to be retransmitted.

List of major changes:

  • CHoma: provide C-bindings of the Homa APIs (Shenango is written in C)
  • Shenango: implement Shenango Driver, MailboxDir, and Mailbox
  • TransportPoller: extract poll-based execution model out of the Transport
  • SimpleMailboxDir: a simple reference implementation for Homa::MailboxDir
  • Driver::Packet: a new packet interface to eliminate the awkward PacketSpec; this is used to provide an immutable view of the packet to the transport (driver can prepend headers to the payload w/o affecting the transport)
  • Sender: add a couple of user-defined callbacks (Shenango currently relies on them to wake up blocking threads)
  • Finally, bring unit tests up-to-date.

yilongli avatar Oct 07 '20 05:10 yilongli