LegoOS icon indicating copy to clipboard operation
LegoOS copied to clipboard

Replacing IB with Eth

Open sarsanaee opened this issue 5 years ago • 2 comments

Hello @lastweek

I'm interested to replace IB with Eth.

What I'm having in mind is to just support running Lego OS components on virtual machines separately and each of them talks to others using an Eth driver like e1000e and then throughout the virt-io in the host. For example in a 1P-1M-1S config we work like pcomponent -> eth -> virt-io -> host -> virt-io -> eth -> mem-component or storage-component

Do you think this is something we can achieve with some minimal implementation effort?

Thanks, Alireza

sarsanaee avatar Oct 22 '20 08:10 sarsanaee

Hi @sarsanaee ,

Thank you for your interest in LegoOS. The short answer to your question is Yes, we are able to replace IB with Eth and run that on top of qemu e1000.

The current repo has an e1000 driver, tested on QEMU.

To achieve the replacement, i have the following items in mind (it might not be complete):

  1. Add e1000 driver init function to the boot sequence, so that it could be loaded
  2. Test the socket interface on top of the e1000 driver (this is optional)
  3. Build a set of RPC interfaces (esp send_and_receive) on top of e1000 driver interfaces (or socket interface).
  4. Disable the IB polling threads.

The heavy-lifting part would be item 3. You can either build the RPC APIs on top of e1000 driver interface, or add a middle socket interface.

Please let me know how it goes.

lastweek avatar Oct 23 '20 21:10 lastweek

Hi @sarsanaee

After enabling e1000 driver, I think you could use socket directly via lwip (/net/lwip/api/sockets.c). I've tested this long time ago. So I can't guarantee that with the current master version it still works. But you can first try this instead of building your own network stack.

Yiying

yiying-zhang avatar Oct 23 '20 21:10 yiying-zhang