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

Add Pseudowire management in Zebra #724

Closed
wants to merge 7 commits into from

Conversation

bingen
Copy link
Member

@bingen bingen commented Jun 15, 2017

When Zebra receives a PW from ldpd, it tries to install it in kernel and
in case of failure notifies back to ldpd daemon and enqueues the PW for
retry.

The installation to kernel is not yet implemented as Linux kernel
doesn't have support for it yet. It will be done through a module hook,
so it can be outsourced to a remote dataplane.

Support for OpenBSD's pseudowires and Nexthop tracking for PWs are added too.

@NetDEF-CI
Copy link
Collaborator

Continous Integration Result: FAILED

See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-952/

This is a comment from an EXPERIMENTAL automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Get source and apply patch from patchwork: Successful

Building Stage: Failed

Fedora24 amd64 build: Successful
FreeBSD11 amd64 build: Successful
NetBSD7 amd64 build: Successful
Ubuntu1604 amd64 build: Successful
CentOS6 amd64 build: Successful
NetBSD6 amd64 build: Successful
FreeBSD9 amd64 build: Successful
CentOS7 amd64 build: Successful
Ubuntu1204 amd64 build: Successful
Debian8 amd64 build: Successful
FreeBSD10 amd64 build: Successful
Ubuntu1404 amd64 build: Successful
OmniOS amd64 build: Successful

OpenBSD60 amd64 build: Failed

Make failed for OpenBSD60 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-952/artifact/CI011BUILD/ErrorLog/log_make.txt)

  CC       zebra_mpls_openbsd.o
zebra_mpls_openbsd.c: In function 'kmpw_install':
zebra_mpls_openbsd.c:351: error: 'struct zebra_pw_t' has no member named 'pw_type'
zebra_mpls_openbsd.c:361: error: 'struct zebra_pw_t' has no member named 'pw_type'
zebra_mpls_openbsd.c: In function 'pw_change_openbsd':
zebra_mpls_openbsd.c:430: error: 'PW_SET' undeclared (first use in this function)
zebra_mpls_openbsd.c:430: error: (Each undeclared identifier is reported only once
zebra_mpls_openbsd.c:430: error: for each function it appears in.)
*** Error 1 in zebra (Makefile:746 'zebra_mpls_openbsd.o': @echo "  CC      " zebra_mpls_openbsd.o;gcc -std=gnu99 -DHAVE_CONFIG_H -DSYSCONFD...)

OpenBSD60 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-952/artifact/CI011BUILD/config.status/config.status

@NetDEF-CI
Copy link
Collaborator

Continous Integration Result: FAILED

See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-964/

This is a comment from an EXPERIMENTAL automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Get source and apply patch from patchwork: Successful

Building Stage: Failed

FreeBSD10 amd64 build: Successful
Ubuntu1404 amd64 build: Successful
Debian8 amd64 build: Successful
FreeBSD11 amd64 build: Successful
OmniOS amd64 build: Successful
CentOS6 amd64 build: Successful
NetBSD6 amd64 build: Successful
NetBSD7 amd64 build: Successful
FreeBSD9 amd64 build: Successful
CentOS7 amd64 build: Successful
Ubuntu1604 amd64 build: Successful
Ubuntu1204 amd64 build: Successful
Fedora24 amd64 build: Successful

OpenBSD60 amd64 build: Failed

Make failed for OpenBSD60 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-964/artifact/CI011BUILD/ErrorLog/log_make.txt)

  CC       zebra_mpls_openbsd.o
zebra_mpls_openbsd.c: In function 'kmpw_install':
zebra_mpls_openbsd.c:351: error: 'struct zebra_pw_t' has no member named 'pw_type'
zebra_mpls_openbsd.c:361: error: 'struct zebra_pw_t' has no member named 'pw_type'
zebra_mpls_openbsd.c: In function 'pw_change_openbsd':
zebra_mpls_openbsd.c:430: error: 'PW_SET' undeclared (first use in this function)
zebra_mpls_openbsd.c:430: error: (Each undeclared identifier is reported only once
zebra_mpls_openbsd.c:430: error: for each function it appears in.)
*** Error 1 in zebra (Makefile:746 'zebra_mpls_openbsd.o': @echo "  CC      " zebra_mpls_openbsd.o;gcc -std=gnu99 -DHAVE_CONFIG_H -DSYSCONFD...)

