FRRouting / frr

The FRRouting Protocol Suite
https://frrouting.org/
Other
3.31k stars 1.25k forks source link

bgpd set port can not connect to unnumbered BGP session #11676

Closed boxjan closed 2 years ago

boxjan commented 2 years ago

Describe the bug I config two machine as router with frr which have same config expect own subnet and router-id, and I use

 neighbor RACK peer-group
 neighbor RACK remote-as external
 neighbor RACK bfd
 neighbor RACK capability extended-nexthop
 neighbor maas-conn interface peer-group RACK

for unnumbered BGP session. When I start bgpd with port 179, all work, but when I change port to 1179 or any other port, the bgp can not connect, and I can not set neighbor RACK port 1179 or neighbor maas-conn port 1179 in vtysh. and I found connect refused in log, and tcpdump tell me frr try to connect remote port 1179

Expected behavior

Screenshots image Log image

boxjan commented 2 years ago

Hi, there I test it but the problem still here

image

it still try to connect peer at port 179 for unnumbered sessions

ton31337 commented 2 years ago

Please show "show ip bgp neigh".

boxjan commented 2 years ago
BGP neighbor on rgn-datahub: fe80::a67:1:a69:1, remote AS 0, local AS 4200050000, external link
  Local Role: undefined
  Remote Role: undefined
 Member of peer-group REGION for session parameters
  BGP version 4, remote router ID 0.0.0.0, local router ID xx.xx.xx.xx
  BGP state = Connect
  Last read 03:07:47, Last write never
  Hold time is 30 seconds, keepalive interval is 10 seconds
  Configured hold time is 30 seconds, keepalive interval is 10 seconds
  Configured conditional advertisements interval is 60 seconds
  Graceful restart information:
    Local GR Mode: Helper*
    Remote GR Mode: NotApplicable
    R bit: False
    N bit: False
    Timers:
      Configured Restart Time(sec): 120
      Received Restart Time(sec): 0
  Message statistics:
    Inq depth is 0
    Outq depth is 0
                         Sent       Rcvd
    Opens:                  0          0
    Notifications:          0          0
    Updates:                0          0
    Keepalives:             0          0
    Route Refresh:          0          0
    Capability:             0          0
    Total:                  0          0
  Minimum time between advertisement runs is 0 seconds

 For address family: IPv4 Unicast
  REGION peer-group member
  Not part of any update group
  Community attribute sent to this neighbor(all)
  Outbound path policy configured
  Route map for outgoing advertisements is *region-aggregate
  0 accepted prefixes

  Connections established 0; dropped 0
  Last reset 03:07:47,  Waiting for peer OPEN
  External BGP neighbor may be up to 1 hops away.
BGP Connect Retry Timer in Seconds: 120
Next connect timer due in 111 seconds
Peer Authentication Enabled
Read thread: off  Write thread: off  FD used: 25

  BFD: Type: single hop
  Detect Multiplier: 3, Min Rx interval: 300, Min Tx interval: 300
  Status: Unknown, Last update: never
ton31337 commented 2 years ago

How does /etc/frr/daemons look like?

boxjan commented 2 years ago

here:

devops@xxx-xxx:~$ sudo cat /etc/frr/daemons
bgpd=yes
ospfd=no
ospf6d=no
ripd=no
ripngd=no
isisd=no
pimd=no
ldpd=no
nhrpd=no
eigrpd=no
babeld=no
sharpd=no
pbrd=no
bfdd=no
fabricd=no
vrrpd=no
pathd=no

vtysh_enable=yes
zebra_options="  -A 127.0.0.1 -s 90000000"
bgpd_options="   -A 127.0.0.1 -p 1179"
ospfd_options="  -A 127.0.0.1"
ospf6d_options=" -A ::1"
ripd_options="   -A 127.0.0.1"
ripngd_options=" -A ::1"
isisd_options="  -A 127.0.0.1"
pimd_options="   -A 127.0.0.1"
ldpd_options="   -A 127.0.0.1"
nhrpd_options="  -A 127.0.0.1"
eigrpd_options=" -A 127.0.0.1"
babeld_options=" -A 127.0.0.1"
sharpd_options=" -A 127.0.0.1"
pbrd_options="   -A 127.0.0.1"
staticd_options="-A 127.0.0.1"
bfdd_options="   -A 127.0.0.1"
fabricd_options="-A 127.0.0.1"
vrrpd_options="  -A 127.0.0.1"
pathd_options="  -A 127.0.0.1"
ton31337 commented 2 years ago

This is from which side?

boxjan commented 2 years ago

all, we use same config except interface name

ton31337 commented 2 years ago

Let me double-check this again. But at least what I tested it worked well.

ton31337 commented 2 years ago

Just double-checked, and it works for me.

donatas-pc(config-router)# neighbor enp3s0 port 1179
donatas-pc# sh bgp neighbors enp3s0 | include port
Local host: fe80::ca5d:fd0d:cd8:1bb7, Local port: 60168
Foreign host: fe80::a00:27ff:fe5e:d19e, Foreign port: 1179
donatas-pc# 
donatas-pc# show bgp neighbors enp3s0 | include state
  BGP state = Established, up for 00:01:21
donatas-pc# 

# ss -ntlp | grep 1179
LISTEN   0         128                 0.0.0.0:1179             0.0.0.0:*        users:(("bgpd",pid=32628,fd=23))                                               
LISTEN   0         128                    [::]:1179                [::]:*        users:(("bgpd",pid=32628,fd=24))    
boxjan commented 2 years ago

I will retry again in my env, I set a wireguard vpn pair, and bgp run over it.

boxjan commented 2 years ago

Hi Donatas so sorry too long time not update, I pull the latest code and build the package, but I think the problem still here.

image

As you can see, I create a peer group and set port for it, also I set unnumbered session for the same peer-group, and then I join the interface to the peer group.

when I show neigh for the interface, no port show in the config

ton31337 commented 2 years ago
spine1-debian-11# sh run | include eth3
 neighbor eth3 interface remote-as external
 neighbor eth3 port 1179
spine1-debian-11# sh bgp neighbors eth3 | include port
Local host: fe80::a00:27ff:fe2c:e388, Local port: 44350
Foreign host: fe80::c361:2da8:10b1:3d51, Foreign port: 1179
spine1-debian-11# 

And another side:

donatas-laptop# sh run | include RACK
 neighbor RACK peer-group
 neighbor RACK remote-as external
 neighbor RACK port 1179
 neighbor wlp82s0 interface peer-group RACK
donatas-laptop# sh bgp neighbors wlp82s0 | include port
Local host: fe80::c361:2da8:10b1:3d51, Local port: 1179
Foreign host: fe80::a00:27ff:fe2c:e388, Foreign port: 44350
donatas-laptop# 

Both ends configured with:

root@spine1-debian-11:~# grep 1179 /etc/frr/daemons
bgpd_options="   -A 127.0.0.1 -p 1179"
root@spine1-debian-11:~# 

Please, show the logs because I can't reproduce this as you say.

boxjan commented 2 years ago

I set port for a interface and it can work, but if set port for a peer-group, it will try to connect TCP 179

ton31337 commented 2 years ago

Can you show the logs? debug bgp neighbor.