Skip to content
New issue

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

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

Already on GitHub? # 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.

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

No branches or pull requests

1 participant