{"id":754,"date":"2013-07-30T16:34:43","date_gmt":"2013-07-30T22:34:43","guid":{"rendered":"http:\/\/benincosa.com\/blog\/?p=754"},"modified":"2014-11-19T11:24:32","modified_gmt":"2014-11-19T17:24:32","slug":"ucs-reverse-path-forwarding-and-deja-vu-checks","status":"publish","type":"post","link":"https:\/\/benincosa.com\/?p=754","title":{"rendered":"UCS Reverse Path Forwarding and Deja-Vu checks"},"content":{"rendered":"<p>UCS Fabric Interconnects are usually always run in end-host mode. \u00a0At this point in the story there really isn&#8217;t that many reasons to use switch-mode on the Fabric Interconnects.<\/p>\n<p>Two checks, or features that make End Host Mode possible are Reverse Path Forwarding (RPF) checks and Deja-Vu checks.<\/p>\n<figure style=\"width: 382px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.cisco.com\/en\/US\/solutions\/collateral\/ns340\/ns517\/ns224\/ns944\/images\/whitepaper_c11-701962-08.jpg\" alt=\"\" width=\"382\" height=\"345\" \/><figcaption class=\"wp-caption-text\">RPF and Deja-Vu (from Cisco.com)<\/figcaption><\/figure>\n<p><strong>Reverse Path Forwarding Checks<\/strong><\/p>\n<p>Each server in the chassis is pinned dynamically (or you can set up pin groups and do it statically, but I don&#8217;t recommend that) to an uplink on Fabric Interconnect A and Fabric Interconnect B. \u00a0Let&#8217;s say you have 2 uplinks on port 31 and 32 of your Fabric Interconnect. \u00a0Server 1\/1 (chassis 1 \/ blade 1) \u00a0may be pinned to port 31. \u00a0If a unicast packet is received for server 1\/1 on uplink port 31, it will go through. \u00a0But if that same packet destined for server 1\/1 is received on port 32, it will be dropped. \u00a0That&#8217;s because RPF checks to see if the destination for the unicast is actually forwarding its uplink traffic through that link.<\/p>\n<p><strong>Deja Vu Checks<\/strong><\/p>\n<p>The other check is called &#8220;Deja-Vu&#8221; . \u00a0In the Cisco documentation it says: &#8220;<a href=\"http:\/\/www.cisco.com\/en\/US\/solutions\/collateral\/ns340\/ns517\/ns224\/ns944\/whitepaper_c11-701962.html\">Server traffic received on any uplink port, except its pinned uplink port is dropped<\/a>&#8220;. \u00a0That sounds a lot like RPF. \u00a0Another presentation from Cisco live states it this way: &#8220;<a href=\"http:\/\/203.158.252.30:8380\/CiscoLive2010\/BRKCOM-2003.pdf\">Packet with source MAC belonging to a server received on an uplink port is dropped<\/a>&#8221;<\/p>\n<p><strong>An example to clear it up<\/strong><\/p>\n<p>VM A on server 1\/1 wants to talk to VM B located somewhere else. \u00a0The Fabric Interconnects in this case are connected to a single Nexus 5500 switch. \u00a0The VM is pinned to one of the VNICs and that VNIC is pinned to go out port 31 of Fabric Interconnect A. \u00a0So what happens?<\/p>\n<p>First the VM will send an ARP request. \u00a0An ARP request basically says: \u00a0I know the IP address but I want the MAC address. \u00a0(Obviously, this is in the same Layer 2 VLAN and subnet). \u00a0If Fabric Interconnect A doesn&#8217;t find the IP\/MAC association in its <a href=\"http:\/\/en.wikipedia.org\/wiki\/CAM_Table\">CAM<\/a> table, then it will not flood the server ports down stream. \u00a0That is something a switch would do. \u00a0The Fabric Interconnect is different. \u00a0The reason the Fabric Interconnect doesn&#8217;t send a broadcast down its server ports is because it is a source of truth and knows everyone connected on its server ports.<\/p>\n<p>What it will do instead is forward the ARP request (unknown unicast) up the designated uplink (port 31). \u00a0Now the Nexus switch is a switch. \u00a0(And a very good one at that). \u00a0It will say: \u00a0&#8220;Hey, I don&#8217;t have a CAM table entry for VM B IP\/MAC so I will do what we switches do best: \u00a0Flood all the ports! (except the port that the unknown unicast\/ARP request came in on)<\/p>\n<p>Remember Fabric Interconnect A port 32 is connected to this same switch as port 31 where the unknown unicast (ARP request) went out. \u00a0The Nexus 5500 will send this unknown unicast to port 32 just like every other port. \u00a0But port 32 says: \u00a0Wait a minute, the source address originated from me. \u00a0Deja-vu! \u00a0So he drops the packet.<\/p>\n<p>Fabric Interconnect B has two ports 31 and 32 that will also receive the unknown unicast. \u00a0If VM B is pinned to a VNIC that is pinned to port 31 on Fabric Interconnect B, he will say: \u00a0I got this! \u00a0And the packet will go through. \u00a0Port 32, however on FI-B will look at the destination MAC and say: \u00a0This is not pinned to me, so I&#8217;ll drop the packet. \u00a0That is the RPF check.<\/p>\n<p><strong>To sum it up<\/strong><\/p>\n<p>Deja-Vu check: \u00a0don&#8217;t receive a packet from the upstream switch that originated from me.<\/p>\n<p>Reverse Path Forward Check: \u00a0don&#8217;t receive a packet if there&#8217;s no server pinned to this uplink.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>UCS Fabric Interconnects are usually always run in end-host mode. \u00a0At this point in the story there really isn&#8217;t that many reasons to use switch-mode on the Fabric Interconnects. Two checks, or features that make End Host Mode possible are Reverse Path Forwarding (RPF) checks and Deja-Vu checks. Reverse Path Forwarding Checks Each server in&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[990,992],"tags":[193,196,195,194,993],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/benincosa.com\/index.php?rest_route=\/wp\/v2\/posts\/754"}],"collection":[{"href":"https:\/\/benincosa.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/benincosa.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/benincosa.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/benincosa.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=754"}],"version-history":[{"count":3,"href":"https:\/\/benincosa.com\/index.php?rest_route=\/wp\/v2\/posts\/754\/revisions"}],"predecessor-version":[{"id":2757,"href":"https:\/\/benincosa.com\/index.php?rest_route=\/wp\/v2\/posts\/754\/revisions\/2757"}],"wp:attachment":[{"href":"https:\/\/benincosa.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=754"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/benincosa.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=754"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/benincosa.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=754"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}