OpenBSD60 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-964/artifact/CI011BUILD/config.status/config.status

ßingen and others added 2 commits June 16, 2017 14:28
When Zebra receives a PW from ldpd, it tries to install it in kernel and
in case of failure notifies back to ldpd daemon and enqueues the PW for
retry.

The installation to kernel is not yet implemented as Linux kernel
doesn't have support for it yet. It will be done through a module hook,
so it can be outsourced to a remote dataplane.

Signed-off-by: ßingen <[email protected]>
Signed-off-by: Renato Westphal <[email protected]>
Implicit-null labels are never installed in the FIB but we need to keep
track of them because of L2/L3 VPNs nexthop resolution.

Signed-off-by: Renato Westphal <[email protected]>
@NetDEF-CI
Copy link
Collaborator

Continous Integration Result: FAILED

See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-965/

This is a comment from an EXPERIMENTAL automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Get source and apply patch from patchwork: Successful

Building Stage: Failed

Ubuntu1404 amd64 build: Successful
Ubuntu1604 amd64 build: Successful
FreeBSD11 amd64 build: Successful
Debian8 amd64 build: Successful
NetBSD6 amd64 build: Successful
CentOS7 amd64 build: Successful
OmniOS amd64 build: Successful
CentOS6 amd64 build: Successful
NetBSD7 amd64 build: Successful
FreeBSD10 amd64 build: Successful
FreeBSD9 amd64 build: Successful
Fedora24 amd64 build: Successful
Ubuntu1204 amd64 build: Successful

OpenBSD60 amd64 build: Failed

Make failed for OpenBSD60 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-965/artifact/CI011BUILD/ErrorLog/log_make.txt)

  CC       zebra_mpls_openbsd.o
zebra_mpls_openbsd.c: In function 'kmpw_install':
zebra_mpls_openbsd.c:351: error: 'struct zebra_pw_t' has no member named 'pw_type'
zebra_mpls_openbsd.c:361: error: 'struct zebra_pw_t' has no member named 'pw_type'
zebra_mpls_openbsd.c: In function 'pw_change_openbsd':
zebra_mpls_openbsd.c:430: error: 'PW_SET' undeclared (first use in this function)
zebra_mpls_openbsd.c:430: error: (Each undeclared identifier is reported only once
zebra_mpls_openbsd.c:430: error: for each function it appears in.)
*** Error 1 in zebra (Makefile:746 'zebra_mpls_openbsd.o': @echo "  CC      " zebra_mpls_openbsd.o;gcc -std=gnu99 -DHAVE_CONFIG_H -DSYSCONFD...)

OpenBSD60 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-965/artifact/CI011BUILD/config.status/config.status

@NetDEF-CI
Copy link
Collaborator

Continous Integration Result: FAILED

See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-966/

This is a comment from an EXPERIMENTAL automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Get source and apply patch from patchwork: Successful

Building Stage: Failed

Ubuntu1404 amd64 build: Successful
Ubuntu1604 amd64 build: Successful
FreeBSD11 amd64 build: Successful
CentOS6 amd64 build: Successful
Debian8 amd64 build: Successful
NetBSD6 amd64 build: Successful
FreeBSD9 amd64 build: Successful
CentOS7 amd64 build: Successful
OmniOS amd64 build: Successful
Ubuntu1204 amd64 build: Successful
NetBSD7 amd64 build: Successful
FreeBSD10 amd64 build: Successful
Fedora24 amd64 build: Successful

OpenBSD60 amd64 build: Failed

Make failed for OpenBSD60 amd64 build:
(see full make log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-966/artifact/CI011BUILD/ErrorLog/log_make.txt)

  CC       zebra_mpls_openbsd.o
zebra_mpls_openbsd.c: In function 'pw_change_openbsd':
zebra_mpls_openbsd.c:430: error: 'PW_SET' undeclared (first use in this function)
zebra_mpls_openbsd.c:430: error: (Each undeclared identifier is reported only once
zebra_mpls_openbsd.c:430: error: for each function it appears in.)
*** Error 1 in zebra (Makefile:746 'zebra_mpls_openbsd.o': @echo "  CC      " zebra_mpls_openbsd.o;gcc -std=gnu99 -DHAVE_CONFIG_H -DSYSCONFD...)
*** Error 1 in . (Makefile:516 'all-recursive')
*** Error 1 in /home/ci/cibuild.966/frr-source (Makefile:421 'all')

