Dual Stack BGP ipv6 neighbor creates additional ipv4 neighbor and sent ipv4 routes also (VyOS 1.2.0-rc9)

Hi,
I hope somebody can help me with getting a dual stack BGP to work, with peer-groups as preferred config.
Below the config and show output, i tried with normal peers and by assigning them to peer-groups (end goal).
What ever i try i always get one addition ipv4 peer extra, bad thing is that it also sends the full ipv4 table to the ipv6 neighbour !!
The new global parameter (command) to disable the ipv4 unicast by default is preventing the bap process from starting up after a reboot, even peers with explicit address family assignments are not there in the show commands (config looks ok).

Version: VyOS 1.2.0-rc9
Built by: maintainers@vyos.net
Built on: Mon 26 Nov 2018 23:24 UTC
Build ID: 5fbdbd2a-5e29-4614-9972-37acd9a395d7

Architecture: x86_64
Boot via: installed image
System type: KVM guest

Hardware vendor: Red Hat
Hardware model: KVM
Hardware S/N: Unknown
Hardware UUID: Unknown

Copyright: VyOS maintainers and contributors
[edit]
vyos@br03-lab#

vyos@br03-lab# run show ip bgp summary

IPv4 Unicast Summary:
BGP router identifier 10.1.2.2, local AS number 65010 vrf-id 0
BGP table version 3
RIB entries 5, using 840 bytes of memory
Peers 4, using 83 KiB of memory
Peer groups 2, using 128 bytes of memory

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.1.2.3 4 65010 11 12 0 0 0 00:07:14 3
2a0b:2740::3 4 65010 13 14 0 0 0 00:07:14 3
10.1.3.3 4 65010 0 4 0 0 0 never Active
2a0b:2740:0:3::3 4 65010 8 8 0 0 0 00:02:09 3

Total number of neighbors 4
[edit]
vyos@br03-lab# run show ipv6 bgp summary

IPv6 Unicast Summary:
BGP router identifier 10.1.2.2, local AS number 65010 vrf-id 0
BGP table version 1
RIB entries 1, using 168 bytes of memory
Peers 4, using 83 KiB of memory
Peer groups 2, using 128 bytes of memory

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
2a0b:2740::3 4 65010 13 14 0 0 0 00:07:17 1
2a0b:2740:0:3::3 4 65010 8 8 0 0 0 00:02:12 1

Total number of neighbors 2
[edit]

vyos@br03-lab# run show ipv6 bgp neighbors 2a0b:2740:0:0::3 received-routes
BGP table version is 0, local router ID is 10.1.2.2, vrf id 0
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop’s vrf id, < announce-nh-self
Origin codes: i - IGP, e - EGP, ? - incomplete

Network Next Hop Metric LocPrf Weight Path
*> 2a0b:2740::/64 2a0b:2740::3 0 100 0 i

Total number of prefixes 1
[edit]
vyos@br03-lab# run show ip bgp neighbors 1
10.1.2.3 10.1.3.3
[edit]
vyos@br03-lab# run show ip bgp neighbors 10.1.2.3 re
received received-routes
[edit]
vyos@br03-lab# run show ip bgp neighbors 10.1.2.3 received-routes
BGP table version is 0, local router ID is 10.1.2.2, vrf id 0
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop’s vrf id, < announce-nh-self
Origin codes: i - IGP, e - EGP, ? - incomplete

Network Next Hop Metric LocPrf Weight Path
*> 10.1.2.0/24 10.1.2.3 0 100 0 i
*> 10.1.3.0/24 10.1.2.3 0 100 0 i
*> 10.1.4.0/24 10.1.2.3 0 100 0 i

Total number of prefixes 3
[edit]
vyos@br03-lab# run show ip bgp neighbors 2 received-routes
2a0b:2740:0:0::3 2a0b:2740:0:3::3
[edit]
vyos@br03-lab# run show ip bgp neighbors 2a0b:2740:0: received-routes
2a0b:2740:0:0::3 2a0b:2740:0:3::3
[edit]
vyos@br03-lab# run show ip bgp neighbors 2a0b:2740:0:0::3 received-routes
% Inbound soft reconfiguration not enabled
[edit]
vyos@br03-lab#

set protocols bgp 65010 address-family ipv4-unicast aggregate-address 10.1.2.0/24 summary-only
set protocols bgp 65010 address-family ipv4-unicast aggregate-address 10.1.3.0/24 summary-only
set protocols bgp 65010 address-family ipv4-unicast aggregate-address 10.1.4.0/24 summary-only
set protocols bgp 65010 address-family ipv4-unicast network 10.1.2.0/24
set protocols bgp 65010 address-family ipv4-unicast network 10.1.3.0/24
set protocols bgp 65010 address-family ipv4-unicast network 10.1.4.0/24
set protocols bgp 65010 address-family ipv6-unicast aggregate-address 2a0b:2740:0:0::/64
set protocols bgp 65010 address-family ipv6-unicast network 2a0b:2740:0:0::/64
set protocols bgp 65010 neighbor 2a0b:2740:0:0::3 address-family ipv6-unicast
set protocols bgp 65010 neighbor 2a0b:2740:0:0::3 peer-group ‘IBGPIPV6’
set protocols bgp 65010 neighbor 2a0b:2740:0:0::3 remote-as ‘65010’
set protocols bgp 65010 neighbor 2a0b:2740:0:0::3 update-source ‘2a0b:2740:0:0::2’
set protocols bgp 65010 neighbor 2a0b:2740:0:3::3 address-family ipv6-unicast
set protocols bgp 65010 neighbor 2a0b:2740:0:3::3 remote-as ‘65010’
set protocols bgp 65010 neighbor 2a0b:2740:0:3::3 update-source ‘2a0b:2740:0:3::2’
set protocols bgp 65010 neighbor 10.1.2.3 address-family ipv4-unicast capability
set protocols bgp 65010 neighbor 10.1.2.3 peer-group ‘IBGPIPV4’
set protocols bgp 65010 neighbor 10.1.2.3 remote-as ‘65010’
set protocols bgp 65010 neighbor 10.1.3.3 address-family ipv4-unicast
set protocols bgp 65010 neighbor 10.1.3.3 remote-as ‘65010’
set protocols bgp 65010 parameters default
set protocols bgp 65010 parameters router-id ‘10.1.2.2’
set protocols bgp 65010 peer-group IBGPIPV4 address-family ipv4-unicast soft-reconfiguration inbound
set protocols bgp 65010 peer-group IBGPIPV6 address-family ipv6-unicast soft-reconfiguration inbound

