天天看點

計算機網絡——資料中心(下)

目錄

  • 資料中心
    • 總結
  • ***
    • ***是如何工作的?
    • IPsec ***的建立過程
      • 第一個階段,建立IKE自己的SA
      • 建立IPsec SA
      • 打包封裝傳輸
    • ATM
    • MPLS
    • MPLS ***
    • 總結
  • 移動網絡
    • 移動網絡的發展曆程
      • 2G網絡
      • 2.5G網絡
      • 3G網絡
      • 4G網絡
    • 4G網絡協定解析
      • 控制面協定
      • 資料面協定
      • 手機上網流程
    • 異地上網問題
    • 總結

資料中心

資料中心是一個大雜燴,幾乎要用到前面學過的所有知識。

前面講辦公室網絡的時候,我們知道辦公室裡面有很多台電腦。如果要通路外網,需要經過一個叫網關的東西,而網關往往是一個路由器。

資料中心裡面也有一大堆的電腦,但是它和咱們辦公室裡面的筆記本或者桌上型電腦不一樣。資料中心裡面是伺服器。伺服器被放在一個個叫作機架(Rack)的架子上面。

資料中心的入口和出口也是路由器,由于在資料中心的邊界,就像在一個國家的邊境,稱為邊界路由器(Border Router)。為了高可用,邊界路由器會有多個。

一般家裡隻會連接配接一個營運商的網絡,而為了高可用, 為了當一個營運商出問題的時候,還可以通過另外一個營運商來提供服務,是以資料中心的邊界路由器會連接配接多個營運商網絡。

既然是路由器,就需要跑路由協定,資料中心往往就是路由協定中的自治區域(AS)。資料中心裡面的機器要想通路外面的網站,資料中心裡面也是有對外提供服務的機器,都可以通過BGP協定,擷取内外互通的路由資訊。這就是我們常聽到的多線BGP的概念。

如果資料中心非常簡單,沒幾台機器,那就像家裡或者宿舍一樣,所有的伺服器都直接連到路由器上就可以了。但是資料中心裡面往往有非常多的機器,當塞滿一機架的時候,需要有交換機将這些伺服器連接配接起來,可以互相通信。

這些交換機往往是放在機架頂端的,是以經常稱為TOR(Top Of Rack)交換機。這一層的交換機常常稱為接入層(Access Layer)。注意這個接入層和原來講過的應用的接入層不是一個概念。

計算機網絡——資料中心(下)

當一個機架放不下的時候,就需要多個機架,還需要有交換機将多個機架連接配接在一起。這些交換機對性能的要求更高,帶寬也更大。這些交換機稱為彙聚層交換機(Aggregation Layer)。

資料中心裡面的每一個連接配接都是需要考慮高可用的。這裡首先要考慮的是,如果一台機器隻有一個網卡,上面連着一個網線,接入到TOR交換機上。如果網卡壞了,或者不小心網線掉了,機器就上不去了。是以,需要至少兩個網卡、兩個網線插到TOR交換機上,但是兩個網卡要工作得像一張網卡一樣,這就是常說的網卡綁定(bond)。

這就需要伺服器和交換機都支援一種協定LACP(Link Aggregation Control Protocol)。它們互相通信,将多個網卡聚合稱為一個網卡,多個網線聚合成一個網線,在網線之間可以進行負載均衡,也可以為了高可用作準備。

計算機網絡——資料中心(下)

網卡有了高可用保證,但交換機還有問題。如果一個機架隻有一個交換機,它挂了,那整個機架都不能上網了。因而TOR交換機也需要高可用,同理接入層和彙聚層的連接配接也需要高可用性,也不能單線連着。

最傳統的方法是,部署兩個接入交換機、兩個彙聚交換機。伺服器和兩個接入交換機都連接配接,接入交換機和兩個彙聚都連接配接,當然這樣會形成環,是以需要啟用STP協定,去除環,但是這樣兩個彙聚就隻能一主一備了。STP協定裡我們學過,隻有一條路會起作用。

計算機網絡——資料中心(下)

交換機有一種技術叫作堆疊,是以另一種方法是,将多個交換機形成一個邏輯的交換機,伺服器通過多根線配置設定連到多個接入層交換機上,而接入層交換機多根線分别連接配接到多個交換機上,并且通過堆疊的私有協定,形成雙活的連接配接方式。

計算機網絡——資料中心(下)

由于對帶寬要錢求更大,而且挂了影響也更大,是以兩個堆疊可能就不夠了,可以就會有更多的,比如四個堆疊為一個邏輯的交換機。

彙聚層将大量的計算節點互相連接配接在一起,形成一個叢集。在這個叢集裡面,伺服器之間通過二層互通,這個區域常稱為一個POD(Point Of Delivery),有時候也稱為一個可用區(Available Zone)。

當節點數目再多的時候,一個可用區放不下,需要将多個可用區連在一起,連接配接多個可用區的交換機稱為核心交換機。

計算機網絡——資料中心(下)

核心交換機吞吐量更大,高可用要求更高,肯定需要堆疊,但是往往僅僅堆疊,不足以滿足吞吐量,因而還是需要部署多組核心交換機。核心和彙聚交換機之間為了高可用,也是全互連模式的。

這個時候還存在那個問題,出現環路怎麼辦?

一種方式是,不同的可用區在不同的二層網絡,需要配置設定不同的網段。彙聚和核心之間通過三層網絡互通的,二層都不在一個廣播域裡面,不會存在二層環路的問題。三層有環是沒有問題的,隻要通過路由協定選擇最佳的路徑就可以了。那為啥二層不能有環路,而三層可以呢?你可以回憶一下二層環路的情況。

計算機網絡——資料中心(下)

如圖,核心層和彙聚層之間通過内部的路由協定OSPF,找到最佳的路徑進行通路,而且還可以通過ECMP等價路由,在多個路徑之間進行負載均衡和高可用。

但是随着資料中心裡面的機器越來越多,尤其是有了雲計算、大資料,叢集規模非常大,而且都要求在一個二層網絡裡面。這就需要二層互連從彙聚層上升為核心層,也即在核心以下,全部是二層互連,全部在一個廣播域裡面,這就是常說的大二層。

計算機網絡——資料中心(下)

如果大二層橫向流量不大,核心交換機數目不多,可以做堆疊,但是如果橫向流量很大,僅僅堆疊滿足不了,就需要部署多組核心交換機,而且要和彙聚層進行全互連。由于堆疊隻解決一個核心交換機組内的無環問題,而組之間全互連,還需要其他機制進行解決。

如果是STP,那部署多組核心無法擴大橫向流量的能力,因為還是隻有一組起作用。

于是大二層就引入了TRILL(Transparent Interconnection of Lots of Link),即多連結透明互聯協定。它的基本思想是,二層環有問題,三層環沒有問題,那就把三層的路由能力模拟在二層實作。

運作TRILL協定的交換機稱為RBridge,是具有路由轉發特性的網橋裝置,隻不過這個路由是根據MAC位址來的,不是根據IP來的。

Rbridage之間通過鍊路狀态協定運作。記得這個路由協定嗎?通過它可以學習整個大二層的拓撲,知道通路哪個MAC應該從哪個網橋走;還可以計算最短的路徑,也可以通過等價的路由進行負載均衡和高可用性。

計算機網絡——資料中心(下)

TRILL協定在原來的MAC頭外面加上自己的頭,以及外層的MAC頭。TRILL頭裡面的Ingress RBridge,有點像IP頭裡面的源IP位址,Egress RBridge是目标IP位址,這兩個位址是端到端的,在中間路由的時候,不會發生改變。而外層的MAC,可以有下一跳的Bridge,就像路由的下一跳,也是通過MAC位址來呈現的一樣。

如圖中所示的過程,有一個包要從主機A發送到主機B,中間要經過RBridge 1、RBridge 2、RBridge X等等,直到RBridge 3。在RBridge 2收到的包裡面,分内外兩層,内層就是傳統的主機A和主機B的MAC位址以及内層的VLAN。

在外層首先加上一個TRILL頭,裡面描述這個包從RBridge 1進來的,要從RBridge 3出去,并且像三層的IP位址一樣有跳數。然後再外面,目的MAC是RBridge 2,源MAC是RBridge 1,以及外層的VLAN。

當RBridge 2收到這個包之後,首先看MAC是否是自己的MAC,如果是,要看自己是不是Egress RBridge,也即是不是最後一跳;如果不是,檢視跳數是不是大于0,然後通過類似路由查找的方式找到下一跳RBridge X,然後将包發出去。

RBridge 2發出去的包,内層的資訊是不變的,外層的TRILL頭裡面。同樣,描述這個包從RBridge 1進來的,要從RBridge 3出去,但是跳數要減1。外層的目标MAC變成RBridge X,源MAC變成RBridge 2。

如此一直轉發,直到RBridge 3,将外層解出來,發送内層的包給主機B。

這個過程是不是和IP路由很像?

對于大二層的廣播包,也需要通過分發樹的技術來實作。我們知道STP是将一個有環的圖,通過去掉邊形成一棵樹,而分發樹是一個有環的圖形成多棵樹,不同的樹有不同的VLAN,有的廣播包從VLAN A廣播,有的從VLAN B廣播,實作負載均衡和高可用。

計算機網絡——資料中心(下)

核心交換機之外,就是邊界路由器了。至此從伺服器到資料中心邊界的層次情況已經清楚了。

在核心交換上面,往往會挂一些安全裝置,例如入侵檢測、DDoS防護等等。這是整個資料中心的屏障,防止來自外來的攻擊。核心交換機上往往還有負載均衡器,原理前面的章節已經說過了。

在有的資料中心裡面,對于儲存設備,還會有一個存儲網絡,用來連接配接SAN和NAS。但是對于新的雲計算來講,往往不使用傳統的SAN和NAS,而使用部署在x86機器上的軟體定義存儲,這樣存儲也是伺服器了,而且可以和計算節點融合在一個機架上,進而更加有效率,也就沒有了單獨的存儲網絡了。

于是整個資料中心的網絡如下圖所示。

計算機網絡——資料中心(下)

這是一個典型的三層網絡結構。這裡的三層不是指IP層,而是指接入層、彙聚層、核心層三層。這種模式非常有利于外部流量請求到内部應用。這個類型的流量,是從外到内或者從内到外,對應到上面那張圖裡,就是從上到下,從下到上,上北下南,是以稱為南北流量。

但是随着雲計算和大資料的發展,節點之間的互動越來越多,例如大資料計算經常要在不同的節點将資料拷貝來拷貝去,這樣需要經過交換機,使得資料從左到右,從右到左,左西右東,是以稱為東西流量。

