Add support for dynamic routing on ipv6 (ospfv3 and ripng) - #1577
Add support for dynamic routing on ipv6 (ospfv3 and ripng)#1577saba8814 wants to merge 4 commits into
Conversation
|
I'd like to initiate a discussion on the support for OSPF address-family leaf. Thus, I believe we should add a deviation for the address-family leaf which could either
Note: If we ever wish to support IPv4 over OSFPv3 (as of RFC5838 )that will impact flags in OSPF hello messages. Perhaps we should skip support for the leaf until add support for RFC5358, if ever. |
Great point @jovatn . |
Why Infix supported OSPFv2 and RIPv2 for IPv4 only. Dual-stack deployments need dynamic routing for IPv6 as well. This wires up FRR's ripngd and ospf6d behind the existing ietf-rip/ietf-ospf models so IPv6 routing is configured the same way as IPv4, over NETCONF/RESTCONF and the CLI. What to Expect - RIPng: mirror of the RIPv2 feature set on IPv6 (basic, passive interfaces, multi-hop, redistribution), driven through netd. - OSPFv3: address-family ipv6 with areas, NSSA/stub, interface types (broadcast, point-to-point, hybrid), cost/priority/timers, BFD, default-route advertisement and redistribution (incl. RIPng <-> OSPFv3). - Operational state via statd (show ipv6 ospf [neighbor|interface|route]) - Full test coverage for both protocols. Limitations - OSPFv3 requires an explicit-router-id (no IPv4 to derive one from). - ospf6d has no totally-NSSA, no default-cost, and no non-broadcast / static-neighbor interfaces; these are rejected/omitted accordingly. - OSPFv3 next-hops are IPv6 link-local, so paths are verified by traceroute rather than by RIB next-hop matching. Signed-off-by: Ejub Sabic <ejub1946@outlook.com>
Signed-off-by: Ejub Sabic <ejub1946@outlook.com>
368dd90 to
c0138a4
Compare
Agreed, deviate as not supported for now. |
Signed-off-by: Ejub Sabic <ejub1946@outlook.com>
Signed-off-by: Ejub Sabic <ejub1946@outlook.com>
|
|
||
| ### Differences from OSPFv2 | ||
|
|
||
| OSPFv3 runs on FRR's `ospf6d`, which does not implement every feature |
There was a problem hiding this comment.
Implementation detail, not for user facing documentation. Should describe what infix supoorts, not FRR.
| OSPFv3 runs on FRR's `ospf6d`, which does not implement every feature | ||
| available for OSPFv2: | ||
|
|
||
| - OSPFv3 carries IPv6 routes only; IPv4-over-OSPFv3 (RFC 5838) is not |
There was a problem hiding this comment.
This is good to mention though, deviations from standards.
| return yang_type; | ||
| } | ||
|
|
||
| static int parse_ospf6_interfaces(struct lyd_node *areas, FILE *fp) |
There was a problem hiding this comment.
Isnt this a duplication of the parse_ospf_interfaces?
| * point-to-multipoint. There is no NBMA/non-broadcast variant, so 'hybrid' | ||
| * maps to point-to-multipoint; non-broadcast is rejected by YANG for OSPFv3. | ||
| */ | ||
| static const char *ospf6_network_type(const char *yang_type) |
There was a problem hiding this comment.
Use ospf_network_type, unsupported types is rejected by YANG (stated above)
| return num_bfd_enabled; | ||
| } | ||
|
|
||
| static void parse_ospf6_redistribute(struct lyd_node *redistributes, FILE *fp) |
There was a problem hiding this comment.
Why not use parse_ospf_redistibute?
| if (rip->enabled) | ||
| DEBUG("Linux backend: RIP not supported without FRR"); | ||
| if (rip->enabled || ripng->enabled) | ||
| DEBUG("Linux backend: RIP/RIPng not supported without FRR"); |
There was a problem hiding this comment.
Change this to ERROR() instead.
| insert(control_protocols, "control-plane-protocol", [control_protocol]) | ||
|
|
||
|
|
||
| def ospf6_interface_type(op): |
| return xlate.get(op) | ||
|
|
||
|
|
||
| def add_routes6(ospf): |
| insert(ospf, "ietf-ospf:local-rib", "ietf-ospf:route", routes) | ||
|
|
||
|
|
||
| def add_areas6(control_protocols): |
There was a problem hiding this comment.
Only difference is ipv6 and ospfv3? or am I missing something?
| @@ -0,0 +1,236 @@ | |||
| #!/usr/bin/env python3 | |||
There was a problem hiding this comment.
Does this really need a new test? Isn't enought to add a parameter to ospf_basic?
There was a problem hiding this comment.
This goes for all tests below.
|
Great work, mostly remove code duplication and make the code more maintainable. |
Description
Checklist
Tick relevant boxes, this PR is-a or has-a: