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

ospf6d: Fix External routes ECMP #1566

Merged
merged 1 commit into from
Jan 18, 2018
Merged

Conversation

chiragshah6
Copy link
Member

Handle RFC 2328 16.4 Calculating AS external routes with ECMP

For ASBR (External type-1 type-2) route, if it is learn via new LSA and contains
different next-hop list. First lookup route in ospf6 route table
if it exists, merge next-hop list to existing and call the callback
to install into FIB (zebra). Delete created new route as it is
identical to existing entry in route table.

Store sorted next-hops in route list.

During route delete ensure if there are multiple equal cost paths only delete path and its next-hop list and update zebra.

Ticket:CM-16139
Testing Done:
Run two ASBR with 2 ECMP paths from each
DUT neighbor receievs 4 ECMP path to a external route.
ospf6 installs all 4 ECMP path to FIB/RIB

Signed-off-by: Chirag Shah chirag@cumulusnetworks.com

@LabN-CI
Copy link
Collaborator

LabN-CI commented Dec 19, 2017

💚 Basic BGPD CI results: SUCCESS, 0 tests failed

Results table
_ _
Result SUCCESS git merge/1566 99e3379
Date 12/19/2017
Start 00:40:09
Finish 01:03:23
Run-Time 23:14
Total 1805
Pass 1805
Fail 0
Valgrind-Errors 0
Valgrind-Loss 0
Details vncregress-2017-12-19-00:40:09.txt
Log autoscript-2017-12-19-00:40:57.log.bz2

For details, please contact louberger

@NetDEF-CI
Copy link
Collaborator

Continuous Integration Result: FAILED

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

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

CentOS 6 rpm pkg check: Successful
Static analyzer (clang): Successful
Ubuntu 12.04 deb pkg check: Successful
IPv6 protocols on Ubuntu 14.04: Successful
Ubuntu 16.04 deb pkg check: Successful
IPv4 ldp protocol on Ubuntu 16.04: Successful
Ubuntu 14.04 deb pkg check: Successful
CentOS 7 rpm pkg check: Successful
Addresssanitizer topotest: Successful
Debian 8 deb pkg check: Successful
IPv4 protocols on Ubuntu 14.04: Successful
Fedora 24 rpm pkg check: Successful
Debian 9 deb pkg check: Successful

Topology tests on Ubuntu 16.04 amd64: Failed

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

Topology Tests failed for Topology tests on Ubuntu 16.04 amd64:

2017-12-18 22:05:29,489 ERROR: assert failed at "test_ospf_topo1/test_ospf6_convergence": OSPF6 did not converge on r4:
  --- Current output
  +++ Expected output
  @@ -5,6 +5,7 @@
   *N IE 2001:db8:3::/64 fe80::xxxx:xxxx:xxxx:xxxx r4-eth0 
    N E1 2001:db8:3::/64 fe80::xxxx:xxxx:xxxx:xxxx r4-eth0 
    N E1 2001:db8:3::/64 fe80::xxxx:xxxx:xxxx:xxxx r4-eth0 
  + N E1 2001:db8:3::/64 fe80::xxxx:xxxx:xxxx:xxxx r4-eth0 
   *N IE 2001:db8:100::/64 fe80::xxxx:xxxx:xxxx:xxxx r4-eth0 
    N E1 2001:db8:100::/64 fe80::xxxx:xxxx:xxxx:xxxx r4-eth0 
   *N IA 2001:db8:200::/64 :: r4-eth0 
assert False

see full log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2207/artifact/TOPOU1604/ErrorLog/log_topotests.txt

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

CLANG Static Analyzer Summary

  • Github Pull Request 1566, comparing to Git base SHA acf43be

New warnings:

Static Analysis warning summary compared to base:

  • Fixed warnings: 0
  • New warnings: 2

23 Static Analyzer issues remaining.

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

@qlyoung
Copy link
Member

qlyoung commented Dec 20, 2017

WARNING: Missing a blank line after declarations
#121: FILE: f2/ospf6_area.c:121:


#183: FILE: f2/ospf6_asbr.c:183:
--
< WARNING: Block comments use a trailing */ on a separate line
< #265: FILE: f1/ospf6_asbr.c:265:
< + * list along with addition of ECMP path. */
<
< WARNING: struct should normally be const
< #269: FILE: f1/ospf6_asbr.c:269:
< + struct listnode *anode;
<
< WARNING: struct should normally be const
< #270: FILE: f1/ospf6_asbr.c:270:
< + struct listnode *nnode, *rnode, *rnext;
<
< WARNING: struct should normally be const
< #271: FILE: f1/ospf6_asbr.c:271:
< + struct ospf6_nexthop *nh, *rnh;
<
--
< WARNING: Block comments use a trailing */ on a separate line
< #275: FILE: f1/ospf6_asbr.c:275:
< + * if it exist simply replace nh_list from asbr_entry */
<
< WARNING: Block comments use a trailing */ on a separate line
< #286: FILE: f1/ospf6_asbr.c:286:
< + * Otherwise replace existing path's nh_list */
<
< WARNING: suspect code indent for conditional statements (40, 56)
< #314: FILE: f1/ospf6_asbr.c:314:
< + if (!ospf6_nexthop_is_same(rnh, nh))
< + continue;
--
< WARNING: struct should normally be const
< #350: FILE: f1/ospf6_asbr.c:350:


#256: FILE: f2/ospf6_asbr.c:256:
--
< WARNING: Block comments use a trailing */ on a separate line
< #390: FILE: f1/ospf6_asbr.c:390:
< + * matching path and update effective route's nh list. */
<
< WARNING: struct should normally be const
< #392: FILE: f1/ospf6_asbr.c:392:
< + struct listnode *anode, *anext;
<
< WARNING: struct should normally be const
< #393: FILE: f1/ospf6_asbr.c:393:
< + struct listnode *nnode, *rnode, *rnext;
<
< WARNING: struct should normally be const
< #394: FILE: f1/ospf6_asbr.c:394:
< + struct ospf6_nexthop *nh, *rnh;
<
< WARNING: struct should normally be const
< #395: FILE: f1/ospf6_asbr.c:395:
< + struct ospf6_path *o_path;
<
< WARNING: Block comments use a trailing */ on a separate line
< #400: FILE: f1/ospf6_asbr.c:400:
< + * replace from paths list. */
<
< WARNING: Block comments use a trailing */ on a separate line
< #420: FILE: f1/ospf6_asbr.c:420:
< + * the route's nh_list */
<
< WARNING: Too many leading tabs - consider code refactoring
< #425: FILE: f1/ospf6_asbr.c:425:
< + if (!ospf6_nexthop_is_same(rnh,
<
< WARNING: Block comments use a trailing */ on a separate line
< #446: FILE: f1/ospf6_asbr.c:446:
< + * paths list head. */
<
< WARNING: struct should normally be const
< #450: FILE: f1/ospf6_asbr.c:450:
< + struct ospf6_path *h_path;
<
< WARNING: struct should normally be const
< #452: FILE: f1/ospf6_asbr.c:452:
< + h_path = (struct ospf6_path *)
<
< WARNING: struct should normally be const
< #364: FILE: f1/ospf6_route.c:364:
< +void ospf6_path_free(struct ospf6_path *op)
<
< WARNING: struct should normally be const
< #371: FILE: f1/ospf6_route.c:371:
< +struct ospf6_path *ospf6_path_dup(struct ospf6_path *path)
<
< WARNING: struct should normally be const
< #373: FILE: f1/ospf6_route.c:373:
< + struct ospf6_path *new;
<
< WARNING: struct should normally be const
< #375: FILE: f1/ospf6_route.c:375:
< + new = XCALLOC(MTYPE_OSPF6_PATH, sizeof(struct ospf6_path));
<
< WARNING: struct should normally be const
< #376: FILE: f1/ospf6_route.c:376:
< + memcpy(new, path, sizeof(struct ospf6_path));
<
< WARNING: struct should normally be const
< #384: FILE: f1/ospf6_route.c:384:


#354: FILE: f2/ospf6_route.c:354:
--
< WARNING: struct should normally be const
< #514: FILE: f1/ospf6_route.c:514:


#473: FILE: f2/ospf6_route.c:473:
< WARNING: struct should normally be const
< #101: FILE: f1/ospf6_route.h:101:
< + struct list *nh_list;
<
--
< WARNING: struct should normally be const
< #159: FILE: f1/ospf6_route.h:159:


#153: FILE: f2/ospf6_route.h:153:
--
< WARNING: struct should normally be const
< #266: FILE: f1/ospf6_route.h:266:


#259: FILE: f2/ospf6_route.h:259:
--
< WARNING: struct should normally be const
< #341: FILE: f1/ospf6_route.h:341:
< +extern void ospf6_path_free(struct ospf6_path *op);
<
< WARNING: struct should normally be const
< #342: FILE: f1/ospf6_route.h:342:
< +extern struct ospf6_path *ospf6_path_dup(struct ospf6_path *path);
<

@chiragshah6
Copy link
Member Author

@mwinter-osr I have tried ospf6 topotest and found that 2001:db8:3::/64 has two ECMP paths (with cost of 20) with same nexthop (r4-eth0) at r4 router. I have disabled redistribute on r1 which was the initial adv-router, at r4 the adv-router changes to r2.
With this PR change, it is expected to combine same cost route to merge all nexthops from all available path.
Thus, r4 you would see 3 entries rather than 4 for 2001:db8:3::/64.

.mininet> r4 vtysh -c "show ipv6 ospf6 route 2001:db8:03::/64"
Destination: 2001:db8:3::/64
Destination type: Network
Installed Time: 00:01:08 ago
Changed Time: 00:01:08 ago
Lock: 2 Flags: BA--
Memory: prev: 0x56483a0c4300 this: 0x56483a0c4620 next: 0x56483a0c4db0
Associated Area: 0.0.0.1
Path Type: Inter-Area
LS Origin: Inter-Prefix Id: 0.0.0.1 Adv: 10.0.255.3
Options: --|-|-|--|-|--
Router Bits: --------
Prefix Options: xxx
Metric Type: 0
Metric: 20 (0)
Nexthop count: 1
Nexthop:
fe80::4806:feff:feff:1b5c r4-eth0

Destination: 2001:db8:3::/64
Destination type: Network
Installed Time: 00:01:08 ago
Changed Time: 00:01:08 ago
Lock: 2 Flags: -A--
Memory: prev: 0x56483a0c4620 this: 0x56483a0c4db0 next: 0x56483a0c3e20
Associated Area: 0.0.0.1
Path Type: External-1
LS Origin: AS-External Id: 0.0.0.0 Adv: 10.0.255.3
Options: --|-|-|--|-|--
Router Bits: --------
Prefix Options: xxx
Metric Type: 1
Metric: 10 (0)
Nexthop count: 1
Nexthop:
fe80::4806:feff:feff:1b5c r4-eth0

Destination: 2001:db8:3::/64
Destination type: Network
Installed Time: 00:01:08 ago
Changed Time: 00:01:08 ago
Lock: 2 Flags: -A--
Memory: prev: 0x56483a0c4db0 this: 0x56483a0c3e20 next: 0x56483a0c48b0
Associated Area: 0.0.0.1
Path Type: External-1
LS Origin: AS-External Id: 0.0.0.0 Adv: 10.0.255.1
Options: --|-|-|--|-|--
Router Bits: --------
Prefix Options: xxx
Metric Type: 1
Metric: 20 (0)
Nexthop count: 1
Nexthop:
fe80::4806:feff:feff:1b5c r4-eth0

mininet> r1 vtysh

Hello, this is FRRouting (version 3.1-dev).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

chirag-VirtualBox# config t
chirag-VirtualBox(config)# router ospf6
chirag-VirtualBox(config-ospf6)# no redistribute connected
chirag-VirtualBox(config-ospf6)# end
chirag-VirtualBox# exit
mininet> r4 vtysh -c "show ipv6 ospf6 route 2001:db8:03::/64"
Destination: 2001:db8:3::/64
Destination type: Network
Installed Time: 00:04:24 ago
Changed Time: 00:04:24 ago
Lock: 2 Flags: BA--
Memory: prev: 0x56483a0c4300 this: 0x56483a0c4620 next: 0x56483a0c4db0
Associated Area: 0.0.0.1
Path Type: Inter-Area
LS Origin: Inter-Prefix Id: 0.0.0.1 Adv: 10.0.255.3
Options: --|-|-|--|-|--
Router Bits: --------
Prefix Options: xxx
Metric Type: 0
Metric: 20 (0)
Nexthop count: 1
Nexthop:
fe80::4806:feff:feff:1b5c r4-eth0

Destination: 2001:db8:3::/64
Destination type: Network
Installed Time: 00:04:24 ago
Changed Time: 00:04:24 ago
Lock: 2 Flags: -A--
Memory: prev: 0x56483a0c4620 this: 0x56483a0c4db0 next: 0x56483a0c3e20
Associated Area: 0.0.0.1
Path Type: External-1
LS Origin: AS-External Id: 0.0.0.0 Adv: 10.0.255.3
Options: --|-|-|--|-|--
Router Bits: --------
Prefix Options: xxx
Metric Type: 1
Metric: 10 (0)
Nexthop count: 1
Nexthop:
fe80::4806:feff:feff:1b5c r4-eth0

Destination: 2001:db8:3::/64
Destination type: Network
Installed Time: 00:04:24 ago
Changed Time: 00:04:24 ago
Lock: 2 Flags: -A--
Memory: prev: 0x56483a0c4db0 this: 0x56483a0c3e20 next: 0x56483a0c48b0
Associated Area: 0.0.0.1
Path Type: External-1
LS Origin: AS-External Id: 0.0.0.1 Adv: 10.0.255.2
Options: --|-|-|--|-|--
Router Bits: --------
Prefix Options: xxx
Metric Type: 1
Metric: 20 (0)
Nexthop count: 0
Nexthop:

mininet>

@mwinter-osr
Copy link
Member

Something doesn't look right with the ecmp changed:

R4 looks like this:

*N IE 2001:db8:1::/64                fe80::e45e:83ff:fecc:1904 r4-eth0 00:14:24
 N E1 2001:db8:1::/64                fe80::e45e:83ff:fecc:1904 r4-eth0 00:14:24
*N IE 2001:db8:2::/64                fe80::e45e:83ff:fecc:1904 r4-eth0 00:14:24
 N E1 2001:db8:2::/64                fe80::e45e:83ff:fecc:1904 r4-eth0 00:14:24
*N IE 2001:db8:3::/64                fe80::e45e:83ff:fecc:1904 r4-eth0 00:14:24
 N E1 2001:db8:3::/64                fe80::e45e:83ff:fecc:1904 r4-eth0 00:14:24
 N E1 2001:db8:3::/64                fe80::e45e:83ff:fecc:1904 r4-eth0 00:14:24
*N IE 2001:db8:100::/64              fe80::e45e:83ff:fecc:1904 r4-eth0 00:14:24
 N E1 2001:db8:100::/64              fe80::e45e:83ff:fecc:1904 r4-eth0 00:14:24
*N IA 2001:db8:200::/64              ::                        r4-eth0 00:14:29
 N E1 2001:db8:200::/64              fe80::e45e:83ff:fecc:1904 r4-eth0 00:14:24
*N IA 2001:db8:300::/64              ::                        r4-eth1 00:14:29

And the detailed view shows the E1 2001:db8:3::/64 route with the advertising host r2 (10.0.255.2) was removed (compressed) as r1 and r2 had the same metric (20).

Now, if I go to r1 (the one displayed) and shutdown the interface (ifconfig r1-eth1 down), I would have expected to see the same number of routes (there is now no route to optimize away).

However, the routes look like this:

*N IE 2001:db8:2::/64                fe80::e45e:83ff:fecc:1904 r4-eth0 00:18:50
 N E1 2001:db8:2::/64                fe80::e45e:83ff:fecc:1904 r4-eth0 00:18:50
*N IE 2001:db8:3::/64                fe80::e45e:83ff:fecc:1904 r4-eth0 00:18:50
 N E1 2001:db8:3::/64                fe80::e45e:83ff:fecc:1904 r4-eth0 00:18:50
*N IE 2001:db8:100::/64              fe80::e45e:83ff:fecc:1904 r4-eth0 00:18:50
 N E1 2001:db8:100::/64              fe80::e45e:83ff:fecc:1904 r4-eth0 00:18:50
*N IA 2001:db8:200::/64              ::                        r4-eth0 00:18:55
 N E1 2001:db8:200::/64              fe80::e45e:83ff:fecc:1904 r4-eth0 00:18:50
*N IA 2001:db8:300::/64              ::                        r4-eth1 00:18:55

And looking at the details, I see (for 2001:db8:3::/64):

Destination type: Network
Installed Time: 00:19:04 ago
  Changed Time: 00:19:04 ago
Lock: 2 Flags: BA--
Memory: prev: 0x55a6dffc4270 this: 0x55a6dffc48d0 next: 0x55a6dffc4d20
Associated Area: 0.0.0.1
Path Type: Inter-Area
LS Origin: Inter-Prefix Id: 0.0.0.2 Adv: 10.0.255.3
Options: --|-|-|--|-|--
Router Bits: --------
Prefix Options: xxx
Metric Type: 0
Metric: 20 (0)
Nexthop count: 1
Nexthop:
  fe80::e45e:83ff:fecc:1904 r4-eth0

Destination: 2001:db8:3::/64
Destination type: Network
Installed Time: 00:19:04 ago
  Changed Time: 00:19:04 ago
Lock: 2 Flags: -A--
Memory: prev: 0x55a6dffc48d0 this: 0x55a6dffc4d20 next: 0x55a6dffc3fc0
Associated Area: 0.0.0.1
Path Type: External-1
LS Origin: AS-External Id: 0.0.0.0 Adv: 10.0.255.3
Options: --|-|-|--|-|--
Router Bits: --------
Prefix Options: xxx
Metric Type: 1
Metric: 10 (0)
Nexthop count: 1
Nexthop:
  fe80::e45e:83ff:fecc:1904 r4-eth0

Destination: 2001:db8:3::/64
Destination type: Network
Installed Time: 00:19:04 ago
  Changed Time: 00:19:04 ago
Lock: 2 Flags: -A--
Memory: prev: 0x55a6dffc4d20 this: 0x55a6dffc3fc0 next: 0x55a6dffc4620
Associated Area: 0.0.0.1
Path Type: External-1
LS Origin: AS-External Id: 0.0.0.0 Adv: 10.0.255.2
Options: --|-|-|--|-|--
Router Bits: --------
Prefix Options: xxx
Metric Type: 1
Metric: 20 (0)
Nexthop count: 0
Nexthop:

(Yes, not a mistake! The last route has no nexthop!)

This looks wrong to me.

@chiragshah6
Copy link
Member Author

chiragshah6 commented Dec 22, 2017

@mwinter-osr
I have addressed the issue in latest patch, where two of the ECMP paths having same nexthop. When one of the path removed, it deleted associated nexthop list from the route.
Also added print in detail output showing number of paths

r4 state:
Before r1 r1-eth1 down

Destination: 2001:db8:3::/64
Destination type: Network
Installed Time: 00:00:34 ago
Changed Time: 00:00:34 ago
Lock: 2 Flags: -A--
Memory: prev: 0x55eb0e0ade60 this: 0x55eb0e0accb0 next: 0x55eb0e0ad4d0
Associated Area: 0.0.0.1
Path Type: External-1
LS Origin: AS-External Id: 0.0.0.1 Adv: 10.0.255.1
Options: --|-|-|--|-|--
Router Bits: --------
Prefix Options: xxx
Metric Type: 1
Metric: 20 (0)
Paths count: 2
Nexthop count: 1
Nexthop:
fe80::2c9b:b9ff:febd:d284 r4-eth0

After ifconfig r1-eth1 down at r1, below is r4 state.

Destination: 2001:db8:3::/64
Destination type: Network
Installed Time: 00:11:11 ago
Changed Time: 00:11:11 ago
Lock: 2 Flags: -A--
Memory: prev: 0x55eb0e0ade60 this: 0x55eb0e0accb0 next: 0x55eb0e0ad4d0
Associated Area: 0.0.0.1
Path Type: External-1
LS Origin: AS-External Id: 0.0.0.0 Adv: 10.0.255.2
Options: --|-|-|--|-|--
Router Bits: --------
Prefix Options: xxx
Metric Type: 1
Metric: 20 (0)
Paths count: 1
Nexthop count: 1
Nexthop:
fe80::2c9b:b9ff:febd:d284 r4-eth0

@LabN-CI
Copy link
Collaborator

LabN-CI commented Dec 22, 2017

💚 Basic BGPD CI results: SUCCESS, 0 tests failed

Results table
_ _
Result SUCCESS git merge/1566 8fe9fc4
Date 12/22/2017
Start 12:55:08
Finish 13:18:05
Run-Time 22:57
Total 1808
Pass 1808
Fail 0
Valgrind-Errors 0
Valgrind-Loss 0
Details vncregress-2017-12-22-12:55:08.txt
Log autoscript-2017-12-22-12:55:44.log.bz2

For details, please contact louberger

@NetDEF-CI
Copy link
Collaborator

Continuous Integration Result: FAILED

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

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

Fedora 24 rpm pkg check: Successful
CentOS 7 rpm pkg check: Successful
Addresssanitizer topotest: Successful
Debian 8 deb pkg check: Successful
IPv4 protocols on Ubuntu 14.04: Successful
IPv4 ldp protocol on Ubuntu 16.04: Successful
Ubuntu 14.04 deb pkg check: Successful
Debian 9 deb pkg check: Successful
CentOS 6 rpm pkg check: Successful
Static analyzer (clang): Successful
IPv6 protocols on Ubuntu 14.04: Successful
Ubuntu 16.04 deb pkg check: Successful
Ubuntu 12.04 deb pkg check: Successful

Topology tests on Ubuntu 16.04 amd64: Failed

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

Topology Tests failed for Topology tests on Ubuntu 16.04 amd64:

2017-12-22 10:22:56,235 ERROR: assert failed at "test_ospf_topo1/test_ospf6_convergence": OSPF6 did not converge on r4:
  --- Current output
  +++ Expected output
  @@ -5,6 +5,7 @@
   *N IE 2001:db8:3::/64 fe80::xxxx:xxxx:xxxx:xxxx r4-eth0 
    N E1 2001:db8:3::/64 fe80::xxxx:xxxx:xxxx:xxxx r4-eth0 
    N E1 2001:db8:3::/64 fe80::xxxx:xxxx:xxxx:xxxx r4-eth0 
  + N E1 2001:db8:3::/64 fe80::xxxx:xxxx:xxxx:xxxx r4-eth0 
   *N IE 2001:db8:100::/64 fe80::xxxx:xxxx:xxxx:xxxx r4-eth0 
    N E1 2001:db8:100::/64 fe80::xxxx:xxxx:xxxx:xxxx r4-eth0 
   *N IA 2001:db8:200::/64 :: r4-eth0 
assert False
r3: Daemon zebra not running

From frr r3 zebra log file:
ZEBRA: Received signal 11 at 1513966977 (si_addr 0x10, PC 0x5601e68cf372); aborting...
Program counter: /usr/lib/frr/zebra(+0x35372)[0x5601e68cf372]
Backtrace for 11 stack frames:
/usr/lib/libfrr.so.0(zlog_backtrace_sigsafe+0x48)[0x7f217f041808]
/usr/lib/libfrr.so.0(zlog_signal+0x33b)[0x7f217f041feb]
/usr/lib/libfrr.so.0(+0x4c5ff)[0x7f217f0555ff]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f217e9ea390]
/usr/lib/frr/zebra(+0x35372)[0x5601e68cf372]
/usr/lib/libfrr.so.0(work_queue_run+0xcc)[0x7f217f0682ec]
/usr/lib/libfrr.so.0(thread_call+0x60)[0x7f217f061c70]
/usr/lib/libfrr.so.0(frr_run+0xb8)[0x7f217f040058]
/usr/lib/frr/zebra(main+0x27d)[0x5601e68acf2d]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f217e62f830]
/usr/lib/frr/zebra(_start+0x29)[0x5601e68ad4b9]
in thread work_queue_run scheduled from lib/workqueue.c:134

