ADSL技术及应用-PPPoE的实现
更新时间:2023-12-27 14:09:01 阅读量: 教育文库 文档下载
- ADSL 技术推荐度:
- 相关推荐
1
摘 要
随着信息技术及宽带接入网技术的迅猛发展,ADSL宽带接入网即通过PPPoE虚拟拨号连接互联网将成为当今社会人们分享互联网,进行信息交流的主要方式。本文将全面阐述实现用户线路高速化的ADSL的技术以及应用,并介绍ADSL宽带接入技术的逐步发展过程及其特点、优势、系统结构和网络结构,以及几种常用的ADSL应用方式和接入方式,并将其与目前流行的几种接入方式Modem,ISDN[3],Cable Modem(电缆调制解调器)和DDN[4]进行了对比。本文还将介绍PPPoE协议及其平台的搭建、Windows系统下PPPoE的实现方案即PPPoE客户端软件怎样实现虚拟拨号上网,同时也将步步深入的说明PPPoE协议在Windows系统下如何利用WAN支持部分、TAPI支持部分、LCP
[5]
[6]
[7]
[1]
[2]
链路控制、PPPoE支持、发送/接收机制、同应用程序接口机制等各方面的驱动及网络协议实现拨号过程及其在网络拨号程序中的工作原理。PPPoE发现是PPPoE协议机制进行数据交换的开始步骤,也是发送和接受数据不可或缺的开头部分。对于PPPoE协议支持的发送和接受数据部分,本文将介绍相关算法的源代码并作出较为详尽的说明和注释,提出更有效、更安全的数据发送和接收算法。
关键词:ADSL ;PPPoE协议;驱动程序
2
Abstract
Get to connect into the technical and fast fierce development in net along with information technique and breadths, ADSL breadth takes to connect into the net to pass the PPPoE namely conjecture stirs the number conjunction Internet will become the shared Internet in social people in now, proceeding the main way of the information exchanges.This text will expatiate the ADSL that realizes technique and applications that customer circuit high speed turn completely, will still introduce the breadth of ADSL take to connect into the technical developing process and its characteristics, advantage, system constructions gradually network construction, and a few and in common use ADSL application method with connect into the way, combine its connect into with current popular and several kinds the way Modem, ISDN, the Cable Modem( electric cable modem) proceeded the contrast with the DDN.This text will still introduce PPPoE agreement and its terraces takes the at every step thorough elucidation PPPoE for setting up, Windows system bottom PPPoE realizes project namely the customer of PPPoE carry software how realizes conjecture stir number internet access, also will under the Windows system negotiate how to makes use of the WAN support, TAPI support, LCP network control, PPPoE support, send out/ receive the mechanism, together applied the procedure connects a people's mechanism etc. Everyone's drives and the network negotiates to realize to stir the number process and its stir the number work in the procedure principle in the network.The PPPoE detection is a beginning step that PPPoE agreement mechanism proceeding data exchange, and is also to send out with accept the necessary beginning in data the part.Support to the agreement of PPPoE of send out with accept the data part, this text will introduce the source code of the related calculate way combines to make an elucidation clearly in details with the annotation, putting forward more effectively, the safer data sends out with receive the calculate way.
Key words:ADSL;PPPoE agreement;Driver
3
目 录
引 言 ??????????????????????????????????1 1 ADSL技术的发展 ??????????????????????????2 1.1 概述 ?????????????????????????????????2 1.2 ADSL的技术优势 ???????????????????????????3 1.3 ADSL的网络结构 ???????????????????????????4 1.4 ADSL的系统结构 ???????????????????????????4 1.5 ADSL的调制技术 ???????????????????????????6 1.6 ADSL关键技术及物理层指标 ??????????????????????7 1.7 ADSL的应用 ?????????????????????????????8 1.7.1应用ADSL的几种常用方式 ??????????????????????8 1.7.2 ADSL的应用范围 ??????????????????????????9 1.8 ADSL与其他接入服务的比较 ??????????????????????10 1.9 新一代ADSL技术的应用前景 ??????????????????????11 2 PPPoE协议 ????????????????????????????13 2.1 PPPoE发现 ??????????????????????????????14 2.2 PPPoE会话 ??????????????????????????????14 3 PPPoE平台的搭建 ?????????????????????????16 4 Windows系统下PPPoE的实现方案 ??????????????????18 4.1 PPPoE的层次 ?????????????????????????????????18 4.2 NDIS体系及PPPoE ??????????????????????????????18 5 PPPoE客户端软件 ??????????????????????????20 5.1软件的总体结构 ?????????????????????????????20 5.2 PPPoE驱动程序的实??????????????????????????????21 5.2.1 PPPoE驱动程序的功能划分 ??????????????????????21 5.2.2 WAN支持 ?????????????????????????????21 5.2.3 TAPI支持 ?????????????????????????????21 5.2.4 连接控制 ?????????????????????????????22 5.3 利用PPP的LCP连接控制 ???????????????????????22 6 PPPoE支持及相关算法 ???????????????????????24 6.1 发送/接收机制 ????????????????????????????25
4
6.1.1 接收数据 ?????????????????????????????25 6.1.2 发送数据 ?????????????????????????????25 6.2 算法实现 ????????????????????????????26 6.2.1 发送端算法 ???????????????????????????26 6.2.2 接收端算法 ???????????????????????????27 6.2.3 PPPoE连接控制????????????????????????????29 6.2.4 PPPoE发现(Discovery)算法 ?????????????????????29 6.2.5 PPPoE封装发送PPP数据帧的算法 ??????????????????33 结束语 ?????????????????????????????????35 致 谢 ????????????????????????????????36 参考文献??????????????????????????????????37
5
引 言
随着互联网技术的飞速发展,上网已经逐渐成为人们日常生活中的重要组成部分。互联网以其广博的共享资源、快捷而方便的浏览方式、多姿多彩的相互交流,无不吸引着越来越多的人投入到广大的互联网空间中来。而要实现网上的相互交流,拨号网络就成为了我们跨入互联网世界的一条必经之路。从拨号网络发展至今,人们经过了56kbit/s的调制解调器(Modem)、ISDN,一直到现在的ADSL软件拨号程序。ADSL(Asymmetrical Digital Subscriber Line)是一种高速数字接入技术,又称为非对称式数字用户线路,是xDSL的一种。xDSL是DSL(Digital Subscriber Line)的统称,意即数字用户线路,是以铜质电话线为传输介质的传输技术的组合。其中“x”代表着不同种类的数字用户线路技术,包括ADSL,HDSL[8],VDSL[9],SDSL[10]等。各种数字用户线路技术的不同之处主要表现在信号的传输速率和距离,还有对称和非对称(即上行速率和下行速率是否一致)的区别上。作为非对称传输技术,ADSL在一对铜线上支持上行速率640 k~1 Mb/s,下行速率l~8 Mb/s,有效传输距离在3~5 km范围以内。ADSL的特点是可利用现有的电话线路,通过数字技术进行高速大容量的信息传播,利用ADSL线路向用户提供多路电视广播和Internet的接入业务。虽然利用ADSL上网速度较以前有了很大的改善,并且便捷了不少,但是仍存在一些问题。下面,本文将就ADSL技术的发展以及其核心技术的PPPoE是如何在Windows系统下实现宽带拨号、发送数据、接收数据的一系列相关问题进行说明和探讨。
6
1 ADSL技术的发展
1.1 概述:
数字用户线(xDSL:Digital Subscriber Line)是美国贝尔通信研究所于1989年为推动视频点播(VOD)业务开发出的用户线高速传输技术。近年来随着Internet的迅速发展,对固定连接的高速用户线需求日益高涨,基于双绞铜线的xDSL技术因其以低成本实现用户线高速化而重新崛起,打破了高速通信由光纤独揽的局面。
长期以来通信用户的电话机经过“对绞铜线”的用户线连至市内交换局,进入公共交换的通信网(PSTN),接至对方用户的电话机,使双方得以互相会话。对绞铜线为传统的模拟电话提供300~3400Hz的频带,为了适应电话用户使用低速数据通信,曾加装调制解调器(modem),使速率33kb/s和最高56kb/s的数据信号能够通过模拟话音频带与对方实行数据通信。
DSL技术在传统的电话网络的用户线路上支持对称和非对称的传输模式,解决了发生在网络服务供应商和最终用户间的“最后一公里”的传输瓶颈问题。由于电话用户环路已经大量铺设,如何充分利用现有的铜缆资源,通过铜质双绞线实现高速接入就成为业界的研究重点,因此DSL技术很快就得到了重视,并在一些国家和地区得到大量应用。
目前关于ADSL的国际标准主要是ANSI[11]制定的,1994年TIE1.4工作组通过了第一个ADSL草案标准,决定采用DMT
[12]
作为标准接口,关键是能支持6.144Mbit/s甚至更高的速率并能传较远的
距离。ANSI标准将包含一个附录具体规定欧洲制式ADSL标准。因而ANSI制定的ADSL标准实际上已经是一个准国际标准。CAP[13]码也在争取成为事实标准。
1997年,一些ADSL的厂商和运营商认识到,也许牺牲ADSL的一些速率可能会加快ADSL的商业化进程,因为速率下降的同时也就意味着技术复杂度的降低。全速率ADSL的下行速度是8Mbps,但是在用户端必须安装一个分离器(Splitter)。如果把ADSL的下行速率降到1.5Mbps(下行为1.5Mbps,上行为384 Kbps), 那么用户端的分离器就可以取消。这意味着,用户可以像以往安装普通模拟Modem一样安装ADSL Modem,没有任何区别,省略了服务商的现场服务,这对ADSL的推广至关重要。 于是,ADSL的一个新版本诞生了,称作通用ADSL(Universal ADSL)。1998年10月,ITU(国际电信联盟)开始进行通用ADSL标准的讨论,并将之命名为G.Lite,经过半年多的等待,1999年6月22日,ITU最终批准通过了G.Lite(即G.992.2)标准,从而为ADSL的商业化进程扫清了障碍。
ADSL(非对称数字用户环路)是一种在现有的铜双绞线上提供高速数字传输的传输技术,它能够同时传输传统POTS信号和数据信号。ADSL系统不尽包括双绞线,还包括调制解调、复用、回波抑制、均衡等专用DSP(数字信号处理器芯片)。ADSL技术是一种调制技术,在双绞铜线的两端分别接入ADSL调制解调器,即可利用其高频宽带特性高速传送数据。
7
1.2 ADSL的技术优势:
ADSL接入技术具有许多优点,可直接利用现有用户电话线,无需另铺电缆,而且上Interent和打电话互不干扰,适合于集中与分散的用户。能为用户提供上、下行不对称的传输带宽。采用点点的拓扑结构,保证用户独享高带宽,适合视频业务及高速Internet等数据的接入。 1. 可同时提供电话和高速数据业务
电信企业的主干网已采用2.5 Gbit/s和10 Gbit/s的超高速光纤,但连接用户和交换局的用户线绝大多数仍是电话用的双绞线,以现有的调制技术不能满足用户高速接入的需求。导入ADSL技术后,即可在双绞线上传送高达数Mbit/s的数字信号,如配置了分离音频频带和高频带的分离器,则可同时提供电话和高速数据业务。 2. ADSL的投资小
基于光纤同轴电缆混合网(HFC)的Cable Modem作为接入线路高速化的计划受阻。虽然采用Cable Modem能够使CATV[14]用户线路提供数Mbit/s的数据传输能力,但因多个用户共享带宽和安全等因素使能够利用此项业务的用户受到很大限制。实验和调查表明,在现有的基础设施上,能够利用Cable Modem的用户仅约占15%左右。并且Cable Modem技术需对现有的设施进行双向改造,投资巨大。而电话用户环路已大量铺设,可充分利用铜缆资源。
3. 减轻对电话网的负荷
有相当多的地区其市内电话采取定额月租计费,因此不少拨号用户24小时与Internet相连,占用ISP
[15]
服务器端口,使用户交换机过负荷运行。采用ADSL技术则可通过分离器将话音和数据分别送
入电话交换机和Internet,从而抑制了Internet的业务量流入电话网。如图1-1:
图1-1 话音和数据分别送入电话交换机和INTENET的示意图
8
1.3 ADSL的网络结构:
以端到端的基于ADSL的网络为例,一般来说,它可以分为如下四个子网部分: 1. 用户前端网络
用户前端网络(CPN:Customer Premise Network)包括用户家庭、办公室和小型企业,每一种类型的CPN都可包括一台或多台PC机。当有多台PC机时,它们连接在一个局域网上,利用路由器或者代理服务器作为网关与外部网络相连。
2. 接入网络
ADSL接入网络包括中心机房中的ATU-CATU-R[17]。
3. 本地宽带网络
本地宽带网络通常是建立在光同步数字传输网SDH结构上的,连接一个区域内的中心机房。ATM[18]技术应用在SDH网络基础上为中心机房之间提供宽带连接。
4. 服务提供商网络
服务提供商网络包括ISP的接入点(POP)、信息提供商网络、企业网络以及地区操作中心(ROC:Regional Operation Center)。
[16]
和接入复用器,以及在客户端与本地回环网路相连的
1.4 ADSL系统结构:
ADSL使用普通电话线,在用户线两端各安装一个ADSL调制解调器,该调制解调器采用了频分复用(FDM)技术,将带宽分为3个频段部分,如图1-2所示,最低频段部分为0~4 kHz,用于传送传统电话信号;中间频段部分为20~50 kHz,用于速率为16 k~1 Mb/s的中速全双工通道,主要是ADSL控制信息和上行数据信息的传递;最高频段部分为150 ~550 kHz或140 k~1.1 MHz,用于1.5 Mb/s或9 Mb/s的高速下行数字信息的传送。
9
图1-2 ADSL调制解调器频谱利用的划分
ADSL技术能同时提供电话和高速数据业务,为此应在现有的双绞线的两端接入分离器,电话分
离器通常是无源的,这样在停电时不会影响传统电话的使用。他利用低通滤波器将电话信号和数字信号分开,即分离出承载音频信号的4 kHz以下的低频带和ADSL Modem调制用的高频带。用户端连接图如图1-3所示。其工作流程是:经ADSL modem编码后的信号通过电话线传到电信局后,再通过一个信号识别/分离器,如果是语音信号就传到交换机上,如果是数字信号就接入Internet。
图1-3 远程单机的连接
1. 分离器
ADSL技术能同时提供电话和高速数据业务,为此应在已有的双绞线的两端接入分离器,分离承
10
载音频信号的4 kHz以下的低频带和ADSL Modem调制用的高频带。分离器实际上是由低通滤波器和高通滤波器合成的设备,为简化设计和避免馈电的麻烦,通常采用无源器件构成。
2. ADSL Modem
用户端的ADSL Modem内部结构与V.34等模拟Modem几乎相同。主要由处理D/A变换的模拟前端(analog front end)、进行调制/解调处理的数字信号处理器(DSP)以及减小数字信号发送功率和传输误差,利用“网格编码”和“交织处理”实现差错校正的数字接口构成。交换局端的ADSL Modem产品大多具有多路复用功能(DSLAM:DSLAccessMultiplexer)各条ADSL线路传来的信号在DSLAM中进行复用,通过高速接口向主干网的路由器等设备转发,这种配置可节省路由器的端口,布线也得到简化。目前已有将数条ADSL线路集束成一条10BASE-T的产品和将交换机架上全部数据综合成155 Mbit/s ATM端口的产品。利用窄带拨号动态分配IP地址的PPP接入技术应用到宽带的ADSL接入中来,是现在ADSL技术发展的重点。一旦在用户端和服务提供商(ISP)网络之间建立起ATM层的连接,在链路层和网络层商便会使用PPP协议建立相应的会话,这种接入结构就是PPP over ATM over ADSL的接入。
1.5 ADSL的调制技术
ADSL的调制技术是ADSL的关键所在。在ADSL调制技术中,一般均使用高速数字信号处理技术和性能更佳的传输码型,用以获得传输中的高速率和远距离。在信号调制技术上,ADSL调制解调器主要采用CAP和DMT技术:
(1)CAP(Carricerless Amplitude/Phase Modulation, 无载波调幅调相)。CAP是AT&T提出的调制方式,数据信号在发送前被压缩,然后沿电话线发送,在接收端重组。CAP的主要优点为:载波频率可变,在一个频率周期或波特内传输2到9位二进制数据,因此在相同的传输速率下,占用更少的带宽,传输距离更远。
(2)DMT(Discrete Multi-Tone,离散多音)。DMT采用多载波调制技术,可用频段划分为多个(典型为256个)子信道,每个子信道的带宽为4kHz,对应不同频率的载波,并根据子信道发送数据的能力将数据分配给各子信道,不能载送数据的子信道被关掉。DMT用离散快速傅立叶变换进行编解码,DMT尝试可能的最高速率,根据线路的噪声和衰减特性分配数据。目前,DMT已成为 ANSI制订的ADSL的调制标准----T1.413。
由于CAP信号传输占用全部信道带宽,所以频域和时域噪声都会对它造成影响。DMT的每个很窄的子信道频带内的电缆特性可以近似认为是线性的,因此脉冲混叠可以减到最低程度。在每个子信道内传送的比特率可以按该信道内信号和噪声的大小自适应地变化,故DMT技术可自动避免工作在
11
干扰较大的频段。
DMT和CAP技术都可以实现速率的自适应调整,这就是RADSL
[19]
。不同的是DMT可以做到从
64kbps开始以32kbps的间隔平滑递增。而CAP只能从640kbps开始作较粗糙的调整。
CAP的优点是处理较DMT简单,故时延小,芯片功耗低、其商品化也走在DMT方式之前。DMT的优点是抗噪声性能比CAP好。两种技术互不兼容,设备之间无法互连,影响了ADSL的推广。不过现在市场上的产品基本上以CAP调制技术为基础。
1.6 ADSL关键技术及物理层指标
1.6.1 关键技术
为在电话线上分隔有效带宽,产生多路信道,ADSL调制解调通常采用频分多路复用(FDM)技术实现。FDM将电话线现有带宽分配出一段频带作为数据下行通道,同时分配另一段频带作为数据上行通道。下行通道通过时分多路复用(TDM)技术再分为多个高速和多个低速信道。利用回波消除技术是使上行频带和下行频带叠加,通过本地回波抵消来区分两频带,以此有效地使用了有限带宽。同时,在用户端需通过由高通滤波器和低通滤波器组成的分离滤波器,分离出用于承载话音信号的4 kHz的低频带和ADSL Modem调制用的高频带。ADSL调制解调器通过将下行信道、全双工通道和控制信道的数据复合成数据块,在每一数据块中附加纠错码形成总数据流。接收端依据此纠错码采用前向纠错机制对在传输过程中产生的误码进行纠错。目前被广泛采用的ADSL调制技术有2种:CAP(抑制载波幅度和相位Carrierless AmplitudePhase Modulation)和DMT(离散多音复用Discrete Multitone),其中DMT调制技术被ANSI标准化小组T1E14制定的国家标准所采用。
1.6.2 物理层指标
导致ADSL用户故障的线路原因主要可以分为2大类:第1类是衰减类线路故障;第2类是干扰类线路故障。衰减类线路故障主要表现有:用户线路过长、线路材质传输性能差、线路发生短路和断路、接头氧化、接触不良、桥接抽头过多等。干扰类线路故障主要表现有:局端或用户端设备本底噪声较高、广播干扰、电缆中不同线对之间的信号串扰、家用电器的电磁干扰、电机或电力机车引起的电磁干扰、天气原因引起的干扰(如雷电)等。而用户故障往往是以上所列举的若干项因素共同作用造成的。所以将开展ADSL业务需达到的主要物理层指标罗列如下: (1) 环路阻抗与环路长度
适宜开通ADSL业务的用户线路环阻应当小于900 Ω,线路长度应当小于3.7 km。 (2) 频域衰减指标
12
ADSL用户线路在ADSL频带内各个频率上的衰减应小于35 dB。 (3) 近端串扰
近端串扰主要是指电缆同一侧设备所发信号对其他线路上的接收信号的干扰。开通ADSL业务的用户电缆在ADSL频带内各个频率上的近端串扰应小于-40 dB。 (4) 远端串扰
远端串扰主要是指电缆两端设备所发信号对其他线路上的接收信号的干扰。开通ADSL业务的用户电缆在ADSL频带内各个频率上的远端串扰应小于-50 dB。 (5) 分离器对ADSL频带内信号的衰减
分离器对ADSL频带内信号的衰减应大于-1 dB。
1.7 ADSL的应用
通过PPPoE虚拟拨号连接互联网是近几十年来个人用户连接互联网的主要方式。ADSL技术的全面发展和普及给PPPoE的深入发展和研究提供了新的领地,也更好地实现了快捷、安全的上网方式。
ADSL的宗旨是通过普通电话提供高速数据通信和交互视频功能。ADSL宽带不仅是目前家庭用户高速接入的最佳方法,而且在局域网高速接入方面,也显示了其潜力。ADSL提供了灵活的接入方式,即专线方式与虚拟拨号方式。专线方式即用户24 h在线,用户具有静态IP地址,可将用户局域网接入,主要面对的是中小型公司用户。采用专线接入的用户只要开机即可接入Internet。虚拟拨号方式主要面对上网时间短、数据量不大的用户,如个人用户及中小型公司等。这里的“虚拟拨号”是指根据用户名与口令认证(比较类似Modem和ISDN的拨号程序),接入相应的网络,并没有真正的拨电话号码,费用也与电话服务无关。应用ADSL,可实现家庭用户宽带接入、单位局域网接入以及网络互联。ADSL能很好的支持范围广阔的高带宽应用,例如高速互联网接入、远程通信、虚拟专用网(VPN)和稳定的多媒体内容。传统的拨号数据网技术对于以上这些业务的支持要么不能支持,要么支持得不够。
1.7.1 应用ADSL的几种常用方式
(1) 单机接入
如果用户家中只有一台计算机准备通过ADSL上网,其结构如图1-3所示。当您向电信部门申请ADSL线路后,电信相关部门则会提供分离器和ADSL Modem,分离器与ADSL Modem之间用1条2芯的电话线连好,ADSL Modem与计算机的网卡之间用一条网线连接即可完成硬件安装。再运行一个专门的软件将TCP/IP协议中的IP,DNS[20]和网关参数设置好,便可进行网上冲浪了。
(2) 家庭双机共享
13
现在越来越多的家庭有2台以上计算机,如果仅有2台计算机想通过一部电话上网,可选择一台性能较好,并且固定使用的计算机做代理服务器,为其安装双网卡,一块网卡与ADSL Modem的LAN接口连接,另一块网卡使用交叉的网线与另一台计算机相连接,需要注意的是交叉网线的制作方法:一端的RJ45接头中双绞线颜色排列为:橙白、橙、绿白、兰、兰白、绿、棕白、棕,另一端的颜色排列为:绿白、绿、橙白、兰、兰白、橙、棕白、棕。然后将配置较好的计算机通过网络管理软件设置成代理服务器,另一台计算机设置成共享模式,这样这台计算机就可以通过“代理服务器”宽带上网了。当然那台作为“代理服务器”的计算机要一直开机。 (3) 局域网共享接入
(1)用HUB构造小型局域网,将一台性能较好的计算机配置成代理服务器,安装双网卡,将一块网卡与ADSL Modem的LAN口连好,另一块网卡使用直连线与HUB相连。本地局域网上的客户机通过该服务器访问外部信息资源。这样只需申请一个IP地址,其他本地客户机可采用保留IP地址。如图1-4所示。
图1-4 局域网的连接
(2)采用专线方式,为局域网上的每台计算机向电话局申请一个IP地址,这样无需设置代理服务器便可实现资源的共享。只是目前电话局所能提供的IP地址数是有限。
1.7.2 ADSL的应用范围
1. 用作专线网的接入线
专线提供上、下行速率对称的通信业务,因此可采用ADSL Modem,终端通过V.35或X.21等串口与其相连,其双向传输速率为128 kbit/s~2 Mbit/s。
2. 用作Internet的接入线
在Internet中,浏览Web等客户/服务器业务的下行数据量要大得多,因此可采用下行高速化的ADSL Modem。
3. 用作ATM的接入线
14
主干线路ATM化已成为全球通信发展的趋势,因此如何使xDSL用作ATM业务的接入线已成为当前研究与开发的热点。ANSI、ETSIADSL技术进行标准化。
图1-5示出了ATM终端利用ADSL线路建立永久虚电路(PVC)的实例。通常对各个ATM终端独立地设定VPI(虚路径标识符)和VCI(虚通道标识符),如果在ATM over ADSL中原封不动地沿用这种规范,因导入了带有复用功能的综合型ADSL Modem(DSLAM:Digital Subscriber Line Access Multiplexer)不能保持VPI/VCI的唯一性。因此,联合建议中规定ATM终端只设定VCI,VPI作为DSLAM识别各ATM终端(ADSL线路)的标志。
[21]
、ITU-T
[22]
、ADSL论坛和ATM论坛等机构也正在对ATM over
VPI=0 VCI=x PC ADSL ATM(25Mbit/s) VPI=0 VCI=y PC ADSL ATM(25Mbit/s) PVC连接 ATM(155Mbit/s) VPI交叉连接(变换 VPI=1,VXI=x ATM DSLAM VPI=2,VXI=y VPI=3,VCI=z 交换机 ATM网 VPI=0 VCI=z PC ADSL ATM(25Mbit/s)
图1-5 ATM over ADSL的应用实例
1.8 ADSL与其他接入服务的比较
ADSL的技术原理和调制方式有其独特的技术优势,与普通拨号Modem和有线接入的Cable Modem是不可以互换使用的。现比较如下: (1) 与普通拨号Modem及ISDN
ADSL比起普通拨号Modem的最高56 k速率,以及ISDN 的128 k速率,ADSL的速率优势是不言而喻的。ADSL更为吸引入的地方是:它在同一铜线上分别传送数据和语音信号,数据信号并不通过电话交换机设备,减轻了电话交换机的负载,打电话和上网互不干扰,ADSL的虚拟拨号方式不同于普通拨号Modem及ISDN的拨号连接,ADSL拨的不是具体的ISP提供商的电话号码,而是VPN(虚拟专网)的接入IP地址,所以使用ADSL上网并不需要缴付另外的电话费,而只缴纳上网费或月租费。
15
(2) ADSL与DDN
用户在使用万维网时需要的宽带业务主要是从Internet网站下载多媒体信息,而向万维网网站发
送的信息仅需要很小的带宽,ADSL为非对称接入方式,上行最高1 Mb/s,下行最高8 Mb/s,相对DDN对称性的数据传输更适合现代网络的特点。同时ADSL费用较之DDN要低廉的多,接入方式也较灵活。
(3) ADSL与和 Cable Modem
ADSL在网络拓扑的选择上采用星型拓扑结构,为每个用户提供固定、独占的带宽保证,而且可以保证用户发送数据的安全性,而有线电视视讯网结构上是总线型的,其承诺的10 M甚至30 M的信道带宽是一群用户共享的,一旦用户数增多,每个用户所分配的带宽就会急剧下降,而且共享型网络拓扑致命的缺陷就是它的安全性,数据传送基于广播机制,同一个信道的每个用户都可以接收到该信道中的数据包。
1.9 新一代ADSL技术的应用前景
新一代ADSL芯片的研发在标准形成的过程中一直在进行,不同的芯片厂商采用不同的策略。有的厂商分阶段研制ADSL2和ADSL2+芯片,其主要考虑是,一方面,ADSL2比ADSL2+标准化进程快(至少相差半年),另一方面,ADSL2的芯片成本在有一定产量的情况下比ADSL增加不多,有望在市场上取得一定优势,此后再根据需求状况决定ADSL2+芯片的生产。
由于ADSL2 与第一代ADSL相比在速率上并没有很大的增加,而在ADSL2的基础上发展起来的ADSL2+通过扩展下行频带可以大大提高下行速率,因此芯片厂商将不会推出只支持ADSL2的芯片,而是以ADSL2 +的方式在芯片上同时支持ADSL2和ADSL2+。另外,随着ADSL技术的迅猛发展以及第一代ADSL用户的不断增加,为了与已有的ADSL用户兼容,未来的ADSL2、ADSL2+设备可能会选择同时支持G.992.1 、G.992.3和G.992.5标准,以能够适配远端设备所支持的操作模式。
ADSL2利用现有电话铜缆资源,可在开通话音业务(POTS、ISDN)的同时,利用高频段提供宽带数据业务。其中ATU-C、ATU-R分别为局端和用户端的ADSL2收发单元,话音和数据业务通过分离器(Splitter)隔开。
根据提供业务的不同,ADSL2包括以下四种具体应用形式: (1)Data,即只提供数据业务。
(2)Data+POTS,即同时提供数据和普通电话业务。 (3)Data+ISDN,即同时提供数据和ISDN业务。
(4)Voice over Data,即通过数据通道提供话音业务(VoADSL)。此时需要话音网关功能完成话音到分组数据的转换。
16
从应用角度来看,在欧洲、北美等地,由于用户分布一般比较分散,适合采用ADSL技术,对ADSL技术的升级形成ADSL2/ADSL2+有较强的需求。一方面,由于新一代ADSL在应用模式上变化不大,而性能和功能上得到了扩展,还可在原有ADSL DSLAM上混插ADSL2、ADSL2+的用户板,为用户提供更高水平的服务,同时兼容原有ADSL Modem;另一方面,由于国际范围内通信行业普遍不景气,欧美运营商一般不愿投入更多的资金进行全新技术(如VDSL)的引入和相应的网络建设。而在东亚、东南亚等地,ADSL的应用快速发展的同时,由于用户居住相对密集,适合VDSL中短距离、高速率的特点,特别是在韩国、日本等宽带接入发展较快、市场竞争十分激烈的国家,VDSL已进入商用化进程。
在我国,ADSL的应用近几年来不断推广,特别是2002年,发展势头强劲,用户数进入快速增长时期,已成为运营商业务收入的主要增长点之一。同时,由于VDSL技术,特别是以太网与VDSL结合的EoVDSL[23]方式,与ADSL和以太网接入相比具有一定的潜在优势,也得到了运营商和设备制造商的广泛关注。因此,有必要紧密跟踪新一代ADSL和VDSL技术的进展,在综合考虑性能、成本、技术成熟度、市场需求等因素在基础上制订恰当的发展策略。
17
2 PPPoE协议
PPPoE的全称是Point–to–Point Protocol over Ethernet(基于以太网的点对点通讯协议),这个协议是为了满足越来越多的宽带上网设备(即ADSL,无线等)和越来越快的网络之间的通讯而最新制定开发的标准,它基于两个广泛接受的标准,即:局域网Ethernet和PPP点对点拨号协议。对于最终用户来说不需要用户了解比较深的局域网技术只需要当作普通拨号上网就可以了,对于服务商来说在现有局域网基础上不需要花费巨资来做大面积改造,设置IP地址绑定用户等来支持专线方式。这就使得PPPoE 在宽带接入服务中比其他协议更具有优势。因此逐渐成为宽带上网的最佳选择。PPPoE的实质是以太网和拨号网络之间的一个中继协议,它继承了以太网的快速和PPP拨号的简单,用户验证,IP分配等优势。其主要优点为:安裝与操作方式类似于以往的拨号网络模式,方便用户使用;用户端的xDSL调制解调器无须任何配置;允许多个用户共享一个高速数据接入链路,适应小型企业和远程办公的要求;终端用户可同时接入多个ISP,这种动态服务选择的功能可以使ISP容易创建和提供新的业务;兼容现有所有的xDSL Modem 和DSLAM;可与ISP現有接入结构相融合等等。
在实际应用上,PPPoE利用以太网络的工作机理,将ADSL Modem的10BASE-T(双绞线)接口与内部以太网络互联,在ADSL Modem中采用RFC1483 (LLC&VCMUX:桥和路由模式)的桥接封装方式对终端发出的PPP包进行LLC[24]/SNAP[25]封装后,通过连结两端的PVC在ADSL Modem与网络侧的宽带接入服务器之间建立连接,实现PPP的动态接入。PPPoE接入利用在网络侧和ADSL Modem之间的一条PVC就可以完成以太网络上多用户的共同接入,实用方便,实际组网方式也很简单,大大降低了网络的复杂程度。
尽管PPP是点对点的协议,PPPoE却是一个客户机/服务器的协议。客户端(通常是DSL用户)查找PPPoE服务器(通常也称为接入多路复合系统, Access Concentrator,简称AC)并且获得AC的MAC地址以及会话ID。
PPPoE协议是一种多重协议的传输机制,它将PPP帧封装在以太网数据报中。其实际功能包括物理层和数据链路层,具有错误控制、连接安全、动态IP地址指定、多重协议支持等功能。PPPoE是数据链路层协议,主要用来封装来自网络层的数据包,并将其通过串行线传输。PPPoE协议及其在Windows系统上的实现,目标就是要是实现PPPoE客户端软件在Windows系统中的运行。其内容主要有两大部分:一是对PPPoE协议的研究;二是PPPoE协议在Windows系统中的实现。重点在于实现PPPoE协议,而在Windows系统中实现该协议,则要解决以下几个关键性问题:
1.对PPPoE协议的研究; 2.开发平台的搭建;
3.确定PPPoE协议在Windows系统中的层次; 4.在客户端软件中实现对PPPoE协议的支持。
18
PPPoE分为两个阶段,即Discovery(地址发现)阶段和PPP会话阶段。
2.1 PPPoE发现
当某个主机希望发起一个PPPoE会话时,它必须首先执行Discovery来确定对方的以太网MAC地址并建立起一个PPPoE会话标识符SESSION_ID。虽然PPP定义的是端到端的对等关系,Discovery却是天生的一种客户端/服务器关系。
在PPPoE发现(Discovery)的过程中,主机(作为客户端)发现某个访问集中器(Access Concentrator,作为服务器),根据网络的拓扑结构,可能主机能够跟不止一个的访问集中器通信。Discovery阶段允许主机发现所有的访问集中器并从中选择一个。当Discovery阶段成功完成之后,主机和访问集中器两者都具备了用于在以太网上建立点到点连接所需的所有信息。
Discovery阶段保持无状态(stateless)直到建立起一个PPP会话。在发现过程中,PPPoE客户端发送PADI(发现初始桢),目标地址为广播地址,也可以在此帧中指定客户端所感兴趣的服务名称。AC(服务器)收到PADI后,以PADO(发现提供帧)回应,报告自己所提供的服务名称,这时目标地址就是客户端的MAC地址。
通常情况下,PADR(发现请求帧)会来自一个以上的AC。这时,客户端就需要选择一个它所要建立会话的服务器,并发送PADR给该服务器的MAC地址。AC检验该帧的合法性,继而分配PPP会话的资源,并指定同该客户通讯的会话ID,然后将该ID在PADS(发现确认帧)中一并发给客户机。
客户机接受到PADS后,便知道了会话ID和服务器的MAC,便分配PPP会话的资源,准备开始正常的PPP会话,进入PPPoE会话阶段。
2.2 PPPoE会话
一个PPPoE会话就是两个点对点端通过以太网通讯的过程,每一端都必须知道对方的网卡地址,而且,每个会话都必须用一个独特的会话ID来标志。PPPoE会话实质就是执行标准的PPP过程。
PPP会话阶段主要是LCP、认证、NCP 3个协议的协商过程,LCP阶段主要完成建立、配置和检测数据链路连接,认证协议类型由LCP协商(CHAP或者PAP),NCP是一个协议族,用于配置不同的网络层协议,常用的是IP控制协议(IPCP),它负责配置用户的IP和DNS等工作。在PPPoE会话阶段,以太网帧的类型被设为0x8864,负载是PPP数据。
一旦PPPoE会话开始,PPP数据就像其它PPP封装一样发送,主机和访问集中器两者都必须为一个PPP虚拟接口分配资源。所有的以太网数据包都是单播的。在整个会话过程中双方通讯所用的以太网数据包都是发往对方网卡,而会话ID保持不变一直到会话结束。PPPoE的CODE必须设置为0x00。PPPoE会话的SESSION_ID不允许发生改变,必须是Discovery阶段所指定的值。PPPoE的
19
payload包含一个PPP帧,帧始于PPP Protocol-ID。
当LCP结束的时候,主机和访问集中器必须停止使用该PPPoE会话。如果主机希望开始另一个PPP会话,则它必须重新进入PPPoE Discoverey阶段。
20
3 PPPoE平台的搭建
图2-1 ADSL接入实例
以上这个图2-1展示的是ADSL接入的一个实例。
另外,从下图2-2可以看出PPPoE并非是真正的以太网,而是在客户机和服务器建立了一个虚拟的以太网连接,只不过是客户机和服务器面对的都是以太网环境罢了,而中间的传输则由ADSL设备和电话线来进行。下面是从上图抽象出来的PPPoE的以太网虚拟连接的示意图:
图2-2 PPPoE的以太网连接示意图
21
鉴于PPPoE的设备无关性,本文搭建了基于局域网的PPPoE C/S的开发平台。无需两端的ADSL设备,也无需电话线,本平台的特点:简单、经济、方便、稳定。见下图2-3:
图2-3 局域网中PPPoE平台的搭建
22
4 Windows系统下PPPoE的实现方案
4.1 PPPoE的层次
PPPoE协议因为要封装IP包,所以它一定是处于网络层之下,又因为它要从以太网接口(网卡)发送数据而且具有设备无关性,所以它又应该在物理层之上。由于PPPoE要封装PPP数据帧,所以其所处的位置应该至少跟PPP协议的位置一样或者更低,众所周知,PPP协议是数据链路层的协议。所以PPPoE协议在OSI
[26]
七层模型中应属于数据链路层的逻辑链路层。
4.2 NDIS体系及PPPoE
NDIS(Network Driver Interface Standards,网络设备驱动接口标准)是开发Windows驱动所要遵循的规范。它描述了网络卡的驱动程序同上层协议以及操作系统通讯的接口,对驱动开发者提供一个抽象层,屏蔽了下层各种网卡的差别,同时又为上层的协议驱动提供服务。
NDIS支持三种网络驱动:小端口驱动,中间层驱动,协议驱动。
小端口驱动:小端口驱动实现管理物理网卡所必需的硬件相关的操作,包括发送接收数据。 协议驱动:上层协议驱动实现一个TDI接口或另一个应用程序定义的接口,来提供服务。这种驱动程序分配数据包,拷贝数据并通过调用NDIS将数据包发送至下层驱动。协议驱动同时也提供从下层驱动接收数据包的接口。
中间层驱动:中间层驱动位于协议和小端口驱动之间。在它的下端,一个中间驱动程序导出协议实体指针(ProtocolXxx函数),让NDIS调用来完成与底层小端口的通讯请求。对于一个下层小端口驱动程序来说,一个中间驱动程序就像一个协议驱动程序一样。在他的上端,一个中间驱动程序导出小端口实体指针(MiniportXxx函数),让NDIS调用来和一个或多个上面的协议驱动程序进行通讯。对于一个上层的协议驱动程序,一个中间驱动程序就像一个小端口驱动程序。
中间驱动程序通常以下几种方式使用:
1.在不同的网络媒介中起翻译的作用。如处于Ethernet 和Token Ring传输层和一个ATM小端口中的中间驱动程序的功能是将Ethernet和Token Ring数据包映射给ATM数据包,反之亦然。
2.过滤数据包。 3.负载均衡。
PPP本是用来支持串口设备modem,isdn,但是PPPoE则要求在以太网上建立PPP,这涉及到网络媒质的转化,所以PPPoE协议驱动应该是属于中间层驱动程序这一类的。
NDISWAN
NDISWAN是一个实现PPP协议,链路成帧,压缩和加密的NDIS中间层驱动,是Windows的网
23
络组件之一。NDISWAN将上层传输驱动程序的数据包从局域网格式转换成城域网格式,并将重新格式化的数据包传给下层WAN小端口驱动程序,在转换数据格式时,NDISWAN采用简单的HDLC帧格式。
NDISWAN作为一个协议绑定在拨号适配器上,同时又作为一个小端口被上层传输协议(如TCP/IP, IPX/SPX)所绑定,以TCP/IP数据包的传输为例,数据的传输方向和数据格式为:
TCP/IP?(IP包)?NDISWAN?(PPP封装包)?小端口。假如系统以普通56k的调制解调器拨号上网的话,此处的小端口就是modem的驱动程序了。
PPPoE协议要做的是将PPP的数据包转换为PPPoE封装后的以太网数据包,这一过程同NDISWAN所做的很相似,甚至可以说只是转换的方向相反。
所以,在NDISWAN之下再加一层中间层驱动,来实现PPP到PPPoE的转换,应该可以做到在以太网上的点到点传输。
[27]
我采用的方案:
利用NDIS中间层驱动程序机制,实现一个中间层驱动程序,为了同NDISWAN通讯(也就是说必须让NDISWAN绑定它),它需具有Wan 小端口的上沿接口;为了同以太网卡通讯(也就是说必须可以绑定在以太网卡上),它需具有协议下沿接口,使其工作在NdisWan和以太网网卡驱动程序之间,完成PPPoE协议转换工作;利用WAN小端口提供的上沿函数支持拨号网络的拨号服务,完成虚拟拨号。
24
5 PPPoE客户端软件
5.1 软件的总体结构
PPPoE软件的作用就是连接操作系统的PPP协议和Ethernet协议,并通过PPPoE协议连接ISP。客户端软件包括三个部分:通知对象(Notify Object)、协议驱动程序(Driver)以及用户工具(Utility)。另外一个重要组成部分是系统注册表,它记载了协议驱动的位置,操作层次以及协议运行所需的参数。 通知对象(Notify Object)是一个动态链接库,本系统软件包中的文件pppoe.dll就是通知对象,它主要负责处理从网络配置子系统发送至PPPoE协议驱动的通知,并显示用户界面,从而能够对协议的属性配置进行控制。通知对象的功能比较简单,主要是用操作系统定义好的COM接口实现的。 用户工具(PPPoE Utility)是PPPoE驱动的一个组件,它利用PPPoE协议的功能,查询目前可用的服务名称,并为用户指定的服务建立连接项;同时它又可以作为一个诊断工具,如果运行正常,则说明PPPoE协议在本机上正常安装,反之,则需要重新安装。PPPoE Utility最终文件名为PPPoE.exe,并运行在Windows2000系统之上。
协议驱动程序(Driver)主要实现PPPoE协议,它是本软件的核心部分,也是本文讨论的重点,存在形式是PPPoE.sys。关于协议驱动,将在下个章节中进行介绍。
常用PPPoE软件 PPPoE软件的作用就是连接操作系统的PPP协议和Ethernet协议,并通过PPPoE协议连接ISP。
EnterNet:由 NTS.COM 开发(现在已经并入Efficient Networks这个有名的设备开发
制造公司),自己具备独立的PPP协议,可以不依赖操作系统的拨号网络来提供PPP协议,具有直接通过网卡和ISP连接的能力,目前是最通用和流行的PPPoE软件,并且支持多种操作系统,目前已经提供有Windows,Linux,MacOS的版本,并且根据功能的多少又分为100、300、500等多个系列。
WinPoET: 由 iVasion.com开发(现在已经改为WindRiver公司),它是PPPoE协议起草者之一,它在PPPoE软件中也占有极大的份额,许多特大型ISP也采用它。它通过操作系统的拨号网络来提供PPP协议,所以在使用上和我们使用普通56K拨号上网非常相似,它只是在后台悄悄地进行着PPPoE服务。
RASPPPoE: 个人开发的PPPoE驱动软件,小巧精干,没有自己的界面面板完全只是一个驱动程序,也是依靠操作系统拨号网络来提供PPP协议,由于它是以网络协议组件的形式来工作,所以在使用上,完全和使用老式的Modem一样简单。
25
5.2 PPPoE 驱动程序的实现
5.2.1 PPPoE驱动程序的功能划分
按照设计方案,PPPoE驱动程序是一个带有Wan小端口的中间层驱动,所以从层次上划分,驱动分为两层:下层协议驱动和上层微端口驱动。协议驱动主要实现同下层网卡的数据通讯,接收从网卡传来的以太网数据包,并将PPPoE包转换为PPP的数据,然后上传到NDISWAN。
而微端口驱动则负责接收从NDISWAN下传来的PPP数据包,并将其转换成PPPoE格式,然后通过网卡发送出去。此处的下层协议驱动并非本文所讨论的PPPoE协议实现的全部,相反,PPPoE协议的实现是在整个中间层驱动中的这两层配合下完成的。为了便于理解,本文从功能上对整个协议的实现做一介绍,同时将一些技术问题融合到其出现的地方详做探讨,至于一些程序层面的问题则不做太多描述。
从功能上划分,则PPPoE驱动又分为:WAN支持部分、TAPI支持部分、链路控制、PPPoE支持、发送/接收机制、同应用程序接口机制。
5.2.2 WAN支持
为了是接收NDISWAN下传来的PPP数据帧,首先应该令系统将我们的小端口视作拨号设备,也就是说需要虚拟出来一个拨号适配器来让NDISWAN绑定,这一步主要是在微端口初始化时完成的。
在驱动入口处DriverEntry(),驱动在调用NdisIMRegisterLayeredMiniport时,要指定正确的NDIS版本,有关该WAN微端口各种函数的入口,包括端口初始化,查询/设置,微端口重置,微端口停止,数据发送等。
5.2.3 TAPI支持
Windows组件NDISTAPI在NDISWAN之上,向上对TAPI用户程序提供服务,向下又同NDISWAN接口完成系统内核态的操作。
WAN小端口初始化为支持TAPI后,应用程序就可以发送电话请求(Telephony Requests)了,通过用户态的KMDDSP服务模块,将该请求转换为相应的OID,再传送到NDISTAPI模块,NDISTAPI该OID传递到NDISWAN,NDISWAN又继续下传该OID,导致NDIS调用下层小端口的MiniportQueryInformation 或MiniportSetInformation,然后小端口驱动再进行相应处理。
微端口将线路的状态的转变及时地通过调用NdisIndicateStatus,向上层驱动传递,然后这一状态又层层上传至TAPI应用程序,TAPI应用程序再根据情况执行新的操作。
驱动响应系统OID直到协议安装过程宣告完全结束,同时中间层驱动的协议部分也应该已经完
26
成了初始化,绑定到网卡,设置网卡属性等操作。这时用户可以开始拨号了,先用Utility建立同服务器AC的连接项,添加到电话簿上,然后打开系统的拨号网络,双击该图标,就会出现拨号界面。
用户拨号时,会最终导致WAN微端口收到OID,OID_TAPI_MAKE_CALL,而作为参数传送下来的还有关于所用线路的信息以及本次呼叫参数,这些呼叫参数就包括用户信息,呼叫目标。
正常的PPP连接到这时,就是建立链路层的连接,实现PPP认证和配置。在基于PPPoE的系统,我们的线路是永久连接的,但是如果没有执行PPPoE发现过程,则没有另一端的信息,不能进入PPPoE会话阶段而进行PPP的认证和其他操作。
所以当此处微端口驱动收到OID_TAPI_MAKE_CALL时,正是进行PPPoE发现的时机。 微端口驱动会调用发现模块,建立PPPoE会话,然后向上指示线路的状态为LINEDEVSTAT- E _CONNECTED,说明线路已经接通,可以发送PPP数据帧了。然后NDISWAN开始同对方(AC)进行PPPoE支持下的PPP通讯,直到本次呼叫被终止。
5.2.4 连接控制
PPPoE同时支持多个会话,为了及时对连接进行诊断并采取相应措施,必须对连接进行分别控制。 本课题用了两种连接控制方法: 1.PPP的LCP方法 2.PPPoE方法
5.3 利用PPP的LCP连接控制
PPP协议由三个部分组成: 1.封装多协议数据报的方法
2.链路控制协议(LCP,Link Control Protocol) 3.网络控制协议簇(NCP,Network Control Protocols)
LCP通过交换数据报来进行建立连接,连接的建立是一系列的选项进行协商的过程,注意这里的选项并不涉及到具体的网络层协议。每次只有一个LCP数据报通过PPP封装在链路上传递。
一般情况下,当建立PPP会话之后,服务器会周期性发送应答请求,来监测是否客户端会异常中断。正常情况下,这个请求/回应的过程是由NDISWAN处理的,但是在实际工作状态中,客户端并不向服务器主动发送应答请求,来监测服务器端是否会异常中断连接,这样就会形成一个假连接。在客户端驱动中需要来主动监测这种异常情况,那么如何进行呢?
在应答请求/回复这两种数据帧中,数据段的头32位是一个被称为Magic-Number的数值,它用来侦测回环连接或者和其他数据链路层出现的异常。Magic-Number是不停变化的,其生成算法我们
27
无从知晓,但是要想主动发送应答请求就必须提供一个Magic-Number。
经过试验,我们发现利用客户端向服务器端发送的应答回应帧,可以来生成自己的应答请求帧。具体做法如下:
截获NDISWAN下发的应答回应帧,将其中的代码字段由0x0a改为0x09,然后将其后的数据全部拷贝到内存缓冲区中。经过这样处理的缓冲区就保存了一个固定的应答请求数据帧。虽然其中的Magic-Number是固定的,但是经过实际检验,还是可以得到AC端的回应的。
有了待发送的数据,就可以建立监测机制了。 有三个部分异步配合完成检测:
1.驱动发送端。指从NDISWAN接收待发送的PPP数据,经PPPoE打包后向网卡传输的模块,主要完成检测机制的启动。
2. 驱动接收端。指自网卡收到对方发送的数据,解包,再形成PPP帧,上传至NDISWAN的模块。主要记载是否接收过对方发送的有效数据。
3.定时检测模块。周期性对连接状态进行检测。
PPPoE连接控制
在PPPoE会话阶段,任何时候,任何一方只要收到或者发出PADT(发现终止包)数据报,则表示本次会话已经终止,那么就不允许任何的PPP数据再通过本会话进行传输,即使是正常的PPP终止帧也不允许在PADT之后传输。
28
6 PPPoE支持及相关算法
1 . PPPoE发现(Discovery)
一个典型的发现(Discovery)阶段共包括4个步骤:
1. 主机发出PPPoE有效发现启动(PADI)包。以太网目的地址为广播地址0xffffffffffff,CODE字段为0x09,SESSION_ID为0x0000。PADI包必须至少包含一个服务名称类型的标签(标签类型字段为0x0101),向接入集线器提出所要求提供的服务。
2. 接入集线器收到在服务范围内的PADI包后,发送PPPoE有效发现提供(PADO)包以响应请求。其CODE字段为0x07 ,SESSION_ID仍为0x0000。PADO包必须包含一个接入集线器名称类型的标签(标签类型字段为0x0102)以及一个或多个服务名称类型标签,表明可向主机提供的服务种类。
3. 主机在可能收到的多个PADO包中选择一个合适的,然后向所选择的接入集线器发送PPPoE有效发现请求(PADR)包。其CODE字段为0x19 ,SESSION_ID仍为0x0000。PADR包必须包一个服务名称类型标签,确定向接入集线器请求的服务种类。
4. 接入集线器收到PADR包后准备开始PPP会话,它发送一个PPPoE有效发现会话确认(PADS)包。其CODE字段为0x65 ,SESSION_ID为接入集线器所产生的一个唯一的PPPoE会话标识号码。PADS包也必须包含一个接入集线器名称类型的标签确认向主机提供的服务。当主机收到PADS包确认后,双方就进入PPP会话阶段。
2. PPPoE会话(Session)阶段
在PPPoE会话阶段,发送时只需机械地将PPP数据报转化为PPPoE的数据报再发送,而接收时只需进行反向转变。数据的转变是比较容易的,困难的是中间层同NDISWAN,中间层同以太网卡的接口,以及NDIS复杂的数据传输机制。
3. 其他PPPoE处理模块
以下是本课题中各模块所调用的有关PPPoE数据处理的函数: void PPPoECreatePADR 生成PADR(发现请求包) void PPPoECreatePADI 生成PADI(发现启动包)
BOOLEAN PPPoEIsPADO 判断数据帧是否PADO(发现提供包),同时将包含PPADO数据包中
的各标签分析出来,返回服务标签和Cookie。
BOOLEAN PPPoEIsPADS 判断数据帧是否PADS(发现确认包),同时将会话ID取出。 BOOLEAN PPPoEIsPADT 判断是否PADT(发现终止包) BOOLEAN PPPoECreatePADT 生成PADT
BOOLEAN PPPoEIsPPPoE 判断数据帧是否PPPoE的帧
29
BOOLEAN Discover 进行PPPoE发现
BOOLEAN FillPPPoEHeaders 根据PPPoE发现阶段得到的会话ID、对方MAC地址,本机MAC
地址生成固定的PPPoE数据帧的报头,便于在会话过程中数据帧的转化。
BOOLEAN ChooseThisOne 判断从PADR得到的服务器和服务,是否同用户指定的一致。 BOOLEAN PPPoESendPADT 发送PADT,主动结束本次连接。
6.1 发送/接收机制
6.1.1 接收数据
接收数据由中间层驱动的协议部分负责,协议经正确注册,绑定在机器内的物理网卡之上,并设置网卡的模式后,NDIS就会将来自网卡的数据作为参数发送到协议所注册的ProtocolReceive接口。假如不事先设置网卡的模式,则协议不会收到任何数据。此处我们设定网卡为直接模式,让它只把直接传送到网卡上的以太网数据帧上传至协议。
在协议的ProtocolReceive()中,网卡上传来的PPPoE数据有两种: 1. PPPoE发现阶段的数据 2. PPPoE会话阶段的数据
对于发现阶段接收到的数据,只是用于同AC端建立PPPoE会话,所以没有必要向上传送。驱动在接收端只需把该数据存入预先分配的缓冲区中就好了,至于处理该数据以及缓冲区的其他操作,则由另外的模块来进行。
PPPoE会话阶段的数据封装了PPP数据,必须向上传送。具体的传送过程是这样的:
PPPoE驱动通过发送过来的PPPoE数据帧得到PPPoE会话的代码(Session ID),然后得到连接线路的描述指针,再调用NdisMWanIndicateReceive,将PPPoE的纯付载(去掉PPPoE帧头的PPP数据)传送给NDISWAN,同时指定数据属于该线路。
6.1.2 发送数据
发送和接收主要由微端口和协议各自分管,但是在异步发送数据时二者又必须通过配合才能实现一个完整的发送过程。异步发送数据是指这种情况:上层协议要发送数据,而下层微端口资源有限却不能立即发送;这时发送模块可以立即返回,进行其他操作。下层微端口在最终将数据发送之后,再通知上层的协议。在微端口向NDIS注册的发送数据函数为MiniportWanSend,上层协议(NDISWAN)的发送数据请求将导致NDIS对MiniportWanSend的调用。假如MiniportWanSend不能及时发送该数据帧,则必须将该数据帧加入微端口的发送缓冲区中,等待硬件的发送,同时返回一个状态值NDIS_STATUS_PENDING,说明已将该数据报加入到发送队列中了,而且会在时机成熟时异步发送。
30
在发送结束后应该调用NdisMWanSendComplete来通知NDISWAN,汇报发送情况。
在Modem的驱动中,NdisMWanSendComplete是由硬件中断调用的。但是在我们的这个中间层驱动中,并无对硬件的直接操作,而只是?假装?了一个硬件(微端口)。而且在实际发送,并非发送的NDIS_WAN_PACKET,而是重新生成一个NDIS_PACKET格式的数据报(当然,这个数据报是遵循PPPoE的),然后再调用NdisSend()发送出去。调用NdisSend时又把这个数据报交给了下层微端口(网卡驱动),下层微端口发送完数据后同样需要NdisMSendComplete来通知NDIS,NDIS再调用协议的ProtocolSendComplete接口,协议再找出原先NDISWAN交来的待发送的数据帧的句柄,释放在中间层生成的NDIS_PACKET ,然后调用NdisMWanSendComplete通知NDISWAN。这样才算最终完成了一次延迟的发送。
6.2 算法实现
6.2.1 发送端算法:
接收到待发送的数据 监测PPP数据 是否为应答回应帧 Y PPPSessionEstablished=TURE 设置PPP会话建立标志 N PPPoE打包原来的数据帧并发送 拷贝该帧到预先分配的缓冲区 修改代码字段为0x0a 初始化定时器 图6-1 发送端算法流程
31
BEGIN
->接收到待发送数据 if PPPSessionEstablished then [监测PPP数据]
if 是应答回应帧 then
PPPSessionEstablished=TRUE; /*设置PPP会话建立标志*/ PacketReceivedSinceLastCheck=FALSE;
EchoRequestSent=FALSE
[拷贝该帧到预先分配的缓冲区,并修改代码字段为0x0a] [初始化定时器] endif endif
[PPPoE打包原来的数据帧并发送] END
6.2.2 接收端算法:
以下是接收端算法流程图(图6-2):
32
接收到待上传的数据 上传数据解包后的数据帧到NDISWAN 定时检测模块 是否建立PPP会话标志 Y 检查数据报 N 返回 没有收到数据 已发送回应请求,尚未收到数据 向系统报告此次连接无响应 连接已经中断 NDISTAPI断掉此次连接,结束会话 图6-2 接收端算法流程
BEGIN
->接收到待上传数据
PacketReceivedSinceLastCheck=TRUE [上传数据解包后的数据帧到NDISWAN] END
定时检测模块算法: BEGIN
IF !PPPSestionEstablished THEN return; ELSE
33
IF PacketReceivedSinceLastCheck THEN
PacketReceivedSinceLastCheck=FALSE; EchoRequestSent=FALSE; return; ENDIF //没有收到数据 IF EchoRequestSent
//发送过回应请求,而在此期间没有收到过数据 //说明本次连接已经中断 THEN
[向系统报告连接状态为没有响应]
//以INEDISCONNECTMODE_NOANSWER向NDISTAPI报告 //NDISTAPI继而断掉此次连接,结束会话 ELSE
//如果之前并没有发送过则在此处发送回应请求 [发送回应请求] EchoRequestSent=TRUE; ENDIF END
用这种机制每5秒钟检查一次连接状态,这样最多只用两个周期-10秒内可以及时断掉假连接。
6.2.3 PPPoE连接控制
在PPPoE会话阶段,任何时候,任何一方只要收到或者发出PADT数据报,则表示本次会话已经终止,那么就不允许任何的PPP数据再通过本会话进行传输,即使是正常的PPP终止帧也不允许在PADT之后传输。
6.2.4 PPPoE发现(Discovery)
Discover算法流程图(图6-3)如下:
34
分配待发送数据帧需占用的内存 调用PPPoeCreatePADI生成PADI 发送PADI 收到数据报中断 判断数据报状态 超时 返回错误 调用MakeDialTags生成拨号标签 dialserver&dialservice 判断接收到的每个数据报是否同拨号标签匹配 N 没有PADO 返回错误 Y 调用PPPoECreatePADR生成PADR 收到数据报中断 得到对方的MAC地址 发送PADI 等待PADO N 是否收到PADS Y 保存PPPoE会话ID 建立PPPoE会话不成功 返回错误 调用FillPPPoEHeaders,设置固定的PPPoE会话报分配PPP会话资源,准备PPP会本次PPPoE会话完成 图6-3 Discover算法流程 35
以下是Discover的算法: BEGIN
[分配待发送数据帧需占用的内存] [调用PPPoECreatePADI生成PADI] FOR I=1 TO 3
NdisResetEvent(&Link->PPPoEEvent); [发送PADI]
NdisWaitEvent(&Link->PPPoEEvent,(PPPOE_NO_REPLY)*(i+1)) IF (收到数据报)break; ENDFOR
IF(超时)return FALSE;
[调用MakeDialTags生成拨号的标签(dialserver,dialservice)] pElements->ACnumbers=0; //reset the number of AC pElements->ACChoice=0; //reset the choice of user FOR 所接收到的每个数据报
IF(是PADO) THEN
[判断是否同拨号标签匹配] IF(匹配) THEN
pElements->ACChoice=pElements->ACnumbers pElements->ACnumbers++; Break;
ELSE
pElements->Acnumbers++
ENDIF
ENDIF
ENDFOR
IF(0==pElements->Acnumbers)return FALSE;
/*没有PADO,返回错误*/
[拷贝pElements->servermac[pElements->ACChoice]到pElements->peermac[i]]
41
[6]武穆清.ATM网络中宽带与窄带业务的呼叫接入平衡机制[J].电子与信息学报.2002,(6):850-854. [7]高宏星.宽带城域网带外网管的实现[J].电信技术.2002,(11):47-49. [8]韩玲,曾志民等.xDSL宽带接入技术[M].北京:北京邮电大学出版社,2002.8.
[9]谢成山.网络协议体系结构——OSI/RM和TCP/IP及其比较[J].电讯技术.2003,(4):133-136. [10]Thomas A. Maufer.IP技术基础编址和路由[M].北京:机械工业出版社,2000.2.
[11]Michael A.Gallo,William M. Hancock..计算机通信和网络技术[M].北京:人民邮电出版
社,2003.7.
[12]徐恪,吴建平,徐明伟等.高等计算机网络——体系结构、协议机制、算法设计与路由器技术[M].
机械工业出版社,2003.9.
附页
[1]ADSL(Asymmetrical Digital Subscriber Line):非对称数字用户环路。
[2]PPPoE(Point–to–Point Protocol over Ethernet):基于以太网的点对点通讯协议。 [3]ISDN(Integrated Services Digital Network):综合业务数字网。
[4]DDN (Digital Data Network): 数字数据网络,一种全数字传输交换网络。 [5]WAN (Wide Area Network):广域网,也称远程网(long haul network)。 [6]TAPI(Telephony Application Programming Interface):电话应用程序接口。
42
[7]LCP(Link Control Protocol):链路控制协议。
[8]HDSL(High-bit-rate Digital Subscriber Line):高比特率数字用户线路。 [9]VDSL(Very High-bit-rate Digital Subscriber Line):甚高比特率数字用户线路。 [10]SDSL(Single line Digital Subscriber Line):单线数字用户线。 [11]ANSI(American National Standards Inetitute):美国国家标准学会。 [12]DMT(Discrete Multi-Tone):离散多音频。
[13]CAP(Carricerless Amplitude/Phase Modulation):无载波调幅调相。 [14]CATV (Community Antenna Television):有线电视。
[15]ISP(Internet Service Provider):互联网服务提供商,提供用户拨号入网的经营机构。 [16]ATU-C (ADSL Transceiver Unit-Centrol office): ADSL收发单元局端。 [17]ATU-R (ADSL Transceiver Unit-Remote terminal): ADSL收发单元远程终端。 [18]ATM(Asynchronous Transfer Mode):异步传递方式。
[19]RADSL (Rate adaptive ADSL):速率自适应的非对称数字用户环路。 [20]DNS(Domain Name System):域名系统,提供域名解析服务。
[21]ETSI(European Telecommunications Sdandards Institute):欧洲电信标准协会。 [22]ITU-T(ITU-Telecommunication standardization sector):国际电信联盟电信标准化组。 [23]EoVDSL(Ethernet over VDSL):以太网上的甚高比特率数字用户线路。 [24]LLC(Logical Link Control):逻辑链路控制。
[25]SNAP(Sub-Network Access Protocol):子网访问协议。
[26]OSI(Open Systems Interconnection Reference Model):开放系统互连基本参考模型。 [27]HDLC(High-level Data Link Control):高级数据链路控制。
正在阅读:
ADSL技术及应用-PPPoE的实现12-27
1000-1300HP钻机03-13
关于周末愉快说说阅读欣赏11-20
海南省2016年一级建筑师《建筑结构》:施工旁站监理考试试卷07-06
卫片组卷指南(定稿)(2) - 图文01-25
铅污染现状分析及对策研究09-13
当代高校学生干部应具备的素质07-06
席慕容:青春02-16
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 实现
- 应用
- PPPoE
- 技术
- ADSL
- 山地城市城市设计要素探讨
- 附属工程开工报告
- 中国共产党如皋市委员会
- 20XX年植保工作总结
- Excel2010汇总习题及答案
- 司法所实习总结
- 四对照四反思剖析材料
- 2015年河南省公务员考试申论:综合分析题作答需规避的误区
- (整理)钢筋混凝土盖板边沟施方案
- 重庆市非织造布行业企业调查报告2018版
- 电子信息专业考研方向和A、B类的学校排名以及各专业的简介
- 仁爱英语八年级上册Unit 3 Topic 3 教学设计与反思
- 初一书面表达能力培养 - 图文
- 双功器项目可行性研究报告(发改立项备案+2014年最新案例范文)详细编制方案
- 二氧化硫比对实验原始数据
- 例谈互联网在初中生物教学中的运用
- 基本养老保险关系转移接续信息表填写说明(人社险中心函58号附件2)
- 巉口镇新农村建设试点工作总结
- 光伏电站违法用地典型案例剖析和启示
- 幼儿园保育员的工作计划范文-推荐word版(6页)