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

Documentation #29

Closed
wants to merge 100 commits into from
Closed

Documentation #29

wants to merge 100 commits into from

Conversation

density215
Copy link
Member

Add Documentation for Rotonda

  • README.md with the briefest description of what this is. modeled after Routinator's.
  • ROADMAP.md with the per-repo TODO list and priorities.
  • The actual Documentation for readthedocs

README.md Outdated Show resolved Hide resolved
density215 and others added 24 commits October 9, 2023 11:31
- Update to latest roto for peer id and route status update support.
- Refactor all rib related code to rib.rs.
- Rename Rib to PhysicalRib and move common setup code inside.
- Store TypeValue in RIB items, not RawRouteWithDelta.
- Rename RouteWithUserDefinedHash to PreHashedTypeValue.
- Use new roto support to pre-compute keys for items stored in the RibValue HashSet and use a default key that assumes the stored type is a route, for now.
- Mark withdrawn routes as withdrawn on MergeUpdate of a withdraw to the rib.
- Added initial tests of RIB MergeUpdate behaviour.
…fix withdrawals on peer down.

- Now encodes IPv6 withdrawals correctly per RFC 4760 MP_UNREACH_NLRI, instead of putting IPv6 withdrawals in the RFC 4271 IPv4 withdrawals list.
- Extends the test suite and test utils to test this case.
- Skips creating an empty BGP UPDATE if there are no prefixes to withdraw.
…ary and so Cargo.lock is valid to store (as per Rust guidelines).
…ls on peer down, in case the simple test util code we use generates a bad BGP UPDATE message that fails to parse.
…the BGP UPDATE message when withdrawing routes on peer down.
… large. We need to encode these properly or use a different internal type than a BGP UPDATE message, but this is an improvement for now.
ximon18 and others added 25 commits October 9, 2023 11:52
(cherry picked from commit facf8fe)
- For filtering on BMP message properties, pass the official `BmpMessage` Roto type to the Roto VM instead of the Roto record based and limited `BmpMsg` type that was used as a placeholder while `BmpMessage` didn't yet exist.

- Actually set the Gate name used by earlier commit cdf1aaf.

- Re-work support for Roto output messages:
  - Centralize Roto exec result processing of rx_tx, tx and/or output-stream outputs.
    - Also centralize Roto filtering in general. Adds new Filterable trait and impl for Payload.
    - Replace the 'bmp-pre-filter' unit by 'roto-filter' and generalize and rename the 'roto-filter' to just 'filter'.
    - Log unexpected message types received by units/targets.
    - Counting
  - Use TypeValue::OutputStreamMessage instead of adding Update::OutputStreamMessage.
  - Follow upstream roto crate change to not included name and topic in the message record.
  - Remove custom roto filtering support from the 'bmp-in' unit, instead do 'bmp-tcp-in' -> 'filter' -> 'bmp-in'.
  - Restrict the MQTT target to handling ONLY output stream messages.

- Use the new Roto BmpMessage support everywhere:
  - Use TypeValue::Builtin(BuiltinTypeValue::BmpMessage) instead of Payload::RawBmp.
  - Payload values are now only and always TypeValue, no special cases.
  - Replace RawBmp::router_addr with a more general Payload::SourceId.
  - Generalize EoF notification to downstream units/targets via new Update::UpstreamStatusChange and removal of BMP
    specific eof related Payload helper methods.

- Other:
  - Refactor RibUnitRunner to reduce the number of variables passed around and use &self more instead.

- Known issues:
  - A replacement for RawBmp::received is missing.
  - Counting of filtered messages is missing.

- Update rotonda.conf to describe the new output stream and roto filtering capabilities and note which types components handle and how.
Centralize roto script compilation, use a more structured approach to error handling, and avoid repeated failing attempts to compile the same script over and over again and each time dumping the verbose compilation error to the logs.
The `peer_up_peer_down()` test already covers this case.
* Use the new BGP update builder to synthesize withdrawals ala how the new BGP input unit does it.
* Synthetic BGP withdrawals should have the Withdrawn status.
* Test that synthesized BMP withdrawals correctly span multiple BGP UPDATE messages.
* Factor out common synthetic withdrawal generation code.
* Update to latest commit on the routecore compose-messages-nlri-v2 branch.
Document the bgp-tcp-in unit settings, and cleanup dangling footnotes, fix typos and make various improvements to the config file text and structure.
…run async fn from within sync closure from within async fn...
Co-authored-by: Alex Band <alex@nlnetlabs.nl>
@density215 density215 requested review from AlexanderBand and removed request for DRiKE and AlexanderBand October 9, 2023 21:11
@density215 density215 closed this Oct 11, 2023
@density215 density215 deleted the documentation branch December 8, 2023 13:58
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.

None yet

4 participants