網路層:路由

水平分割(split horizon)

想像辦公室的八卦:把一則你才剛從某位同事那裡聽來的消息,再轉述給同一位同事,會很蠢。水平分割(split horizon)正是把這條規則套用到路由器上:不要把一條路由,再從你當初學到它的那個介面通告回去。目的是阻止兩個鄰居就一個它們彼此經由對方才抵達的目的地,互相餵食過時資訊。

具體地說,如果路由器 A 到目的地 Z 的最佳路徑是經由鄰居 B,那麼水平分割規定 A 不可以告訴 B『我能抵達 Z』——因為 A 到 Z 的唯一路由就是經由 B 自己,所以這個宣稱對 B 毫無用處,而且危險地循環。一個更強的變體,毒性逆轉(poison reverse),讓 A 主動告訴 B『我經由你到 Z 的距離是無窮』,明確地毒掉這個錯誤的希望,而不只是保持沉默。兩者都針對最簡單的計數至無窮迴圈:有了水平分割,B 永遠不會聽到 A 通告那條 B 自己提供的路由,所以兩者無法把一個無法抵達的目的地來回彈。

它的重要性在於它是一種便宜、標準的緩解手段,內建在 RIP 這類距離向量協定裡。它在連結故障後加速收斂,並在不更動底層 Bellman-Ford 計算的情況下,防範最常見的兩台路由器迴圈。

一個誠實的提醒:水平分割(即使加上毒性逆轉)只能打破兩台路由器之間、彼此直接經由對方抵達目的地的迴圈。繞過三台以上路由器的迴圈仍可能計數至無窮。所以水平分割是真正的改善,而非根治——它是距離向量在小型網路裡仍存活的原因之一,卻不是在大規模下可以信任它的理由。

A 到 Z 的路由經由 B。單純的水平分割:A 在向 B 通告時直接略過 Z。毒性逆轉:A 明確向 B 通告『Z = 無窮』,讓 B 立刻知道不要把 Z 的路由繞回 A。

水平分割對於從某鄰居學來的路由,就對該鄰居保持沉默;毒性逆轉則改為大聲通告無窮。

水平分割與毒性逆轉只能根治兩台路由器的迴圈。跨越三台以上路由器的迴圈仍可能計數至無窮,所以它們是緩解手段,而非保證。

又稱
split horizon with poison reversepoison reverse毒性逆轉