Hello,
That said, I will come back to my previous comment as it should have said EBGP and not IBGP - typo - which is what you configured.
As it did not seem to help, here is a longer answer (now that I have a few minutes).
(sent) OPEN version=4 asn=3491 hold_time=180 router_id=172.16.100.2 capabilities=[Multiprotocol(ipv4 unicast,ipv4 multicast,ipv4 nlri-mpls,ipv4 mpls-vpn,ipv4 rtc,ipv4 flow,ipv4 flow-vpn,ipv6 unicast,ipv6 multicast,ipv6 nlri-mpls,ipv6 mpls-vpn,ipv6 flow,ipv6 flow-vpn,l2vpn vpls,l2vpn evpn,bgp-ls bgp-ls,bgp-ls bgp-ls-vpn), ASN4(3491)]
(recv) OPEN version=4 asn=7632 hold_time=180 router_id=10.10.10.1 capabilities=[Multiprotocol(ipv4 unicast), Route Refresh, ASN4(7632), Route Refresh]
Your ASN is 3491 but the routes your are advertising does not have this ASN at the start of the AS-PATH.
The first route sent has 45896, which is likely why the other side refuse the UPDATE as ExaBGP does NOT modify the AS-PATH on EBGP connection.
The relevant RFC section is:
5.1.2. AS_PATH
[...]
When a BGP speaker propagates a route it learned from another BGP
speaker's UPDATE message, it modifies the route's AS_PATH attribute
based on the location of the BGP speaker to which the route will be
sent:
a) [...]
b) When a given BGP speaker advertises the route to an external
peer, the advertising speaker updates the AS_PATH attribute as
follows:
1) if the first path segment of the AS_PATH is of type
AS_SEQUENCE, the local system prepends its own AS number as
the last element of the sequence (put it in the leftmost
position with respect to the position of octets in the
protocol message). [...]
which is then redefined by RFC 7606 (which your router supports as it speaks of treat-as-withdraw)
7.2. AS_PATH
An AS_PATH is considered malformed if an unrecognized segment type is
encountered or if it contains a malformed segment. A segment is
considered malformed if any of the following are true: [...]
An UPDATE message with a malformed AS_PATH attribute SHALL be handled
using the approach of "treat-as-withdraw".
[RFC4271] also says that an implementation optionally "MAY check
whether the leftmost ... AS in the AS_PATH attribute is equal to the
autonomous system number of the peer that sent the message". A BGP
implementation SHOULD also handle routes that violate this check
using "treat-as-withdraw" but MAY follow the "session reset" behavior
if configured to do so.
So depending on the implementation:
- (1) this route will be accepted as valid (as it is only a SHOULD test - ie not mandatory) or;
- (2) this route will be removed from the peer RIB (treat-as-withdraw) or;
- (3) this route may trigger the session between the peer to drop !
Your vendor picked option 2
Have fun,
Thomas