今天看到一條關於BGP水平分割問題的討論。
主要癥結在這個地方:
一樣是水平分割,在BGP和IGP中都有;那麼:
IGP的水平分割:
從某個接口上學習來的路由信息將再也不從該接口上通告出去。就是從那個口進來的再也不從這個口出去。
BGP的水平分割:
從任何IBGP鄰居學來的路由信息都再也不向任何IBGP路由器轉發。說白了就是死衚衕,再也不管了。
因而,有人就問了,既然一樣是水平分割,爲何標準不一樣?
IGP還能向其餘的路由器發送更新,難道是BGP多慮了?若是BGP是對的,那麼IGP這樣作就不會引發環路嗎?
問題答案:
會!IGP這樣作依然存在環路!只不過,這個環路是大網絡的環路,因此IGP採用其餘方式解決這個問題,好比RIP的16跳(否則若是一個水平分割都所有搞定,RIP也不須要16跳這個設置了);緣由是IGP的水平分割只是防止區域網絡(好比相鄰的路由器)這種小範圍內的問題,若是網絡大了,互聯複雜,依舊可能產生環路。
而這樣的狀況對於BGP這種攜帶了如此核心和大規模路由的協議來講是沒法容忍的。這點不須要多作解釋了。
所以BGP採用如此殘酷版本的水平分割自有他的道理。
我想,不少教材都沒有很好的解釋這一點,這將致使不少初學者混淆水平分割的概念。
換句話說,BGP的這個分割是否是水平分割,字面上也是值得商榷的。