see full log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2222/artifact/TOPOU1604/ErrorLog/log_topotests.txt

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

CLANG Static Analyzer Summary

  • Github Pull Request 1566, comparing to Git base SHA ff99c5b

New warnings:

Static Analysis warning summary compared to base:

  • Fixed warnings: 0
  • New warnings: 1

23 Static Analyzer issues remaining.

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

@mwinter-osr mwinter-osr self-assigned this Dec 23, 2017
@mwinter-osr
Copy link
Member

Trying to further test, but tests fail because of unrelated crash in zebra (Issue #1575)

Issue #1575 is a teststopper for this. I'll continue testing after the issue is resolved.

@LabN-CI
Copy link
Collaborator

LabN-CI commented Dec 24, 2017

💚 Basic BGPD CI results: SUCCESS, 0 tests failed

Results table
_ _
Result SUCCESS git merge/1566 bdaae51
Date 12/24/2017
Start 17:35:08
Finish 17:58:12
Run-Time 23:04
Total 1808
Pass 1808
Fail 0
Valgrind-Errors 0
Valgrind-Loss 0
Details vncregress-2017-12-24-17:35:08.txt
Log autoscript-2017-12-24-17:35:52.log.bz2

For details, please contact louberger

@NetDEF-CI
Copy link
Collaborator

Continuous Integration Result: FAILED

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

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
Ubuntu 14.04 deb pkg check: Successful
CentOS 7 rpm pkg check: Successful
Addresssanitizer topotest: Successful
Debian 8 deb pkg check: Successful
IPv4 protocols on Ubuntu 14.04: Successful
Fedora 24 rpm pkg check: Successful
Debian 9 deb pkg check: Successful
CentOS 6 rpm pkg check: Successful
Static analyzer (clang): Successful
Ubuntu 12.04 deb pkg check: Successful
IPv6 protocols on Ubuntu 14.04: Successful
Ubuntu 16.04 deb pkg check: Successful

Topology tests on Ubuntu 16.04 amd64: Failed

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

Topology Tests failed for Topology tests on Ubuntu 16.04 amd64:

2017-12-24 15:04:38,542 ERROR: assert failed at "test_ospf_topo1/test_ospf6_convergence": OSPF6 did not converge on r1:
  --- Current output
  +++ Expected output
  @@ -3,7 +3,7 @@
    N E1 2001:db8:2::/64 fe80::xxxx:xxxx:xxxx:xxxx r1-eth1 
   *N IA 2001:db8:3::/64 :: r1-eth1 
    N E1 2001:db8:3::/64 fe80::xxxx:xxxx:xxxx:xxxx r1-eth1 
  - fe80::xxxx:xxxx:xxxx:xxxx r1-eth1 
  + N E1 2001:db8:3::/64 fe80::xxxx:xxxx:xxxx:xxxx r1-eth1 
   *N IA 2001:db8:100::/64 fe80::xxxx:xxxx:xxxx:xxxx r1-eth1 
    N E1 2001:db8:100::/64 fe80::xxxx:xxxx:xxxx:xxxx r1-eth1 
   *N IE 2001:db8:200::/64 fe80::xxxx:xxxx:xxxx:xxxx r1-eth1 
assert False
r3: Daemon zebra not running

From frr r3 zebra log file:
ZEBRA: Received signal 11 at 1514156679 (si_addr 0x10, PC 0x55915ba7b372); aborting...
Program counter: /usr/lib/frr/zebra(+0x35372)[0x55915ba7b372]
Backtrace for 11 stack frames:
/usr/lib/libfrr.so.0(zlog_backtrace_sigsafe+0x48)[0x7f4b9efc5808]
/usr/lib/libfrr.so.0(zlog_signal+0x33b)[0x7f4b9efc5feb]
/usr/lib/libfrr.so.0(+0x4c5ff)[0x7f4b9efd95ff]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f4b9e96e390]
/usr/lib/frr/zebra(+0x35372)[0x55915ba7b372]
/usr/lib/libfrr.so.0(work_queue_run+0xcc)[0x7f4b9efec2ec]
/usr/lib/libfrr.so.0(thread_call+0x60)[0x7f4b9efe5c70]
/usr/lib/libfrr.so.0(frr_run+0xb8)[0x7f4b9efc4058]
/usr/lib/frr/zebra(main+0x27d)[0x55915ba58f2d]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f4b9e5b3830]
/usr/lib/frr/zebra(_start+0x29)[0x55915ba594b9]
in thread work_queue_run scheduled from lib/workqueue.c:134

see full log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2223/artifact/TOPOU1604/ErrorLog/log_topotests.txt

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

CLANG Static Analyzer Summary

  • Github Pull Request 1566, comparing to Git base SHA ff99c5b

No Changes in Static Analysis warnings compared to base

22 Static Analyzer issues remaining.

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

Handle RFC 2328 16.4 Calculating AS external routes with ECMP

For ASBR route, if it is learnt via new LSA and contains
different nexthop list. First lookup route in ospf6 route table
if it exists, merge nexthop list to existing and call the callback
to install into FIB (zebra). Delete created new route as it is
identical to existing entry in route table.

Ticket:CM-16139
Testing Done:
Run two ASBR with 2 ECMP paths from each
DUT neighbor receievs 4 ECMP path to a external route.
ospf6 installs all 4 ECMP path to FIB/RIB

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
@LabN-CI
Copy link
Collaborator

LabN-CI commented Jan 2, 2018

💚 Basic BGPD CI results: SUCCESS, 0 tests failed

Results table
_ _
Result SUCCESS git merge/1566 064d435
Date 01/02/2018
Start 13:05:09
Finish 13:27:56
Run-Time 22:47
Total 1808
Pass 1808
Fail 0
Valgrind-Errors 0
Valgrind-Loss 0
Details vncregress-2018-01-02-13:05:09.txt
Log autoscript-2018-01-02-13:05:46.log.bz2

