我最近看到一個 Debian 論壇提到暫停幀應該被 MAC 層丟棄,如果不是,驅動程式應該丟棄它們。這是真的?如果主機從交換器收到暫停幀,它實際上如何限制流量?
我試圖更好地了解乙太網路流量控制。如果上述說法為真,那麼傳遞給主機的真正意義是什麼?
答案1
您可以透過三種方式處理流量控制:
- 如果超載,數據就會掉在地上。
- 如果您無法為來自更高層的請求提供服務(通常是因為您的本機佇列已滿),則您將向該更高層的傳回錯誤。
- 您主動通知更高層他們需要放慢速度。
在乙太網路層,透過暫停幀支援方法3。通常較高層不支援方法 3,而是支援方法 2。 2 適用於更高層。
或者,更具體地說,當您收到暫停幀時,您將停止發送引擎並設定計時器以在適當的時間重新啟動發送引擎。當發送引擎停止時,您的本機佇列將填滿來自更高層的資料。如果它們已滿,您將“忙”錯誤傳回給更高層,並且它們會適當地處理該錯誤。