OpenFogStack / celestial

Virtual Software System Testbeds for the LEO Edge
https://openfogstack.github.io/celestial
GNU General Public License v3.0
42 stars 7 forks source link

A problem about routing #31

Closed ykxian closed 5 months ago

ykxian commented 5 months ago

Hi @pfandzelter , I noticed that the platform can query the shortest path between nodes, and the ping results indicate that the latency seems to match the calculated path delay. image However, after checking the code, it seems there is no routing implementation for this part, only inter-host routing. image How is the routing in Celestial implemented?

Thank you!

pfandzelter commented 5 months ago

Hi @ykxian, you can find the core of the update logic starting in pkg/orchestrator/orchestrator.go:208. There are methods for BlockLink, UnblockLink, SetLatency, and SetBandwidth, all pertaining to a link between to nodes (i.e., satellites). If you follow this through pkg/orchestrator/virt.go and pkg/virt, you will end up in our emulation backend, which currently is in pkg/ebpfem. Here the methods are implemented using our eBPF-based network emulation. Hope that helps!

ykxian commented 5 months ago

Hi @pfandzelter , thanks for your reply! What I meant to ask is whether the data is forwarded along the shortest path when using ping. If so, how is it implemented? It seems like the next-hop matrix isn't being used. This matrix is only used during queries.

image

These four methods are just for adjusting link connectivity, bandwidth, and latency, right? BlockLink, UnblockLink, SetLatency, and SetBandwidth

pfandzelter commented 5 months ago

That's right, the matrix is only used during queries to the info API. The normal routing uses simply the IP forwarding capabilities of the host. There is no further routing, every to microVMs connect directly to each other.

ykxian commented 5 months ago

Okay, I understand. Thank you!