For details, please contact louberger

@NetDEF-CI
Copy link
Collaborator

Continuous Integration Result: FAILED

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

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

CentOS 6 rpm pkg check: Successful
Static analyzer (clang): Successful
IPv6 protocols on Ubuntu 14.04: Successful
Ubuntu 16.04 deb pkg check: Successful
Ubuntu 12.04 deb pkg check: Successful
Fedora 24 rpm pkg check: Successful
CentOS 7 rpm pkg check: Successful
Addresssanitizer topotest: Successful
Debian 8 deb pkg check: Successful
IPv4 protocols on Ubuntu 14.04: Successful
Ubuntu 14.04 deb pkg check: Successful
Debian 9 deb pkg check: Successful

Topology tests on Ubuntu 16.04 amd64: Failed

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

Topology Tests failed for Topology tests on Ubuntu 16.04 amd64:

2018-01-02 10:30:46,549 ERROR: assert failed at "test_ospf_topo1/test_ospf6_convergence": OSPF6 did not converge on r1:
  --- Current output
  +++ Expected output
  @@ -3,7 +3,7 @@
    N E1 2001:db8:2::/64 fe80::xxxx:xxxx:xxxx:xxxx r1-eth1 
   *N IA 2001:db8:3::/64 :: r1-eth1 
    N E1 2001:db8:3::/64 fe80::xxxx:xxxx:xxxx:xxxx r1-eth1 
  - fe80::xxxx:xxxx:xxxx:xxxx r1-eth1 
  + N E1 2001:db8:3::/64 fe80::xxxx:xxxx:xxxx:xxxx r1-eth1 
   *N IA 2001:db8:100::/64 fe80::xxxx:xxxx:xxxx:xxxx r1-eth1 
    N E1 2001:db8:100::/64 fe80::xxxx:xxxx:xxxx:xxxx r1-eth1 
   *N IE 2001:db8:200::/64 fe80::xxxx:xxxx:xxxx:xxxx r1-eth1 
