{"id":818,"date":"2021-08-20T03:10:04","date_gmt":"2021-08-20T03:10:04","guid":{"rendered":"http:\/\/feralpacket.org\/?p=818"},"modified":"2021-08-20T03:10:04","modified_gmt":"2021-08-20T03:10:04","slug":"fun-with-bgp-cluster-id","status":"publish","type":"post","link":"https:\/\/feralpacket.org\/?p=818","title":{"rendered":"Fun with \u201cbgp cluster-id <num>\u201d"},"content":{"rendered":"<p><span style=\"font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: bold;\">Fun with \u201cbgp cluster-id &lt;num&gt;\u201d<\/span><\/p>\n<p><span style=\"font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal;\"><br \/>\nCisco documentation states that the cluster-id must be set for router reflectors in a cluster.&nbsp; But setting the cluster-id actually causes problems.<\/span><\/p>\n<p><span style=\"font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: bold;\"><br \/>\nCisco\u2019s 15M&amp;T documentation<\/span><span style=\"font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal;\"> (note:&nbsp; This doesn\u2019t actually say the cluster-id must be the same on all route reflectors, but it\u2019s easy to come to the conclusion the cluster-id must be the same):<\/span><\/p>\n<p><span style=\"font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal;\"><br \/>\n<\/span><a href=\"http:\/\/www.cisco.com\/c\/en\/us\/td\/docs\/ios-xml\/ios\/iproute_bgp\/configuration\/12-4\/irg-12-4-book\/irg-int-features.html#GUID-77A9DCF1-E771-4148-AEE7-D0202AACC290\">http:\/\/www.cisco.com\/c\/en\/us\/td\/docs\/ios-xml\/ios\/iproute_bgp\/configuration\/15-mt\/irg-15-mt-book\/configuring_internal_bgp_features.html#GUID-77A9DCF1-E771-4148-AEE7-D0202AACC290<\/a><\/p>\n<p><span style=\"font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal;\"><br \/>\n\u201c<\/span><span style=\"-webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(0, 0, 0); font-family: Arial; font-variant-caps: normal; font-variant-ligatures: normal;\">Usually a cluster of clients will have a single route reflector. In that case, the cluster is identified by the router ID of the route reflector. To increase redundancy and avoid a single point of failure, a cluster might have more than one route reflector. In this case, all route reflectors in the cluster must be configured with the 4-byte cluster ID so that a route reflector can recognize updates from route reflectors in the same cluster.\u201d<\/span><\/p>\n<p><span style=\"font-family: Arial; font-weight: bold;\">BGP Case Studies<\/span><span style=\"font-family: Arial;\"> (note:&nbsp; This does say the cluster-id must be the same):<\/span><\/p>\n<p><a href=\"http:\/\/www.cisco.com\/c\/en\/us\/support\/docs\/ip\/border-gateway-protocol-bgp\/26634-bgp-toc.html#routereflectors\">http:\/\/www.cisco.com\/c\/en\/us\/support\/docs\/ip\/border-gateway-protocol-bgp\/26634-bgp-toc.html#routereflectors<\/a><\/p>\n<p><span style=\"-webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(0, 0, 0); font-family: Arial; font-variant-caps: normal; font-variant-ligatures: normal;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-family: Arial;\">\u201c<\/span><span style=\"-webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(82, 82, 82); color: rgb(82, 82, 82); font-family: Arial; font-variant-caps: normal; font-variant-ligatures: normal;\">Usually, a cluster of clients has a single RR. In this case, the router ID of the RR identifies the cluster. In order to increase redundancy and avoid single points of failure, a cluster can have more than one RR. You need to configure all RRs in the same cluster with a 4-byte cluster ID so that an RR can recognize updates from RRs in the same cluster.\u201d<\/span><\/p>\n<p><span style=\"color: rgb(82, 82, 82); font-weight: bold;\">BGP Command Reference<\/span><span style=\"color: rgb(82, 82, 82);\"> (note: &nbsp;This does say the cluster-id must be the same):<\/span><\/p>\n<p><a href=\"http:\/\/www.cisco.com\/c\/en\/us\/td\/docs\/ios\/iproute_bgp\/command\/reference\/irg_book\/irg_bgp1.html#wp1112974\">http:\/\/www.cisco.com\/c\/en\/us\/td\/docs\/ios\/iproute_bgp\/command\/reference\/irg_book\/irg_bgp1.html#wp1112974<\/a><\/p>\n<p><span style=\"color: rgb(82, 82, 82);\">&#8220;<\/span><span style=\"letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); font-variant-caps: normal; font-variant-ligatures: normal;\">The&nbsp;<\/span><span style=\"letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); color: black; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: bold;\">bgp cluster-id<\/span><span style=\"letter-spacing: normal; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; color: rgb(0, 0, 0); font-variant-caps: normal; font-variant-ligatures: normal;\">&nbsp;command is used to assign a cluster ID to a route reflector when the cluster has one or more route reflectors. Multiple route reflectors are deployed in a cluster to increase redundancy and avoid a single point of failure. When multiple route reflectors are configured in a cluster, the same cluster ID is assigned to all route reflectors. This allows all route reflectors in the cluster to recognize updates from peers in the same cluster and reduces the number of updates that need to be stored in BGP routing tables.&#8221;<\/span><\/p>\n<p><span style=\"-webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(0, 0, 0); font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal;\"><br \/>\nScott Morris states in this thread that, \u201c<\/span><span style=\"-webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(30, 73, 125); color: rgb(30, 73, 125); font-family: Verdana; font-variant-caps: normal; font-variant-ligatures: normal;\">Current best practice is different cluster id&#8217;s on each RR.\u201d&nbsp; This is kind of redundant, because if a cluster-id is not configured, the router-id is used as the cluster-id.&nbsp;&nbsp;<\/span><\/p>\n<p><span style=\"-webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(30, 73, 125); color: rgb(30, 73, 125); font-family: Verdana; font-variant-caps: normal; font-variant-ligatures: normal;\"><\/span><\/p>\n<p><span style=\"-webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(30, 73, 125); color: rgb(30, 73, 125); font-family: Verdana; font-variant-caps: normal; font-variant-ligatures: normal;\">Brian McGahan points to Cisco BGP Case Studies documentation later in the thread that says the cluster-id must be the same on all router-reflectors.<\/span><\/p>\n<p><span style=\"-webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(30, 73, 125); font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal;\"><br \/>\n<\/span><a href=\"http:\/\/ieoc.com\/forums\/p\/5326\/17969.aspx\">http:\/\/ieoc.com\/forums\/p\/5326\/17969.aspx<\/a><\/p>\n<p><span style=\"-webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(30, 73, 125); font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal;\"><br \/>\n<\/span><\/p>\n<p><span style=\"-webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(90, 54, 150); color: rgb(90, 54, 150); font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal;\">I<\/span><a href=\"http:\/\/wiki.nil.com\/User:Ivan_Pepelnjak\">van Pepelnjak<\/a><span style=\"-webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(90, 54, 150); color: rgb(90, 54, 150); font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal;\"> points out that with RFC 4456 added new route selection rules.&nbsp; Routes with a shorter Cluster-list are preferred.&nbsp; He feels this makes setting \u201cbgp cluster-id &lt;num&gt;\u201d obsolete.<\/span><\/p>\n<p><span style=\"-webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(90, 54, 150); font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal;\"><br \/>\n<\/span><a href=\"http:\/\/wiki.nil.com\/BGP_route_reflectors\">http:\/\/wiki.nil.com\/BGP_route_reflectors<\/a><\/p>\n<p><span style=\"-webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(90, 54, 150); font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal;\"><br \/>\n<\/span><\/p>\n<p><span style=\"background-color: rgb(246, 244, 244); -webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(153, 153, 153); color: rgb(153, 153, 153); font-family: Tahoma; font-variant-caps: normal; font-variant-ligatures: normal;\">&nbsp;<\/span><a href=\"https:\/\/rekrowten.wordpress.com\/author\/shaihulud87\/\">Filip Burda<\/a> <span style=\"background-color: rgb(246, 244, 244); -webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(50, 51, 51); color: rgb(50, 51, 51); font-family: Tahoma; font-variant-caps: normal; font-variant-ligatures: normal;\">goes a step further and points out setting a cluster-id can cause loss of redundancy and connectivity.&nbsp; The scenario:&nbsp; redundant route reflectors are configured and both are set with the same cluster-id.&nbsp; If one of the router reflectors lose connectivity with one of the clients, that route reflector will not receive the routes through the other route reflector.&nbsp; Why?&nbsp; The cluster-id is set.&nbsp; When route reflector that lost connectivity receives an update from the other route reflector, it will see it\u2019s cluster-id in the cluster-list and drop the update.&nbsp; He doesn\u2019t show any debug output though.<\/span><\/p>\n<p><span style=\"-webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(50, 51, 51); font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal;\"><br \/>\n<\/span><a href=\"https:\/\/rekrowten.wordpress.com\/2013\/05\/24\/bgp-route-reflector-and-why-is-cluster-id-obsolete\/\">https:\/\/rekrowten.wordpress.com\/2013\/05\/24\/bgp-route-reflector-and-why-is-cluster-id-obsolete\/<\/a><\/p>\n<p><span style=\"-webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(50, 51, 51); font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal;\"><br \/>\n<\/span><\/p>\n<p><span style=\"-webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(50, 51, 51); font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal;\"><br \/>\n<\/span><\/p>\n<p><span style=\"-webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(50, 51, 51); font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal;\"><br \/>\nIf you lab this up to test and run \u201c<b>debug ip bgp updates in<\/b>\u201d, you\u2019ll see the following message:<\/span><\/p>\n<p><span style=\"-webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(50, 51, 51); font-family: Helvetica; font-variant-caps: normal; font-variant-ligatures: normal;\"><\/span><\/p>\n<p><span style=\"-webkit-text-stroke-width: 0px; -webkit-text-stroke-color: rgb(50, 51, 51); font-family: &quot;Helvetica Neue&quot;; font-variant-caps: normal; font-variant-ligatures: normal;\">BGP(0):&nbsp;14.1.1.1&nbsp;rcv&nbsp;UPDATE&nbsp;about&nbsp;2.0.0.0\/8&nbsp;&#8212;&nbsp;&nbsp;DENIED&nbsp;due&nbsp;to:&nbsp;reflected&nbsp;from&nbsp;the&nbsp;same&nbsp;cluster;<\/span><\/p>\n<p><a href=\"http:\/\/www.dasblinkenlichten.com\/bgp-route-reflectors\/\">http:\/\/www.dasblinkenlichten.com\/bgp-route-reflectors\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fun with \u201cbgp cluster-id &lt;num&gt;\u201d<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[39,31],"class_list":["post-818","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\/818","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=818"}],"version-history":[{"count":1,"href":"https:\/\/feralpacket.org\/index.php?rest_route=\/wp\/v2\/posts\/818\/revisions"}],"predecessor-version":[{"id":977,"href":"https:\/\/feralpacket.org\/index.php?rest_route=\/wp\/v2\/posts\/818\/revisions\/977"}],"wp:attachment":[{"href":"https:\/\/feralpacket.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=818"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/feralpacket.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=818"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/feralpacket.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=818"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}