為了解決東西流量的問題,演進出了葉脊網絡(Spine/Leaf)。

  • 葉子交換機(leaf),直接連接配接實體伺服器。L2/L3網絡的分界點在葉子交換機上,葉子交換機之上是三層網絡。
  • 脊交換機(spine switch),相當于核心交換機。葉脊之間通過ECMP動态選擇多條路徑。脊交換機現在隻是為葉子交換機提供一個彈性的L3路由網絡。南北流量可以不用直接從脊交換機發出,而是通過與leaf交換機并行的交換機,再接到邊界路由器出去。
計算機網絡——資料中心(下)

傳統的三層網絡架構是垂直的結構,而葉脊網絡架構是扁平的結構,更易于水準擴充。

總結

好了,複雜的資料中心就講到這裡了。我們來總結一下,你需要記住這三個重點。

  • 資料中心分為三層。伺服器連接配接到接入層,然後是彙聚層,再然後是核心層,最外面是邊界路由器和安全裝置。
  • 資料中心的所有鍊路都需要高可用性。伺服器需要綁定網卡,交換機需要堆疊,三層裝置可以通過等價路由,二層裝置可以通過TRILL協定。
  • 随着雲和大資料的發展,東西流量相對于南北流量越來越重要,因而演化為葉脊網絡結構。

***

資料中心,裡面很複雜,但是有的公司有多個資料中心,需要将多個資料中心連接配接起來,或者需要辦公室和資料中心連接配接起來。這該怎麼辦呢?

  • 第一種方式是走公網,但是公網太不安全,你的隐私可能會被别人偷窺。
  • 第二種方式是租用專線的方式把它們連起來,這是土豪的做法,需要花很多錢。
  • 第三種方式是用***來連接配接,這種方法比較折中,安全又不貴。
計算機網絡——資料中心(下)

***,全名Virtual Private Network,虛拟專用網,就是利用開放的公衆網絡,建立專用資料傳輸通道,将遠端的分支機構、移動辦公人員等連接配接起來。

***是如何工作的?

***通過隧道技術在公衆網絡上仿真一條點到點的專線,是通過利用一種協定來傳輸另外一種協定的技術,這裡面涉及三種協定:乘客協定、隧道協定和承載協定。

我們以IPsec協定為例來說明。

計算機網絡——資料中心(下)

你知道如何通過自駕進行海南遊嗎?這其中,你的車怎麼通過瓊州海峽呢?這裡用到輪渡,其實這就用到隧道協定。

在廣州這邊開車是有“協定”的,例如靠右行駛、紅燈停、綠燈行,這個就相當于“被封裝”的乘客協定。當然在海南那面,開車也是同樣的協定。這就相當于需要連接配接在一起的一個公司的兩個分部。

但是在海上坐船航行,也有它的協定,例如要看燈塔、要按航道航行等。這就是外層的承載協定。

那我的車如何從廣州到海南呢?這就需要你遵循開車的協定,将車開上輪渡,所有通過輪渡的車都關在船艙裡面,按照既定的規則排列好,這就是隧道協定。

在大海上,你的車是關在船艙裡面的,就像在隧道裡面一樣,這個時候内部的乘客協定,也即駕駛協定沒啥用處,隻需要船遵從外層的承載協定,到達海南就可以了。

到達之後,外部承載協定的任務就結束了,打開船艙,将車開出來,就相當于取下承載協定和隧道協定的頭。接下來,在海南該怎麼開車,就怎麼開車,還是内部的乘客協定起作用。

在最前面的時候說了,直接使用公網太不安全,是以接下來我們來看一種十分安全的***,IPsec ***。這是基于IP協定的安全隧道協定,為了保證在公網上面資訊的安全,因而采取了一定的機制保證安全性。

  • 機制一:私密性,防止資訊洩漏給未經授權的個人,通過加密把資料從明文變成無法讀懂的密文,進而確定資料的私密性。

    加密可以分為對稱加密和非對稱加密。對稱加密速度快一些。而***一旦建立,需要傳輸大量資料,因而我們采取對稱加密。但是同樣,對稱加密還是存在加密秘鑰如何傳輸的問題,這裡需要用到網際網路密鑰交換(IKE,Internet Key Exchange)協定。

  • 機制二:完整性,資料沒有被非法篡改,通過對資料進行hash運算,産生類似于指紋的資料摘要,以保證資料的完整性。
  • 機制三:真實性,資料确實是由特定的對端發出,通過身份認證可以保證資料的真實性。

那如何保證對方就是真正的那個人呢?

  • 第一種方法就是預共享密鑰,也就是雙方事先商量好一個暗号,比如“天王蓋地虎,寶塔鎮河妖”,對上了,就說明是對的。
  • 另外一種方法就是用數字簽名來驗證。咋簽名呢?當然是使用私鑰進行簽名,私鑰隻有我自己有,是以如果對方能用我的數字證書裡面的公鑰解開,就說明我是我。

基于以上三個特性,組成了IPsec ***的協定簇。這個協定簇内容比較豐富。

計算機網絡——資料中心(下)

在這個協定簇裡面,有兩種協定,這兩種協定的差別在于封裝網絡包的格式不一樣。

  • 一種協定稱為AH(Authentication Header),隻能進行資料摘要 ,不能實作資料加密。
  • 還有一種ESP(Encapsulating Security Payload),能夠進行資料加密和資料摘要。

在這個協定簇裡面,還有兩類算法,分别是加密算法和摘要算法。

這個協定簇還包含兩大元件,

一個用于***的雙方要進行對稱密鑰的交換的IKE元件,

另一個是***的雙方要對連接配接進行維護的SA(Security Association)元件。

IPsec ***的建立過程

