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

New bridge-domain-based L3 adjacencies model #8246

Draft
wants to merge 3 commits into
base: master
Choose a base branch
from
Draft

New bridge-domain-based L3 adjacencies model #8246

wants to merge 3 commits into from

Conversation

arifogel
Copy link
Member

Move to a more granular model with reified state functions associated with edges.

Major differences over old "new l3 adjacencies" algorithm:

  • add nodes for L2 interfaces instead of overloading physical interfaces
  • split L3 interface into bridged and non-bridged variants
  • support multiple tag-handling l2/l3 interfaces on the same physical interface
  • allow multiple bridge domains per node
  • use typed edges between nodes, where each edge contains a state function
  • restrict the type of operations that can be performed on each edge type

Other notable features:

  • disable each interface with subinterfaces that allow overlapping input tags
  • add modeling support for individual trunk interfaces attached to multiple bridge domains
  • Add InterfaceTopology to each interface encompassing tag-handling and bridging configuration
    • Must be populated prior by end of conversion
    • Add legacy helpers to populate interface topology for existing vendors
    • Replaces switchport/encapuslation settings as source of truth for behavior
      • Existing settings preserved as informational

Move to a more granular model with reified state functions associated with edges.

Major differences over old "new l3 adjacencies" algorithm:
- add nodes for L2 interfaces instead of overloading physical interfaces
- split L3 interface into bridged and non-bridged variants
- support multiple tag-handling l2/l3 interfaces on the same physical interface
- allow multiple bridge domains per node
- use typed edges between nodes, where each edge contains a state function
- restrict the type of operations that can be performed on each edge type

Other notable features:
- disable each interface with subinterfaces that allow overlapping input tags
- add modeling support for individual trunk interfaces attached to multiple bridge domains
- Add InterfaceTopology to each interface encompassing tag-handling and bridging configuration
  - Must be populated prior by end of conversion
  - Add legacy helpers to populate interface topology for existing vendors
  - Replaces switchport/encapuslation settings as source of truth for behavior
    - Existing settings preserved as informational
@batfish-bot
Copy link

This change is Reviewable

Copy link
Member Author

@arifogel arifogel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewable status: 0 of 131 files reviewed, 1 unresolved discussion (waiting on @anothermattbrown, @corinaminer, @dhalperi, and @sfraint)

a discussion (no related file):
self-merge only


@codecov
Copy link

codecov bot commented Apr 14, 2022

Codecov Report

Merging #8246 (fee4bb8) into master (82e76ec) will decrease coverage by 0.02%.
The diff coverage is 72.69%.

@@             Coverage Diff              @@
##             master    #8246      +/-   ##
============================================
- Coverage     74.57%   74.54%   -0.03%     
- Complexity    43706    44168     +462     
============================================
  Files          3403     3471      +68     
  Lines        169347   170965    +1618     
  Branches      20225    20441     +216     
============================================
+ Hits         126289   127447    +1158     
- Misses        33489    33812     +323     
- Partials       9569     9706     +137     
Impacted Files Coverage Δ
.../common/topology/bridge_domain/edge/L1HubToL1.java 0.00% <0.00%> (ø)
...idge_domain/edge/L2ToNonVlanAwareBridgeDomain.java 0.00% <0.00%> (ø)
...e_domain/edge/L2VniToNonVlanAwareBridgeDomain.java 0.00% <0.00%> (ø)
...idge_domain/edge/L3ToNonVlanAwareBridgeDomain.java 0.00% <0.00%> (ø)
...idge_domain/edge/NonVlanAwareBridgeDomainToL2.java 0.00% <0.00%> (ø)
...e_domain/edge/NonVlanAwareBridgeDomainToL2Vni.java 0.00% <0.00%> (ø)
...idge_domain/edge/NonVlanAwareBridgeDomainToL3.java 0.00% <0.00%> (ø)
...del/topology/Layer2NonVlanAwareBridgeSettings.java 0.00% <0.00%> (ø)
...del/topology/Layer3NonVlanAwareBridgeSettings.java 0.00% <0.00%> (ø)
...g/batfish/representation/mrv/MrvConfiguration.java 0.00% <0.00%> (ø)
... and 110 more

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

2 participants