Giter VIP home page Giter VIP logo

Comments (1)

apratimmukherjee avatar apratimmukherjee commented on August 21, 2024

Discussion on adding new attributes in ero object of RSVP-TE tunnel :

Currently the ERO object in a RSVP tunnel has following attributes:
prepend_neighbor_ip -> Default : dont_prepend ; optional
prefix_length -> applicable only if prepend_neighbor_ip is 'prepend' : optional
array of subjobjects with type / hop_type and as_number or ipv4_address + prefix_length , applicability depending on type.

With auto mode, we need to at minimum add a choice whether ero is manual ( default : where user provides contents of ERO ) or new auto mode where ERO is calculated based on IGP TE learned information ( auto : non-default mode )
i.e. if choice = manual (default) , existing fields should continue to behave as earlier.
prepend_neighbor_ip -> Default : don_prepend ; optional
prefix_length -> applicable only if prepend_neighbor_ip is 'prepend'
array of subjobjects with type / hop_type and as_number or ipv4_address + prefix_length , applicability depending on type.
if choice = auto ( user specifies as non-default )
All the above fields prepend_neighbor_ip , prefix_length and subobjects are no longer applicable
Few 'auto' attributes additional control attributes planned to be added later with more specific user controls
e.g. tie-break criterion ( max-bandwidth / min-bandwith /random )

Design choices

  A) Handle via documentation and behavior : 
        prepend_neighbor_ip , prefix_length and subobjects -> Add documentation that these fields are applicable only if choice = 'manual' 
        Advantage : Backward compatible.
        ero.choice = 'manual/auto'
        ero.prepend_neighbor_ip , ero.prefix_length and ero.subobjects  -> Stays as is and documentation added to indicate applicability only for manual mode.
        ero.auto.tie_break (future) and other fields added for addition control of ERO in auto mode. 
        ero.auto.other_attrib (future)

  B) Group  current attributes inside a 'manual' -> Breaks backward compability . Little more obvious which parameters are for which mode. 
        ero.choice = 'manual/auto'
        ero.manual.prepend_neighbor_ip
        ero.manual.prefix_length
        ero.manual.subobjects  
        ero.auto.tie_break ( future) 
        ero.auto.other_attrib (future)

  C) Keeping both existing attributes and add new attributes to provide deprecation.
        ero.choice = 'manual/auto'
        ero.manual.prepend_neighbor_ip
        ero.manual.prefix_length
        ero.manual.subobjects  
        ero.prepend_neighbor_ip  ( deprecated) 
        ero.ero.prefix_length (deprecated) 
        ero.subobjects  (deprecated) 
        ero.auto.tie_break ( future) 
        ero.auto.other_attrib (future)
        Only if ero.manual optional object is missing and mode is set to manual then only the deprecated elements 
        ero.prepend_neighbor_ip  , ero.prefix_length  and ero.subobjects  will be used to create the manual ERO.
        Remove the three deprecated attributes in future OTG version after couple of sprints after initial release with new OTG with auto mode support for ERO.         

As of now, the PR reflects option A) .

from models.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.