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

BGP TCP non established : get port and ip #15686

Merged

Conversation

pguibert6WIND
Copy link
Member

On non established TCP sessions, the remote/local address/port information is not available.
However, for outgoing TCP connections, this is possible.

Lets do it.

@pguibert6WIND pguibert6WIND changed the title Tcp non established get port and ip BGP TCP non established get port and ip Apr 5, 2024
@pguibert6WIND pguibert6WIND changed the title BGP TCP non established get port and ip BGP TCP non established : get port and ip Apr 5, 2024
bgpd/bgp_network.c Outdated Show resolved Hide resolved
bgpd/bgp_fsm.c Outdated Show resolved Hide resolved
@pguibert6WIND pguibert6WIND force-pushed the tcp_non_established_get_port_and_ip branch from a6cee29 to fde7905 Compare April 8, 2024 08:20
@github-actions github-actions bot added size/S and removed size/M labels Apr 8, 2024
bgpd/bgp_fsm.c Outdated Show resolved Hide resolved
When attempting to get the src and destination addresses of a given
connection, the API may return the NULL pointer, but further code
in bgp_zebra_nexthop_set() already does a check about the given
pointer.

Relaxing the error code for all the returned adressing.

Fixes: 1ff9a34 ("bgpd: bgpd-fsm-fix.patch")

Signed-off-by: Philippe Guibert <[email protected]>
When trying to connect to a BGP peer that does not respons, the 'show
bgp neighbors' command does not give any indication on the local and
remote addresses used:

> # show bgp neighbors
>  BGP neighbor is 192.0.2.150, remote AS 65500, local AS 65500, internal link
>   Local Role: undefined
>   Remote Role: undefined
>   BGP version 4, remote router ID 0.0.0.0, local router ID 192.0.2.1
>   BGP state = Connect
> [..]
>   Connections established 0; dropped 0
>   Last reset 00:00:04,   Waiting for peer OPEN (n/a)
>   Internal BGP neighbor may be up to 255 hops away.
> BGP Connect Retry Timer in Seconds: 120
> Next connect timer due in 117 seconds
> Read thread: off  Write thread: off  FD used: 27

The addressing information (address and port) are only available
when TCP session is established, whereas this information is present
at the system level:

> root@ubuntu2204:~# netstat -pan | grep 192.0.2.1
> tcp        0      0 192.0.2.1:179           192.0.2.150:38060       SYN_RECV    -
> tcp        0      1 192.0.2.1:46526         192.0.2.150:179         SYN_SENT    488310/bgpd

Add the display for outgoing BGP session, as the information in
the getsockname() API provides information for connected streams.
When getpeername() API does not give any information, use the peer
configuration (destination port is encoded in peer->port).

> # show bgp neighbors
> BGP neighbor is 192.0.2.150, remote AS 65500, local AS 65500, internal link
>   Local Role: undefined
>   Remote Role: undefined
>   BGP version 4, remote router ID 0.0.0.0, local router ID 192.0.2.1
>   BGP state = Connect
> [..]
>   Connections established 0; dropped 0
>   Last reset 00:00:16,   Waiting for peer OPEN (n/a)
> Local host: 192.0.2.1, Local port: 46084
> Foreign host: 192.0.2.150, Foreign port: 179

Signed-off-by: Philippe Guibert <[email protected]>
@pguibert6WIND pguibert6WIND force-pushed the tcp_non_established_get_port_and_ip branch from fde7905 to 78ce639 Compare April 15, 2024 07:20
@ton31337 ton31337 merged commit 348ad00 into FRRouting:master Apr 15, 2024
9 checks passed
@ton31337
Copy link
Member

@Mergifyio backport stable/10.0 stable/9.1 stable/9.0

Copy link

mergify bot commented Nov 11, 2024

backport stable/10.0 stable/9.1 stable/9.0

✅ Backports have been created

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants