{"id":441,"date":"2018-10-26T21:49:58","date_gmt":"2018-10-26T21:49:58","guid":{"rendered":"http:\/\/feralpacket.org\/?p=441"},"modified":"2018-10-26T21:49:58","modified_gmt":"2018-10-26T21:49:58","slug":"bgp-route-reflection-and-confederation-notes","status":"publish","type":"post","link":"https:\/\/feralpacket.org\/?p=441","title":{"rendered":"BGP Route Reflection and Confederation Notes"},"content":{"rendered":"<p><span style=\"font-weight: bold;\">Route Reflection (RR) and Confederation<\/span><\/p>\n<p><span style=\"font-weight: bold;\">Split-horizon rule of BGP<\/span><\/p>\n<p>\n&#8211; Updates received from one iBGP neighbor are never sent to another iBGP neighbor<\/p>\n<p>\n&#8211; This prevents possible looping in the AS<\/p>\n<p>\n&#8211; Also means that a full mesh between iBGP routers is necessary<\/p>\n<p>\n&#8211; Route Reflection and Confederation allow for split-horizon to be bypassed, but also introduces new attributes to prevent loops<\/p>\n<p>\n&#8211; Route Reflection works better on small networks<\/p>\n<p>\n&#8211; Confederation works better on large networks\n<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/52e132e39c59b12c068d0f87e58e492e.jpeg\" style=\"cursor: default;cursor: default;\" width=\"600\" height=\"\"\/><\/p>\n<p>Clients &#8211; iBGP<\/p>\n<p>Non-clients &#8211; iBGP<\/p>\n<p>External &#8211; eBGP<\/p>\n<p>On the route reflector (will also be referred to as RR), any updates from clients can be reflected to clients, non-clients, and external.<\/p>\n<p>If updates are received from a non-client, the updates can be reflected to clients and external.<\/p>\n<p>The router reflector does not change the next-hop information when reflecting routers to clients.<\/p>\n<p>To prevent loops, RR introduces two attributes<\/p>\n<p>\u00a0&#8211; originator-id<\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; router-id of the originating router<\/p>\n<p>\u00a0&#8211; cluster-id<\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; router-id of route reflector<\/p>\n<p><span style=\"font-weight: bold;\">Originator-id<\/span><\/p>\n<p>\u00a0&#8211; Whenever a client sends an update to a RR, the RR associates the client&#8217;s router-id as the originator-id<\/p>\n<p>\u00a0&#8211; If a client receives an update with its own router-id listed as originator-id, the update is dropped<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/10b22d196e812625c1715e7e170cd443.jpeg\" style=\"cursor: default;cursor: default;\" width=\"600\" height=\"\"\/><\/p>\n<p><span style=\"font-weight: bold;\">Cluster-id<\/span><\/p>\n<p>\u00a0&#8211; Whenever an update is sent out of the cluster, the cluster-id is associated with the update<\/p>\n<p>\u00a0&#8211; When a RR receives an update which lists its own router-id as the cluster-id, the update is dropped<\/p>\n<p>R1(config)# <span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">router bgp 100<\/span><\/p>\n<p>\u00a0<span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">neighbor 2.2.2.2 remote-as 100<\/span><\/p>\n<p>\u00a0<span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">neighbor 2.2.2.2 route-reflector-client<\/span><\/p>\n<p>\u00a0<span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">neighbor 3.3.3.3 remote-as 100<\/span><\/p>\n<p>\u00a0<span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">neighbor 3.3.3.3 route-reflector-client<\/span><\/p>\n<p><span style=\"font-weight: bold;\">Confederation<\/span><\/p>\n<p>\u00a0&#8211; Used to bypass the split-horizon rule, but in a different way<\/p>\n<p>\u00a0&#8211; Routers are separated into private ASNs to create an eBGP effect within the iBGP AS<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/9c1c71624880d83e8e18613b6e165147.jpeg\" style=\"cursor: default;cursor: default;\" width=\"600\" height=\"\"\/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/461e68c5159e77a5600e1872c4a9c077.jpeg\" style=\"cursor: default;cursor: default;\" width=\"600\" height=\"\"\/><\/p>\n<p>Confederation introduces 2 attributes to prevent loops<\/p>\n<p>\u00a0&#8211; AS_CONFED_SET<\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; Orderly list of confederated ASs the update has traversed<\/p>\n<p>\u00a0&#8211; CONFED_External<\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; CONFED_Internal<\/p>\n<p>Whenever an update is sent to an eBGP neighbor, the real ASN will be used<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/feralpacket.org\/wp-content\/uploads\/2018\/10\/1872ab6c56fa48af6bebd5d98e1db749.jpeg\" style=\"cursor: default;cursor: default;\" width=\"600\" height=\"\"\/><\/p>\n<p>AS_PATH_SET is always counted as one, regardless of the number of confederations the update has traversed.<\/p>\n<p>R1(config)# <span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">router bgp 65001<\/span><\/p>\n<p>\u00a0<span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">bgp confederation peer 65002 65003<\/span><\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; If 65003 is not a direct neighbor, it does not need to be listed<\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; It&#8217;s a good practice to list all of the confederation ASNs<\/p>\n<p>\u00a0<span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">bgp confederation indentifier 100<\/span><\/p>\n<p>\u00a0 \u00a0 \u00a0-&gt; The real ASN used the eBGP<\/p>\n<p>\u00a0<span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">neighbor 2.2.2.2 remote-as 65001<\/span><\/p>\n<p>\u00a0<span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">neighbor 3.3.3.3 remote-as 65001<\/span><\/p>\n<p>\u00a0<span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">neighbor 4.4.4.4 remote-as 65002<\/span><\/p>\n<p>\u00a0<span style=\"background-color:rgb(255, 250, 165);-evernote-highlight:true;\">neighbor 10.0.0.10 remote-as 200<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Route Reflection (RR) and Confederation<\/p>\n","protected":false},"author":1,"featured_media":436,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[39,31],"class_list":["post-441","post","type-post","status-publish","format-standard","hentry","category-ccie","tag-bgp","tag-published"],"_links":{"self":[{"href":"https:\/\/feralpacket.org\/index.php?rest_route=\/wp\/v2\/posts\/441","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/feralpacket.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/feralpacket.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/feralpacket.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/feralpacket.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=441"}],"version-history":[{"count":3,"href":"https:\/\/feralpacket.org\/index.php?rest_route=\/wp\/v2\/posts\/441\/revisions"}],"predecessor-version":[{"id":459,"href":"https:\/\/feralpacket.org\/index.php?rest_route=\/wp\/v2\/posts\/441\/revisions\/459"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/feralpacket.org\/index.php?rest_route=\/wp\/v2\/media\/436"}],"wp:attachment":[{"href":"https:\/\/feralpacket.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=441"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/feralpacket.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=441"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/feralpacket.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=441"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}