OpenBSD60 amd64 build: config.status output from configure script can be found at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-966/artifact/CI011BUILD/config.status/config.status

rwestphal and others added 4 commits June 16, 2017 16:40
It doesn't make sense to set RIB_ENTRY_NEXTHOPS_CHANGED outside
zebra_rib.c because this flag is always cleared and reevaluated in the
rib_process() function.

With that said, define a new flag to indicate that the MPLS labels
of a nexthop have been changed. Then translate this flag into
RIB_ENTRY_NEXTHOPS_CHANGED in the nexthop_active_update() function.

This allows the NHT code to detect when labels are added/removed from
a nexthop and notify its clients accordingly.

Signed-off-by: Renato Westphal <[email protected]>
Nexthop tracking allows ldpd to ensure that the nexthop of a pseudowire
resolves into an MPLS LSP and only then activate it. Also, whenever the
nexthop resolution for a pseudowire changes, check if it needs to be
updated/installed/uninstalled in the kernel/hardware.

Signed-off-by: Renato Westphal <[email protected]>
@NetDEF-CI
Copy link
Collaborator

Continous Integration Result: FAILED

See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-968/

This is a comment from an EXPERIMENTAL automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Get source and apply patch from patchwork: Successful

Building Stage: Successful

Basic Tests: Failed

IPv4 ldp protocol on Ubuntu 16.04: Successful
Static analyzer (clang): Successful
Debian 8 deb pkg check: Successful
Addresssanitizer topotest: Successful
IPv4 protocols on Ubuntu 14.04: Successful
IPv6 protocols on Ubuntu 14.04: Successful

Topology tests on Ubuntu 16.04 amd64: Failed

Topology Test Results are at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-TOPOU1604-968/test

Topology Tests failed for Topology tests on Ubuntu 16.04 amd64
see full log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-968/artifact/TOPOU1604/ErrorLog/log_topotests.txt

Topology Tests memoy analysis: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-968/artifact/TOPOU1604/MemoryLeaks/

CLANG Static Analyzer Summary

  • Github Pull Request 724, comparing to Git base SHA 93f855c

No Changes in Static Analysis warnings compared to base

132 Static Analyzer issues remaining.

See details at
https://ci1.netdef.org/browse/FRR-FRRPULLREQ-968/artifact/shared/static_analysis/index.html

@NetDEF-CI
Copy link
Collaborator

Continous Integration Result: FAILED

See below for issues.
CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-971/

This is a comment from an EXPERIMENTAL automated CI system.
For questions and feedback in regards to this CI system, please feel free to email
Martin Winter - mwinter (at) opensourcerouting.org.

Get source and apply patch from patchwork: Successful

Building Stage: Successful

Basic Tests: Failed

Static analyzer (clang): Successful
Debian 8 deb pkg check: Successful
Addresssanitizer topotest: Successful
IPv4 protocols on Ubuntu 14.04: Successful
IPv6 protocols on Ubuntu 14.04: Successful
IPv4 ldp protocol on Ubuntu 16.04: Successful

Topology tests on Ubuntu 16.04 amd64: Failed

Topology Test Results are at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-TOPOU1604-971/test

Topology Tests failed for Topology tests on Ubuntu 16.04 amd64
see full log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-971/artifact/TOPOU1604/ErrorLog/log_topotests.txt

Topology Tests memoy analysis: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-971/artifact/TOPOU1604/MemoryLeaks/

CLANG Static Analyzer Summary

  • Github Pull Request 724, comparing to Git base SHA 93f855c

No Changes in Static Analysis warnings compared to base

132 Static Analyzer issues remaining.

See details at
https://ci1.netdef.org/browse/FRR-FRRPULLREQ-971/artifact/shared/static_analysis/index.html

@donaldsharp donaldsharp requested a review from rwestphal June 20, 2017 15:42
@mwinter-osr
Copy link
Member

Based on discussion Renato had with Bingen, Bingen is expected to send new PR to replace this one

@bingen
Copy link
Member Author

bingen commented Jul 7, 2017

Replaced by #783

@bingen bingen closed this Jul 7, 2017
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.

4 participants