下面來看IPsec ***的建立過程,這個過程分兩個階段。

第一個階段,建立IKE自己的SA

這個SA用來維護一個通過身份認證和安全保護的通道,為第二個階段提供服務。在這個階段,通過DH(Diffie-Hellman)算法計算出一個對稱密鑰K。

DH算法是一個比較巧妙的算法。用戶端和服務端約定兩個公開的質數p和q,然後用戶端随機産生一個數a作為自己的私鑰,服務端随機産生一個b作為自己的私鑰,用戶端可以根據p、q和a計算出公鑰A,服務端根據p、q和b計算出公鑰B,然後雙方交換公鑰A和B。

到此用戶端和服務端可以根據已有的資訊,各自獨立算出相同的結果K,就是對稱密鑰。但是這個過程,對稱密鑰從來沒有在通道上傳輸過,隻傳輸了生成密鑰的材料,通過這些材料,截獲的人是無法算出的。

計算機網絡——資料中心(下)

建立IPsec SA

在這個SA裡面,雙方會生成一個随機的對稱密鑰M,由K加密傳給對方,然後使用M進行雙方接下來通信的資料。對稱密鑰M是有過期時間的,會過一段時間,重新生成一次,進而防止被破解。

IPsec SA裡面有以下内容:

  • SPI(Security Parameter Index),用于辨別不同的連接配接;
  • 雙方商量好的加密算法、雜湊演算法和封裝模式;
  • 生存周期,超過這個周期,就需要重新生成一個IPsec SA,重新生成對稱密鑰。
計算機網絡——資料中心(下)

打包封裝傳輸

計算機網絡——資料中心(下)

左面是原始的IP包,在IP頭裡面,會指定上一層的協定為TCP。ESP要對IP包進行封裝,因而IP頭裡面的上一層協定為ESP。在ESP的正文裡面,ESP的頭部有雙方商讨好的SPI,以及這次傳輸的序列号。

接下來全部是加密的内容。可以通過對稱密鑰進行解密,解密後在正文的最後,指明了裡面的協定是什麼。如果是IP,則需要先解析IP頭,然後解析TCP頭,這是從隧道出來後解封裝的過程。

有了IPsec ***之後,用戶端發送的明文的IP包,都會被加上ESP頭和IP頭,在公網上傳輸,由于加密,可以保證不被竊取,到了對端後,去掉ESP的頭,進行解密。

計算機網絡——資料中心(下)

這種點對點的基于IP的***,能滿足互通的要求,但是速度往往比較慢,這是由底層IP協定的特性決定的。IP不是面向連接配接的,是盡力而為的協定,每個IP包***選擇路徑,到每一個路由器,都自己去找下一跳,丢了就丢了,是靠上一層TCP的重發來保證可靠性。

計算機網絡——資料中心(下)

因為IP網絡從設計的時候,就認為是不可靠的,是以即使同一個連接配接,也可能選擇不同的道路,這樣的好處是,一條道路崩潰的時候,總有其他的路可以走。當然,帶來的代價就是,不斷的路由查找,效率比較差。

ATM

和IP對應的另一種技術稱為ATM。這種協定和IP協定的不同在于,它是面向連接配接的。你可以說TCP也是面向連接配接的啊。這兩個不同,ATM和IP是一個層次的,和TCP不是一個層次的。

另外,TCP所謂的面向連接配接,是不停地重試來保證成功,其實下層的IP還是不面向連接配接的,丢了就丢了。ATM是傳輸之前先建立一個連接配接,形成一個虛拟的通路,一旦連接配接建立了,所有的包都按照相同的路徑走,不會分頭行事。

計算機網絡——資料中心(下)

好處是不需要每次都查路由表的,虛拟路徑已經建立,打上了标簽,後續的包傻傻的跟着走就是了,不用像IP包一樣,每個包都思考下一步怎麼走,都按相同的路徑走,這樣效率會高很多。

但是一旦虛拟路徑上的某個路由器壞了,則這個連接配接就斷了,什麼也發不過去了,因為其他的包還會按照原來的路徑走,都掉坑裡了,它們不會選擇其他的路徑走。

ATM技術雖然沒有成功,但其屏棄了繁瑣的路由查找,改為簡單快速的标簽交換,将具有全局意義的路由表改為隻有本地意義的标簽表,這些都可以大大提高一台路由器的轉發功力。

MPLS

有沒有一種方式将兩者的優點結合起來呢?這就是多協定标簽交換(MPLS,Multi-Protocol Label Switching)。MPLS的格式如圖所示,在原始的IP頭之外,多了MPLS的頭,裡面可以打标簽。

計算機網絡——資料中心(下)

在二層頭裡面,有類型字段,0x0800表示IP,0x8847表示MPLS Label。

在MPLS頭裡面,首先是标簽值占20位,接着是3位實驗位,再接下來是1位棧底标志位,表示目前标簽是否位于棧底了。這樣就允許多個标簽被編碼到同一個資料包中,形成标簽棧。最後是8位TTL存活時間字段,如果标簽資料包的出發TTL值為0,那麼該資料包在網絡中的生命期被認為已經過期了。

有了标簽,還需要裝置認這個标簽,并且能夠根據這個标簽轉發,這種能夠轉發标簽的路由器稱為标簽交換路由器(LSR,Label Switching Router)。

這種路由器會有兩個表格,

一個就是傳統的FIB,也即路由表,另一個就是LFIB,标簽轉發表。