assert False

see full log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2238/artifact/TOPOU1604/ErrorLog/log_topotests.txt

IPv4 ldp protocol on Ubuntu 16.04: Failed

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

CLANG Static Analyzer Summary

  • Github Pull Request 1566, comparing to Git base SHA baa68bc

No Changes in Static Analysis warnings compared to base

21 Static Analyzer issues remaining.

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

@Jafaral
Copy link
Member

Jafaral commented Jan 3, 2018

@mwinter-osr is this test issue resolved?

@mwinter-osr
Copy link
Member

Manual verification looks good.

I'll like to update topotests to not flag it as a fail, so please give me a little more time to modify topotests to allow old and new format to pass.

Please wait with merging - I'll update as soon as I have topotests adapted (may take another 24hrs)

@NetDEF-CI
Copy link
Collaborator

Continuous Integration Result: SUCCESSFUL

Congratulations, this patch passed basic tests

Tested-by: NetDEF / OpenSourceRouting.org CI System

CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-2347/

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.


CLANG Static Analyzer Summary

  • Github Pull Request 1566, comparing to Git base SHA baa68bc

No Changes in Static Analysis warnings compared to base

21 Static Analyzer issues remaining.

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

@mwinter-osr
Copy link
Member

All good from my side & Topotests updated, so it all passes.
I see a outstanding review from @Jafaral , not sure if he or someone else wants to review it.

@Jafaral
Copy link
Member

Jafaral commented Jan 18, 2018

Thanks @mwinter-osr I will give it a go

@Jafaral Jafaral merged commit 0c6a8fb into FRRouting:master Jan 18, 2018
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.

6 participants