diff options
author | ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp> | 2017-02-22 11:43:48 +0000 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2017-04-04 22:07:46 +0900 |
commit | 70a654a238cbdfbe84ad86ce935fe16e244919c3 (patch) | |
tree | 278f4b501a6fe91e59761df64028ab780f2c7952 /docs/sources/unnumbered-bgp.md | |
parent | bba54bdaa14c1a4c13245548757b38a89531fd9b (diff) |
docs: add doc for unnumberd BGP
Signed-off-by: ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>
Diffstat (limited to 'docs/sources/unnumbered-bgp.md')
-rw-r--r-- | docs/sources/unnumbered-bgp.md | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/docs/sources/unnumbered-bgp.md b/docs/sources/unnumbered-bgp.md new file mode 100644 index 00000000..0fa6b9fa --- /dev/null +++ b/docs/sources/unnumbered-bgp.md @@ -0,0 +1,94 @@ +# Unnumbered BGP + +BGP is not only for the Internet. Due to proven scalability and configuration +flexibility, large data center operators are using BGP for thier data center +networking [[draft-ietf-rtgwg-bgp-routing-large-dc](https://www.ietf.org/id/draft-ietf-rtgwg-bgp-routing-large-dc-11.txt)]. + +In typical case, the topology of the network is CLOS network which can offer +multiple ECMP for ToR switches. +Each ToR switches run BGP daemon and peer to uplink switches connected with +P2P link. + +In this case, since all switches are operated by single administrator and trusted, +we can skip tedius neighbor configurations like specifing neighbor address or +neighbor AS number by using unnumberd BGP feature. + +Unnumbered BGP utilizes IPv6 link local address to automatically decide who +to connect. Also, when using unnumberd BGP, you don't need to specify neighbor AS number. +GoBGP will accept any AS number in the neighbor's open message. + +## Prerequisites + +To use unnumbered BGP feature, be sure the link between two BGP daemons is P2P +and IPv6 is enabled on interfaces connected to the link. + +Also, check neighbor's IPv6 link local address is on the linux's neighbor table. + +```bash +$ ip -6 neigh show +fe80::42:acff:fe11:5 dev eth0 lladdr 02:42:ac:11:00:05 REACHABLE +``` + +If neighbor's address doesn't exist, easiest way to fill the table is `ping6`. +Try the command below + +```bash +$ ping6 -c 1 ff02::1%eth0 +PING ff02::1%eth0 (ff02::1%eth0): 56 data bytes +64 bytes from fe80::42:acff:fe11:5%eth0: icmp_seq=0 ttl=64 time=0.312 ms +--- ff02::1%eth0 ping statistics --- +1 packets transmitted, 1 packets received, 0% packet loss +round-trip min/avg/max/stddev = 0.312/0.312/0.312/0.000 ms +``` + +More reliable method is to run [radvd](http://www.litech.org/radvd/) or +[zebra](http://www.nongnu.org/quagga/) to periodically send router +advertisement. + +## Configuration via configuration file + +```toml +[global.config] + as = 64512 + router-id = "192.168.255.1" + +[[neighbors]] + [neighbors.config] + neighbor-interface = "eth0" +``` + +## Configuration via CLI + +```bash +$ gobgp global as 64512 router-id 192.168.255.1 +$ gobgp neighbor add interface eth0 +$ gobgp neighbor eth0 +BGP neighbor is fe80::42:acff:fe11:3%eth0, remote AS 65001 + BGP version 4, remote router ID 192.168.0.2 + BGP state = BGP_FSM_ESTABLISHED, up for 00:00:07 + BGP OutQ = 0, Flops = 0 + Hold time is 90, keepalive interval is 30 seconds + Configured hold time is 90, keepalive interval is 30 seconds + Neighbor capabilities: + multi-protocol: + ipv4-unicast: advertised and received + ipv6-unicast: advertised and received + route-refresh: advertised and received + extended-nexthop: advertised and received + Local: nlri: ipv4-unicast, nexthop: ipv6 + Remote: nlri: ipv4-unicast, nexthop: ipv6 + four-octet-as: advertised and received + Message statistics: + Sent Rcvd + Opens: 1 1 + Notifications: 0 0 + Updates: 1 0 + Keepalives: 1 1 + Route Refesh: 0 0 + Discarded: 0 0 + Total: 3 2 + Route statistics: + Advertised: 1 + Received: 0 + Accepted: 0 +``` |