有了這兩個表,既可以進行普通的路由轉發,也可以進行基于标簽的轉發。

計算機網絡——資料中心(下)

有了标簽轉發表,轉發的過程如圖所示,就不用每次都進行普通路由的查找了。

這裡我們區分MPLS區域和非MPLS區域。在MPLS區域中間,使用标簽進行轉發,非MPLS區域,使用普通路由轉發,在邊緣節點上,需要有能力将對于普通路由的轉發,變成對于标簽的轉發。

例如圖中要通路114.1.1.1,在邊界上查找普通路由,發現馬上要進入MPLS區域了,進去了對應标簽1,于是在IP頭外面加一個标簽1,在區域裡面,标簽1要變成标簽3,标簽3到達出口邊緣,将标簽去掉,按照路由發出。

這樣一個通過标簽轉換而建立的路徑稱為LSP,标簽交換路徑。在一條LSP上,沿資料包傳送的方向,相鄰的LSR分别叫上遊LSR(upstream LSR)和下遊LSR(downstream LSR)。

有了标簽,轉發是很簡單的事,但是如何生成标簽,卻是MPLS中最難修煉的部分。在MPLS秘笈中,這部分被稱為LDP(Label Distribution Protocol),是一個動态的生成标簽的協定。

其實LDP與IP幫派中的路由協定十分相像,通過LSR的互動,互相告知去哪裡應該打哪個标簽,稱為标簽分發,往往是從下遊開始的。

計算機網絡——資料中心(下)

如果有一個邊緣節點發現自己的路由表中出現了新的目的位址,它就要給别人說,我能到達一條新的路徑了。

如果此邊緣節點存在上遊LSR,并且尚有可供配置設定的标簽,則該節點為新的路徑配置設定标簽,并向上遊發出标簽映射消息,其中包含配置設定的标簽等資訊。

收到标簽映射消息的LSR記錄相應的标簽映射資訊,在其标簽轉發表中增加相應的條目。此LSR為它的上遊LSR配置設定标簽,并繼續向上遊LSR發送标簽映射消息。

當入口LSR收到标簽映射消息時,在标簽轉發表中增加相應的條目。這時,就完成了LSP的建立。有了标簽,轉發輕松多了,但是這個和***什麼關系呢?

可以想象,如果我們***通道裡面包的轉發,都是通過标簽的方式進行,效率就會高很多。是以要想個辦法把MPLS應用于***。

計算機網絡——資料中心(下)

MPLS ***

在MPLS ***中,網絡中的路由器分成以下幾類:

  • PE(Provider Edge):營運商網絡與客戶網絡相連的邊緣網絡裝置;
  • CE(Customer Edge):客戶網絡與PE相連接配接的邊緣裝置;
  • P(Provider):這裡特指營運商網絡中除PE之外的其他營運商網絡裝置。

為什麼要這樣分呢?

因為我們發現,在營運商網絡裡面,也即P Router之間,使用标簽是沒有問題的,因為都在營運商的管控之下,對于網段,路由都可以自己控制。但是一旦客戶要接入這個網絡,就複雜得多。

首先是客戶位址重複的問題。客戶所使用的大多數都是私網的位址(192.168.X.X;10.X.X.X;172.X.X.X),而且很多情況下都會與其它的客戶重複。

比如,機構A和機構B都使用了192.168.101.0/24網段的位址,這就發生了位址空間重疊(Overlapping Address Spaces)。

首先困惑的是BGP協定,既然***将兩個資料中心連起來,應該看起來像一個資料中心一樣,那麼如何到達另一端需要通過BGP将路由廣播過去,傳統BGP無法正确處理位址空間重疊的***的路由。

假設機構A和機構B都使用了192.168.101.0/24網段的位址,并各自釋出了一條去往此網段的路由,BGP将隻會選擇其中一條路由,進而導緻去往另一個***的路由丢失。

是以PE路由器之間使用特殊的MP-BGP來釋出***路由,在互相溝通的消息中,在一般32位IPv4的位址之前加上一個客戶标示的區分符用于客戶位址的區分,這種稱為***-IPv4位址族,這樣PE路由器會收到如下的消息,機構A的192.168.101.0/24應該往這面走,機構B的192.168.101.0/24則應該去另外一個方向。

另外困惑的是路由表,當兩個客戶的IP包到達PE的時候,PE就困惑了,因為網段是重複的。

如何區分哪些路由是屬于哪些客戶***内的?如何保證***業務路由與普通路由不互相幹擾?

在PE上,可以通過VRF(*** Routing&Forwarding Instance)建立每個客戶一個路由表,與其它***客戶路由和普通路由互相區分。可以了解為專屬于客戶的小路由器。

遠端PE通過MP-BGP協定把業務路由放到近端PE,近端PE根據不同的客戶選擇出相關客戶的業務路由放到相應的VRF路由表中。

***封包轉發采用兩層标簽方式:

  • 第一層(外層)标簽在骨幹網内部進行交換,訓示從PE到對端PE的一條LSP。***封包利用這層标簽,可以沿LSP到達對端PE;
  • 第二層(内層)标簽在從對端PE到達CE時使用,在PE上,通過查找VRF表項,訓示封包應被送到哪個***使用者,或者更具體一些,到達哪一個CE。這樣,對端PE根據内層标簽可以找到轉發封包的接口。
計算機網絡——資料中心(下)

我們來舉一個例子,看MPLS ***的包發送過程。

  1. 機構A和機構B都發出一個目的位址為192.168.101.0/24的IP封包,分别由各自的CE将封包發送至PE。
  2. PE會根據封包到達的接口及目的位址查找***執行個體表項VRF,比對後将封包轉發出去,同時打上内層和外層兩個标簽。假設通過MP-BGP配置的路由,兩個封包在骨幹網走相同的路徑。
  3. MPLS網絡利用封包的外層标簽,将封包傳送到出口PE,封包在到達出口PE 2前一跳時已經被剝離外層标簽,僅含内層标簽。
  4. 出口PE根據内層标簽和目的位址查找***執行個體表項VRF,确定封包的出接口,将封包轉發至各自的CE。
  5. CE根據正常的IP轉發過程将封包傳送到目的地。

總結

  • ***可以将一個機構的多個資料中心通過隧道的方式連接配接起來,讓機構感覺在一個資料中心裡面,就像自駕遊通過瓊州海峽一樣;
  • 完全基于軟體的IPsec ***可以保證私密性、完整性、真實性、簡單便宜,但是性能稍微差一些;
  • MPLS-***綜合和IP轉發模式和ATM的标簽轉發模式的優勢,性能較好,但是需要從營運商購買。

移動網絡

移動網絡的發展曆程

你一定知道手機上網有2G、3G、4G的說法,究竟這都是什麼意思呢?有一個通俗的說法就是:用2G看txt,用3G看jpg,用4G看avi。

2G網絡

手機本來是用來打電話的,不是用來上網的,是以原來在2G時代,上網使用的不是IP網絡,而是電話網絡,走模拟信号,專業名稱為公共交換電話網(PSTN,Public Switched Telephone Network)。

那手機不連網線,也不連電話線,它是怎麼上網的呢?

手機是通過收發無線信号來通信的,專業名稱是Mobile Station,簡稱MS,需要嵌入SIM。手機是用戶端,而無線信号的服務端,就是基站子系統(BSS,Base Station SubsystemBSS)。至于什麼是基站,你可以回想一下,你在爬山的時候,是不是看到過信号塔?我們平時城市裡面的基站比較隐蔽,不容易看到,是以隻有在山裡才會注意到。正是這個信号塔,通過無線信号,讓你的手機可以進行通信。

但是你要知道一點,無論無線通信如何無線,最終還是要連接配接到有線的網絡裡。

因而,基站子系統分兩部分,一部分對外提供無線通信,叫作基站收發信台(BTS,Base Transceiver Station),另一部分對内連接配接有線網絡,叫作基站控制器(BSC,Base Station Controller)。基站收發信台通過無線收到資料後,轉發給基站控制器。

這部分屬于無線的部分,統稱為無線接入網(RAN,Radio Access Network)。

基站控制器通過有線網絡,連接配接到提供手機業務的營運商的資料中心,這部分稱為核心網(CN,Core Network)。核心網還沒有真的進入網際網路,這部分還是主要提供手機業務,是手機業務的有線部分。

首先接待基站來的資料的是移動業務交換中心(MSC,Mobile Service Switching Center),它是進入核心網的入口,但是它不會讓你直接連接配接到網際網路上。

因為在讓你的手機真正進入網際網路之前,提供手機業務的營運商,需要認證是不是合法的手機接入。别你自己造了一張手機卡,就連接配接上來。鑒權中心(AUC,Authentication Center)和裝置識别寄存器(EIR,Equipment Identity Register)主要是負責安全性的。

另外,需要看你是本地的号,還是外地的号,這個牽扯到計費的問題,異地收費還是很貴的。通路位置寄存器(VLR,Visit Location Register)是看你目前在的地方,歸屬位置寄存器(HLR,Home Location Register)是看你的号碼歸屬地。

當你的手機卡既合法又有錢的時候,才允許你上網,這個時候需要一個網關,連接配接核心網和真正的網際網路。網關移動交換中心(GMSC ,Gateway Mobile Switching Center)就是幹這個的,然後是真正的互連網。在2G時代,還是電話網絡PSTN。

資料中心裡面的這些子產品統稱為網絡子系統(NSS,Network and Switching Subsystem)。

計算機網絡——資料中心(下)

因而2G時代的上網如圖所示,我們總結一下,有這幾個核心點:

  • 手機通過無線信号連接配接基站;
  • 基站一面朝前接無線,一面朝後接核心網;
  • 核心網一面朝前接到基站請求,一是判斷你是否合法,二是判斷你是不是本地号,還有沒有錢,一面通過網關連接配接電話網絡。

2.5G網絡

後來從2G到了2.5G,也即在原來電路交換的基礎上,加入了分組交換業務,支援Packet的轉發,進而支援IP網絡。

在上述網絡的基礎上,基站一面朝前接無線,一面朝後接核心網。在朝後的元件中,多了一個分組控制單元(PCU,Packet Control Unit),用以提供分組交換通道。

在核心網裡面,有個朝前的接待員(SGSN,Service GPRS Supported Node)和朝後連接配接IP網絡的網關型GPRS支援節點(GGSN,Gateway GPRS Supported Node)。

計算機網絡——資料中心(下)

3G網絡

到了3G時代,主要是無線通信技術有了改進,大大增加了無線的帶寬。

以W-CDMA為例,理論最高2M的下行速度,因而基站改變了,一面朝外的是Node B,一面朝内連接配接核心網的是無線網絡控制器(RNC,Radio Network Controller)。核心網以及連接配接的IP網絡沒有什麼變化。

計算機網絡——資料中心(下)

4G網絡