vyos@br04-lab# run show ip bgp summary

IPv4 Unicast Summary:
BGP router identifier 10.1.2.3, local AS number 65010 vrf-id 0
BGP table version 3
RIB entries 5, using 840 bytes of memory
Peers 3, using 62 KiB of memory
Peer groups 2, using 128 bytes of memory

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.1.2.2 4 65010 9 9 0 0 0 00:05:12 3
2a0b:2740::2 4 65010 11 11 0 0 0 00:05:11 3
2a0b:2740:0:3::2 4 65010 6 6 0 0 0 00:00:07 3

Total number of neighbors 3
[edit]
vyos@br04-lab# run show ipv6 bgp summary

IPv6 Unicast Summary:
BGP router identifier 10.1.2.3, local AS number 65010 vrf-id 0
BGP table version 1
RIB entries 1, using 168 bytes of memory
Peers 3, using 62 KiB of memory
Peer groups 2, using 128 bytes of memory

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
2a0b:2740::2 4 65010 11 11 0 0 0 00:05:21 1
2a0b:2740:0:3::2 4 65010 6 6 0 0 0 00:00:17 1

Total number of neighbors 2
[edit]

set protocols bgp 65010 address-family ipv4-unicast aggregate-address 10.1.2.0/24 summary-only
set protocols bgp 65010 address-family ipv4-unicast aggregate-address 10.1.3.0/24 summary-only
set protocols bgp 65010 address-family ipv4-unicast aggregate-address 10.1.4.0/24 summary-only
set protocols bgp 65010 address-family ipv4-unicast network 10.1.2.0/24
set protocols bgp 65010 address-family ipv4-unicast network 10.1.3.0/24
set protocols bgp 65010 address-family ipv4-unicast network 10.1.4.0/24
set protocols bgp 65010 address-family ipv6-unicast aggregate-address 2a0b:2740:0:0::/64
set protocols bgp 65010 address-family ipv6-unicast network 2a0b:2740:0:0::/64
set protocols bgp 65010 neighbor 2a0b:2740:0:0::2 address-family ipv6-unicast capability dynamic
set protocols bgp 65010 neighbor 2a0b:2740:0:0::2 peer-group ‘IBGPIPV6’
set protocols bgp 65010 neighbor 2a0b:2740:0:0::2 remote-as ‘65010’
set protocols bgp 65010 neighbor 2a0b:2740:0:0::2 update-source ‘2a0b:2740:0:0::3’
set protocols bgp 65010 neighbor 2a0b:2740:0:3::2 address-family ipv6-unicast
set protocols bgp 65010 neighbor 2a0b:2740:0:3::2 remote-as ‘65010’
set protocols bgp 65010 neighbor 2a0b:2740:0:3::2 update-source ‘2a0b:2740:0:3::3’
set protocols bgp 65010 neighbor 10.1.2.2 address-family ipv4-unicast
set protocols bgp 65010 neighbor 10.1.2.2 peer-group ‘IBGPIPV4’
set protocols bgp 65010 neighbor 10.1.2.2 remote-as ‘65010’
set protocols bgp 65010 parameters default
set protocols bgp 65010 parameters router-id ‘10.1.2.3’
set protocols bgp 65010 peer-group IBGPIPV4 address-family ipv4-unicast soft-reconfiguration inbound
set protocols bgp 65010 peer-group IBGPIPV6 address-family ipv6-unicast soft-reconfiguration inbound

I’ve tested a dual stack scenario and it seemed to work, but I’ll make sure to retest if for rc10 and fix if necessary.

I also see this behaviour (with peer groups, at least - I haven’t tried without them yet) on 1.2.4. My configuration is basically identical to the one posted above - if it helps to share it, let me know, I’d be happy to help.

I also tried “parameters default no-ipv4-unicast” as well, but that exhibited some strange behaviour and prevented my configuration from loading on reboot somehow (and before that, did not help to fix the problem anyway).

I’d also like to document IPv6 BGP a bit better in the wiki if I can get this fixed :slight_smile:

Hi, We have it working on 1.2.24 including peer-groups and fully dual-stack. one thing that isn’t working is the large-community as filters are complete ignoring them at the moment.
We will create a template to share later this week.

That would be great, thank you very much!

Hi! Did you have a chance to put together a small sample showing the config for dual stack peer group BGP? I’m still having the issue even on 1.2.5, so I guess I am doing something wrong and would love to fix that (and then help update the docs so this is clearer for everyone!). Thanks!

Same behaviour here with version 1.2.6 and peer-groups
Our IPv6 neighbor will be listed in IPv4 neighbor list