如今,許多公司都建有多個網絡,假如這些網絡的類型不盡相同,則需要用路由器進行互聯。路由器是與兩個或兩個以上的網絡連接的計算機,它根據路由協議生成并維護一個路由表,并按照該路由表中的信息轉發包。這些路由器對公司內部的網絡結構了如指掌,知道將分組送到目的地的全部細節,但對于其他公司的網絡結構并不了解。像這樣"在同一機構下治理的一系列路由器和網絡"被稱為自治系統(AS)。由不同機構掌管的自治系統,可以采用不同的路由選擇算法;但同一自治系統內的所有路由器都使用同一路由協議,以便于自治系統內部各個路由器互換路由信息來維持相互的連通性。每一個自治系統都有一個16位的"自治系統(AS)編號"作為標志,就像 IP 地址一樣,它是由專門機構來分配的。
前面提到,自治系統內的路由器不必知道其他自治系統的內部結構細節,從而有效地節約了路由器的內存和 CPU 時間,并提高了網絡帶寬的利用率。但是,假如想與其他公司(自治系統)通信時該怎么辦呢?很簡單,我們可以在自治系統內指定一個與其他自治系統相連的路由器為"外部網關",通過它進入其他自治系統。該路由器使用的協議叫做"外部網關協議",如邊界網關協議(BGP)。相鄰的兩個網關必須首先互換"鄰機探測"報文,協商是否愿意成為"鄰機"。成為鄰機則意味著兩個自治系統同意中轉雙方的通信流。同意后,兩個鄰機互換"鄰機可達性報文",來監督他們之間的鏈路的工作情況。接下來便是最重要的工作,用"網絡可達性報文"來交換通過各鄰機所能到達的網絡的信息,從而實現自治系統之間的連通性。在外部網關的眼里只由外部網關和連接他們的鏈路,如此以來,自治系統內的通信由內部網關處理,自治系統之間的通信交由外部網關處理--一個分級路由的景象已經展現在我們面前,實際上,因特網正是由大量自治系統組成的。
建立一個高級路由器
許多人對路由器感到比較生疏,事實上作為一個防火墻使用的 Linux 系統已經是一個路由器了,只不過還有點"簡陋"而已。然而,我們的目標是用 Linux 打造一個"高級"路由器,它必須能夠利用動態路由協議(上文提到的協議皆為動態路由協議)工作。這些協議能夠使路由器互換相關信息,從而共享穿越網絡時所用的那些路徑--路由。這一點對于大型網絡(比如 Internet)而言是"異常"重要的,因為此時再用靜態路由(也就是人工計算設置路由)是根本不現實的。