-
Notifications
You must be signed in to change notification settings - Fork 659
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
OSPFv3 model #1257
base: master
Are you sure you want to change the base?
OSPFv3 model #1257
Conversation
/gcbrun |
No major YANG version changes in commit c254592 |
@cpeng90 please check the ygot and linter errors. For example, all To avoid duplicating leaves, can the openconfig-ospf-area-interface.yang submodule replace the existing ospfv2 area interface submodule? (openconfig-ospfv2-area-interface.yang). Then this new ospf-area-interface sub module can serve as a common submodule for both v2 and v3? (And then the additional v3 leaves would continue to appear in the v3 module you are adding here). I haven't looked super closely yet, but if this would still result in the same ospfv2 tree to be rendered, without any breaking changes, then this is a good idea I think. If there would be breaking changes to the ospv2 tree, please point out where those would be. We certainly do not want to make any breaking changes to ospfv2 (or really any changes at all). |
Adding tree view: + | +--rw ospfv3
+ | | +--rw global
+ | | | +--rw config
+ | | | | +--rw router-id? yang:dotted-quad
+ | | | | +--rw log-adjacency-changes? boolean
+ | | | | +--rw hide-transit-only-networks? boolean
+ | | | | +--rw abr-capability? identityref
+ | | | +--ro state
+ | | | | +--ro router-id? yang:dotted-quad
+ | | | | +--ro log-adjacency-changes? boolean
+ | | | | +--ro hide-transit-only-networks? boolean
+ | | | | +--ro abr-capability? identityref
+ | | | +--rw timers
+ | | | | +--rw spf
+ | | | | | +--rw config
+ | | | | | | +--rw initial-delay? uint32
+ | | | | | | +--rw maximum-delay? uint32
+ | | | | | +--ro state
+ | | | | | +--ro initial-delay? uint32
+ | | | | | +--ro maximum-delay? uint32
+ | | | | | +--ro timer-type? enumeration
+ | | | | +--rw max-metric
+ | | | | | +--rw config
+ | | | | | | +--rw set? boolean
+ | | | | | | +--rw timeout? uint64
+ | | | | | | +--rw include* identityref
+ | | | | | | +--rw trigger* identityref
+ | | | | | +--ro state
+ | | | | | +--ro set? boolean
+ | | | | | +--ro timeout? uint64
+ | | | | | +--ro include* identityref
+ | | | | | +--ro trigger* identityref
+ | | | | +--rw lsa-generation
+ | | | | +--rw config
+ | | | | | +--rw initial-delay? uint32
+ | | | | | +--rw maximum-delay? uint32
+ | | | | +--ro state
+ | | | | +--ro initial-delay? uint32
+ | | | | +--ro maximum-delay? uint32
+ | | | | +--ro timer-type? enumeration
+ | | | +--rw graceful-restart
+ | | | | +--rw config
+ | | | | | +--rw enabled? boolean
+ | | | | | +--rw helper-only? boolean
+ | | | | +--ro state
+ | | | | +--ro enabled? boolean
+ | | | | +--ro helper-only? boolean
+ | | | +--rw inter-area-propagation-policies
+ | | | +--rw inter-area-propagation-policy* [src-area dst-area]
+ | | | +--rw src-area -> ../config/src-area
+ | | | +--rw dst-area -> ../config/dst-area
+ | | | +--rw config
+ | | | | +--rw src-area? -> ../../../../../areas/area/identifier
+ | | | | +--rw dst-area? -> ../../../../../areas/area/identifier
+ | | | | +--rw import-policy* -> /oc-rpol:routing-policy/policy-definitions/policy-definition/name
+ | | | | +--rw default-import-policy? default-policy-type
+ | | | +--ro state
+ | | | +--ro src-area? -> ../../../../../areas/area/identifier
+ | | | +--ro dst-area? -> ../../../../../areas/area/identifier
+ | | | +--ro import-policy* -> /oc-rpol:routing-policy/policy-definitions/policy-definition/name
+ | | | +--ro default-import-policy? default-policy-type
+ | | +--rw areas
+ | | +--rw area* [identifier]
+ | | +--rw identifier -> ../config/identifier
+ | | +--rw config
+ | | | +--rw identifier? oc-ospf-types:ospf-area-identifier
+ | | | +--rw type? identityref
+ | | | +--rw stub-default-cost? uint32
+ | | | +--rw import-summaries? boolean
+ | | | +--rw address-ranges* [prefix]
+ | | | +--rw prefix -> ../config/prefix
+ | | | +--rw config
+ | | | | +--rw prefix? inet:ip-prefix
+ | | | | +--rw status? enumeration
+ | | | +--ro state
+ | | | +--ro prefix? inet:ip-prefix
+ | | | +--ro status? enumeration
+ | | +--ro state
+ | | | +--ro identifier? oc-ospf-types:ospf-area-identifier
+ | | | +--ro type? identityref
+ | | | +--ro stub-default-cost? uint32
+ | | | +--ro import-summaries? boolean
+ | | | +--ro address-ranges* [prefix]
+ | | | +--ro prefix -> ../config/prefix
+ | | | +--ro config
+ | | | | +--ro prefix? inet:ip-prefix
+ | | | | +--ro status? enumeration
+ | | | +--ro state
+ | | | +--ro prefix? inet:ip-prefix
+ | | | +--ro status? enumeration
+ | | +--rw interfaces
+ | | | +--rw interface* [id]
+ | | | +--rw id -> ../config/id
+ | | | +--rw config
+ | | | | +--rw id? string
+ | | | | +--rw network-type? identityref
+ | | | | +--rw priority? uint8
+ | | | | +--rw multi-area-adjacency-primary? boolean
+ | | | | +--rw authentication-type? string
+ | | | | +--rw metric? oc-ospf-types:ospf-metric
+ | | | | +--rw passive? boolean
+ | | | | +--rw hide-network? boolean
+ | | | | +--rw oc-ospfv3:instance-id? uint8
+ | | | | +--rw oc-ospfv3:interface-id? uint32
+ | | | +--ro state
+ | | | | +--ro id? string
+ | | | | +--ro network-type? identityref
+ | | | | +--ro priority? uint8
+ | | | | +--ro multi-area-adjacency-primary? boolean
+ | | | | +--ro authentication-type? string
+ | | | | +--ro metric? oc-ospf-types:ospf-metric
+ | | | | +--ro passive? boolean
+ | | | | +--ro hide-network? boolean
+ | | | | +--ro dr-router-id? yang:dotted-quad
+ | | | | +--ro dr-ip-address? inet:ip-address
+ | | | | +--ro bdr-router-id? yang:dotted-quad
+ | | | | +--ro bdr-ip-address? inet:ip-address
+ | | | | +--ro oc-ospfv3:instance-id? uint8
+ | | | | +--ro oc-ospfv3:interface-id? uint32
+ | | | +--rw interface-ref
+ | | | | +--rw config
+ | | | | | +--rw interface? -> /oc-if:interfaces/interface/name
+ | | | | | +--rw subinterface? -> /oc-if:interfaces/interface[oc-if:name=current()/../interface]/subinterfaces/subinterface/index
+ | | | | +--ro state
+ | | | | +--ro interface? -> /oc-if:interfaces/interface/name
+ | | | | +--ro subinterface? -> /oc-if:interfaces/interface[oc-if:name=current()/../interface]/subinterfaces/subinterface/index
+ | | | +--rw timers
+ | | | | +--rw config
+ | | | | | +--rw dead-interval? uint32
+ | | | | | +--rw hello-interval? uint32
+ | | | | | +--rw retransmission-interval? uint32
+ | | | | | +--rw interface-transmission-delay? uint32
+ | | | | +--ro state
+ | | | | +--ro dead-interval? uint32
+ | | | | +--ro hello-interval? uint32
+ | | | | +--ro retransmission-interval? uint32
+ | | | | +--ro interface-transmission-delay? uint32
+ | | | +--rw lsa-filter
+ | | | | +--rw config
+ | | | | | +--rw all? boolean
+ | | | | +--ro state
+ | | | | +--ro all? boolean
+ | | | +--rw static-neighbors
+ | | | | +--rw static-neighbor* [neighbor-ip-address]
+ | | | | +--rw neighbor-ip-address -> ../config/neighbor-ip-address
+ | | | | +--rw config
+ | | | | +--rw neighbor-ip-address? inet:ip-address
+ | | | | +--rw metric? oc-ospf-types:ospf-metric
+ | | | | +--rw poll-interval? uint16
+ | | | | +--rw priority? uint8
+ | | | +--ro neighbors
+ | | | | +--ro neighbor* [router-id]
+ | | | | +--ro router-id -> ../state/router-id
+ | | | | +--ro state
+ | | | | +--ro router-id? yang:dotted-quad
+ | | | | +--ro neighbor-ip-address? inet:ip-address
+ | | | | +--ro priority? uint8
+ | | | | +--ro dead-time? oc-types:timeticks64
+ | | | | +--ro dr-router-id? yang:dotted-quad
+ | | | | +--ro dr-ip-address? inet:ip-address
+ | | | | +--ro bdr-router-id? yang:dotted-quad
+ | | | | +--ro bdr-ip-address? inet:ip-address
+ | | | | +--ro optional-capabilities? yang:hex-string
+ | | | | +--ro last-established-time? oc-types:timeticks64
+ | | | | +--ro adjacency-state? identityref
+ | | | | +--ro state-changes? uint32
+ | | | | +--ro retransmission-queue-length? uint32
+ | | | +--rw enable-bfd
+ | | | +--rw config
+ | | | | +--rw enabled? boolean
+ | | | | +--rw desired-minimum-tx-interval? uint32
+ | | | | +--rw required-minimum-receive? uint32
+ | | | | +--rw detection-multiplier? uint8
+ | | | +--ro state
+ | | | +--ro enabled? boolean
+ | | | +--ro desired-minimum-tx-interval? uint32
+ | | | +--ro required-minimum-receive? uint32
+ | | | +--ro detection-multiplier? uint8
+ | | +--rw virtual-links
+ | | +--rw virtual-link* [remote-router-id]
+ | | +--rw remote-router-id -> ../config/remote-router-id
+ | | +--rw config
+ | | | +--rw remote-router-id? inet:ipv4-address-no-zone
+ | | +--ro state
+ | | +--ro remote-router-id? inet:ipv4-address-no-zone
+ | | +--ro router-id? yang:dotted-quad
+ | | +--ro neighbor-ip-address? inet:ip-address
+ | | +--ro priority? uint8
+ | | +--ro dead-time? oc-types:timeticks64
+ | | +--ro dr-router-id? yang:dotted-quad
+ | | +--ro dr-ip-address? inet:ip-address
+ | | +--ro bdr-router-id? yang:dotted-quad
+ | | +--ro bdr-ip-address? inet:ip-address
+ | | +--ro optional-capabilities? yang:hex-string
+ | | +--ro last-established-time? oc-types:timeticks64
+ | | +--ro adjacency-state? identityref
+ | | +--ro state-changes? uint32
+ | | +--ro retransmission-queue-length? uint32
|
/gcbrun |
Note, the ygot check failing appears to be a problem with the github check, not your model. We'll fix that soon. |
/gcbrun |
@dplore I am thinking we could break this into two steps. The first step is to get OSPFv3 model in. The second step is to migrate OSPFv2 model to the common one. Right now, the LSDB portion of the OSPFv2 model does not look right and needs quite a bit restructure. Some of the definitions in that model needs to be split as they only apply to OSPFv2. My initial plan is that after we merge this change, I will submit another to address OSPFv2 modeling. Please let me know your thoughts. |
2d80b49
to
5677018
Compare
|
/gcbrun |
There are some problems with the schema style to be OpenConfig compliant. See the github checks. I think the key issues are found in the OpenConfig linter check which reports:
|
For example, the inter-area-propagation-policies container has a proper list and key schema:
|
I don't object to this two step approach. It seems like a way to quickly add OSPF v3 and push the refactoring of OSPF v2 to a future PR. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please address the OC linter errors. Then we can complete the review
release/models/network-instance/openconfig-network-instance.yang
Outdated
Show resolved
Hide resolved
4012515
to
a2da241
Compare
Hi Darren, I made the change to address these issues. Please let me know if there is anything that needs to be updated. By the way, is there a command that I can run locally to check this kind of errors? |
/gcbrun |
1 similar comment
/gcbrun |
Hi, couple more checks are failing:
spec.yml build reachability check
⛔ submodule versions must match the belonging module's version |
|
Unlike OSPFv2, OSPFv3 uses IPsec as the only mechanism for authenticating protocol packets as described in RFC7166. The intention is to complete OSPFv3 definition defined in RFC5340 which removes authentication. RFC7166 could be a separate activity for SMEs in that domain. |
/gcbrun |
Done |
/gcbrun |
/gcbrun |
@@ -2,6 +2,8 @@ | |||
docs: | |||
- yang/ospf/openconfig-ospf-types.yang | |||
- yang/ospf/openconfig-ospfv2.yang | |||
- yang/ospf/openconfig-ospf.yang | |||
- yang/ospf/openconfig-ospfv3-area-interface.yang | |||
build: | |||
- yang/network-instance/openconfig-network-instance.yang | |||
- yang/policy/openconfig-routing-policy.yang |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
also add openconfig-ospfv3-area-interface.yang
here
(note error in the github checks:
⛔ .spec.yml build reachability check
openconfig-ospfv3-area-interface.yang: file not used by any .spec.yml build.)
Change Scope
This change defines a OSPFv3 Yang provisioning and operational model. The LS database definition and MPLS add-ons are out of the scope of this change.
The change is backward compatible.
Platform Implementations
[Note: Please provide at least two references to implementations which are relevant to the model changes proposed. Each implementation should be from separate organizations.].
[Note: If the feature being proposed is new - and something that is being
proposed as an enhancement to device functionality, it is sufficient to have
reviewers from the producers of two different implementations].