{"id":814,"date":"2021-12-30T10:14:28","date_gmt":"2021-12-30T10:14:28","guid":{"rendered":"http:\/\/feralpacket.org\/?p=814"},"modified":"2022-03-01T16:02:46","modified_gmt":"2022-03-01T16:02:46","slug":"__trashed","status":"publish","type":"post","link":"https:\/\/feralpacket.org\/?p=814","title":{"rendered":"BGP Best Path Selection Algorithm"},"content":{"rendered":"<p><span style=\"font-weight: bold;\">BGP Best Path Selection Algorithm<\/span><\/p>\n<p><a href=\"http:\/\/www.cisco.com\/c\/en\/us\/support\/docs\/ip\/border-gateway-protocol-bgp\/13753-25.html\">http:\/\/www.cisco.com\/c\/en\/us\/support\/docs\/ip\/border-gateway-protocol-bgp\/13753-25.html<\/a><\/p>\n<p><span style=\"font-weight: bold;\">BGP Cost Community<\/span><\/p>\n<p><a href=\"https:\/\/www.cisco.com\/c\/en\/us\/td\/docs\/ios\/12_0s\/feature\/guide\/s_bgpcc.html\">https:\/\/www.cisco.com\/c\/en\/us\/td\/docs\/ios\/12_0s\/feature\/guide\/s_bgpcc.html<\/a><\/p>\n<p><span style=\"font-weight: bold;\">Why Routers Ignore Paths:<\/span><\/p>\n<p>&#8211; path are marked \u201cnot synchronized\u201d in <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">sh ip bgp long-prefixes<\/span> output<\/p>\n<p>&#8211; next hop is inaccessible<\/p>\n<p>&#8211; path from eBGP neighbor has local AS in AS_PATH<\/p>\n<p>&#8211; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">bgp enforce-first-as<\/span> is set and the update doesn\u2019t list the neighbor AS as the first AS<\/p>\n<p>&#8211; paths are marked \u201creceive only\u201d in <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">sh ip bgp long-prefixes<\/span> output<\/p>\n<p><span style=\"font-weight: bold;\">Best Path Algorithm:<\/span><\/p>\n<p>Note: if extended community cost is configured for <span style=\"font-weight: bold;\">pre-bestpath<\/span>, compare before anything else<\/p>\n<p>-&gt; lowest is best<\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">set extcommunity cost pre-bestpath &lt;community-id&gt; &lt;cost&gt;<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">bgp bestpath cost-community ignore<\/span><\/p>\n<p>-&gt; this command was intended only to assist in troubleshooting path selection<\/p>\n<p><span style=\"font-weight: bold;\">&#8211; Important, next hop needs to be valid<\/span><\/p>\n<p><span style=\"font-weight: bold;\">&#8211; It\u2019s not that difficult to remember whether higher or lower is best. &nbsp;With the first two (weight and local_preference), highest is best. &nbsp;Everything else, lowest, shortest, or oldest is best.<\/span><\/p>\n<p><span style=\"font-weight: bold;\">&#8211; The steps below include the configuration commands that can modify the default behavior of each step.<\/span><\/p>\n<p><span style=\"font-weight: bold;\">&nbsp;1. &nbsp;weight<\/span><\/p>\n<p>-&gt; highest is best<\/p>\n<p>-&gt; Cisco proprietary<\/p>\n<p>-&gt; locally significant<\/p>\n<p>-&gt; range 0 to 65,535<\/p>\n<p>-&gt; default is 0 for received routes<\/p>\n<p>-&gt; default is 32768 for locally generated routes<\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">route-map WEIGHT permit 10<\/span><\/p>\n<p>-&gt; &nbsp; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">set weight 40000<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">neighbor 1.1.1.1 route-map WEIGHT in<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">neighbor 1.1.1.1 <\/span><span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">default-originate&nbsp;<\/span><span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">route-map WEIGHT in<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">network 1.1.1.0 mask 255.255.255.0 route-map WEIGHT<\/span><\/p>\n<p>-&gt; This works. &nbsp;As does applying the route-map to the redistribute and aggregate-address commands. &nbsp;But why would you do this to locally originated routes since it\u2019s only locally significant.<\/p>\n<p><span style=\"font-weight: bold;\">&nbsp;<\/span><\/p>\n<p><span style=\"font-weight: bold;\">2. &nbsp;local_preference<\/span><\/p>\n<p>-&gt; highest is best<\/p>\n<p>-&gt; significant only in the local AS<\/p>\n<p>-&gt; range 0 to<span style=\"font-size: 14px;\">&nbsp;<\/span><span style=\"letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; font-size: 14px; color: #000000; font-family: helvetica, arial, sans-serif; font-variant-caps: normal; font-variant-ligatures: normal;\">4294967295<\/span><\/p>\n<p><span style=\"font-size: 14px; font-family: helvetica;\">&nbsp; &nbsp; &nbsp;-&gt; default 100 for every route<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">bgp default local-preference 200<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">route-map LP permit 10<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">&nbsp; set local-preference 200<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">neighbor 1.1.1.1 route-map LP in<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">neighbor 1.1.1.1 <\/span><span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">default-originate&nbsp;<\/span><span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">route-map LP in<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">redistribute eigrp 1 route-map LP<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">redistribute ospf 1 route-map LP match internal external 1 external 2<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">network 1.1.1.0 mask 255.255.255.0 route-map LP<\/span><\/p>\n<p>-&gt;&nbsp;<span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">aggregate-address 1.1.2.0 255.255.255.252 attribute-map LP<\/span><\/p>\n<p><span style=\"font-weight: bold;\">&nbsp;3. &nbsp;locally originated path<\/span><\/p>\n<p>-&gt; locally generated routes are preferred over received routes<\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">network<\/span> command<\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">aggregate-address<\/span> command<\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">redistribute<\/span> command<\/p>\n<p><span style=\"font-weight: bold;\">&nbsp;4. &nbsp;AS_PATH<\/span><\/p>\n<p>-&gt; shortest is best<\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">bgp bestpath as-path ignore<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">route-map PREPEND permit 10<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">&nbsp; set as-path prepend 100 100<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">neighbor 1.1.1.1 route-map PREPEND out<\/span><\/p>\n<p><span style=\"font-weight: bold;\">&nbsp;5. &nbsp;ORIGIN<\/span><\/p>\n<p>-&gt; lowest type is best<\/p>\n<p>-&gt; IGP &lt; EGP &lt; INCOMPLETE<\/p>\n<p><span style=\"font-weight: bold;\">&nbsp;<\/span><\/p>\n<p><span style=\"font-weight: bold;\">6. &nbsp;multi-exit discriminator (MED)<\/span><\/p>\n<p>-&gt; metric<\/p>\n<p>-&gt; lowest is best<\/p>\n<p>-&gt; range 0 to 65,535<\/p>\n<p>-&gt; default is 0 for received routes<\/p>\n<p>-&gt; when MED is not assigned<\/p>\n<p>-&gt; set to the value of the IGP metric for routes injected into BGP<\/p>\n<p>-&gt; network or redistribute commands<\/p>\n<p>-&gt; used to influence a neighboring AS with multiple entry points<\/p>\n<p>-&gt; or a neighboring AS may be influencing the local AS with multiple entry points<\/p>\n<p><span style=\"font-family: 'Helvetica Neue';\">&nbsp; &nbsp; &nbsp;-&gt;&nbsp;<\/span><span style=\"font-size: 14px; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; font-family: 'Helvetica Neue'; font-variant-caps: normal; font-variant-ligatures: normal;\">compared only if the first AS in the AS_SEQUENCE is the same for multiple paths<\/span><\/p>\n<p><span style=\"font-size: 14px; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; font-family: 'Helvetica Neue'; font-variant-caps: normal; font-variant-ligatures: normal;\">&nbsp; &nbsp; &nbsp;-&gt; confederation sub-ASs are ignored unless configured<\/span><\/p>\n<p><span style=\"font-size: 14px; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; font-family: 'Helvetica Neue'; font-variant-caps: normal; font-variant-ligatures: normal;\">&nbsp; &nbsp; &nbsp;-&gt; <\/span><span style=\"font-size: 14px; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #fffaa5; font-family: 'Helvetica Neue'; font-variant-caps: normal; font-variant-ligatures: normal; font-weight: bold; -evernote-highlight: true;\">bgp deterministic-med<\/span><\/p>\n<p><span style=\"font-size: 14px; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; font-family: 'Helvetica Neue'; font-variant-caps: normal; font-variant-ligatures: normal;\">&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;-&gt;&nbsp;compare routes advertised by different peers in the same AS<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">bgp always-compare-med<\/span><\/p>\n<p><span style=\"font-family: 'Helvetica Neue';\">&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; -&gt;&nbsp;<\/span><span style=\"font-size: 14px; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; font-family: 'Helvetica Neue'; font-variant-caps: normal; font-variant-ligatures: normal;\">compare routes advertised by different ASs.<\/span><\/p>\n<p>-&gt; if used, must be configured in the entire AS to prevent routing loops<\/p>\n<p><span style=\"font-weight: bold;\">&nbsp; &nbsp; &nbsp;<\/span>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">bgp bestpath med confed<\/span><\/p>\n<p><span style=\"font-family: 'Helvetica Neue';\">&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; -&gt;&nbsp;<\/span><span style=\"font-size: 14px; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; font-family: 'Helvetica Neue'; font-variant-caps: normal; font-variant-ligatures: normal;\">compare all paths that consist only of AS_CONFED_SEQUENCE<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">bgp bestpath med confed missing-as-worst<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">bgp bestpath med missing-as-worst<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">route-map MED permit 10<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">&nbsp; set metric 100<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">neighbor 1.1.1.1 route-map MED out<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">neighbor 1.1.1.1 <\/span><span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">default-originate&nbsp;<\/span><span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">route-map MED out<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">redistribute eigrp 1 metric 100<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">redistribute ospf 1 metric 100 match internal external 1 external 2<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">redistribute eigrp 1 route-map MED<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">redistribute ospf 1 route-map MED match internal external 1 external 2<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">network 1.1.1.0 mask 255.255.255.0 route-map MED<\/span><\/p>\n<p>-&gt;&nbsp;<span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">aggregate-address 1.1.2.0 255.255.255.252 attribute-map MED<\/span><\/p>\n<p><span style=\"font-weight: bold;\">&nbsp;7. &nbsp;eBGP over iBGP<\/span><\/p>\n<p>-&gt; paths that contain as_confed_sequence and as_confed_set are considered internal<\/p>\n<p><span style=\"font-weight: bold;\">&nbsp;8. &nbsp;IGP metric<\/span><\/p>\n<p>-&gt; lowest is best<\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">bgp bestpath igp-metric ignore<\/span><\/p>\n<p><span style=\"font-weight: bold;\">9. &nbsp;extended community cost<\/span><\/p>\n<p>-&gt; IGP point of insertion (POI)<\/p>\n<p>-&gt; lowest is best<\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">route-map EXTCOMMUMITYCOST permit 10<\/span><\/p>\n<p>-&gt; &nbsp;&nbsp;<span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">set extcommunity cost 1 1<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">route-map EXTCOMMUMITYCOST permit 10<\/span><\/p>\n<p>-&gt; &nbsp;&nbsp;<span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">set extcommunity cost igp 1 1<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">neighbor 1.1.1.1 route-map <\/span><span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">EXTCOMMUMITYCOST<\/span><span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">&nbsp;out<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">neighbor 1.1.1.1 <\/span><span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">default-originate&nbsp;<\/span><span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">route-map <\/span><span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">EXTCOMMUMITYCOST<\/span><span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">&nbsp;out<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">redistribute eigrp 1 route-map&nbsp;<\/span><span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">EXTCOMMUMITYCOST<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">redistribute ospf 1 route-map <\/span><span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">EXTCOMMUMITYCOST<\/span><span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">&nbsp;match internal external 1 external 2<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">network 1.1.1.0 mask 255.255.255.0 route-map&nbsp;<\/span><span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">EXTCOMMUMITYCOST<\/span><\/p>\n<p>-&gt;&nbsp;<span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">aggregate-address 1.1.2.0 255.255.255.252 attribute-map&nbsp;<\/span><span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">EXTCOMMUMITYCOST<\/span><\/p>\n<p><span style=\"font-weight: bold;\">10. &nbsp;multipath<\/span><\/p>\n<p>-&gt; if multiple paths match the above steps,<\/p>\n<p>-&gt; determine if multiple paths require installation into the routing table<\/p>\n<p>-&gt; default, only one best path is installed into the routing table<\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">maximum-paths 2<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">maximum-paths eibgp 2<\/span><\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">maximum-paths ibgp 2<\/span><\/p>\n<p><span style=\"font-weight: bold;\">&nbsp;<\/span><\/p>\n<p><span style=\"font-weight: bold;\">11. &nbsp;oldest route<\/span><\/p>\n<p>-&gt; when multiple paths are external, prefer the path that was received first<\/p>\n<p>-&gt; oldest is best<\/p>\n<p>-&gt; this step can be skipped by forcing BGP to compare router-ids<\/p>\n<p>-&gt; <span style=\"background-color: #fffaa5; font-weight: bold; -evernote-highlight: true;\">bgp bestpath compare-router-id<\/span><\/p>\n<p><span style=\"font-weight: bold;\">&nbsp;12. &nbsp;router-id<\/span><\/p>\n<p>-&gt; lowest is best<\/p>\n<p><span style=\"font-weight: bold;\">&nbsp;<\/span><\/p>\n<p><span style=\"font-weight: bold;\">13. &nbsp;cluster length<\/span><\/p>\n<p>-&gt; lowest is best<\/p>\n<p>-&gt; router reflectors only<\/p>\n<p><span style=\"font-weight: bold;\">&nbsp;<\/span><\/p>\n<p><span style=\"font-weight: bold;\">14. &nbsp;neighbor address<\/span><\/p>\n<p>-&gt; lowest is best<\/p>\n","protected":false},"excerpt":{"rendered":"<p>BGP Best Path Selection Algorithm<\/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,10],"class_list":["post-814","post","type-post","status-publish","format-standard","hentry","category-ccie","tag-bgp","tag-published","tag-service-provider"],"_links":{"self":[{"href":"https:\/\/feralpacket.org\/index.php?rest_route=\/wp\/v2\/posts\/814","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=814"}],"version-history":[{"count":3,"href":"https:\/\/feralpacket.org\/index.php?rest_route=\/wp\/v2\/posts\/814\/revisions"}],"predecessor-version":[{"id":1000,"href":"https:\/\/feralpacket.org\/index.php?rest_route=\/wp\/v2\/posts\/814\/revisions\/1000"}],"wp:attachment":[{"href":"https:\/\/feralpacket.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=814"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/feralpacket.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=814"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/feralpacket.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=814"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}