summaryrefslogtreecommitdiffhomepage
path: root/docs/sources/route-reflector.md
blob: f640564b5c6383cc3bdf68a098a182a457a9aa03 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# Route Reflector

This page explains how to set up GoBGP as a route reflector.

## Prerequisites

Assumed you finished [Getting Started](https://github.com/osrg/gobgp/blob/master/docs/sources/getting-started.md).

## Configuration

Configure `RouteReflector.RouteReflectorConfig` section to enable route reflector functionality.
The configuration below configures two route reflector clients and two normal iBGP peers.

```toml
[Global]
  [Global.Config]
    RouterId = "192.168.0.1"
    As = 65000
[Neighbors]
  [[Neighbors.NeighborList]]
    [Neighbors.NeighborList.Config]
      NeighborAddress = "192.168.10.2"
      PeerAs = 65000
    [Neighbors.NeighborList.RouteReflector.Config]
      RouteReflectorClient = true
      RouteReflectorClusterId = "192.168.0.1"
  [[Neighbors.NeighborList]]
    [Neighbors.NeighborList.Config]
      NeighborAddress = "192.168.10.3"
      PeerAs = 65000
    [Neighbors.NeighborList.RouteReflector.Config]
      RouteReflectorClient = true
      RouteReflectorClusterId = "192.168.0.1"
  [[Neighbors.NeighborList]]
    [Neighbors.NeighborList.Config]
      NeighborAddress = "192.168.10.4"
      PeerAs = 65000
  [[Neighbors.NeighborList]]
    [Neighbors.NeighborList.Config]
      NeighborAddress = "192.168.10.5"
      PeerAs = 65000
```

## Check route reflector behavior

Let's check adj-rib-out of a route reflector client.

```bash
$ gobgp neighbor 192.168.10.2 adj-out
Network              Next Hop             AS_PATH              Attrs
10.0.2.0/24          192.168.10.3                              [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.0.3} {ClusterList: [192.168.0.1]}]
10.0.3.0/24          192.168.10.4                              [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.0.4} {ClusterList: [192.168.0.1]}]
10.0.4.0/24          192.168.10.5                              [{Origin: i} {Med: 0} {LocalPref: 100} {Originator: 192.168.0.5} {ClusterList: [192.168.0.1]}]
```

You can see the routes from other iBGP peers are reflected.
Also Originator and ClusterList path attributes are added.

For the normal iBGP peer's adj-rib-out

```bash
$ gobgp neighbor 192.168.10.4 adj-out
Network              Next Hop             AS_PATH              Attrs
10.0.1.0/24          192.168.10.2                              [{Origin: i} {Med: 0} {LocalPref: 100}]
10.0.2.0/24          192.168.10.3                              [{Origin: i} {Med: 0} {LocalPref: 100}]
```

Only the routes from route reflector clients are advertised via GoBGP.
Originator and ClusterList path attributes are not added.