Skip to content

Interop between ExaBGP and Juniper (rfc5575) #1348

@dontmess1

Description

@dontmess1

I've configured an interop between Juniper (Junos 20.2R3-S2.5) and ExaBGP (Ubuntu 22.04 (ExaBGP : 4.2.17; Python : 3.10.12))

R1 <- bgp flowspec-> ExaBGP

ExaBGP has a configuration:

neighbor 10.10.10.2 {
    # Basic identification
    router-id 10.10.10.3;
    local-address 10.10.10.3;
    local-as 2020;
    peer-as 2020;

    # Announce a static route
    static {
        route 100.10.0.0/24 next-hop self;
    }
}

Juniper has a configuraion:

@R1# run show configuration protocols bgp group FLOWPUSHER
Dec 23 21:05:27
traceoptions {
    file FLOWSPEC size 2m files 2 world-readable;
    flag update detail;
}
local-address 10.10.10.2;
peer-as 2020;
neighbor 10.10.10.3 {
    family inet {
        unicast;
        flow {
            no-validate NO-VALIDATE;
        }
    }
}

My test is easy, like a piece of cake.

I've generated 2 flowspec' routes:

exabgpcli 'neighbor 10.10.10.2 announce flow route destination-ipv4 90.100.110.120/32 protocol =udp destination-port [ <53 >53&<443 >443&<500 >500&<3391 >3391&<4433 >4433&<4500 >4500&<5101 >5101&<5106 ] rate-limit 0'

I did't have an impact

R1# run show route table inetflow.0    
Dec 24 05:32:33

inetflow.0: 1 destinations, 1 routes (1 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

90.100.110.120,*,proto=17,dstport>=0&<=52,>=54&<=442,>=444&<=499,>=501&<=3390,>=3392&<=4432,>=4434&<=4499,>=4501&<=5100,>=5102&<=5105/term:1            
                   *[BGP/170] 00:00:58, localpref 100, from 10.10.10.3
                      AS path: I, validation-state: unverified
                       Fictitious


Dec 24 05:37:59.024445 BGP RECV 10.10.10.3+38255 -> 10.10.10.2+179
Dec 24 05:37:59.024483 BGP RECV message type 2 (Update) length 110
Dec 24 05:37:59.024492 BGP RECV Update PDU length 110
Dec 24 05:37:59.024501 BGP RECV flags 0x40 code Origin(1): IGP
Dec 24 05:37:59.024539 BGP RECV flags 0x40 code ASPath(2) length 0: 
Dec 24 05:37:59.024549 BGP RECV flags 0x40 code LocalPref(5): 100
Dec 24 05:37:59.024562 BGP RECV flags 0xc0 code Extended Communities(16): 8006:0:0
Dec 24 05:37:59.024572 BGP RECV flags 0x80 code MP_reach(14): AFI/SAFI 1/133
Dec 24 05:37:59.024605 BGP RECV         90.100.110.120,*,proto=17,dstport>=0&<=52,>=54&<=442,>=444&<=499,>=501&<=3390,>=3392&<=4432,>=4434&<=4499,>=4501&<=5100,>=5102&<=5105/440
Dec 24 05:37:59.024643 bgp_rcv_nlri: Peer 10.10.10.3 (Internal AS 2020)

So, It looks OK, after that I am going to the next step. I've configured the second rule:
exabgpcli 'neighbor 10.10.10.2 announce flow route destination-ipv4 90.100.110.130/32 protocol =udp destination-port [ <53 >53&<443 >443&<500 >500&<3391 >3391&<4433 >4433&<4500 >4500&<5101 >5101&<5106 >5106&<5107 >5107 ] rate-limit 0'

After that BGP session on the peer was restarted:

Dec 24 05:37:59.024722 BGP RECV 10.10.10.3+38255 -> 10.10.10.2+179
Dec 24 05:37:59.024737 BGP RECV message type 2 (Update) length 119
Dec 24 05:37:59.024745 BGP RECV Update PDU length 119
Dec 24 05:37:59.024753 BGP RECV flags 0x40 code Origin(1): IGP
Dec 24 05:37:59.024763 BGP RECV flags 0x40 code ASPath(2) length 0: 
Dec 24 05:37:59.024771 BGP RECV flags 0x40 code LocalPref(5): 100
Dec 24 05:37:59.024781 BGP RECV flags 0xc0 code Extended Communities(16): 8006:0:0
Dec 24 05:37:59.024791 BGP RECV flags 0x80 code MP_reach(14): AFI/SAFI 1/133
Dec 24 05:37:59.024873 BGP RECV         zero-len/0
Dec 24 05:37:59.024906 bgp_rcv_nlri: Peer 10.10.10.3 (Internal AS 2020)
Dec 24 05:37:59.024935 bgp_rcv_nlri: zero-len/0
Dec 24 05:37:59.024973 bgp_rcv_nlri:11061: NOTIFICATION sent to 10.10.10.3 (Internal AS 2020): code 3 (Update Message Error) subcode 10 (bad address/prefix field), Reason: peer 10.10.10.3 (Internal AS 2020) update included invalid route zero-len/0 (0 of 63)
Dec 24 05:37:59.024985 BGP_209030.10.10.10.3: send proc: send via threaded I/O
Dec 24 05:37:59.024993 sending 21 bytes
Dec 24 05:37:59.025007
Dec 24 05:37:59.025007 BGP SEND 10.10.10.2+179 -> 10.10.10.3+38255
Dec 24 05:37:59.025019 BGP SEND message type 3 (Notification) length 21
Dec 24 05:37:59.025028 BGP SEND Notification code 3 (Update Message Error) subcode 10 (bad address/prefix field)
Dec 24 05:37:59.025070  wrote 21 bytes to I/O queue
Dec 24 05:37:59.025080 finished number of messages 1, write qidx 0 rc 1
Dec 24 05:37:59.025101
Dec 24 05:37:59.025101 BGP RECV 10.10.10.3+38255 -> 10.10.10.2+179
Dec 24 05:37:59.025125  ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 00 77 02 00 00
Dec 24 05:37:59.025144  00 60 40 01 01 00 40 02 00 40 05 04 00 00 00 64 c0 10 08 80
Dec 24 05:37:59.025163  06 00 00 00 00 00 00 80 0e 44 00 01 85 00 00 3e 01 20 5a 64
Dec 24 05:37:59.025182  6e 82 03 81 11 05 04 35 02 35 54 01 bb 12 01 bb 54 01 f4 12
Dec 24 05:37:59.025200  01 f4 54 0d 3f 12 0d 3f 54 11 51 12 11 51 54 11 94 12 11 94
Dec 24 05:37:59.025218  54 13 ed 12 13 ed 54 13 f2 12 13 f2 54 13 f3 92 13 f3
Dec 24 05:37:59.025236 bgp_send_deactivate:2920: 10.10.10.3 (Internal AS 2020) ,flags=0x10000: removed from active list
Image

I don't have any ideas, the behavior is unexpected for me.
Do you have any ideas?

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions