summaryrefslogtreecommitdiffhomepage
path: root/docs/sources/evpn.md
blob: 403f9adb51e2b45111921a40fef90adfc3cdda42 (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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# Ethernet VPN (EVPN)

This page explains an configuration for EVPN. Note that the feature is
still very experimental. This example uses [BaGPipe
BGP](https://github.com/Orange-OpenSource/bagpipe-bgp), which only OSS
BGP implementation supporting EVPN as far as we know. GoBGP receives
routes from one BaGPipe peer and advertises it to another BaGPipe
peer.

If you don't want to install [BaGPipe
BGP](https://github.com/Orange-OpenSource/bagpipe-bgp) by hand, you can use [Our BaGPipe BGP Docker
image](https://registry.hub.docker.com/u/yoshima/bagpipe-bgp/).

## Configuration

BaGPipe supports only iBGP. GoBGP peer connects to two BaGPipe
peers. Two BaGPipe peers are not connected. It's incorrect from the
perspective of BGP but this example just shows two OSS BGP
implementations can interchange EVPN messages.

```
[Global]
  As = 64512
  RouterId = "192.168.255.1"

[[NeighborList]]
  NeighborAddress = "10.0.255.1"
  PeerAs = 64512
  [[NeighborList.AfiSafiList]]
    AfiSafiName = "l2vpn-evpn"

[[NeighborList]]
  NeighborAddress = "10.0.255.2"
  PeerAs = 64512
  [[NeighborList.AfiSafiList]]
    AfiSafiName = "l2vpn-evpn"
```

The point is that route families to be advertised need to be
specified. We expect that many people are not familiar with [BaGPipe
BGP](https://github.com/Orange-OpenSource/bagpipe-bgp), the following
is our configuration files.

```
bagpipe-peer1:/etc/bagpipe-bgp# cat bgp.conf
[BGP]
local_address=10.0.255.1
peers=10.0.255.254
my_as=64512
enable_rtc=True

[API]
api_host=localhost
api_port=8082

[DATAPLANE_DRIVER_IPVPN]
dataplane_driver = DummyDataplaneDriver

[DATAPLANE_DRIVER_EVPN]
dataplane_driver = DummyDataplaneDriver
```
10.0.255.254 is GoBGP peer's address.

## Advertising EVPN route

As you expect, the RIBs at 10.0.255.2 peer has nothing.

```
bagpipe-peer2:~# bagpipe-looking-glass bgp routes
match:IPv4/mpls-vpn,*: -
match:IPv4/rtc,*: -
match:L2VPN/evpn,*: -
```

Let's advertise something from 10.0.255.1 peer.

```
bagpipe-peer1:~# bagpipe-rest-attach --attach --port tap42 --mac 00:11:22:33:44:55 --ip 11.11.11.1 --gateway-ip 11.11.11.254 --network-type evpn --rt 65000:77
```

Now the RIBs at 10.0.255.2 peer has the above route. The route was interchanged via GoBGP peer.
```
bagpipe-peer2:~# bagpipe-looking-glass bgp routes
match:IPv4/mpls-vpn,*: -
match:IPv4/rtc,*: -
match:L2VPN/evpn,*:
  * EVPN:Multicast:[rd:10.0.255.1:1][etag:178][10.0.255.1]:
      attributes:
        next_hop: 10.0.255.1
        pmsi_tunnel: PMSITunnel:IngressReplication:0:[0]:[10.0.255.1]
        extended_community: [ target:65000:77 Encap:VXLAN ]
      afi-safi: L2VPN/evpn
      source: BGP-10.0.255.254/192.168.255.1 (...)
      route_targets:
        * target:65000:77
  * EVPN:MACAdv:[rd:10.0.255.1:1][esi:-][etag:178][00:11:22:33:44:55][11.11.11.1][label:0]:
      attributes:
        next_hop: 10.0.255.1
        extended_community: [ target:65000:77 Encap:VXLAN ]
      afi-safi: L2VPN/evpn
      source: BGP-10.0.255.254/192.168.255.1 (...)
      route_targets:
        * target:65000:77
```