Linux PPP 框架分析

2021-06-08 03:03:38 字數 2168 閱讀 4778

1.   介紹

通過對linux源**的分析,了解ppp裝置在linux內的工作原理.順便了解一下pppoe如何利用ppp裝置來完成上網的工作的.下面是**研究的基礎版本:

software  

version

linux核心

2.6.15

pppd

ppp-2.4.3

pppoe

rp-pppoe-3.8

2.   ppp相關模組及結構

注:每個模組左上角或右上角藍色字型的數字是用來方便區別每個模組。

每個層次及工作在該層次的程式(模組)分析如下:

2.1 應用層模組概述

工作在該層的模組編號:(1)pppd、(2)pppoe、(10)網路應用程式

2.1.1   pppd

使用源**ppp-2.4.3編譯生成,該程式用來完成ppp過程(lcp/pap/chap/ipcp等)的應用程式.它和pppoe兩個使用者態應用程式配合起來,可以完成pppoe的撥號上網的鏈路協商及維護.

熟悉ppp相關協議的知道,ppp鏈路協商過程有lcp/pap/chap/pap等很多協議.這些包會經由協議棧分類,提交到字元裝置/dev/ppp0的佇列中.而pppd這個應用程式,就是從ppp0中將這些包讀取出來,然後遞交到各協議的子過程中去處理,從而在應用態完成這些協議的處理過程.

這裡需要提一點,要想深入的理解pppd應用程式的工作方法,必須要了解字元裝置ppp0是如何工作的.

2.1.2   pppoe

首先,pppoe完成了pppoe discovery過程,這個過程很簡單,只有padi/pado, padr/pads四個包.主要目的是相互告知mac位址.

另外,這個程式負責接收和傳送pppoe鏈路的所有資料報,包括ppp協議過程的資料報,也包括正常網路應用通過網路介面ppp傳送的tcp/ip資料報.在此需要了解型別為0x8863/0x8864的socket如何工作,另外需要了解資料報如何通過pty裝置在pppoe和ppp協議棧之間傳遞的.在核心模組概述中會給予描述.

所以,我們可以將pppoe應用程式作為撥號鏈結進入主機的入口,所有的資料報都經由它進入主機.

2.1.3   網路應用程式

2.2 核心層模組概述

工作在該層的模組編號:(3)/dev/ppp%n、(4)tcp/ip協議棧、(5)socket、(6)ppp協議棧、(7)pty裝置、(8)eth1

2.2.1   /dev/ppp%n

該裝置需要開啟核心支援,可以make menuconfig選擇相應的子項,另外需要在/dev目錄下建立主裝置號為108從裝置號為0的字元裝置才可以在使用者態使用.

建立了ppp裝置後,ppp過程的資料報經過協議棧的分類,會被送到該介面的佇列內.使用者態應用程式(如pppd)從該介面內讀取ppp過程的資料報,然後送交相應的協議棧處理.對於響應的資料報,同樣可以寫入到該裝置中,裝置內會將資料報送交協議棧然後**出去.

2.2.2   tcp/ip協議棧

普通linux tcp/ip協議棧.

2.2.3   socket

pppoe session和discovery資料報對應的乙太網型別分別為0x8863/0x8864,因為這兩種型別的資料報是由pppoe應用程式通過socket來收發的,所以核心中需要定義這兩種型別的socket.這兩個socket核心處理非常簡單,只做了最基本的檢查便由pppoe收取上來.

2.2.4   ppp協議棧

主要負責ppp層資料的封裝、壓縮與解壓縮.另外,它還對普通資料報和ppp過程的資料報進行了分流,將普通資料報提交到tcp/ip協議棧,而將ppp過程的資料報放到/dev/ppp裝置佇列中,等待pppd去收取並處理.

2.2.5   pty裝置

序列裝置,ppp核心協議棧與pppoe應用程式的中轉站.因為ppp協議早多執行在序列鏈路上,所以在linux核心中ppp協議棧與序列裝置結合緊密.

2.2.6   eth1

這裡是指連線乙太網的出口,用來表示資料報路徑而引入.

2.3 物理層模組概述

工作在該層的模組編號:(9)乙太網驅動

3.   pppoe撥號建立的過程

ø pppoe discovery過程

ø ppp過程

ø 設定上網主機

3.1 pppoe discovery 過程

LINUX PPP心跳檢測

arm linux開發 warewin 2g 3g無線傳輸 dtu 和路由器 筆記 使用ppp 層心跳檢測需在 pppd 程序的配置檔案中需配置以下兩個引數及其值 lcp echo failure 心跳失敗最大次數 lcp echo interval 心跳間隔時間 這兩個引數需配合使用,表示在乙個l...

openwrt框架分析

這次講講openwrt的結構.1.上來看有幾個重要目錄package,target,build root,bin,dl.build dir host目錄是建立工具鏈時的臨時目錄 build dir toolchain 是對應硬體的工具鏈的目錄 staging dir toolchain 則是工具鏈的...

openwrt框架分析

這次講講openwrt的結構.1.上來看有幾個重要目錄package,target,build root,bin,dl.build dir host目錄是建立工具鏈時的臨時目錄 build dir toolchain 是對應硬體的工具鏈的目錄 staging dir toolchain 則是工具鏈的...