From 4e6815e7d8f84d9c6a37ad8e74c18c294636dc3b Mon Sep 17 00:00:00 2001 From: Hans van Kranenburg Date: Sat, 20 Jun 2015 17:41:25 +0200 Subject: [PATCH] BGP Intro: Hands on WIP, BIRD protocols and tables --- bgp-intro/README.md | 85 +++++++++++++++++++++------------- bgp-intro/bird-prototable.dia | Bin 0 -> 2768 bytes bgp-intro/bird-prototable.png | Bin 0 -> 43082 bytes 3 files changed, 53 insertions(+), 32 deletions(-) create mode 100644 bgp-intro/bird-prototable.dia create mode 100644 bgp-intro/bird-prototable.png diff --git a/bgp-intro/README.md b/bgp-intro/README.md index 7458334..43250ff 100644 --- a/bgp-intro/README.md +++ b/bgp-intro/README.md @@ -254,11 +254,13 @@ The bgp protocol is named after the router which it's talking to, `R10`, and is The pipe protocol is a simple protocol that is able to move around routes between internal BIRD routing tables. In this case, the pipe protocol `p_master_to_r10` is connected to the central `master` routing table and is looking at table `t_r10`. From table `t_r10`, all routes that originate from an external BGP peer are imported into the master table. Doing so will cause the routes that will be learned from the remote network to end up in the routing table of the Linux kernel (via the kernel protocol that exports them from the BIRD master table outside BIRD), while the routes that only were meant to be used to export to the BGP peer (generated by the static protocol) stay in `t_r10`. -Remember, the internal BIRD routing tables are not used to actually do packet forwarding. During the OSPF tutorial, we already discussed this difference between the "Control Plane" and "Forwarding Plane". Actually, the routing table inside the control plane is usually called the "RIB" (Routing Information Base), while the routing table that is used in the forwarding plane is called the "FIB" (Forwarding Information Base). Just look up all those terms on the internet to see what everyone is saying about them. +Don't worry if the whole construction with tables, protocols and pipes is still a bit confusing. First goal is to see the BGP routing in action, and afterwards I'll explain more about those BIRD internals. + +Also, remember that the internal BIRD routing tables are not used to actually do packet forwarding. During the OSPF tutorial, we already discussed this difference between the "Control Plane" and "Forwarding Plane". Actually, the routing table inside the control plane is usually called the "RIB" (Routing Information Base), while the routing table that is used in the forwarding plane is called the "FIB" (Forwarding Information Base). Just look up all those terms on the internet to see what everyone is saying about them. ### Seeing it in action! -After adding the configuration, fire up the interactive BIRD console, using `birdc`: +After adding the configuration on `R3`, fire up the interactive BIRD console, using `birdc`: root@R3:/# birdc BIRD 1.4.5 ready. @@ -278,7 +280,7 @@ After adding the configuration, fire up the interactive BIRD console, using `bir Well, the routes are waiting to be pushed to `R10` in the `t_r10` table, and no routes from `AS65033` are visible yet. There's only an ugly "Connection refused"... reminding you that the other end of the BGP connection needs to be configured. Now it's up to you to configure `R10` with the opposite part of the configuration, and make it talk to `R3`! -When successful, the output of the commands above should show, on `R10`: +When successful, the output of the commands above should show the BGP session to R3 as Established now: bird> show protocols name proto table state since info @@ -288,12 +290,18 @@ When successful, the output of the commands above should show, on `R10`: originate_to_r3 Static t_r3 up 00:48:27 ebgp_r3 BGP t_r3 up 00:48:32 Established p_master_to_r3 Pipe master up 00:48:27 => t_r3 - + +Table `t_r3` now also contains the routes that are learned from `AS64080`: + bird> show route table t_r3 10.40.216.0/21 via 10.40.217.17 on vlan217 [ebgp_r3 00:48:32] * (100) [AS64080i] 10.40.32.0/19 blackhole [originate_to_r3 00:48:27] * (200) 10.40.0.0/22 via 10.40.217.17 on vlan217 [ebgp_r3 00:48:32] * (100) [AS64080i] - + +The above shows for example that prefix `10.40.216.0/21` was learned via the protocol `ebgp_r3`, 48 minutes ago, and that the range is originating from `AS64080`. The `via 10.40.217.17` is the BGP next-hop, which is the first router _outside_ our own network. On this router + +The BIRD master routing table also contains the routes learned over BGP, thanks to the `p_master_to_r3` protocol: + bird> show route 10.40.217.16/30 dev vlan217 [ospf1 2015-06-14] * I (150/10) [10.40.32.10] 10.40.216.0/21 via 10.40.217.17 on vlan217 [ebgp_r3 00:48:32] * (100) [AS64080i] @@ -305,6 +313,8 @@ When successful, the output of the commands above should show, on `R10`: 10.40.0.0/22 via 10.40.217.17 on vlan217 [ebgp_r3 00:48:32] * (100) [AS64080i] 10.40.32.12/32 via 10.40.33.3 on vlan33 [ospf1 2015-06-14] * I (150/10) [10.40.32.12] +The last step to get the routes into the actual forwarding table inside the Linux kernel is done by the kernel protocol. Since there is no explicit name given for the kernel protocol in the configuration, BIRD just names it `kernel1`. + bird> show route export kernel1 10.40.216.0/21 via 10.40.217.17 on vlan217 [ebgp_r3 00:48:32] * (100) [AS64080i] 10.40.36.0/24 via 10.40.33.3 on vlan33 [ospf1 2015-06-14] * I (150/20) [10.40.32.12] @@ -313,7 +323,7 @@ When successful, the output of the commands above should show, on `R10`: 10.40.0.0/22 via 10.40.217.17 on vlan217 [ebgp_r3 00:48:32] * (100) [AS64080i] 10.40.32.12/32 via 10.40.33.3 on vlan33 [ospf1 2015-06-14] * I (150/10) [10.40.32.12] -Since there is no explicit name given for the kernel protocol in the configuration, BIRD just names it `kernel1`. As you can see, the table `t_r3` contains the static routes which are exported via BGP to `R3`, and it also contains two routes that were learned from `R3`. Yay! The default `show route` command shows routes that are in the BIRD master table. You can see that the `p_master_to_r3` pipe protocol correctly copied the routes that were learned from `R3` from table `t_r3` to the `master` table. The kernel protocol then exports all dynamically learned routes to the actual forwarding table in the Linux kernel, where they show up as output of `ip route`, labeled with proto bird: +Now the routes show up in the output of `ip route`, labeled with proto bird: root@R10:/# ip r 10.40.0.0/22 via 10.40.217.17 dev vlan217 proto bird @@ -360,34 +370,52 @@ Now make sure you can do the following, and answer the following questions: rtt min/avg/max/mdev = 0.099/0.249/0.399/0.150 ms * Try to export a route outside of `10.0.0.0/8` over BGP, from `R3` to `R10` and notice that the filter will actually stop that route from being propagated, while accepting the other routes. Using the `show route filtered protocol ebgp_r3` command the route should be visible, thanks to the `import keep filtered on` option that is set. + * Figure out why, despite the fact that the two networks learned each others prefixes, you still cannot reach any router or host in the neighbor network that lies behing the border router. Try the following ICMP echo commands and explain why they do or don't succeed. Hint: use `tcpdump -ni vlanXYZ` on the right vlan interface to see the actual traffic, with source and destination addresses. + - `R3` -> `R10`: `root@R3:/# ping 10.40.32.10` + - `R3` -> `R11`: `root@R3:/# ping 10.40.32.11` + - `R11` -> `R3`: `root@R11:/# ping 10.40.217.3` + - `H12` -> `R1`: `root@R12:/# ping 10.40.217.1` ------------- +After explaining a bit more about the BIRD tables and protocols, we'll fix all these reachability issues. ## Intermezzo: BIRD tables, protocols, import, export -BIRD concepts: - * table: multiple routing tables (not like the linux kernel, it's just a collection of routes). e.g. there may be multiple paths to the same network in a table present. - * protocol: move routes around between tables (pipe) or into / out of BIRD (ospf, bgp) - * import: draw routes closer to BIRD - * export: push routes away from BIRD to the outside world - * table "master": central route table, import = pull to it, export = push away +The usage of import, export, different protocols and routing tables can be a bit confusing at first. Well, at least [it was very frustrating for me](http://bird.network.cz/pipermail/bird-users/2013-January/008071.html), until [I found out](http://bird.network.cz/pipermail/bird-users/2013-January/008081.html) how to use it. -picture: +The main gotcha here is that the import and export statements are to be considered from the point of view of the BIRD routing table that is connected to the protocol (either by specifying the table option, or omitting it, using the default `master` table). - master <-- p_master_to_ebgp_r10 <-- t_ebgp_r10 <-> ebgp_r10 - \ <-- originate_to_r10 +What I found out is that the easiest way to prevent confusion is to take the BIRD 'master' table as central point of reasoning, and then configure everything so that 'import' points closer to the master table, importing routes closer to the heart of BIRD, and 'export' points away from it, pushing routes to the outside world. - * t\_ebgp\_r10 holds route information about routes originates to r10 and routes that are learned from r10 - * originate\_to\_r10 is a collection of routes that is advertised by this network - * pipe to master forwards all routes that are learned from the ebgp session - * master can just export all to kernel +Here's a diagram of the BIRD configuration that we just used: -## Let's do it +![BIRD protocols, tables, import and export](/bgp-intro/bird-prototable.png) - * show BIRD config for pipe and table and ebgp - * reload, show proto, show route export p_blah etc - * see that routes are imported from the other end - * see that they end up in master table and in ip r +And here's how you should read the configuration that is in your routers right now: + * table `master` is the central routing table of BIRD + * kernel protocol `kernel1` exports routes from BIRD to Linux + * ospf protocol `ospf1` imports routes from other OSPF routers in the network into BIRD + * pipe protocol `p_master_to_r10` imports routes from its peer table `t_r10` into table `master` + * table `t_r10` is another BIRD table that contains a collection of routes with attributes + * static protocol `originate_to_r10` imports static routes into table `t_r10` + * bgp protocol `ebgp_r10` exports routes from table `t_r10` to `R10` + +Note that the OSPF protocol itself also generates routes for connected subnets that are stub or non-stub networks. These routes are not imported via the kernel protocol. + +The output of `show protocols` should also totally make sense now (table column width adjusted): + + root@R3:/# birdc show protocols + BIRD 1.4.5 ready. + name proto table state since info + kernel1 Kernel master up 2015-06-14 + device1 Device master up 2015-06-14 + ospf1 OSPF master up 2015-06-14 Running + originate_to_r10 Static t_r10 up 2015-06-18 + p_master_to_r10 Pipe master up 2015-06-18 => t_r10 + ebgp_r10 BGP t_r10 up 2015-06-19 Established + +Assignments: + * The OSPF protocol configuration that we are using does not contain any table, import or export. This means it's using the defaults, which are table master, import all, export none. Add a line specifying `import none;` to the OSPF protocol configuration, and look at the effect on the BIRD master table, and the Linux routing table. + * Change the BIRD configuration to use only the `master` table, eliminating the extra `t_r10` routing table, without changing the set of routes that are actually exported to the Linux kernel. Doing so should show that it's entirely possible, but that decreasing complexity by removing the extra table will increase complexity in the filters needed. ## Connecting the internal network, not only edge @@ -403,10 +431,3 @@ picture: * BGP needs OSPF to provide internal nexthop towards external router -> recap: BGP trusts on OSPF behaviour * small link nets for ebgp sessions need to be in IGP! * make it work! - -## What about the third network? - - * build R1,R2,R3 with 3 containers - * show AS-path - * disable link between routers, see traffic being redirected - * just put some address from the umbrella range on loopback, yolo diff --git a/bgp-intro/bird-prototable.dia b/bgp-intro/bird-prototable.dia new file mode 100644 index 0000000000000000000000000000000000000000..fdadf23eecb10f1ba3e034b6d4f1d808b9ecdfec GIT binary patch literal 2768 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 Wv+{%fnPuVp>g@kGw-C8@qW}O;3~(X< literal 0 HcmV?d00001 diff --git a/bgp-intro/bird-prototable.png b/bgp-intro/bird-prototable.png new file mode 100644 index 0000000000000000000000000000000000000000..a00682ccadc241f146c377b0bc9c4be42c129c95 GIT binary patch literal 43082 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 literal 0 HcmV?d00001