剖析PPP鏈路的原理
我們都知道PPP協議是點對點協議,這些基礎內容我們在上一節已經講解過了,這次我們主要解析一下PPP鏈路問題。它幫助人們在簡單的點對點鏈路上實現了上層協議的封裝。但是,目前豐富多彩的互聯網世界是承載在復雜、龐大的廣 域網上,靈活方便的非點對點的以太網絡是現代網絡世界的主要常用媒介,那PPP是否已經遠離了我們呢?答案是否定的,實際上,現在我在家中利用ADSL接 入ISP登錄到我的博客來寫這篇文章,這一過程就離不開PPP協議,且聽我慢慢道來。
就讓我用我們最熟悉的上網為例來講解吧。早期,人們用計算機外接modem(調制解調器)再通過電話線撥號來接入ISP(Internet接入服務 提供商)連接Internet,就使用了PPP協議,具體來說,就是在“用戶撥出計算機 - 用戶modem - ISP modem -接入服務器”這樣一條PPP鏈路上,使用PPP封裝了IP報文來實現用戶至Internet網絡接入服務器之間IP報文的流控和計費等功能,如下圖:
PPP鏈路撥號接入ISP
上圖中,”電話線“這一串行連接是通過用戶電話撥入電話局提供的接入號碼來建立起來的,”撥號“這一概念,也就發端于此。這種撥號方式,用戶計算機 與ISP接入服務器之間的連接線路完全占用了電話線的信道,所以用戶在使用計算機接入網絡之后,電話就處于占線狀態,不能再同時接入語音電話。并且,這種 使用modem通過電話線傳輸模擬信號的接入方式,***就只能達到56kbps的上網速率(實際使用時,由于鏈路問題,連這個速率都很難達到),生活在 2009年的我們可以想象那時網民的生活是多么的水深火熱…
針對于上述缺陷,人們利用ISDN(綜合業務數字網)技術改進了網絡接入方案。使用ISDN技術,我們可以在依然使用原來的普通電話線的情況下,在 電話線上傳輸數字信號。這是通過在電話線上建立ISDN信道來實現的,ISDN的BRI(基礎速率接口)支持2個B信道+1個D信道總共128kbps的 連接速率,我們使用MLPPP(多鏈路PPP) 協議將ISDN提供的多條點對點鏈路復合為一條點對點鏈路,這樣就可以利用BRI的128kbps速率高速(相對于原來的modem方式)接入網絡了。同 時,ISDN可以在一條電話線線路上同時接入多個終端設備(計算機、電話等)同時使用。這一切,只需要將上圖中的調制解調器換為ISDN接入設備即可。
和ISDN技術類似的,我們現在經常聽到和使用的ADSL技術,也是在一定程度上對傳統電話線路的信道使用方式進行了優化改造。ADSL是xDSL 技術族的一員,傳輸速率可以達到Mbps數量級,xDSL有ADSL、VDSL、HDSL等多種模型,他們的區別就在于信號傳輸速率和傳輸距離上,其中 ADSL在這些指標上顯示出其非常適合作為家庭接入Internet的特點,所以人們普遍采用了ADSL。
其實,ISDN和ADSL相對于傳統modem撥號方式,只是改變了承載信號的物理層。
講上面這些ISDN和ADSL的內容,目的是為了逐步引出這篇文章的主角 - PPPoE,但是,說真的,直到寫完了上面的內容,外加查了很久的資料,我也沒真正找到確實可信的論據來證明為什么在ADSL物理鏈路上我們要選擇使用 PPPoE來接入ISP… ^o^ (使用PPPoE協議可將PPP幀之外再封裝上一層PPPoE頭,以達到在Ethernet網絡這種非PPP鏈路上傳輸PPP幀的目的。)
當然,雖然沒有找到直接論據,但是分析了眾多的資料后我是有收獲的,我可以說說自己的理解,有不對之處還請各位指點。
傳統的modem撥號和ISDN撥號都是用modem撥ISP的一個號碼,也就是得到ISP分配的一條電話線連接來建立起點對點物理鏈路的,而 ADSL也是類似的物理層拓撲,所以我想應該也是可以同樣的撥號方式直接接入ISP的。但是,為什么現實中ADSL不是這樣來使用的呢,為什么要在 ADSL物理層之上再封裝“ethernet層+PPPoE層”然后再承載PPP而不是直接在ADSL物理層上承載PPP呢?ISP運營商到底出于什么考 慮呢?
在ADSL網絡上直接封裝PPP,則這條點對點鏈路是起始與用戶的ADSL貓,終結于ISP運營商的DSLAM(數字用戶接入復用)設備,也就是 ADSL物理鏈路的終點。對于用戶的管理與認證授權控制必須要放在DSLAM設備上(當然PPP支持遠程授權,但這無疑將增加復雜度和風險),這 樣,ISP必須在很接近用戶物理位置也就是網絡的末梢底層的地方(因為ADSL物理線路不會很遠)來管理用戶。
ADSL撥號接入ISP網絡時的PPP鏈路
而如果采取PPPoE的方式,先將PPP封裝在PPPoE內,再在PPPoE外封裝Ethernet頭,然后再將這Ethernet幀通過ATM或 LAPD(Link Access Procedure on the D channel)等鏈路層協議封裝在ADSL或ISDN物理連接上。這樣,點對點鏈路的起點將是封裝PPPoE的用戶計算機,終點可以是DSLAM,也可 以是DSLAM之后的更高層的BAS(寬帶接入服務器)設備或其他哪里,就看PPPoE服務器被設置在哪里了(PPPoE報文在PPPoE服務器被解 開),如上圖這種經典的應用場景中PPP鏈路就直到LNS設備才終結(PC到DSLAM之間是ADSL PPP鏈路承載PPPoE,DSLAM到BAS之間 是ATM鏈路承載PPPoE,在BAS設備將PPP從PPPoE封裝中解出,然后,從BAS到LNS設備之間使用L2TP協議承載了PPP報文,L2TP 將在本系列文行的后續文章中介紹)。這樣,一是解決方案更加靈活,另外,由于管理設備可以位于更高(更靠近網絡核心)的位置,集中管理的用戶可以更多,可 以降低運營商的成本。
解釋到這里,我覺得我這個解釋是很合理可信的:PPPoE虛擬撥號的使用使得PPP接入連接(也就是客戶)的認證、授權點位置更加靈活,可是將其設 置在更接近網路的核心的位置。我認為,PPPoE這種協議的存在,重要的是提供了一種PPP報文的封裝方式,至于具體如何封裝并不是決定性的,用 Ethernet封裝就是PPPoE,用ATM封裝就是PPPoA。但是,為什么普通modem撥號和ISDN沒有采用這樣的PPPoE撥號呢?我真的解 釋不了,因為,理論上是絕對可行的。
本文中講到了PPPoE協議,但是截至目前,只是講到用它封裝了PPP幀然后放在專線鏈路(ADSL/ISDN)上傳輸。至于為什么要用PPPoE,以及PPPoE的具體本領,還是下篇文章再向大家介紹吧。