Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Re-work the routing layer #20

Open
5 of 6 tasks
magicnat opened this issue Jul 7, 2021 · 1 comment
Open
5 of 6 tasks

Re-work the routing layer #20

magicnat opened this issue Jul 7, 2021 · 1 comment
Assignees
Labels
breaking changes Breaking changes emulator Issues related to the SEED emulator enhancement New feature or request

Comments

@magicnat
Copy link
Member

magicnat commented Jul 7, 2021

The routing layer provides the base routing support for other routing protocol layers like OSPF and BGP. Currently, to put a network into the routing daemon's RIB, we use the addDirect call on the routing layer instance.

A better way to handle direct networks is to make direct an attribute of the network object. Instead of calling addDirect on every network, one can specify that they want the network to be added to RIB when doing as.createNetwork. (or maybe even default to direct unless the users set otherwise?)

This is a breaking change and being worked on on the routing-rework branch.

  • Remove addDirect from routing layer
  • Rework routing layer merger.
  • Add direct attribute to networks.
  • Rework AS::createNetwork
  • Remove addDirect calls from examples.
  • Rewrite READMEs from example: add note about direct in createNetwork of AS.
@magicnat magicnat added the enhancement New feature or request label Jul 7, 2021
@magicnat magicnat added this to the Public Release milestone Jul 7, 2021
@magicnat magicnat self-assigned this Jul 7, 2021
@magicnat magicnat added the breaking changes Breaking changes label Jul 7, 2021
@magicnat magicnat added the emulator Issues related to the SEED emulator label Jul 10, 2021
@amdfxlucas
Copy link
Contributor

amdfxlucas commented Feb 15, 2024

@kevin-w-du, @magicnat
In my opinion there is another reason, why the Routing Layer needs care.
There is no concept of a RoutingProvider yet.
The RoutingLayer uses the BIRD routing daemon but other layers such as MPLS or EVPN install FRRouting in addition to it, as BIRD seems to be very limited1, yet still let BIRD do the BGP routing, though FRR could easily take it, if I see it correctly.
Other people might for whatever reason prefer to use Quagga of XORP.
So SEED ought to support it just as i.e. the CORE simulator does.
The RoutingLayer could then just delegate everything to the chosen Provider.

Moreover the type of routers should be further distinguished, to tackle the problems that come with topologies.
Instead of one common 'rnode' type for all routers, I think there are really two different species:

  • ordinary 'rnode' - involved in intra-domain routing only, opaque from outside the AS
  • border-router 'brnode' - responsible for inter-domain routing in addition to also being a common 'rnode'
    It just makes no sense i.e. to install SCION border routers on all interior 'rnode's , regardless if they are sitting idle for the whole simulation and take up unnecessary space, just because this distinction isn't made at image build time.

Footnotes

  1. MPLS needs LDP which BIRD is lacking but also has it no support for neither PIM-SM nor MLD but i'd love to play with IP-Multicast in SEED.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
breaking changes Breaking changes emulator Issues related to the SEED emulator enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants