iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 20
8
Security

從 0 開始的 Web Security系列 第 20

Day 20 BGP Protocol (2)

昨天我們講解了一下 BGP 路由協定的一些基本概念
今天我們將會講解 BGP 實際傳輸封包與實際案例的分析

BGP 封包類型

BGP 主要有四種類型的封包,分別是

  1. Open
  2. Keepalive
  3. Update
  4. Notification

Open Message (1)

Open Message 是建立 BGP Session 的起始封包,也是 TCP 連線建立起來後的第一個封包
建立 BGP 連線後才能用這個 Session 傳送其他訊息
內容包含了路由器的 ID、建立連線方的 AS,與其他支援的功能等
https://ithelp.ithome.com.tw/upload/images/20201005/20129897ZAfngDLDIC.png

Update Message (2)

Update Message 用來傳送路由更新資訊給對端路由器
https://ithelp.ithome.com.tw/upload/images/20201005/20129897YnVQ9JUrx9.png

可以傳送 NLRI 給對端路由器,讓對端知道你這邊可以連到哪些 IP 段

NLRI:Network Layer Reachability Information

Notification Message (3)

Notification Message 用來傳送一些異常狀態,因為截圖都在半生產環境中,暫時還沒有看到該類型的封包

Keepalive Message (4)

Keepalive Message 不帶任何資訊,很乾淨,單純用來告訴對方路由器你還活著
https://ithelp.ithome.com.tw/upload/images/20201005/20129897dOXNd5QLhc.png

Route Refresh Message (5)

上面不是說了主要有四種類型的 BGP 封包嗎?那這個第五種又是哪來的
這個是由路由器額外支援的 Route Refresh 功能出來的
基本上為了避免意外丟失對端的路由表的情況
可以主動向對端路由器要求重新傳送完整路由,而不用重新建立連線
https://ithelp.ithome.com.tw/upload/images/20201005/20129897O47bX5GaNc.png

實際範例

https://ithelp.ithome.com.tw/upload/images/20201005/20129897UDh36Yvuj7.png

如我們昨天所說的,BGP 是建立在 TCP 之上的一個協定
用意是為了確保傳輸的可靠性
所以會先利用三方交握建立 TCP 通道(SYN, SYNACK, ACK)
也就是圖中的前三筆的 TCP 連線
在這之後紫色的皆為 TCP 控制封包,橘色的皆為 BGP 封包內容
下文將會只著重於 BGP 的部分

我們看到圖中 TCP 連線建立為 42491 -> 179
為 High Port 往 Service Port 連接的標準類型
這就是由先發起 TCP 連線的一方決定的,先發起連線的那方即為 TCP Client

在建立了 TCP 連線之後,將會由連線發起方傳送 Open Message
https://ithelp.ithome.com.tw/upload/images/20201005/20129897yFSxGG6CRL.png
其中像上面所說的,包含了路由器識別用的 ID(BGP Idenitifer)

還有我方路由器所代表的 AS
但為什麼這裡是 23456 (AS_TRNAS) 呢,這是因為我方 AS 是 4 Bytes 的 AS (13xxxx),而原本協定內的空格只有支援 2 Bytes,自然放不進 My AS 的那格內
那該怎麼辦呢?沒關係,我們只要用額外支援的功能,並將 4 Bytes 的 AS 放入其中即可
如上圖中 "Capability: Support for 4-octet AS number capability" 所示
我的 Router 也支援同一 BGP Session 支援不同類型的路由(Multi Protocol)(MP-BGP),還有 Route Refresh 的功能,這些資訊也會被包含在 Open message 的訊息內

當對方收到我方的 Open Message 後,同樣也會回覆 Open Message 給我方,並挾帶一個 Keepalive 包,說明有收到我們的 Open Message
https://ithelp.ithome.com.tw/upload/images/20201005/201298976tUAmIU1pc.png

由此可見對方的 AS Number 為 197068,也是 4 Bytes AS

當我們收到對方的 Open Message 後,回覆一個 Keepalive
到此,BGP 連線階段就此建立
https://ithelp.ithome.com.tw/upload/images/20201005/20129897dOXNd5QLhc.png

BGP 連線建立後就會互相向對方傳送 Update Message,告訴對方自己可以連接到的路由,本圖以 IPv6 路由為例,其中包含了 AS_PATH 與 MP_REACH_NLRI
AS Path 就是這幾條路由會經過的 AS,同一個 AS 可以出現在 Path 中多次,端看網路管理者如何設定
MP_REACH_NLRI 就包含了可連線到的路由

當一條路由被 Withdraw 時(無法連線時),也會發出對應的 MP_UNREACH_NLRI
https://ithelp.ithome.com.tw/upload/images/20201005/20129897qjiESOreqs.png

到此,路由器之間就互相接收到對方想傳輸的路由
搭配 Day 5 所介紹的網際網路的路由處理與交換原則,就可以在網際網路上較好地根據商業性策略來調整路由

小結

今天我們看到了 BGP 的封包結構與交互原理
明天我們將會談到網際網路現在所面臨的安全問題
主要都與 BGP 這個路由協定有關連,希望先講解這個協定能幫助大家理解之後的內容


上一篇
Day 19 BGP Protocol (1)
下一篇
Day 21 BGP 與網路安全
系列文
從 0 開始的 Web Security22

1 則留言

0
阿瑜
iT邦新手 4 級 ‧ 2020-11-16 00:06:00

什麼是商業性 策略阿?

我要留言

立即登入留言