然後就到了今天的4G網絡,基站為eNodeB,包含了原來Node B和RNC的功能,下行速度向百兆級别邁進。另外,核心網實作了控制面和資料面的分離,這個怎麼了解呢?

在前面的核心網裡面,有接待員MSC或者SGSN,你會發現檢查是否合法是它負責,轉發資料也是它負責,也即控制面和資料面是合二為一的,這樣靈活性比較差,因為控制面主要是指令,多是小包,往往需要高的及時性;資料面主要是流量,多是大包,往往需要吞吐量。

于是有了下面這個架構。

計算機網絡——資料中心(下)

HSS用于存儲使用者簽約資訊的資料庫,其實就是你這個号碼歸屬地是哪裡的,以及一些認證資訊。

MME是核心控制網元,是控制面的核心,當手機通過eNodeB連上的時候,MME會根據HSS的資訊,判斷你是否合法。如果允許連上來,MME不負責具體的資料的流量,而是MME會選擇資料面的SGW和PGW,然後告訴eNodeB,我允許你連上來了,你連接配接它們吧。

于是手機直接通過eNodeB連接配接SGW,連上核心網,SGW相當于資料面的接待員,并通過PGW連到IP網絡。PGW就是出口網關。在出口網關,有一個元件PCRF,稱為政策和計費控制單元,用來控制上網政策和流量的計費。

4G網絡協定解析

我們來仔細看一下4G網絡的協定,真的非常複雜。我們将幾個關鍵元件放大來看。

計算機網絡——資料中心(下)

控制面協定

其中虛線部分是控制面的協定。當一個手機想上網的時候,先要連接配接eNodeB,并通過S1-MME接口,請求MME對這個手機進行認證和鑒權。S1-MME協定棧如下圖所示。

計算機網絡——資料中心(下)

UE就是你的手機,eNodeB還是兩面派,朝前對接無線網絡,朝後對接核心網絡,在控制面對接的是MME。

eNodeB和MME之間的連接配接就是很正常的IP網絡,但是這裡面在IP層之上,卻既不是TCP,也不是UDP,而是SCTP。這也是傳輸層的協定,也是面向連接配接的,但是更加适合移動網絡。 它繼承了TCP較為完善的擁塞控制并改進TCP的一些不足之處。

SCTP的第一個特點是多宿主。

一台機器可以有多個網卡,而對于TCP連接配接來講,雖然服務端可以監聽0.0.0.0,也就是從哪個網卡來的連接配接都能接受,但是一旦建立了連接配接,就建立了四元組,也就標明了某個網卡。

SCTP引入了聯合(association)的概念,将多個接口、多條路徑放到一個聯合中來。當檢測到一條路徑失效時,協定就會通過另外一條路徑來發送通信資料。應用程式甚至都不必知道發生了故障、恢複,進而提供更高的可用性和可靠性。

SCTP的第二個特點是将一個聯合分成多個流。

一個聯合中的所有流都是獨立的,但均與該聯合相關。每個流都給定了一個流編号,它被編碼到SCTP封包中,通過聯合在網絡上傳送。在TCP的機制中,由于強制順序,導緻前一個不到達,後一個就得等待,SCTP的多個流不會互相阻塞。

SCTP的第三個特點是四次握手,防止SYN攻擊。

在TCP中是三次握手,當服務端收到客戶的SYN之後,傳回一個SYN-ACK之前,就建立資料結構,并記錄下狀态,等待用戶端發送ACK的ACK。當惡意用戶端使用虛假的源位址來僞造大量SYN封包時,服務端需要配置設定大量的資源,最終耗盡資源,無法處理新的請求。

SCTP可以通過四次握手引入Cookie的概念,來有效地防止這種攻擊的産生。

  • 在SCTP中,客戶機使用一個INIT封包發起一個連接配接。
  • 伺服器使用一個INIT-ACK封包進行響應,其中就包括了Cookie。
  • 然後用戶端就使用一個COOKIE-ECHO封包進行響應,其中包含了伺服器所發送的Cookie。
  • 這個時候,伺服器為這個連接配接配置設定資源,并通過向客戶機發送一個COOKIE-ACK封包對其進行響應。

SCTP的第四個特點是将消息分幀。

TCP是面向流的,也即發送的資料沒頭沒尾,沒有明顯的界限。這對于發送資料沒有問題,但是對于發送一個個消息類型的資料,就不太友善。有可能用戶端寫入10個位元組,然後再寫入20個位元組。服務端不是讀出10個位元組的一個消息,再讀出20個位元組的一個消息,而有可能讀入25個位元組,再讀入5個位元組,需要業務層去組合成消息。

SCTP借鑒了UDP的機制,在資料傳輸中提供了消息分幀功能。當一端對一個套接字執行寫操作時,可確定對等端讀出的資料大小與此相同。

SCTP的第五個特點是斷開連接配接是三次揮手。

在TCP裡面,斷開連接配接是四次揮手,允許另一端處于半關閉的狀态。SCTP選擇放棄這種狀态,當一端關閉自己的套接字時,對等的兩端全部需要關閉,将來任何一端都不允許再進行資料的移動了。

當MME通過認證鑒權,同意這個手機上網的時候,需要建立一個資料面的資料通路。建立通路的過程還是控制面的事情,因而使用的是控制面的協定GTP-C。

建設的資料通路分兩段路,其實是兩個隧道。

一段是從eNodeB到SGW,這個資料通路由MME通過S1-MME協定告訴eNodeB,它是隧道的一端,通過S11告訴SGW,它是隧道的另一端。

第二端是從SGW到PGW,SGW通過S11協定知道自己是其中一端,并主動通過S5協定,告訴PGW它是隧道的另一端。

GTP-C協定是基于UDP的。如果看GTP頭,我們可以看到,這裡面有隧道的ID,還有序列号。

計算機網絡——資料中心(下)

通過序列号,不用TCP,GTP-C自己就可以實作可靠性,為每個輸出信令消息配置設定一個依次遞增的序列号,以確定信令消息的按序傳遞,并便于檢測重複包。對于每個輸出信令消息啟動定時器,在定時器逾時前未接收到響應消息則進行重發。

資料面協定

當兩個隧道都打通,接在一起的時候,PGW會給手機配置設定一個IP位址,這個IP位址是隧道内部的IP位址,可以類比為IPsec協定裡面的IP位址。這個IP位址是歸手機營運商管理的。然後,手機可以使用這個IP位址,連接配接eNodeB,從eNodeB經過S1-U協定,通過第一段隧道到達SGW,再從SGW經過S8協定,通過第二段隧道到達PGW,然後通過PGW連接配接到網際網路。

資料面的協定都是通過GTP-U,如圖所示。

計算機網絡——資料中心(下)

手機每發出的一個包,都由GTP-U隧道協定封裝起來,格式如下。

計算機網絡——資料中心(下)

和IPsec協定很類似,分為乘客協定、隧道協定、承載協定。其中乘客協定是手機發出來的包,IP是手機的IP,隧道協定裡面有隧道ID,不同的手機上線會建立不同的隧道,因而需要隧道ID來辨別。承載協定的IP位址是SGW和PGW的IP位址。

手機上網流程

接下來,我們來看一個手機開機之後上網的流程,這個過程稱為Attach。可以看出來,移動網絡還是很複雜的。因為這個過程要建立很多的隧道,配置設定很多的隧道ID,是以畫了一個圖來詳細說明這個過程。

計算機網絡——資料中心(下)
  1. 手機開機以後,在附近尋找基站eNodeB,找到後給eNodeB發送Attach Request,說“我來啦,我要上網”。
  2. eNodeB将請求發給MME,說“有個手機要上網”。
  3. MME去請求手機,一是認證,二是鑒權,還會請求HSS看看有沒有錢,看看是在哪裡上網。
  4. 當MME通過了手機的認證之後,開始配置設定隧道,先告訴SGW,說要建立一個會話(Create Session)。在這裡面,會給SGW配置設定一個隧道ID t1,并且請求SGW給自己也配置設定一個隧道ID。
  5. SGW轉頭向PGW請求建立一個會話,為PGW的控制面配置設定一個隧道ID t2,也給PGW的資料面配置設定一個隧道ID t3,并且請求PGW給自己的控制面和資料面配置設定隧道ID。
  6. PGW回複SGW說“建立會話成功”,使用自己的控制面隧道ID t2,回複裡面攜帶着給SGW控制面配置設定的隧道ID t4和控制面的隧道ID t5,至此SGW和PGW直接的隧道建設完成。雙方請求對方,都要帶着對方給自己配置設定的隧道ID,進而标志是這個手機的請求。
  7. 接下來SGW回複MME說“建立會話成功”,使用自己的隧道ID t1通路MME,回複裡面有給MME配置設定隧道ID t6,也有SGW給eNodeB配置設定的隧道ID t7。
  8. 當MME發現後面的隧道都建設成功之後,就告訴eNodeB,“後面的隧道已經建設完畢,SGW給你配置設定的隧道ID是t7,你可以開始連上來了,但是你也要給SGW配置設定一個隧道ID”。
  9. eNodeB告訴MME自己給SGW配置設定一個隧道,ID為t8。
  10. MME将eNodeB給SGW配置設定的隧道ID t8告知SGW,進而前面的隧道也建設完畢。

這樣,手機就可以通過建立的隧道成功上網了。

異地上網問題

接下來我們考慮異地上網的事情。

為什麼要分SGW和PGW呢,一個GW不可以嗎?SGW是你本地的營運商的裝置,而PGW是你所屬的營運商的裝置。

如果你在巴塞羅那,一下飛機,手機開機,周圍搜尋到的肯定是巴塞羅那的eNodeB。通過MME去查尋國内營運商的HSS,看你是否合法,是否還有錢。

如果允許上網,你的手機和巴塞羅那的SGW會建立一個隧道,然後巴塞羅那的SGW和國内營運商的PGW建立一個隧道,然後通過國内營運商的PGW上網。

計算機網絡——資料中心(下)

這樣判斷你是否能上網的在國内營運商的HSS,控制你上網政策的是國内營運商的PCRF,給手機配置設定的IP位址也是國内營運商的PGW負責的,給手機配置設定的IP位址也是國内營運商裡統計的。

營運商由于是在PGW裡面統計的,這樣你的上網流量全部通過國内營運商即可,隻不過巴塞羅那營運商也要和國内營運商進行流量結算。

由于你的上網政策是由國内營運商在PCRF中控制的,因而你還是上不了臉書。

總結

  • 移動網絡的發展曆程從2G到3G,再到4G,逐漸從打電話的功能為主,向上網的功能為主轉變;
  • 請記住4G網絡的結構,有eNodeB、MME、SGW、PGW等,分控制面協定和資料面協定,你可以對照着結構,試着說出手機上網的流程;
  • 即便你在國外的營運商下上網,也是要通過國内營運商控制的,因而也上不了臉書。