大家覺得有意義和幫助記得及時關注和點贊!!!
本書致力于解決實際問題,書中包含大量的架構圖、拓撲圖和真實場景示例,內容全面 且易于上手,是不可多得的良心之作。本書目的是使讀者成為將自有網絡集成到全球互聯網?領域的專家。
以下是筆記內容。
- 引言
- 目標
- 目標讀者
- I: 當代互聯網(The Contemporary Internet)
- 1 互聯網的演進
- 1.1 互聯網:起源及近史
- ARPANET
- NSFNET
- The Internet Today
- 1.1 互聯網:起源及近史
- 2 ISP 服務和特點
- 2.1 ISP Services
- 3 IP 尋址和分配
- 3.1 History of Internet Addressing
- 3.2 IP Address Space Depletion
- 將自己聚合的路由指向黑洞
- II: 路由協議基礎(Routing Protocol Basics)
- 4 域間路由基礎
- 4.1 路由器和路由(Routers and Routing)
- 4.2 路由協議
- 距離矢量算法
- 鏈路狀態算法
- 4.3 將互聯網分割為自治系統(AS)
- Autonomous Systems
- 三種 AS 類型
- 4.5 FAQ
- Domain 和 AS 有什么區別?
- BGP 是用于 AS 之間的。那用于 AS 內的 BGP 又是什么?
- 5 邊界網關協議第 4 版(BGP-4)
- 5.1 BGP 工作原理
- BGP 消息頭格式
- 5.2 BGP 功能協商
- UPDATE Message and Routing Information
- 5.3 多協議擴展(Multiprotocol Extensions for BGP, MP-BGP)
- 5.4 TCP MD5 Signature Option
- 5.5 Looking Ahead
- 5.6 Frequently Asked Questions
- BGP 是否像 RIP 一樣定期發布路由更新消息?
- ASN 在 BGP 消息中的什么地方?
- 5.1 BGP 工作原理
- III: Effective Internet Routing Designs
- 6 BGP Capabilities 調優
- 6.1 Building Peer Sessions
- 物理和邏輯連接
- Synchronization Within an AS
- 6.2 路由更新方式
- BGP 動態注入
- BGP 靜態注入
- 靜態路由和動態路由例子:移動網絡
- 6.3 重疊的協議:后門(Overlapping Protocols: Backdoors)
- 6.4 BGP 路由過程
- BGP 路由:通告和存儲
- BGP 決策過程總結
- 6.5 Controlling BGP Routes
- ORIGIN(type code 1)
- AS_PATH
- NEXT_HOP
- 6.6 Route Filtering and Attribute Manipulation
- 6.7 BGP-4 Aggregation
- 6.8 Looking Ahead
- 6.9 Frequently Asked Questions
- 是否應該將 BGP 路由注入 IGP?
- 6.1 References
- 6.1 Building Peer Sessions
- 7 冗余、對稱和負載均衡
- 7.1 冗余
- 設置默認路由
- 動態學習默認路由
- 靜態配置默認路由
- 設置默認路由
- 7.2 對稱
- 7.3 非對稱路由
- 7.4 不同場景下對三者的權衡
- 7.5 Looking Ahead
- 7.6 Frequently Asked Questions
- 7.1 冗余
- 8 AS 內部路由控制
- 8.1 非 BGP 路由器和 BGP 路由器的交互
- 8.1.1 BGP 注入 IGP
- 8.1.2 靜態配置默認路由
- 8.2 BGP Policies Conflicting with Internal Defaults
- 8.2.1 例子:主備 BGP 策略和 IGP 默認行為沖突導致環路
- 方案 1: 修改 IGP Metric
- 方案 2: 直連 RTC 和 RTD
- 方案 3: Transit Routers 都跑 BGP
- 方案 4: 控制默認路由自動注入
- 8.2.2 Defaults Inside the AS: Other BGP Policies
- 8.2.1 例子:主備 BGP 策略和 IGP 默認行為沖突導致環路
- 8.3 策略路由(Policy Routing)
- 8.4 Looking Ahead
- 8.5 Frequently Asked Questions
- 8.1 非 BGP 路由器和 BGP 路由器的交互
- 9 大型 AS 控制管理
- 9.1 路由反射器(Route Reflectors)
- 9.1.1 沒有 RR 的拓撲:full-mesh
- 9.1.2 有 RR 的拓撲
- 9.1.3 路由反射原則
- 9.1.4 RR 高可用
- 9.1.5 RR 拓撲
- 10 設計穩定的因特網
- 10.1 因特網路由的不穩定性
- 10.2 BGP Stability Features
- IV: Internet Routing Device Configuration
引言
互聯網(Internet)起源于 20 世紀 60 年代(1960s
)的一個學術實驗。
一些人驚訝于網絡會發生故障,另外一些人則驚訝于網絡竟然會長時間良好地運行。
目標
本書致力于使讀者成為將自有網絡集成到全球互聯網(integrating your network into the global Internet)領域的專家。
本書致力于解決實際問題,書中包含大量的架構圖、拓撲圖和真實場景示例,內容全面而且 易于上手(comprehensive and accessible)。
目標讀者
需要將自有網絡接入互聯網的公司的網絡管理員、集成者、架構師。
不需要太多 TCP/IP 基礎。
I: 當代互聯網(The Contemporary Internet)
路由問題和解決方案(routing problems and solutions)的復雜性和當代互聯網的增長與 演進密切相關。
因此,在深入到路由協議細節之前,先了解互聯網的發展歷史,會對理解問題非常有幫助。
1 互聯網的演進
介紹互聯網的發展歷史,主要組件,理解互聯網現在面臨的挑戰,以及如何構建可擴展互連網絡(internetworks)。
1.1 互聯網:起源及近史
ARPANET
1969 年 12 月,四個節點、通過?56kbps
?電路連接的試驗網絡 ARPANET。
這項技術大獲成功,隨后幾千個大型組織和政府機構將他們的私有網絡連接到了 ARPANET。
圖 1-1 ARPANET Architecture, 1969-12
圖 1-2 ARPANET Architecture, 1976-07
這就是互聯網(Internet)的前身。
ARPANET?禁止用于商業目的,不過大量的接入還是導致了擴展性和鏈路擁塞問題, 因此 NSF 開始研究 NSFNET。
NSFNET
NSFNET 是為了解決 ARPANET 的擁塞問題。設計:
- 多個區域網絡(regional networks)和對等網絡(peer networks),
- 骨干網(backbone):NSFNET 的核心
- regional networks 和 peer networks 都接入骨干網
- 帶寬升級到 T1(1.544 Mbps,1988),后來又到 T3(45 Mbps,1991)
圖 1-3 The NSFNET-Based Internet Environment
- 1990 年左右,NSFNET 仍然是用于科研和學術目的。之后,開始出現 ISP 產業。
- 1990 年之后,這張網絡開始連接到歐洲和亞洲。
- 1995 年,這張網絡完成了自己的歷史使命。
The Internet Today
今天的互聯網是從一個核心網絡(core network,也就是 NSFNET) 轉變成的由商業提供商運營的分布式網絡,這些供應商網絡通過主要的 網絡交換節點或直連而連接到一起。
圖 1-4 The General Structure of Today's Internet
ISP 在多個 region 都提供連接接入點,稱為?POP(Points of Presence)。
2 ISP 服務和特點
2.1 ISP Services
想了解更多關于交換機、VLAN、廣播域等知識,推薦下面的書:
- Interconnections: Bridges, Routers, Switches, and Internetworking Protocols, Second Edition (Addison-Wesley, 1999) by Radia Perlman
- Cisco LAN Switching?(Cisco Press, 1999) by Kennedy Clark and Kevin Hamilton.
3 IP 尋址和分配
3.1 History of Internet Addressing
3.2 IP Address Space Depletion
CIDR: Classless Inter-domain Routing
路由條目越多,所需的處理能力和內存空間就越多。
路由表規模在 1991~1995 年期間每 10 個月就翻一番:
圖 3-9 The Growth of Internet Routing Tables
CIDR?相比于之前的有類別 IP 地址(classful IP addresses),是革命性的一步。 通過 prefix 做路由聚合,大大減小路由表的規模。
圖 3-11 Classful Addressing Versus CIDR-Based Addressing
按照最長前綴匹配算法(LPM)選擇路由。
圖 3-12 Longest Match
如圖 3-12,如果因為一些原因 path 1 路由失效了,那會用到下一個最長匹配,在圖中就 是 path 2。
將自己聚合的路由指向黑洞
每個路由器會對外通告自己聚合的路由,表明自己到這些路由是可達的。
但是,為避免出現路由環路,每個路由器在內部,要將自己聚合的路由指向黑洞,即 ,在路由器內部,丟棄所有到自己聚合的路由的包。來看個具體的例子。
圖 3-13 Following Less-Specific Routes of a Network's Own Aggregate Causes Loops
ISP1 的配置:
- 默認路由指向 ISP2
- ISP1 到 Foonet 網絡 198.32.1.0/24 可達
- ISP1 經過路由聚合,對外通告自己到 198.32.0.0/13 可達
則,當 ISP1 和 Foonet 的網絡發生故障之后,目的是 198.32.1.1 的流量從 ISP2 到達 ISP1 時,會匹配到默認路由,流量會繞回 ISP2,形成環路。
解決辦法是:在 ISP1 的路由表內添加一條到 198.32.0.0/13 的 null 路由,將所有流量 丟棄。這樣網絡正常時,流量會匹配 198.32.1.0/24 這條路由;網絡異常導致這條路由失 效后,流量匹配到 198.32.0.0/13,丟棄所有流量。
II: 路由協議基礎(Routing Protocol Basics)
本書主要介紹外部網關協議(exterior gateway protocols),即?不同自治系統(AS)之間的路由。但先了解一下內部網關協議(internal gateway protocols) 會非常有幫助。
4 域間路由基礎
互聯網是由自治系統(AS)組成的,這些 AS 由不同組織?(organization)管理,擁有不同的路由策略。
4.1 路由器和路由(Routers and Routing)
內部網關協議(IGP)是為企業網(enterprise)設計的,?不適用于大型網絡,例如上千個節點、有上萬條路由的網絡。 因此引入了外部網關協議(EGP),例如邊界網關協議(BGP)。
本章介紹 IGP 基礎。
4.2 路由協議
大部分路由協議都可以歸為兩類分布式路由算法:
- 鏈路-狀態(link-state)
- 距離矢量(distance vector):跳數
距離矢量算法
為每條路由維護一個距離矢量(vector of distances),其中“距離”用跳數(hops)或類似指標衡量。
每個節點獨立計算最短路徑,因此是分布式算法。
每個節點向鄰居通告自己已知的最短路徑,鄰居根據收到的消息判斷是否有更短路徑, 如果有就更新自己的路由信息,然后再次對外通告最短路徑。如此反復,直到整個網絡收斂到一致狀態。
早期 IGP 代表:RIP(Routing Information Protocol)
早期 IGP 缺點:
- 早期協議(RIP-1)只計算跳數(相當于每跳權重一樣),沒有優先級和權重,而跳數最少的路徑不一定最優
- 早期協議(RIP-1)規定了最大跳數(一般是 15),因此限制了網絡的規模(但解決了 count to infinity 問題)
- 早期協議(RIP-1)靠定時器觸發路由通告(沒有事件觸發機制),因此路由發生變動時,收斂比較慢
- 第一代協議不支持 CIDR
新 IGP 解決了以上問題,協議代表:
- RIP-2
- EIGRP
距離矢量協議的優點:
- 簡單
- 成熟
BGP 也是距離矢量協議,但它是通過引入路徑矢量(path vector)解決 count to infinity 問題。path vector 包含了路徑上的 ASN,相同 ASN 的路徑只會接受一條, 因此消除了路由環路。BGP 還支持基于域的策略(domain-based policies)。后面會詳細介紹 BGP。
鏈路狀態算法
- 距離矢量算法:交換路由表信息
- 鏈路狀態算法:交換鄰居的鏈路狀態信息,比距離矢量算法復雜
分布式數據庫(replicated distributed database),存儲鏈路狀態(link state)。
代表:
- OSFP
- IS-IS
路由可擴展性和收斂速度都有改善,可以支持更大的網絡,但仍然?只適用于域內路由(interior routing)。
大部分大型服務供應商在域內(intra-domain)都使用 link-state 協議,主要是看中它的?快速收斂特性。
4.3 將互聯網分割為自治系統(AS)
外部路由協議(Exterior routing protocol)的提出是為了解決兩個問題:
- 控制路由表的膨脹
- 提供結構化的互聯網視圖
將路由域劃分為獨立的管理單元,稱為自治系統(autonomous systems,AS)。 每個 AS 有自己獨立的路由策略和 IGP。
當前域間路由的事實標準:BGP-4。
intra-domain 和 inter-domain routing 的主要區別
- intra-domain 主要解決技術需求
- inter-domain 主要反映網絡和公司的政治與商業關系
Autonomous Systems
一個?AS 是擁有如下特點的一組路由器:
- 共享相同的路由策略
- 被作為一個整體進行管理
- 通常路由器之間運行同一種 IGP 協議
每個 AS 有一個編號,稱為 ASN。AS 之間通過 BGP 交換路由。
圖 4-2 AS 之間的路由交換
三種 AS 類型
- stub AS:末梢 AS,只有一條默認出口,因此不需要同步路由信息
- non-transient AS:只通告自己的路由,不傳播學習到的路由
- transit AS:既通告自己的路由,又傳播學習到的路由
圖 4-3 Single-Homed (Stub) AS
圖 4-5 Multihomed Nontransit AS Example
圖 4-6 Multihomed Transit AS Using BGP Internally and Externally
4.5 FAQ
Domain 和 AS 有什么區別?
兩者都是指滿足某些條件的一組路由器。
- Domain 一般指運行相同路由協議的一組路由器,例如一個 RIP domain 或一個 OSFP domain。
- AS 是管理概念,作為整體統一管理的、有相同路由策略的一組路由器是一個 AS。?一個 AS 可能包含一個或多個 domain。
BGP 是用于 AS 之間的。那用于 AS 內的 BGP 又是什么?
AS 內的 BGP 是 iBGP。
如果 AS 是 transit AS,那 iBGP 可以保護這個 AS 內的 nontransit routers, 不會被大量的 AS 外路由撐爆路由表。另外,即使不是 transit AS,iBGP 也可以提供更強的控制能力, 例如本書后面會看到的選擇 exit and entrance points。
5 邊界網關協議第 4 版(BGP-4)
BGP-4?1993
?年開始部署,是第一個支持路由聚合的 BGP 版本。
5.1 BGP 工作原理
BGP 是一種路徑矢量協議(path vector protocol)。
Path vector?是一條路由(network prefix)經過的所有 AS 組成的路徑。 目的是防止出現路由環路。
- BGP 使用?
TCP
?協議,運行在?179
?端口。 - peer 之間建立連接之后交換全部路由,之后只交換更新的路由(增量更新)
- 交換路由是?
UPDATE
?消息 - 維護路由表的版本號,每次路由表有更新,版本號都會遞增
- 通過 UPDATE 消息通告和撤回路由
BGP 消息頭格式
圖 5-6 BGP Message Header Format
字段:
- Marker:16 字節,用于 BGP 消息認證及檢測 peer 是否同步
- Length: 2 字節,BGP 消息總長度,包括 header。總長度在 19~4096 字節之間。
- Type: 2 字節,四種類型:
OPEN
UPDATE
NOTIFICATION
KEEPALIVE
5.2 BGP 功能協商
檢測到錯誤時會發送 NOTIFICATION 消息,然后關閉 peer 連接。
UPDATE Message and Routing Information
UPDATE 消息:
- Network Layer Reachability Information (
NLRI
) - Path Attributes
- Unfeasible Routes
圖 5-10 BGP UPDATE Message
圖 5-11 BGP Routing Update Example
5.3 多協議擴展(Multiprotocol Extensions for BGP, MP-BGP)
對 BGP-4 的兼容性擴展,支持除了 IPv4 之外的其他協議(所以叫多協議),例如 IPv6。
5.4 TCP MD5 Signature Option
5.5 Looking Ahead
5.6 Frequently Asked Questions
BGP 是否像 RIP 一樣定期發布路由更新消息?
不是。只有路由有變動時,才會通告,而且只通告變動的路由。
ASN 在 BGP 消息中的什么地方?
UPDATE 消息的 AS_PATH 屬性中。
III: Effective Internet Routing Designs
接下來用前面學到的知識解決實際問題。
6 BGP Capabilities 調優
從本章開始,內容從理論轉向 BGP 實現。
6.1 Building Peer Sessions
雖然 BGP 大部分情況都是用于 AS 之間,但是,它也可以用在 AS 內部,為 AS 內部的路 由器提供外部路由可達信息(external destination reachability information)。
AS 內部的 BGP 稱為 iBGP;AS 之間的 BGP 稱為 eBGP。
圖 6-1 iBGP 和 eBGP
鄰居之間建立連接,然后通過 OPEN 消息進行協商,在這個過程中,peer routers 之間會 比較 ASN 來判斷他們是否屬于同一個 AS。
iBGP 和 eBGP 的區別:
- 對收到的 UPDATE 消息的處理不同
- 消息攜帶的屬性不同
物理和邏輯連接
eBGP 要求鄰居之間必須是物理直連的,但是有些情況下兩個 AS 之間的 BGP peer 無法滿足直連的要求, 例如經過了一些非 BGP 路由器。這種情況下,需要對 BGP 做特殊配置。
圖 6-2 External BGP Multihop Environment
iBGP 對于 peer 之間是否直連沒有要求,只要 peer 之間 IP 通即可。
Synchronization Within an AS
BGP 的默認行為是,只有 iBGP 收斂之后,才將 AS 內部的路由通告給其他 AS。
否則,會出現問題。來看個例子。
圖 6-4 BGP Route Synchronization
ISP3 里面只有 RTA 和 RTC 運行 BGP 協議。當 ISP1 將 192.213.1.0/24 通告給 ISP3 的 RTA 之后,RTA 進一步將消息通告給 RTC。RTC 再通告給 ISP2。當 ISP2 向這個路由發送 流量時,RTC 會將流量轉發給 RTB,而 RTB 沒有這個路由信息,會將流量丟棄。
因此,BGP 規定,從 iBGP 鄰居學習到的路由不應該通告給其他 AS,除非這條路由通告 IGP 也能訪問到(The BGP rule states that a BGP router should not advertise to external neighbors destinations learned from IBGP neighbors unless those destinations are also known via an IGP.)。這就是所謂的同步。如果 IGP 可達,那說 明這條路由在 AS 內部是可達的。
將 BGP 路由注入 IGP 路由是有代價的。
首先,這會給 IGP 節點帶來額外的計算開銷。前面已經提到,IGP 并不是為處理大規 模路由設計的(IGPs are not designed to handle that many routes)。
其次,沒有必要將所有外部路由都同步到所有內部節點。更簡單的方式通常是,AS 內 分成 non-BGP 路由器和 BGP 路由器,non-BGP 路由器的默認路由指向 BGP 路由器。這樣可 能會導致路徑并不是最優的,但是跟在 AS 內維護上千條外部路由相比,代價要小的多。
除了 BGP+IGP 方式之外,解決這個問題的另一個辦法是,AS 內部的非邊界路由器之間做 iBGP full-mesh,這樣路由可以通過 iBGP 保證同步。向 IGP 內部插入成千上萬條路 由太恐怖了。
因此,一些 BGP 的實現里允許關掉同步,例如 Cisco 的?no synchronization
?命令,這 是當前的常見配置(disable BGP synchronization and rely on a full mesh of IBGP routers)。
6.2 路由更新方式
對于像互聯網這樣復雜的網絡來說,路由穩定性(route stability)是一個很大的問題。 這和鏈路的穩定性,以及路由的注入方式(動態/靜態)有關系。
BGP 動態注入
可以進一步分為:
- 純動態注入:所有從 IGP 學習到的路由都注入到 BGP(通過?
redistribute
?命令) - 半動態注入:部分從 IGP 學習到的路由注入到 BGP(通過?
network
?命令)
動態注入:
- 優點
- 配置簡單,IGP 路由自動注入 BGP,不管是具體哪種 IGP 類型(RIP、OSPF、IS-IS 等等)
- 缺點
- 可能會泄露內網路由到公網,造成安全問題
- IGP 路由抖動會影響到 BGP,想象一下幾百個 AS 同時有 IGP 路由抖動給 BGP 造成 的影響
為了防止因特網的路由抖動,提出了一些技術,第十章會介紹到,一個叫 route dampening 的進程會對抖動的路由進行懲罰,抑制它進入 BGP 的時間。
保證路由穩定性是一項很難的工作,因為很多因素都是不受控的,例如硬件故障。減少路由 不穩定的一種方式是路由聚合,可以在 AS 邊界做,也可以在因特網邊界做。
最后,另一種解決路由不穩定的方式是靜態注入路由。
BGP 靜態注入
靜態注入的路由會一直存在于路由表,一直會被通告。
可以解決路由不穩定的問題,但是會導致失效的路由無法自動從路由表刪除,而且靜態配置 相當繁瑣,配置不當還容易產生環路。因此只在特定的場景下使用。
靜態路由和動態路由例子:移動網絡
移動網絡中分配 IP 地址的問題。
移動設備希望在從一個 AS 移動到另一個 AS 的過程中,需要切換 IP 地址。因此,靜態路 由的方式不合適,只能通過動態注入 BGP 的方式。具體到實現,一種方式就是將 IGP 注入 BGP。這會帶來一些問題,前面已經分析過,例如需要對路由做過濾。
另一種實現方式是通過?network
?命令,在所有位置的邊界路由器定義這些網絡。
6.3 重疊的協議:后門(Overlapping Protocols: Backdoors)
路由可以通過多種協議學習,選擇不同的協議會影響流量的路徑。例如,如果選擇一條 RIP 路由,可能會走某鏈路;而選擇一條 eBGP 路由,則可能會走另一條鏈路。
后門鏈路(backdoor link)提供了一種 IGP 路徑的備選方式,可以用來替代 eBGP 路徑。 可以通過后門鏈路到達的 IGP 路由稱作后門路由。
有了這種后門路由,就需要一種機制,能夠使得一種協議的優先級比另一種更高。例如, Cisco 提供的?administrative distance?就是這個功能。
通過設置不同協議的路由的優先級,使得后門路由被選中作為最優路由。 或者,前面介紹過,通過?distance
?BGP 命令也可以設置優先級。
6.4 BGP 路由過程
簡要查看完整的 BGP 路由處理過程。
BGP 是一種相當簡單的協議,這也是它為什么這么靈活的原因。BGP peer 之間通過 UPDATE 消息交換路由。BGP 路由器收到 UPDATE 消息后,運行一些策略或者對消息進行過濾, 然后將路由轉發給其他 BGP peers。
BGP 實現需要維護一張 BGP 路由表,這張表獨立于 IP 路由表的。 如果到同一目的地有多條路由,BGP 并不會將所有這些路由都轉發給 peer;而是選出最優路由, 然后將最優路由轉發給 peer。除了傳遞從 peer 來的 eBGP 路由,或從路由反射器客戶端(RR client) 來的 iBGP 路由之外,BGP 路由器還可以主動發起路由更新,通告它所在 AS 內的內部網絡。
來源是本 AS 的合法的本地路由,以及從 BGP peer 學習到的最優路由,會被添加到 IP 路由表。IP 路由表是最終的路由決策表,用于操控轉發表。
圖 6-8 Routing Process Overview
BGP 路由:通告和存儲
根據 RFC 1771,BGP 協議中路由(route)的定義是:一條路由是一個目標及其到達這個目 標的一條路徑的屬性組成的信息單元(a route is defined as a unit of information that pairs a destination with the attributes of a path to that destination)。
路由在 BGP peer 之間通過 UPDATE 消息進行通告:目標是 NLRI 字段,路徑是 path 屬性 字段。
路由存儲在 RIB(Routing Information Bases)。
BGP speaker 選擇通告一條路由的時候,可能會修改路由的 path 屬性。
圖 6-9 BGP 路由表的邏輯表示
- 一個 Adj-RIB-In 邏輯上對應一個 peer,存儲從 peer 學習到的路由
- Loc-RIB 存儲最優路由
- 一個 Adj-RIB-Out 邏輯上對應一個 peer,存儲準備從這個路由器發送給對應 peer 的路由
這里的邏輯圖是將過程分成了三部分,每部分都有自己的存儲,但實現不一定這樣,事實上 大部分實現都是共享一份路由表,以節省內存。
圖 6-10 Sample Routing Environment
BGP 決策過程總結
- 如果下一跳不可達,則忽略此路由(這就是為什么有一條 IGP 路由作為下一跳如此重要 的原因)
- 選擇權重最大的一條路徑
- 如果權重相同,選擇本地偏向(local preference)最大的一條路由
- 如果沒有源自本地的路由(locally originated routes),并且 local preference 相 同,則選擇 AS_PATH 最短的路由
- 如果 AS_PATH 相同,選擇 origin type 最低(
IGP < EGP < INCOMPLETE
)的路由 - 如果 origin type 相同,選擇 MED 最低的,如果這些路由都是從同一個 AS 收到的
- 如果 MED 相同,優先選擇 eBGP(相比于 iBGP)
- 如果前面所有條件都相同,選擇經過最近的 IGP 鄰居的路由——也就是選擇 AS 內部最短 的到達目的的路徑
- 如果內部路徑也相同,那就依靠 BGP ROUTE_ID 來選擇了。選擇從 RID 最小的 BGP 路 由器來的路由。對 Cisco 路由器來說,RID 就是路由器的 loopback 地址。
6.5 Controlling BGP Routes
介紹路由的每個屬性。
ORIGIN(type code 1)
- 0:?
IGP
, NLRI that is inteior to the originating AS - 1:?
EGP
, NLRI learned via EGP - 2:?
INCOMPLETE
, NLRI learned by some means
AS_PATH
BGP 依靠這個字段實現路由無環路。里面存儲了路徑上的 ASN。
圖 6-11 Sample Loop Condition Addressed by the AS_PATH Attribute
NEXT_HOP
圖 6-12 BGP NEXT_HOP Example
6.6 Route Filtering and Attribute Manipulation
6.7 BGP-4 Aggregation
6.8 Looking Ahead
6.9 Frequently Asked Questions
是否應該將 BGP 路由注入 IGP?
不。不推薦將 BGP 路由注入 IGP。應該關閉 BGP synchronization。
6.1 References
7 冗余、對稱和負載均衡
- 冗余:發生鏈路故障時,有備用路由
- 對稱:流量在相同的點進出 AS(enters and exits an AS at the same point)
- 負載均衡:在多條鏈路之間均衡地分發流量
7.1 冗余
冗余和對稱這兩個目標是有沖突的:一個網絡提供的冗余越多,?對稱性越難保證。
冗余最終會以路由的形式落到路由表。為了避免路由表過于復雜,通常的冗余實現方式 就是默認路由(default routing)。
設置默認路由
默認路由是優先級最低的路由,因此是最后的選擇(gateway of the last resort)。分為兩種:
- 動態學習
- 靜態配置
動態學習默認路由
0.0.0.0/0.0.0.0
?是全網約定的默認路由,并且可以動態通告給其他路由器。 通告此路由的系統表示它可以作為其他系統最后嘗試的網關(represents itself as a gateway of last resort for other systems)。
動態默認路由可以通過 BGP 或 IGP 學習。出于冗余目的,應該設置允許從多個源學習默認 路由。在 BGP 中,可以通過設置?local reference
?給默認路由設置優先級。如果高優先 級的默認路由發生故障,低優先級的可以補上。
靜態配置默認路由
動態學習到的默認路由可能不是我們想要的,因此一些管理員會選擇靜態配置默認路由。
靜態默認路由也可以設置多條,用優先級區分。
7.2 對稱
流量從 AS 的哪個點出去的,也通過哪個點進來。
大部分情況下都應該是對稱的,但是特定的一些場景下也會有非對稱的情況,與設計有關。
實際上非對稱路由在現實中并不少見(more often than not),而且也沒有造成太大問 題。
7.3 非對稱路由
流量要根據 inbound 和 outbound 分開考慮。 例如,如果網絡和 ISP1 之間的帶寬被打爆了,那你肯定是先問:是 inbound 還是 outbound 被打爆了?
路由行為影響因素:
inbound traffic
?受本 AS 通告出去的路由的影響outbound traffic
?受本 AS 從其他 AS 學習到的路由的影響
因此,要調整 inbound 流量,就需要調整從本 AS 通告出去的路由;而要調整 outbound, 就需要控制本 AS 如何學習鄰居通告的路由。
7.4 不同場景下對三者的權衡
可以看出,冗余、對稱和負載均衡之間是有聯系的,并且存在一些沖突。
第六章介紹的路由屬性(routing attributes)是實現這三個目標的工具。
7.5 Looking Ahead
7.6 Frequently Asked Questions
BGP 本身不考慮鏈路速度和流量特性,因此需要管理員通過策略配置達到所期望的目的。
8 AS 內部路由控制
8.1 非 BGP 路由器和 BGP 路由器的交互
非 BGP 路由器如何連接到外部網絡:
- 將 BGP 注入到 IGP(即,將外部路由注入到 AS 內部)
- 靜態配置 AS 內的默認路由到外網
8.1.1 BGP 注入 IGP
不推薦將全部 BGP 路由注入到 IGP,這會給 IGP 路由增加很大的負擔。IGP 路由是針 對 AS 內路由和很小的網絡設計的,不適用于大規模網絡。但可以將部分 BGP 路由注入 IGP。
需要考慮的因素:
- 計算路徑和處理路由更新所需的內存、CPU
- link utilization from routing control traffic
- 對收斂的影響
- IGP 的限制
- 網絡拓撲
- 其他
缺點:
- 如果 IGP 非常老,例如 RIP-1,不支持 CIDR,那 BGP 過來的 CIDR 路由都會丟失
- BGP 路由的抖動會引起 IGP 的抖動,很多 IGP 掛掉都是這個原因
8.1.2 靜態配置默認路由
在每個 AS 的邊界路由器上添加一條默認路由。
8.2 BGP Policies Conflicting with Internal Defaults
BGP 路由策略和 IGP 的默認行為有沖突會導致出現路由環路,來看 圖 8-2 這個例子 。
8.2.1 例子:主備 BGP 策略和 IGP 默認行為沖突導致環路
考慮圖 8-2。RTC 和 RTD 和外面的 AS 運行 eBGP;在 AS 內部,它們兩個之間運行 iBGP 。但是,他們不是直連的,要經過 RTA 和 RTB 兩個非 BGP 路由器。RTA 和 RTB 會和 AS 內的所有路由器運行 IGP 協議,因此它們看不到所有的外部路由(BGP 路由)。
如果 BGP 策略是 RTD 做主,RTC 做備,那 RTC 收到流量時,會轉發給 RTD,但因為 RTC 和 RTD 不是直連的,因此它會先轉發給 RTA。RTA 根據 IGP 學習到的默認路由是 RTC,因 此它又會將流量轉發回 RTC,形成了路由環路。
RTC 和 RTD 之間出現環路:
圖 8-2 Following Defaults: Loop Situation
解決這個問題的辦法有如下幾種。
方案 1: 修改 IGP Metric
將 RTA 的默認路由從指向 RTC 改為指向 RTD。
具體地,將 RTC 的默認路由 0/0 的 metric 設置的非常大。這樣 RTD 的路徑相比之下很 短,RTA 就會將 RTA-RTB-RTD 作為最優路徑。
方案 2: 直連 RTC 和 RTD
直連 RTC 和 RTD,使得二者之間的最優路徑不需要經過 RTA。
RTC-RTD 是 iBGP 路徑,RTC-RTA-RTB-RTD 是 IGP 路徑。
方案 3: Transit Routers 都跑 BGP
Transit routers 都跑 BGP,在圖 8-2 中就是 RTA 和 RTB。
方案 4: 控制默認路由自動注入
RTD 和 RTC 只有一個注入默認路由,另一個不注入。
缺點:在對 primary/backup 模式有用,而且 primary 掛掉之后,backup 用不了,因為它 沒有注入默認路由。
8.2.2 Defaults Inside the AS: Other BGP Policies
IGP 默認配置和 BGP policy 沖突產生的環路。
8.3 策略路由(Policy Routing)
通常所說的路由,都是根據目的地址做轉發。
而策略路由是根據源地址,或源地址+目的地址做轉發。可以做更高級的路由控制。
8.4 Looking Ahead
8.5 Frequently Asked Questions
9 大型 AS 控制管理
網絡節點超過幾百個之后,會帶來很大的管理問題。
9.1 路由反射器(Route Reflectors)
BGP 之間通過 full-mesh 做 peering,當節點多了之后,BGP mesh 非常復雜。
引入路由反射器(Route Reflector,RR)。RR 帶來的好處:
- 向多個 peer 發送 UPDATE 時效率更高
- 路由器只需要和 local RR 做 peer,大大減少 BGP session 的數量
只有 BGP mesh 比較大之后才推薦 RR。因為?RR 也是有代價的:
- 增加額外計算開銷
- 如果配置不正常會引起路由環路和路由不穩定
9.1.1 沒有 RR 的拓撲:full-mesh
圖 9-1 Internal Peers in a Normal Full-Mesh Environment
沒有 RR 的情況下,同一 AS 內的 BGP speaker 之間形成一個?logical?full-mesh。 如圖 9-1 所示,雖然 RTA-RTC 之間沒有物理鏈路,但仍然有一條邏輯 peer 鏈路。
RTB 從 RTA 收到的 UPDATE 消息并不會發送給 RTC,因為:
- RTC 是內部節點(同一個 AS)
- 這條 UPDATE 消息也是從內部節點發來的(RTA)
因此,如果 RTA-RTC 之間沒有做 peer,RTC 就收不到 RTA 的消息;所以沒有 RR 的情況 下必須得用 full-mesh。
9.1.2 有 RR 的拓撲
再來看有 RR 的情況,如圖 9-2 所示。
圖 9-2 Internal Peers Using a Route Reflector
引入 RR 之后,其他路由器稱為客戶端。客戶端和 RR 之間做 peer,RR 再將消息轉發給其 他 IBGP 或 eBGP peers。
RR 大大減少了 BGP session 數量,使得網絡更具擴展性。
9.1.3 路由反射原則
所有設備分為三類:
- 路由反射器
- 路由反射器的客戶端,簡稱客戶端
- 非路由反射器的客戶端,簡稱非客戶端
圖 9-3 Route Reflection Process Components
路由反射原則:
- 從 nonclient peer 來的路由,只反射給 clients(無須反射給 nonclients 是因為 nonclients 之間有 full-mesh)
- 從 client peer 來的路由,反射給 clients 及 nonclients
- 從 eBGP peer 來的路由,反射給 clients 及 nonclients
RR 只用于 AS 內部,因此 AS 邊界的外部路由節點(eBGP)也當作 nonclients 對待。
9.1.4 RR 高可用
RR 是集中式節點,因此非常重要,需要做冗余。
但是,如果本身物理拓撲就沒有冗余,那 RR 做冗余也是無用的,如下圖。
圖 9-4 Comparison of Logical and Physical Redundancy Solutions
9.1.5 RR 拓撲
RR 拓撲主要取決于物理網絡拓撲,事實上每個路由器都可以配置成 RR。
圖 9-5 Complex Multiple Route Reflector Environment
RR 不會修改路由消息的屬性(UPDATE attributes,例如 NEXT_HOP),但是一些實現 會允許 RR 做一些過濾工作。
圖 9-7 Typical BGP Route Reflection Topology
圖 9-8 Full-Mesh BGP Topology
10 設計穩定的因特網
10.1 因特網路由的不穩定性
最常見的現象:路由抖動(flapping),BGP 頻繁 UPDATE 和 WITHDRAWN 路由。
一些影響因特網路由穩定性的因素:
- IGP 不穩定
- 硬件錯誤
- 軟件問題
- CPU、內存等資源不足
- 網絡升級和例行維護
- 人為錯誤
- 鏈路擁塞