Skip to content

Some questions about redundant route reflectors #2166

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

Closed
shengslin opened this issue Sep 19, 2019 · 3 comments
Closed

Some questions about redundant route reflectors #2166

shengslin opened this issue Sep 19, 2019 · 3 comments

Comments

@shengslin
Copy link

shengslin commented Sep 19, 2019

Networking:


RR1 ======== RR2
 |          /
 |        /  
 |      /    
 |     /     
 client1   

RR1:  172.16.20.30
RR2:  172.16.20.31
client1:  172.16.20.32

Configure:

RR1#cat gobgpd.conf
[global.config]
as = 1111
port = 17900
router-id = "172.16.20.30"

[[neighbors]]
	[neighbors.config]
		neighbor-address = "172.16.20.31"
		peer-as = 1111
  [neighbors.transport.config]
		remote-port = 17900


[[neighbors]]
  [neighbors.config]
    neighbor-address = "172.16.20.32"
    peer-as = 1111
	[neighbors.transport.config]
		remote-port = 17900
  [neighbors.route-reflector.config]
    route-reflector-client = true
[[neighbors.afi-safis]]
  [neighbors.afi-safis.config]
    afi-safi-name = "ipv4-unicast"
    
    
RR2#cat gobgpd.conf
[global.config]
as = 1111
port = 17900
router-id = "172.16.20.31"

[[neighbors]]
[neighbors.config]
neighbor-address = "172.16.20.30"
peer-as = 1111
    [neighbors.transport.config]
        remote-port = 17900

[[neighbors]]
  [neighbors.config]
    neighbor-address = "172.16.20.32"
    peer-as = 1111
  [neighbors.route-reflector.config]
    route-reflector-client = true
    [neighbors.transport.config]
        remote-port = 17900
[[neighbors.afi-safis]]
  [neighbors.afi-safis.config]
    afi-safi-name = "ipv4-unicast"


client1#cat gobgpd.conf
[global.config]
	as = 1111
	port = 17900
	router-id = "172.16.20.32"

[[neighbors]]
	[neighbors.config]
		neighbor-address = "172.16.20.31"
		peer-as = 1111
	[neighbors.transport.config]
		remote-port = 17900

[[neighbors]]
	[neighbors.config]
		neighbor-address = "172.16.20.30"
		peer-as = 1111
	[neighbors.transport.config]
		remote-port = 17900
       

Configuring a route on client1:

 client1# gobgp global rib add 2.2.2.0/24 

The effect is as follows

RR1:

RR1# gobgp global rib 
   Network              Next Hop             AS_PATH              Age        Attrs
*> 2.2.2.0/24           172.16.20.32                              00:01:01   [{Origin: ?} {LocalPref: 100}]
*  2.2.2.0/24           172.16.20.32                              00:01:01   [{Origin: ?} {LocalPref: 100}]      

RR1# gobgp neigh 172.16.20.32 adj-in
   ID  Network              Next Hop             AS_PATH              Age        Attrs
   0   2.2.2.0/24           172.16.20.32                              00:03:22   [{Origin: ?} {LocalPref: 100}]

RR1# gobgp neigh 172.16.20.32 adj-out
   ID  Network              Next Hop             AS_PATH              Attrs
   2   2.2.2.0/24           172.16.20.32                              [{Origin: ?} {LocalPref: 100} {Originator: 172.16.20.31} {ClusterList: [172.16.20.30]}]

RR1# gobgp neigh 172.16.20.31  adj-in
   ID  Network              Next Hop             AS_PATH              Age        Attrs
   0   2.2.2.0/24           172.16.20.32                              00:04:13   [{Origin: ?} {LocalPref: 100}]

RR1# gobgp neigh 172.16.20.31  adj-out
Network not in table

RR2

RR2# gobgp global rib
   Network              Next Hop             AS_PATH              Age        Attrs
*> 2.2.2.0/24           172.16.20.32                              00:02:01   [{Origin: ?} {LocalPref: 100}]
*  2.2.2.0/24           172.16.20.32                              00:02:01   [{Origin: ?} {LocalPref: 100}] 
    
RR2# gobgp neigh 172.16.20.32 adj-in
   ID  Network              Next Hop             AS_PATH              Age        Attrs
   0   2.2.2.0/24           172.16.20.32                              00:05:05   [{Origin: ?} {LocalPref: 100}]

RR2# gobgp neigh 172.16.20.32 adj-out
   ID  Network              Next Hop             AS_PATH              Attrs
   2   2.2.2.0/24           172.16.20.32                              [{Origin: ?} {LocalPref: 100} {Originator: 172.16.20.30} {ClusterList: [172.16.20.31]}]

RR2# gobgp neigh 172.16.20.30  adj-out
Network not in table

RR2# gobgp neigh 172.16.20.30  adj-in
   ID  Network              Next Hop             AS_PATH              Age        Attrs
   0   2.2.2.0/24           172.16.20.32                              00:05:19   [{Origin: ?} {LocalPref: 100}]    
    

Here I want to ask the first question: Why does the adj-out of the neighbors to RR2 on RR1 not equal the adj-in of the neighbors to RR1 on RR2?

RR1# gobgp neigh 172.16.20.31  adj-in
   ID  Network              Next Hop             AS_PATH              Age        Attrs
   0   2.2.2.0/24           172.16.20.32                              00:04:13   [{Origin: ?} {LocalPref: 100}]
RR2# gobgp neigh 172.16.20.30  adj-out
Network not in table

clent1:

client1# gobgp global rib
   Network              Next Hop             AS_PATH              Age        Attrs
*> 2.2.2.0/24           0.0.0.0                                   00:01:24   [{Origin: ?}]
*  2.2.2.0/24           172.16.20.32                              00:01:24   [{Origin: ?} {LocalPref: 100} {Originator: 172.16.20.31} {ClusterList: [172.16.20.30]}]
*  2.2.2.0/24           172.16.20.32                              00:01:24   [{Origin: ?} {LocalPref: 100} {Originator: 172.16.20.30} {ClusterList: [172.16.20.31]}]

There are three routes in client1. The latter two are learned from RR1 and RR2. According to my understanding, these two routes should not exist. I found that their Originator ID is wrong and should be the router ID of client1. That is, 172.16.20.32, so that when cleint1 receives these two routes, it will compare with its own router id, and the same will not be received.

Because of the above problem, I am restarting the client's bgp process, or executing :
#gobgp neigh 172.16.20.31 reset ; gobgp neigh 172.16.20.30 reset ; gobgp global rib del 2.2.2.0/24
I found that 2.2.2.0/24 still exists on client1, it has actually been deleted.

client1# gobgp global rib
   Network              Next Hop             AS_PATH              Age        Attrs
*> 2.2.2.0/24           172.16.20.32                              00:01:02   [{Origin: ?} {LocalPref: 100} {Originator: 172.16.20.31} {ClusterList: [172.16.20.30]}]
*  2.2.2.0/24           172.16.20.32                              00:01:05   [{Origin: ?} {LocalPref: 100} {Originator: 172.16.20.30} {ClusterList: [172.16.20.31]}]

They are all released by RR. The RR has not been properly aged.

RR1#gobgp neigh 172.16.20.31 adj-in
   ID  Network              Next Hop             AS_PATH              Age        Attrs
   0   2.2.2.0/24           172.16.20.32                              00:25:55   [{Origin: ?} {LocalPref: 100}]
RR1#gobgp neigh 172.16.20.32 adj-out
   ID  Network              Next Hop             AS_PATH              Attrs
   2   2.2.2.0/24           172.16.20.32                              [{Origin: ?} {LocalPref: 100} {Originator: 172.16.20.31} {ClusterList: [172.16.20.30]}]

They should be deleted on RR1

=====================
Test FRR

I will use the same scene to test frr

After adding a route on client1:

RR1 # show ip bgp
BGP table version is 4, local router ID is 172.16.20.30, vrf id 0
Default local pref 100, local AS 1111
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
* i1.1.1.0/24       172.16.20.32             0    100      0 i
*>i                 172.16.20.32             0    100      0 i
RR1# show ip bgp 1.1.1.0/24
BGP routing table entry for 1.1.1.0/24
Paths: (2 available, best #2, table default)
  Advertised to non peer-group peers:
  172.16.20.31 172.16.20.32
  Local
    172.16.20.32 from 172.16.20.31 (172.16.20.32)
      Origin IGP, metric 0, localpref 100, valid, internal
      Originator: 172.16.20.32, Cluster list: 172.16.20.31
      Last update: Wed Sep 18 13:15:00 2019

  Local, (Received from a RR-client)
    172.16.20.32 from 172.16.20.32 (172.16.20.32)
      Origin IGP, metric 0, localpref 100, valid, internal, best
      Last update: Wed Sep 18 13:15:00 2019



client1# show ip bgp
BGP table version is 1, local router ID is 172.16.20.32, vrf id 0
Default local pref 100, local AS 1111
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
*> 1.1.1.0/24       0.0.0.0                  0         32768 i

There is only one route on client1, and it will not receive the route reflected by the RR.
And the Originator id of the route is 172.16.20.32 which equal to its router id.This is consistent with my experience.

RR1# show ip bgp neigh 172.16.20.31 routes
BGP table version is 4, local router ID is 172.16.20.30, vrf id 0
Default local pref 100, local AS 1111
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
* i1.1.1.0/24       172.16.20.32             0    100      0 i

Displayed  1 routes and 2 total paths

RR2# show ip bgp neighbors  172.16.20.30  advertised-routes
BGP table version is 4, local router ID is 172.16.20.31, vrf id 0
Default local pref 100, local AS 1111
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
*> 1.1.1.0/24       172.16.20.32             0    100      0 i

Total number of prefixes 1

The adj-out of the neighbors to RR2 on RR1 not equal the adj-in of the neighbors to RR1 on RR2, it's ok.

then, i executed the following command, which is equivalent to executing "#gobgp neigh 172.16.20.31 reset ; gobgp neigh 172.16.20.30 reset ; gobgp global rib del 1.1.1.0/24"

clear ip bgp *
configure terminal
router bgp 1111
no network 1.1.1.0/24
RR1# show ip bgp
No BGP prefixes displayed, 0 exist
RR2# show ip bgp
No BGP prefixes displayed, 0 exist
client1#  show ip bgp
No BGP prefixes displayed, 0 exist

The routes on all nodes are cleared. This is consistent with my experience.

@wu0407
Copy link

wu0407 commented Sep 21, 2019

similar issue with 3 rr and 2 client and 1 nomal client

                                                                                                                                            
                                                                                                                                            
                                                                                                                                            
                                                                                                                                            
                                                                                                                                            
                                                                                                                                            
                                                                                                                                            
                                                                             normal bgp                                                     
                                                                     +---------------------+                                                
                                                                     |                     |                                                
                                                           +---------|    192.168..251.145 | -----------+                                   
                                                           |         |                     |            |                                   
                                                           |         +---------------------+            |                                   
                                                           |                     |                      |                                   
                                                           |                     |                      |                                   
                                                           |                     |                      |                                   
                                                           |                     |                      |                                   
                                                           |                     |                      |                                   
                                                         rr|                     |                    rr|                                   
                                                  +----------------+             |             +----------------+                           
                                                  |                |             |             |                |                           
                                                  |192.168.189.214 |------------/---------------192.168.189.215 |                           
                                                  |                |            |              |                |                           
                                                  +----------------+            |              +----------------+                           
                                                  cluster-id 1.1.1.1            |              cluster-id 1.1.1.1                           
                                                      |    |                    |                       |                                   
                                                      |    |                    |                       |                                   
                                                      |    |                    |                       |                                   
                                                      |    |                    |                       |                                   
                                                      |    |                  rr|                       |                                   
                                                      |    |           +----------------+               |                                   
                                                      |    |           |                |               |                                   
                                                      |    +---------- |192.168.189.213 |---------------|                                   
                                                       \               |                |               |                                   
                                                       |               +----------------+               |                                   
                                                       |               cluster-id 1.1.1.1               |                                   
                                                       |                         |                      |                                   
                                                       |                         |                      |                                   
                                                       |                         |                      |                                   
                                                       +------------- -----------+--------+-------------+                                   
                                                       -                                  |                                                 
                                                 rr client                              rr client                                           
                                           +--------------------+             +----------------------+                                      
                                           |                    |             |                      |                                      
                                           |    192.168.189.216 |             |      192.168.189.217 |                                      
                                           |                    |             |                      |                                      
                                           |                    |             |                      |       

rr 192.168.189.213 config


[global.config]
  router-id = "192.168.189.213"
  as = 64513

[[neighbors]]
  [neighbors.config]
    neighbor-address = "192.168.251.145"
    peer-as = 64513
[neighbors.route-reflector.config]
    route-reflector-client = true
    route-reflector-cluster-id = "1.1.1.1"


[[neighbors]]
  [neighbors.config]
    neighbor-address = "192.168.189.214"
    peer-as = 64513
[neighbors.route-reflector.config]
    route-reflector-client = true
    route-reflector-cluster-id = "1.1.1.1"


[[neighbors]]
  [neighbors.config]
    neighbor-address = "192.168.189.215"
    peer-as = 64513
[neighbors.route-reflector.config]
    route-reflector-client = true
    route-reflector-cluster-id = "1.1.1.1"


[[peer-groups]]
  [peer-groups.config]
    peer-group-name = "uscasv2"
    peer-as = 64513
  [peer-groups.route-reflector.config]
    route-reflector-client = true
    route-reflector-cluster-id = "1.1.1.1"  
  [[peer-groups.afi-safis]]
    [peer-groups.afi-safis.config]
      afi-safi-name = "ipv4-unicast"

[[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.0/25'
    peer-group = "uscasv2"

[[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.128/26'
    peer-group = "uscasv2"

 [[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.192/28'
    peer-group = "uscasv2"


 [[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.208/30'
    peer-group = "uscasv2"


[[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.212/32'
    peer-group = "uscasv2"

 [[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.216/29'
    peer-group = "uscasv2"


 [[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.224/27'
    peer-group = "uscasv2"



[zebra]
 [zebra.config]
    enabled = true
    url = "unix:/var/run/frr/zserv.api"
    redistribute-route-type-list = ["connect"]
    version = 6
    software-name="frr7.1"

[global.apply-policy.config]
  export-policy-list = ["not-export-local-subnet"]

[[policy-definitions]]
    name = "not-export-local-subnet"
 	[[policy-definitions.statements]]
      name = "statement1"
      [policy-definitions.statements.conditions.match-prefix-set]
        prefix-set = "local-subnet"
    	[policy-definitions.statements.actions]
        route-disposition = "reject-route" 

[[defined-sets.prefix-sets]]
  prefix-set-name ="local-subnet"
  [[defined-sets.prefix-sets.prefix-list]]
    ip-prefix = "192.168.189.0/24"


rr 192.168.189.214 config

[global.config]
  router-id = "192.168.189.214"
  as = 64513

[[neighbors]]
  [neighbors.config]
    neighbor-address = "192.168.251.145"
    peer-as = 64513
[neighbors.route-reflector.config]
    route-reflector-client = true
    route-reflector-cluster-id = "1.1.1.1"


[[neighbors]]
  [neighbors.config]
    neighbor-address = "192.168.189.213"
    peer-as = 64513
[neighbors.route-reflector.config]
    route-reflector-client = true
    route-reflector-cluster-id = "1.1.1.1"


[[neighbors]]
  [neighbors.config]
    neighbor-address = "192.168.189.215"
    peer-as = 64513
[neighbors.route-reflector.config]
    route-reflector-client = true
    route-reflector-cluster-id = "1.1.1.1"


[[peer-groups]]
  [peer-groups.config]
    peer-group-name = "uscasv2"
    peer-as = 64513
  [peer-groups.route-reflector.config]
    route-reflector-client = true
    route-reflector-cluster-id = "1.1.1.1"  
  [[peer-groups.afi-safis]]
    [peer-groups.afi-safis.config]
      afi-safi-name = "ipv4-unicast"

[[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.0/25'
    peer-group = "uscasv2"

[[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.128/26'
    peer-group = "uscasv2"

 [[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.192/28'
    peer-group = "uscasv2"


 [[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.208/30'
    peer-group = "uscasv2"


[[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.212/32'
    peer-group = "uscasv2"

 [[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.216/29'
    peer-group = "uscasv2"


 [[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.224/27'
    peer-group = "uscasv2"



[zebra]
 [zebra.config]
    enabled = true
    url = "unix:/var/run/frr/zserv.api"
    redistribute-route-type-list = ["connect"]
    version = 6
    software-name="frr7.1"

[global.apply-policy.config]
  export-policy-list = ["not-export-local-subnet"]

[[policy-definitions]]
    name = "not-export-local-subnet"
 	[[policy-definitions.statements]]
      name = "statement1"
      [policy-definitions.statements.conditions.match-prefix-set]
        prefix-set = "local-subnet"
    	[policy-definitions.statements.actions]
        route-disposition = "reject-route" 

[[defined-sets.prefix-sets]]
  prefix-set-name ="local-subnet"
  [[defined-sets.prefix-sets.prefix-list]]
    ip-prefix = "192.168.189.0/24"

rr 192.168.189.215 config

[global.config]
  router-id = "192.168.189.215"
  as = 64513

[[neighbors]]
  [neighbors.config]
    neighbor-address = "192.168.251.145"
    peer-as = 64513
[neighbors.route-reflector.config]
    route-reflector-client = true
    route-reflector-cluster-id = "1.1.1.1"


[[neighbors]]
  [neighbors.config]
    neighbor-address = "192.168.189.214"
    peer-as = 64513
[neighbors.route-reflector.config]
    route-reflector-client = true
    route-reflector-cluster-id = "1.1.1.1"


[[neighbors]]
  [neighbors.config]
    neighbor-address = "192.168.189.213"
    peer-as = 64513
[neighbors.route-reflector.config]
    route-reflector-client = true
    route-reflector-cluster-id = "1.1.1.1"


[[peer-groups]]
  [peer-groups.config]
    peer-group-name = "uscasv2"
    peer-as = 64513
  [peer-groups.route-reflector.config]
    route-reflector-client = true
    route-reflector-cluster-id = "1.1.1.1"  
  [[peer-groups.afi-safis]]
    [peer-groups.afi-safis.config]
      afi-safi-name = "ipv4-unicast"

[[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.0/25'
    peer-group = "uscasv2"

[[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.128/26'
    peer-group = "uscasv2"

 [[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.192/28'
    peer-group = "uscasv2"


 [[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.208/30'
    peer-group = "uscasv2"


[[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.212/32'
    peer-group = "uscasv2"

 [[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.216/29'
    peer-group = "uscasv2"


 [[dynamic-neighbors]]
  [dynamic-neighbors.config]
    prefix = '192.168.189.224/27'
    peer-group = "uscasv2"



[zebra]
 [zebra.config]
    enabled = true
    url = "unix:/var/run/frr/zserv.api"
    redistribute-route-type-list = ["connect"]
    version = 6
    software-name="frr7.1"

[global.apply-policy.config]
  export-policy-list = ["not-export-local-subnet"]

[[policy-definitions]]
    name = "not-export-local-subnet"
 	[[policy-definitions.statements]]
      name = "statement1"
      [policy-definitions.statements.conditions.match-prefix-set]
        prefix-set = "local-subnet"
    	[policy-definitions.statements.actions]
        route-disposition = "reject-route" 

[[defined-sets.prefix-sets]]
  prefix-set-name ="local-subnet"
  [[defined-sets.prefix-sets.prefix-list]]
    ip-prefix = "192.168.189.0/24"

rr-192.168.189.213

rr-192.168.189.213#gobgp neighbor 
Peer               AS  Up/Down State       |#Received  Accepted
192.168.189.216 64513 00:06:38 Establ      |        1         1
192.168.189.217 64513 00:06:35 Establ      |        1         1
192.168.189.214 64513 00:03:30 Establ      |        1         1
192.168.189.215 64513 00:01:59 Establ      |        1         1
192.168.251.145 64513 00:06:23 Establ      |        0         0

rr-192.168.189.213#gobgp global rib 
   Network              Next Hop             AS_PATH              Age        Attrs
*> 10.3.0.0/25          192.168.189.216                           00:08:43   [{Origin: i} {Med: 0} {LocalPref: 100}]
*> 10.3.0.128/25        192.168.189.217                           00:08:40   [{Origin: i} {Med: 0} {LocalPref: 100}]
*> 10.3.1.0/25          192.168.189.214                           00:05:35   [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.214} {ClusterList: [1.1.1.1]}]
*> 10.3.1.128/25        192.168.189.215                           00:04:04   [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.215} {ClusterList: [1.1.1.1]}]
*> 192.168.189.0/24     0.0.0.0                                   00:08:47   [{Origin: i} {Med: 0}]
root@k8s-master01:/# gobgp neighbor 192.168.251.145 adj-out
   ID  Network              Next Hop             AS_PATH              Attrs
   1   10.3.0.0/25          192.168.189.216                           [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.216} {ClusterList: [1.1.1.1]}]
   1   10.3.0.128/25        192.168.189.217                           [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.217} {ClusterList: [1.1.1.1]}]
rr-192.168.189.213:/# gobgp neighbor 192.168.251.145 adj-in 
Network not in table
rr-192.168.189.213:/# gobgp neighbor 192.168.251.145 adj-out
   ID  Network              Next Hop             AS_PATH              Attrs
   1   10.3.0.0/25          192.168.189.216                           [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.216} {ClusterList: [1.1.1.1]}]
   1   10.3.0.128/25        192.168.189.217                           [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.217} {ClusterList: [1.1.1.1]}]
rr-192.168.189.213:/# gobgp neighbor 192.168.189.214 adj-out
   ID  Network              Next Hop             AS_PATH              Attrs
   1   10.3.0.0/25          192.168.189.216                           [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.216} {ClusterList: [1.1.1.1]}]
   1   10.3.0.128/25        192.168.189.217                           [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.217} {ClusterList: [1.1.1.1]}]
rr-192.168.189.213:/# gobgp neighbor 192.168.189.214 adj-in 
   ID  Network              Next Hop             AS_PATH              Age        Attrs
   0   10.3.1.0/25          192.168.189.214                           00:10:58   [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.214} {ClusterList: [1.1.1.1]}]
rr-192.168.189.213:/# gobgp neighbor 192.168.189.215 adj-in 
   ID  Network              Next Hop             AS_PATH              Age        Attrs
   0   10.3.1.128/25        192.168.189.215                           00:09:41   [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.215} {ClusterList: [1.1.1.1]}]
rr-192.168.189.213:/# gobgp neighbor 192.168.189.215 adj-out
   ID  Network              Next Hop             AS_PATH              Attrs
   1   10.3.0.0/25          192.168.189.216                           [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.216} {ClusterList: [1.1.1.1]}]
   1   10.3.0.128/25        192.168.189.217                           [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.217} {ClusterList: [1.1.1.1]}]
rr-192.168.189.213:/# gobgp neighbor 192.168.189.216 adj-out 
   ID  Network              Next Hop             AS_PATH              Attrs
   1   10.3.0.128/25        192.168.189.217                           [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.217} {ClusterList: [1.1.1.1]}]
rr-192.168.189.213:/# gobgp neighbor 192.168.189.216 adj-in  
   ID  Network              Next Hop             AS_PATH              Age        Attrs
   0   10.3.0.0/25          192.168.189.216                           00:14:46   [{Origin: i} {LocalPref: 100}]
rr-192.168.189.213:/# gobgp neighbor 192.168.189.217 adj-in 
   ID  Network              Next Hop             AS_PATH              Age        Attrs
   0   10.3.0.128/25        192.168.189.217                           00:15:00   [{Origin: i} {LocalPref: 100}]
rr-192.168.189.213:/# gobgp neighbor 192.168.189.217 adj-out
   ID  Network              Next Hop             AS_PATH              Attrs
   1   10.3.0.0/25          192.168.189.216                           [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.216} {ClusterList: [1.1.1.1]}]

rr-192.168.189.214

rr-192.168.189.214# gobgp neighbor 
Peer               AS  Up/Down State       |#Received  Accepted
192.168.189.216 64513 00:01:32 Establ      |        1         1
192.168.189.217 64513 00:01:28 Establ      |        1         1
192.168.189.213 64513 00:02:23 Establ      |        2         2
192.168.189.215 64513 00:00:45 Establ      |        1         1
192.168.251.145 64513 00:02:15 Establ      |        0         0
rr-192.168.189.214# gobgp global rib
   Network              Next Hop             AS_PATH              Age        Attrs
*> 10.3.0.0/25          192.168.189.216                           00:00:19   [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.216} {ClusterList: [1.1.1.1]}]
*  10.3.0.0/25          192.168.189.216                           00:14:51   [{Origin: i} {LocalPref: 100}]
*> 10.3.0.128/25        192.168.189.217                           00:00:29   [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.217} {ClusterList: [1.1.1.1]}]
*  10.3.0.128/25        192.168.189.217                           00:14:47   [{Origin: i} {LocalPref: 100}]
*> 10.3.1.0/25          0.0.0.0                                   00:15:49   [{Origin: i} {Med: 0}]
*> 10.3.1.128/25        192.168.189.215                           00:14:04   [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.215} {ClusterList: [1.1.1.1]}]
*> 192.168.189.0/24     0.0.0.0                                   00:15:49   [{Origin: i} {Med: 0}]


rr-192.168.189.214# gobgp neighbor 192.168.251.145 adj-out
   ID  Network              Next Hop             AS_PATH              Attrs
   1   10.3.1.0/25          192.168.189.214                           [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.214} {ClusterList: [1.1.1.1]}]
rr-192.168.189.214# gobgp neighbor 192.168.251.145 adj-in 
Network not in table
rr-192.168.189.214# gobgp neighbor 192.168.189.216 adj-in   
   ID  Network              Next Hop             AS_PATH              Age        Attrs
   0   10.3.0.0/25          192.168.189.216                           00:16:26   [{Origin: i} {LocalPref: 100}]
rr-192.168.189.214# gobgp neighbor 192.168.189.216 adj-out 
   ID  Network              Next Hop             AS_PATH              Attrs
   1   10.3.1.0/25          192.168.189.214                           [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.214} {ClusterList: [1.1.1.1]}]
rr-192.168.189.214# gobgp neighbor 192.168.189.217 adj-in  
   ID  Network              Next Hop             AS_PATH              Age        Attrs
   0   10.3.0.128/25        192.168.189.217                           00:16:45   [{Origin: i} {LocalPref: 100}]
rr-192.168.189.214# gobgp neighbor 192.168.189.217 adj-out
   ID  Network              Next Hop             AS_PATH              Attrs
   1   10.3.1.0/25          192.168.189.214                           [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.214} {ClusterList: [1.1.1.1]}]

rr-192.168.189.215

rr-192.168.189.215:/# gobgp neighbor 
Peer               AS  Up/Down State       |#Received  Accepted
192.168.189.216 64513 00:17:30 Establ      |        1         1
192.168.189.217 64513 00:17:29 Establ      |        1         1
192.168.189.213 64513 00:18:52 Establ      |        2         2
192.168.189.214 64513 00:18:45 Establ      |        1         1
192.168.251.145 64513 00:18:54 Establ      |        0         0
rr-192.168.189.215# gobgp global rib 
   Network              Next Hop             AS_PATH              Age        Attrs
*> 10.3.0.0/25          192.168.189.216                           00:00:11   [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.216} {ClusterList: [1.1.1.1]}]
*  10.3.0.0/25          192.168.189.216                           00:17:41   [{Origin: i} {LocalPref: 100}]
*> 10.3.0.128/25        192.168.189.217                           00:00:21   [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.217} {ClusterList: [1.1.1.1]}]
*  10.3.0.128/25        192.168.189.217                           00:17:40   [{Origin: i} {LocalPref: 100}]
*> 10.3.1.0/25          192.168.189.214                           00:18:56   [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.214} {ClusterList: [1.1.1.1]}]
*> 10.3.1.128/25        0.0.0.0                                   00:19:15   [{Origin: i} {Med: 0}]
*> 192.168.189.0/24     0.0.0.0                                   00:19:15   [{Origin: i} {Med: 0}]
rr-192.168.189.215# gobgp neighbor 192.168.251.145 adj-out
   ID  Network              Next Hop             AS_PATH              Attrs
   1   10.3.1.128/25        192.168.189.215                           [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.215} {ClusterList: [1.1.1.1]}]
rr-192.168.189.215# gobgp neighbor 192.168.251.145 adj-in 
Network not in table
rr-192.168.189.215# gobgp neighbor 192.168.189.216 adj-in       
   ID  Network              Next Hop             AS_PATH              Age        Attrs
   0   10.3.0.0/25          192.168.189.216                           00:18:31   [{Origin: i} {LocalPref: 100}]
rr-192.168.189.215# gobgp neighbor 192.168.189.217 adj-in 
   ID  Network              Next Hop             AS_PATH              Age        Attrs
   0   10.3.0.128/25        192.168.189.217                           00:18:35   [{Origin: i} {LocalPref: 100}]
rr-192.168.189.215# gobgp neighbor 192.168.189.217 adj-out
   ID  Network              Next Hop             AS_PATH              Attrs
   1   10.3.1.128/25        192.168.189.215                           [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.215} {ClusterList: [1.1.1.1]}]
rr-192.168.189.215# gobgp neighbor 192.168.189.216 adj-out 
   ID  Network              Next Hop             AS_PATH              Attrs
   1   10.3.1.128/25        192.168.189.215                           [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.189.215} {ClusterList: [1.1.1.1]}]

the client 192.168.251.145 not recive all route from rr rib.
The rfc 4456

When an RR receives a route from an IBGP peer, it selects the best
path based on its path selection rule. After the best path is
selected, it must do the following depending on the type of peer it
is receiving the best path from

  1) A route from a Non-Client IBGP peer:

     Reflect to all the Clients.

  2) A route from a Client peer:

     Reflect to all the Non-Client peers and also to the Client
     peers.  (Hence the Client peers are not required to be fully
     meshed.)

on the gobgp 2.8.0

use kube-route same ploblem cloudnativelabs/kube-router#773

@wu0407
Copy link

wu0407 commented Sep 21, 2019

set cluster id diffrent on the rr config, 192.168.251.145 revice all the route from rr rib

@fujita
Copy link
Member

fujita commented Oct 23, 2019

like frr, gobgp uses router-id as cluster-id if cluster-id is not configured.

@fujita fujita closed this as completed Oct 23, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants