diff options
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | docs/sources/evpn.md | 104 |
2 files changed, 105 insertions, 0 deletions
@@ -24,6 +24,7 @@ No dependency hell (library, package, etc) thanks to Go. * [CLI operations](https://github.com/osrg/gobgp/blob/master/docs/sources/cli-operations.md) * [Route Server](https://github.com/osrg/gobgp/blob/master/docs/sources/route-server.md) * [Policy Filter](https://github.com/osrg/gobgp/blob/master/docs/sources/filter.md) + * [EVPN](https://github.com/osrg/gobgp/blob/master/docs/sources/evpn.md) ## Community, discussion and support diff --git a/docs/sources/evpn.md b/docs/sources/evpn.md new file mode 100644 index 00000000..403f9adb --- /dev/null +++ b/docs/sources/evpn.md @@ -0,0 +1,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 +``` |