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

Add basic BIER elements #397

Open
wants to merge 12 commits into
base: main
Choose a base branch
from
Open

Add basic BIER elements #397

wants to merge 12 commits into from

Conversation

nrybowski
Copy link

@nrybowski nrybowski commented Oct 1, 2024

This PR adds basic elements for BIER packets processing.

First, it adds the Bier Forwarding Table (BIFT) which is implemented as the IPv6 forwarding table. That is, Fastclick is extended with a 'biertable' that defines the basic operations on the BIFT. The 'bierroutetable' element defines handlers allowing external interactions and the 'lookupbiertable' is the element representing the BIFT.

Second, two simple filtering elements are added, (i) 'checkbierheader' that verifies the header of a BIER packet and (ii) 'checkbierin6header' that filters IPv6 packet to detect BIERin6 encapsulated BIER packets.

TODO

  • Batch routes addition
  • Allow routes suppression via handler
  • Add elements documentation
  • (Support Bitstring length greater than 256 bits)
  • Implement BIER forwarding

@tbarbette
Copy link
Owner

Well, everything seems good and 'standard' to me so far.

@nrybowski
Copy link
Author

Thanks for the review! I will open the PR for merge once I have a functional BIER data-plane.

@tbarbette
Copy link
Owner

One thing you can also do is add a few tests (see the tests folder). So you're sure elements behave as expected. The easiest is probably to use some FromIPSum.* (look at other examples) so you can easily add some payload and verify what you get. Unit testing is done through specific Test element in elements/tests. For such a big project it's generally a good idea.

This commit adds basic elements for BIER packets processing.

First, it adds the Bier Forwarding Table (BIFT) which is implemented as the IPv6 forwarding table.
That is, Fastclick is extended with a 'biertable' that defines the basic operations on the BIFT.
The 'bierroutetable' element defines handlers allowing external interactions and the
'lookupbiertable' is the element representing the BIFT.

Second, two simple filtering elements are added, (i) 'checkbierheader' that verifies the header of
a BIER packet and (ii) 'checkbierin6header' that filters IPv6 packet to detect BIERin6 encapsulated
BIER packets.
@nrybowski
Copy link
Author

Rebase on 91a3454.

@nrybowski nrybowski marked this pull request as ready for review October 31, 2024 17:59
@nrybowski
Copy link
Author

I will add some tests in subsequent commits but in the current state of the PR, the BIFT is correctly populated by the holo control-plane and the duplication as well as the forwarding works as expected on a simple test topology.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants