2023/04/12 透過ARP+MAC Table追蹤終端所接的Edge Switch。

透過ARP與MAC Table找到設備是網路工程師的基本工,常用技術之一。

原理很簡單,鎖定住一個IP之後,就以ARP取得該IP的MAC,然後透過MAC Table不斷往下追查直至Edge Switch。

那如果在「程式化」的前提下,這套思路只能專心處理一個MAC,會顯得沒有效率。執行次數會幾乎等於ARP總數,實際上只希望讓執行次數跟Switch數目相同就好。

以下是程式化的思路

  • 假設所有Switch的IP與MAC是已知的,為「MgmtIP」跟「MgmtMAC」。
  • 先取得所有Switch的ARP跟MAC Table,ARP得到「EndpointIP」與「EndpointMAC」、MAC Table得到「EndpointMAC」、「EndpointLinkedInterface」。
  • 以ARP數目最多的Switch當做Core Switch。
  • 擇一條(群)ARP為主,建立串列Switches,如果該「EndpointMAC」的「EndpointLinkedInterface」上能找到Switch的「MgmtMAC」,將該Switch放入該ARP的Switches串列。
  • 計算Switch的CoreSwitchDistance,從Switches串列中取出沒有CoreSwitchDistance的Switch,以Core的「「MgmtIP」跟透過MAC Table找到「EndpointLinkedInterface」,該Interface上有幾個存在於Switches串列中Switch的「MgmtMAC」再加1(補上CoreSwitch)即為該Switch的CoreSwitchDistance。
  • 將ARP的Switches串列以Switch的CoreSwitchDistance重新排序,以小至大排列。
  • 以ARP為主,建立字串SwitchesPath,從CoreSwitch到CoreSwitchDistance最遠的Switch,將DeviceInfo(可以是SwitchName、MgmtIP等擇一)與「EndpointLinkedInterface」加到字串SwitchesPath中。

照以上步驟,如此可知道CoreSwitch到Endpoint所經的路徑,經過優化的話,可以讓執行次數為Switch數。