This is amazing work. Most people don’t realize how much effort and depth there is behind writing a TCP/IP stack and plugging it into xv6 with virtio-net and sockets. Huge respect for making it public. Projects like this are gold for those of us who love low-level systems.
Thank you so much for the kind words! It really means a lot, especially from someone who understands the effort involved. I'm thrilled that it's resonating with fellow low-level systems fans.
Awesome work! Thank you for showing it to the world!
I've considered writing a network stack myself. It's much more complex than most people can imagine. We have great tooling for TCP and that makes people believe it's simple technology. It's not.
Thank you! I completely agree, the complexity is definitely hidden by modern tools and abstractions. It's a challenging but rewarding project. You should give it a try, it's a fantastic way to learn!
Are you using any RISC-V extensions? If so, which? I couldn't find this information on the xv6 project page.
It would be cool if you could run this project in bare metal.
Thanks for asking! It's compiled with -march=rv64g, so it uses the standard general-purpose extensions (IMAFD) and doesn't rely on anything exotic. Running it on bare metal is definitely a challenge I'd like to try someday! For now, the virtio-net driver is tightly coupled with QEMU, so a different network driver would be needed for specific hardware.
This is amazing work. Most people don’t realize how much effort and depth there is behind writing a TCP/IP stack and plugging it into xv6 with virtio-net and sockets. Huge respect for making it public. Projects like this are gold for those of us who love low-level systems.
Thank you so much for the kind words! It really means a lot, especially from someone who understands the effort involved. I'm thrilled that it's resonating with fellow low-level systems fans.
Awesome work! Thank you for showing it to the world!
I've considered writing a network stack myself. It's much more complex than most people can imagine. We have great tooling for TCP and that makes people believe it's simple technology. It's not.
Thank you! I completely agree, the complexity is definitely hidden by modern tools and abstractions. It's a challenging but rewarding project. You should give it a try, it's a fantastic way to learn!
Well done. I am actually solving the labs rn. I am on mmap, trying to get fork to work :)
Thank you! And good luck with the labs, they're a great learning experience.
Are you using any RISC-V extensions? If so, which? I couldn't find this information on the xv6 project page. It would be cool if you could run this project in bare metal.
Thanks for asking! It's compiled with -march=rv64g, so it uses the standard general-purpose extensions (IMAFD) and doesn't rely on anything exotic. Running it on bare metal is definitely a challenge I'd like to try someday! For now, the virtio-net driver is tightly coupled with QEMU, so a different network driver would be needed for specific hardware.
Well done! Thank you for sharing
Thank you for checking it out!
The readme implies that UDP is included. Is that true?
Yes, that's correct! Both TCP and UDP are implemented. There's a udpecho server included as a sample application you can use to test it out.