Networking

ICMP 回复 - 入口或出口介面(例如來自跟踪路由)

  • May 27, 2016

當一個 traceroute 啟動並收到來自節點的ICMP 回复時,哪個介面

  1. 是否應根據RFC 1812進行回复。
  2. 他們實際上是從 入口(他們接收數據包的地方)或出口(數據包將被發送到的地方 - 即如果 ttl 更高,則到下一個節點)回复

個人評論和研究:

  1. 根據NANOG 發布的幻燈片,RFC 1812 聲明它應該是出口介面。我已經閱讀了 RFC 1812 的 ICMP 部分,但找不到它聲明的地方(我懷疑我對術語的理解不正確)。
  2. 我已經閱讀了來自不同介面的各種路由器(Junos、Cisco)的回复,但大多數回復來自入口(如 NANOG 幻燈片 10 所述)。

我沒有虛擬 Cisco 實驗室,也沒有足夠的 RAM 在 VirtualBox 中設置多個 VM 路由器。

嗨,我遲到了,但如果你仍然好奇……

R Steenbergen 的 NANOG 幻燈片中的引用是正確的。該行為在 RFC1812 的第 4.3.2.4 節中定義,其中指出:

由路由器發起的 ICMP 消息中的 IP 源地址必須是與傳輸 ICMP 消息的物理介面相關聯的 IP 地址之一

根據一個人的 Traceroute 實現,對跟踪的響應可能是 ICMP Destination Unreachable(即 Unix 實現的 traceroute)或 ICMP Time Exceeded(Windows 啟動的 traceroute)。我相信這在 Steenbergen 的演講中有所涉及。由於這些部分都沒有為指定 ICMP 響應的源地址做出任何規定,我們假設第 4.3.2.4 節適用於這些特定的響應類型。

想像一下這種情況並假設以下情況:

  1. 假設圓(路由器)之間的所有鏈路都是等價的第 3 層鏈路(特別是,R1 和 R2 之間的鏈路不是 LAG/EtherChannel/etc)
  2. 範例網路中的路由使得數據包通過較低路徑從發送方 S 到接收方 R,然後按照指示的方向通過較高路徑返回

現代實現下的 Traceroute 如下所示:

traceroute to R 
1  A 0.329 ms  A 0.425 ms A 0.471 ms
2  C 0.349 ms  C 0.435 ms C 0.473 ms
3  F 0.359 ms  G 0.445 ms F 0.481 ms
4  R 0.369 ms  R 0.455 ms R 0.491 ms

如果路由器被編碼為規範,跟踪將如下所示:

traceroute to R 
1  B 0.329 ms  B 0.425 ms B 0.471 ms
2  D 0.349 ms  E 0.435 ms D 0.481 ms
3  H 0.369 ms  H 0.445 ms H 0.491 ms
4  R 0.389 ms  R 0.455 ms R 0.496 ms

因此,在更通俗的意義上,現代實現告訴我們如何到達特定主機。最初的規範會告訴我們如何離開路由器,但不會告訴我們如何到達那裡。

請注意,我們可能認為這會導致 Ping 中斷,但規范明確涵蓋了這種情況:

ICMP Echo Reply 中的 IP 源地址必須與

相應 ICMP Echo Request

消息的特定目標地址相同。

換句話說,對於 Ping,ICMP Echo Reply 源地址不應是與第 4.3.2.4 節指定的出口介面相關聯的地址,而應使用從原始 ICMP Echo Request 的目標地址派生的源地址.

引用自:https://serverfault.com/questions/705115