這是一個非常基本的問題,但我需要進行健全性檢查,以確保我的期望沒有不正確,並且我所看到的不是預期的行為。
情況是:我有一台運行 MacOS/X 的 Mac Pro 和一台基於 ARM 的 Linux 機器。兩者都連接到 8 連接埠 Extreme Networks 千兆交換器(沒有互聯網上行鏈路,這只是本地 LAN)。
在我的 Mac 上,我啟動一個正在執行的 ping6 會話,對 Linux 機器執行 ping 操作:
$ ping6 fe80::21c:abff:fe00:55e5%en1
……並開始得到 pong 響應,正如預期的那樣。
然後我轉到乙太網路交換機,從乙太網路交換器上斷開通往 Linux 盒子的電纜,然後將該電纜重新連接到乙太網路交換器上的另一個開放連接埠。
此時,我的期望是(暫停幾秒鐘後),我的 Mac 上的 ping6 會話將恢復看到回應。
然而,我的觀察是,有時 ping6 會話會無限期地停止接收回應——或者至少,直到我將 Linux 盒子的乙太網路連接返回到它最初連接的交換器連接埠。 (停止並重新啟動 ping6 進程沒有幫助;等待更長時間也沒有幫助)
那麼,我的主要問題是:我觀察到的行為是預期的行為嗎?如果是這樣,我可以(在軟體中)做些什麼來從連接埠變更中恢復嗎?或者如果沒有,您知道可能出了什麼問題嗎? (我懷疑這可能是新民主黨的問題)
答案1
您是正確的,重新連接目標設備後,即使將其移動到另一個交換器端口,您也應該繼續接收 ping 回复。
停止並重新啟動 ping6 進程沒有幫助;等待更長的時間並沒有幫助
這是不正常的。連接埠變更後,某些因素會阻止 ping 請求或回覆在兩個裝置之間傳輸。我不熟悉 Linux 上特定的防火牆配置可能性,但在 Windows 電腦上,網路介面的變更可能會導致套用不同的防火牆規則。
交換器本身也有可能出現問題,不過可以透過確認 Linux 盒子在連接到新交換器連接埠時可以正常與網路通訊來輕鬆排除這種問題。
答案2
交換器無法知道連接埠已更改,直到連接埠更改的電腦發送一些流量。如果當您將乙太網路線移至另一個連接埠時,您的 Linux 電腦很安靜且沒有參與任何網路活動,那麼您將必須等待它發送一些流量。
一旦發送流量,交換器就會發現它已移動並適當更新其內部表。