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

ExaBGP pick list, what is "TODO" #200

Closed
47 tasks
thomas-mangin opened this issue Dec 15, 2014 · 2 comments
Closed
47 tasks

ExaBGP pick list, what is "TODO" #200

thomas-mangin opened this issue Dec 15, 2014 · 2 comments

Comments

@thomas-mangin
Copy link
Member

thomas-mangin commented Dec 15, 2014

This is an unordered list of sub-project which would be beneficial for ExaBGP

Documentation

  • write some documentation
    • document the configuration format
      • document the various tricks of productivity (env vs ini, -d, --decode, etc.)
      • document adj-rib-in impact
      • document the environment variables
      • document the main configuration file
      • document the API ( process part of the configuration file ) as it changed many times
    • document the scalability of the code
      • report tested env ( max number of peers, number of updates per seconds, etc. )

Code Cleanup

  • IP.length and CIDR.size are mostly doing the same thing, keep one.
  • nexthop, location and api_* API improvement
  • INET, MPLS, PathInfo init make sure all the API are the same
  • rename many pack() to pack_attribute() and for other ton() - deprecate .string as API
  • Attributes / MultiAttributes API, should be Attribute, Attributes, like Capability, Capabilities
  • in protocol replace all the function with many returns and if/elif/else with dicts
  • look at and address all the XXX: and XXX: FIXME: in the code
  • separate API parsing code from the configuration
  • operational messages are handled with their own co-routine in the class Peer and have a message queue in the class Neighbour. It be generic mechanism, with a different queue per AFI/SAFI
  • class Prefix and MPLS code is mostly common code and should refactored to remove duplication
  • we create LOTS of try:except block in schedule() can we fix it and make the code faster ?
  • setup a convention Clean the way we use str, extensive(), string(). No code should rely on str
  • some of the match condition of flows currently take list or numeric tests, they should always take both, refactor (still true ?)
  • introduce a NotificationID class
  • peer.reload is a bad name. it should it be called something like peer.route_update
  • have a defined convention for the interface we use ( factory, etc. )
  • the TLV code in AIGP should be updated and used for Capabilities
  • improve networking code to be easier to follow, and using outside reactor
  • many of the initial classes are working with "parsed" value in the init for performance in many cases classes should be handling internally "raw" ( on wire format )
  • have changes in neighbor in one dict (and not two list like we have now with operational and routes )

Code Correctness

  • Have per message type options for negotiated, parsed, packets and consolidate ?
  • API write are blocking ATM
  • On configuration reload we do not detect changes in processes
  • warn if an as-path has the router ASN on an ibgp connection
  • let the forked process indicate when it has finished and do not kill it before then ?
  • next-hop is optional for flow but mandatory for other family, check that the presence/absence is in line with RFC

Performance

  • at the end of the configuration parsing clear the Community cache
  • compile configuration, save unportable state for fast re-load

New feature

@thomas-mangin
Copy link
Member Author

This list old items' get deleted.

@thomas-mangin
Copy link
Member Author

legacy.

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

No branches or pull requests

1 participant