Login
升级VIP 登录 注册 安全退出
当前位置: 首页 > word文档 > 标准规范 > 2.2-数据网-BRAS及认证技术

2.2-数据网-BRAS及认证技术

收藏

本作品内容为2.2-数据网-BRAS及认证技术,格式为 docx ,大小 193241 KB ,页数为 28页

2.2-数据网-BRAS及认证技术


('数据网—BRAS及认证知识中国电信维护岗位认证教材编写小组编制目录第1章BRAS功能与原理..........................................31.1BRAS功能概述..........................................................................................................31.2BRAS系统内部组成与原理...........................................................................................3第2章PPP、PPPOE原理及应用.............................52.1PPP简介....................................................................................................................52.1.1PPP的引入........................................................................................................52.1.2PPP的简介........................................................................................................52.1.3PPP的基本构架................................................................................................62.1.4PPP报文格式....................................................................................................62.2PPP原理及应用........................................................................................................92.2.1PPP的协商过程................................................................................................92.2.2PPP的PAP验证协议....................................................................................122.2.3PPP的CHAP验证协议................................................................................152.2.4PPP的报文压缩..............................................................................................182.3PPPOE简介.............................................................................................................192.3.1PPPoE的引入..................................................................................................192.3.2PPPoE简介.....................................................................................................192.4PPPoE原理及应用..................................................................................................192.4.1PPPoE的数据帧.............................................................................................192.4.2Discovery阶段.............................................................................................202.4.3PPP会话阶段..................................................................................................262.4.4PPPoE的应用.................................................................................................27第1章BRAS功能与原理1.1BRAS功能概述宽带接入服务器(BRAS)是一种面向宽带网络应用的新型接入网关。它是宽带接入网和骨干网之间的桥梁,提供基本的接入手段和宽带接入网的管理功能。它位于网络的边缘,提供宽带接入服务、实现多种业务的汇聚与转发,能满足不同用户对传输容量和带宽利用率的要求,因此是宽带用户接入的核心设备。BRAS主要完成两方面功能,一是网络承载功能:负责终结用户的PPPoE(Point-to-PointProtocolOverEthernet,是一种以太网上传送PPP会话的方式)连接、汇聚用户的流量功能;二是控制实现功能:与认证系统、计费系统和客户管理系统及服务策略控制系统相配合实现用户接入的认证、计费和管理功能。1.2BRAS系统内部组成与原理BRAS主要由以下模块组成:交换网络/时钟模块(主要包括交换网络单元和线路时钟单元)、线路接口及处理模块(主要包括FE/GE、ATM和POS等种类端口)、主控模块、业务处理模块、高速背板,整个系统的内部功能模块组成与相互关系框图如下图所示:从图中可以看到,交换网络单元采用双平面结构,两交换平面同时工作,所有与交换网络单元连接的功能模块(主控模块、线路接口模块、业务处理模块)同时输出两路待交换的定长数据包上交换网络的两个平面,经交换网络交换后的数据包分别送往相应功能模块,由该功能模块的板上逻辑决定采用哪个平面的输入数据。BRAS设备逻辑上具体可以分为如下几个部分:\uf0d8交换网络/时钟模块\uf0d8主控模块\uf0d8线路接口及处理模块\uf0d8业务处理模块\uf0d8高速背板模块各模块具体功能如下:1、交换网络/时钟模块交换网络/时钟模块包含了交换网络和时钟两个子模块,共同集成于NET板中,主要完成定长数据包交换和向系统提供同步的线路时钟,其中交换网络单元采用双平面结构,线路时钟单元采用主从同步的双平面方式工作。整机一般需要配置两块NET板,以双平面形式工作,两块NET板各自接收同样的输入并各自分别输出结果,接收该信号的单板根据当前状况或系统需要对两工作平面输出的信号进行选择,以获得更良好的信号保证。2、主控模块模块完成系统配置、状态监视、计费代理、检测功能、倒换控制、呼叫处理和路由协议处理等功能。3、线路接口及处理模块包含输入/输出接口单元(I/O)和线路处理单元两部分。线路接口及处理模块提供基本的业务处理能力,IP业务流业务的接入,并带有分布转发功能,此外还可处理PPPoE、PPPoA、IPoA、VLAN等业务流,分为LPUx(包括LPUA、LPUB、LPUC和LPUD)和LPUH两种,LPUx提供纯粹的线路接口及处理功能,LPUH还能提供基本BAS功能。线路接口模块分为ATM线路接口模块与帧线路接口模块两种:ATM线路接口模块主要提供各种ATM特性接口和ATM业务引擎,完成ATM物理层和ATM层的主要功能,并根据链路信息对用户数据流进行处理和排队工作。帧线路接口模块主要负责IP业务的接入,具有分布转发功能,并向用户提供各种物理层和二层接口。线路接口模块由I/O扣板提供,通过选择不同的扣板,可以配置上不同的接口,如FE接口、GE接口、ATM接口、POS接口。4、业务处理模块业务处理板可以加载不同的软件来分别完成BAS、PORTAL和NAT功能,处理能力强大。业务处理相对接口数据,属于资源共享或分布式业务处理,当采用资源共享方式时相对接口的数据处理就可动态分配,线路接口升级灵活。5、高速背板模块提供了各单板高速信号线和控制线的互联通道。第2章PPP、PPPOE原理及应用2.1PPP简介2.1.1PPP的引入PPP(Point-to-PointProtocol)是一种点到点方式的链路层协议,是在SLIP协议的基础上发展起来的。1、SLIP协议的基本概念串行线IP协议(SerialLineIP)协议出现在80年代中期,它是一种在串行线路上封装IP包的简单形式,它并不是Internet的标准协议。因为SLIP简单好用,所以后来被大量使用在线路速率从1200bit/s到19.2Kbit/s的专用线路和拨号线路上,互连主机和路由器。并被使用在BSDUNIX主机和SUN的工作站上,到目前为止仍有部分UNIX主机支持该协议。在80年代末90年代初期,SLIP被广泛用于家庭计算机和Internet的连接。一般这些计算机都用RS232串口和调制解调器连接到Internet。SLIP的帧格式由IP包加上END字符组成。通过在被发送IP数据报的尾部增加特殊的END字符(0xC0)从而形成一个简单的SLIP的数据帧,而后该帧会被传送到物理层进行发送。END是判断一个SLIP帧结束的标志。2、SLIP帧格式IPPacketsEND(0xC0)为了防止线路噪声被当成数据报的内容在线路上传输,通常发送端在被传送数据报的开始处也传一个END字符。如果线路上的确存在噪声,则该数据报起始位置的END字符将结束这份错误的报文。这样当前正确的数据报文就能正确的传送了,而前一个含有无意义报文的数据帧会在对端的高层被丢弃,不会影响下一个数据报文的传送。3、SLIP协议的缺点SLIP只支持IP网络层协议,不支持IPX等网络层协议。并且,因为帧格式中没有类型字段,致使如果一条串行线路如果用于SLIP,那么在网络层只能使用一种协议。SLIP不提供纠错机制,错误只能依靠对端的上层协议实现。由于SLIP协议只支持异步传输方式、无协商过程(尤其不能协商如双方IP地址等网络层属性)等缺陷,在以后的发展过程中,逐步被PPP协议所替代。2.1.2PPP的简介点到点的直接连接是广域网连接的一种比较简单的形式,点到点连接的线路上链路层封装的协议主要有PPP和HDLC。但是HDLC协议只支持同步方式,而PPP协议支持同、异步两种传输方式,因此得到广泛的应用。从1994年至今,PPP协议本身并没有太大的改变,但由于PPP协议所具有的其他链路层协议所无法比拟的特性,它得到了越来越广泛的应用,其扩展支持协议也层出不穷,随之而来的是PPP协议功能的逐步强大。PPP协议是一种在点到点链路上传输、封装网络层数据包的数据链路层协议。PPP协议处于OSI(OpenSystemsInterconnection)参考模型的数据链路层,同时也处于TCP/IP协议栈的链路层,主要用在支持全双工的同异步链路上,进行点到点之间的数据传输。2.1.3PPP的基本构架1、PPP在协议栈中的位置SNMPTELNETFTPRADIOUSSOCKETTCPUDPICMPIPARPPPPPhysicalLayer2、PPP主要由三类协议组成:\uf0d8链路控制协议族(LinkControlProtocol),主要用来建立、拆除和监控PPP数据链路。\uf0d8网络层控制协议族(NetworkControlProtocol),主要用来协商在该数据链路上所传输的数据包的格式与类型。\uf0d8PPP扩展协议族(如PPPoE)主要用于提供对PPP功能的进一步支持。随着网络技术的不断发展,网络带宽已不再是瓶颈,所以PPP扩展协议的应用也就越来越少了。人们在叙述PPP协议的时候经常会忘记它的存在。同时,PPP还提供了用于网络安全方面的验证协议族(PAP和CHAP)。2.1.4PPP报文格式1、PPP报文格式PPP报文封装格式LCP报文封装格式LCP报文配置参数选项的封装格式Flag01111110Address11111111Control00000011Protocol8/16bitsInformationFCS16bitsFlag01111110Code8bitsIdentifier8bitsLength16bitsData……Type8bitsLength8bitsData……Type8bitsLength8bitsData…………2、PPP报文封装的帧格式真正属于PPP报文内容的是Address、Control、Protocol、Information域所包含内容。各字段的含义如下。\uf0d8Flag域:Flag域标识了一个物理帧的起始和结束,该字节为0x7E。\uf0d8Address域:Address域是“11111111”表示此为PPP广播地址。PPP协议是被运用在点对点的链路上,它可以唯一标识对方。因此使用PPP协议互连的通信设备的两端无须知道对方的数据链路层地址。所以该字节已无任何意义,按照协议的规定将该字节填充为全1的广播地址。\uf0d8Control域:同Address域一样,PPP数据帧的Control域也没有实际意义,按照协议的规定通信双方将该字节的内容填充为0x03。Address、Control域一起表示了此报文为PPP报文,即PPP报文头为FF03。\uf0d8Protocol域:协议域可用来区分PPP数据帧中信息域所承载的数据报文的内容。协议域的内容必须依据ISO3309的地址扩展机制所给出的规定。该机制规定协议域所填充的内容必须为奇数,也就是要求低字节的最低位为“1”,高字节的最低位为“0”。如果当发送端发送的PPP数据帧的协议域字段不符合上述规定,则接收端会认为此数据帧是不可识别的。接收端会向发送端发送一个Protocol-Reject报文,在该报文尾部将完整地填充被拒绝的报文。\uf0d8Information域:信息域缺省时最大长度不能超过1500字节,其中包括填充域的内容。1500字节大小等于PPP协议中配置参数选项MRU(MaximumReceiveUnit)的缺省值。在实际应用当中可根据实际需要进行信息域最大封装长度选项的协商。信息域如果不足1500字节时可被填充,但不是必须的。如果填充则需通信双方的两端能辨认出有用与无用的信息方可正常通信。通常在通信设备的配置过程中,经常使用MTU(MaximumTransmitUnit)。对于一个设备而言,它网络的层次均使用MTU和MRU两个值,本端MTU会和对端MRU进行比较,取较小值赋予本端MTU。\uf0d8FCS域:校验域主要是对PPP数据帧传输的正确性进行检测。在数据帧中引入了一些传输的保证机制,会引入更多的开销,这样可能会增加应用层交互的延迟。\uf0d8LCP报文封装格式:LCP数据报文是在链路建立阶段被交换的。此时它作为PPP的净载荷被封装在PPP数据帧的信息域中,PPP数据帧的协议域固定填充0xC021。在链路建立阶段的整个过程中信息域的内容是变化的,它包括很多种类型的报文,所以这些报文也要通过相应的字段来区分。\uf0d8Code域:代码域表明了此报文是哪种PPP协商报文。代码域的长度为一个字节,主要是用来标识LCP数据报文的类型。在链路建立阶段时,接收方收到LCP数据报文的代码域无法识别时,就会向对端发送一个LCP的代码拒绝报文(Code-Reject报文)。如果是IP报文,则不存在此域,取而代之的是IP报文数据内容。\uf0d8Identifier域:标识域用于进行协商报文的匹配。标识域也是一个字节,其目的是用来匹配请求和响应报文。一般而言,在进入链路建立阶段时,通信双方任何一端都会连续发送几个配置请求报文(Config-Request报文)。这几个请求报文的数据域可能是完全一样的,仅仅是它们的标志域不同。通常一个配置请求报文的ID是从0x01开始逐步加1的。当对端接收到该配置请求报文后,无论使用何种报文回应对方,但必须要求回应报文中的ID要与接收报文中的ID一致。当通信设备收到回应后就可以将该回应与发送时的进行比较来决定下一步的操作。\uf0d8Length域:长度域表示此协商报文长度,它包含Code域及Identifier域的长度。长度域的值就是该LCP报文的总字节数据。它是代码域、标志域、长度域和数据域四个域长度的总和。长度域所指示字节数之外的字节将被当作填充字节而忽略掉,而且该域的内容不能超过MRU的值。\uf0d8Data域:数据域所包含的是协商报文的内容。Type为协商选项类型。Length为协商选项长度,它包含Type域。Data域为协商的选项具体内容。表:常见的协议代码协议代码协议类型0021InternetProtocol002bNovellIPX002dVanJacobsonCompressedTCP/IP002fVanJacobsonUncompressedTCP/IP8021InternetProtocolControlProtocol802bNovellIPXControlProtocol8031BridgingNCC021LinkControlProtocolC023PasswordAuthenticationProtocolC223ChallengeHandshakeAuthenticationProtocol表:常用code值code值报文类型0x01Configure-Request0x02Configure-Ackcode值报文类型0x03Configure-Nak0x04Configure-Reject0x05Terminate-Request0x06Terminate-Ack0x07Code-Reject0x08Protocol-Reject0x09Echo-Request0x0AEcho-Reply0x0BDiscard-Request0x0CReserved表:常用协商类型值协商类型值协商报文类型0x01Maximum-Receive-Unit0x02Async-Control-Character-Map0x03Authentication-Protocol0x04Quality-Protocol0x05Magic-Number0x06RESERVED0x07Protocol-Field-Compression0x08Address-and-Control-Field-Compression2.2PPP原理及应用2.2.1PPP的协商过程PPP链路的建立是通过一系列的协商完成的。LCP除了用于建立、拆除和监控PPP数据链路,还主要进行链路层参数的协商,如MRU、验证方式。NCP主要用于协商在该数据链路上所传输的数据包的格式与类型,如IP地址。数据通信设备的两端如果希望通过PPP协议建立点对点的通信,无论哪一端的设备都需发送LCP数据报文来建立链路。LCP的配置参数选项协商完后,通信的双方就会根据LCP配置请求报文中所协商的认证配置参数选项,决定链路两端设备所采用的认证方式。协议缺省情况下双方是不进行认证的,直接进入到NCP配置参数选项的协商。直至所经历的几个配置过程全部完成后,点对点的双方就可以开始通过已建立好的链路进行网络层数据报文的传送了,整个链路就处于可用状态。任何一端收到LCP或NCP的链路关闭报文,物理层无法检测到载波或管理人员对该链路进行关闭操作,都会将该条链路断开,从而终止PPP会话。一般而言,协议是不要求NCP有关闭链路的能力的,因此通常情况下关闭链路的数据报文是在LCP协商阶段或应用程序会话阶段发出的。下图是PPP协议整个链路过程需经历阶段的状态转移图:DeadEstablishAuthenticateTerminateNetworkUPOPENEDFAILFAILDOWNCLOSINGSUCCESS/NONEPPP运行的过程简单描述如下。\uf0d8开始建立PPP链路时,先进入到Establish阶段。\uf0d8在Establish阶段,PPP链路进行LCP协商。协商内容包括工作方式是SP(Single-linkPPP)\uf0d8还是MP(MultilinkPPP)、最大接收单元MRU、验证方式、魔术字(magicnumber)和异步字符映射等选项。LCP协商成功后进入Opened状态,表示底层链路已经建立。\uf0d8如果配置了验证,将进入Authenticate阶段,开始CHAP或PAP验证。如果没有配置验证,则直接进入NCP协商阶段。\uf0d8对于Authenticate阶段,如果验证失败,进入Terminate阶段,拆除链路,LCP状态转为Down。\uf0d8如果验证成功,进入NCP协商阶段,此时LCP状态仍为Opened,而NCP状态从Initial转到Request。NCP协商支持IPCP、MPLSCP、OSCICP等协商。IPCP协商主要包括双方的IP地址。通过NCP协商来选择和配置一个网络层协议。只有相应的网络层协议协商成功后,该网络层协议才可以通过这条PPP链路发送报文。\uf0d8PPP链路将一直保持通信,直至有明确的LCP或NCP帧关闭这条链路,或发生了某些外部事件,例如用户干预。在点对点链路的配置、维护和终止过程中,PPP需经历以下几个阶段:(1)链路不可用阶段(Dead)它有时也称为物理层不可用阶段。PPP链路都需从这个阶段开始和结束。当通信双方的两端检测到物理线路激活(通常是检测到链路上有载波信号)时,就会从当前这个阶段跃迁至下一个阶段,即链路建立阶段。在链路建立阶段主要是通过LCP协议进行链路参数的配置,LCP在此阶段的状态机也会根据不同的事件发生变化。当处于在链路不可用阶段时,LCP的状态机是处于初始化Initial状态或准备启动Starting状态,一旦检测到物理线路可用,则LCP的状态机就要发生改变。当然链路被断开后也同样会返回到链路不可用阶段。在实际过程中这个阶段所停留的时间是很短的,仅仅是检测到对方设备的存在。(2)链路建立阶段(Establish)它是PPP协议最关键和最复杂的阶段。该阶段主要是发送一些配置报文来配置数据链路,这些配置的参数不包括网络层协议所需的参数。当完成数据报文的交换后,则会继续向下一个阶段跃迁。下一个阶段既可是验证阶段,也可是网络层协议阶段。下一阶段的选择是依据链路两端的设备配置的。通常是由用户来配置。在链路建立阶段,LCP的状态机会发生两次改变。当链路处于不可用阶段时,此时LCP的状态机处于Initial或Starting。当检测到链路可用时,则物理层会向链路层发送一个Up事件。链路层收到该事件后,会将LCP的状态机从当前状态改变为Request-Sent(请求发送状态),根据此时的状态机LCP会进行相应的动作,也就是开始发送Config-Request报文来配置数据链路。无论哪一端接收到了Config-Ack报文时,LCP的状态机又要发生改变,从当前状态改变为opened状态。进入Opened状态后收到Config-Ack报文的一方则完成了当前阶段,应该向下一个阶段跃迁。同理可知,另一端也是一样的,但须注意的是在链路配置阶段双方的链路配置操作过程是相互独立的。如果在该阶段收到了非LCP数据报文,则会将这些报文丢弃。(3)验证阶段(Authenticate)多数情况下的链路两端设备是需要经过认证后才进入到网络层协议阶段。PPP链路缺省情况下,不进行验证。如果要求验证,在链路建立阶段必须指定验证协议。PPP验证有两种用途:\uf0d8主要是用于主机和路由器之间,通过PPP网络服务器交换电路或拨号接入连接的链路。\uf0d8偶尔也用于专用线路。PPP提供两种验证方式。\uf0d8PAP:PasswordAuthenticationProtocol,密码验证协议\uf0d8CHAP:Challenge-HandshakeAuthenticationProtocol,挑战握手协议验证方式的选择是依据在链路建立阶段双方进行协商的结果。然而,链路质量的检测也会在这个阶段同时发生,但协议规定不会让链路质量的检测无限制的延迟验证过程。在这个阶段仅支持链路控制协议、验证协议和质量检测数据报文,其它的数据报文都会被丢弃。如果在这个阶段再次收到了Config-Request报文,则又会返回到链路建立阶段。(4)网络层协议阶段(Network)一旦PPP完成了前面几个阶段,每种网络层协议(IP、IPX和AppleTalk)会通过各自相应的网络控制协议进行配置,每个NCP协议可在任何时间打开和关闭。当一个NCP的状态机变成Opened状态时,则PPP就可以开始在链路上承载网络层的数据包报文了。如果在个阶段收到了Config-Request报文,则又会返回到链路建立阶段。(5)网络终止阶段(Terminate)PPP能在任何时候终止链路。当载波丢失、认证失败、链路质量检测失败和管理员人为关闭链路等情况均会导致链路终止。链路建立阶段可能通过交换LCP的链路终止报文来关闭链路,当链路关闭时,链路层会通知网络层做相应的操作,而且也会通过物理层强制关断链路。对于NCP协议,它是不能也没有必要去关闭PPP链路的。2.2.2PPP的PAP验证协议PAP验证协议为两次握手验证,口令为明文。验证过程仅在链路初始建立阶段进行。当链路建立阶段结束后,用户名和密码将由被验证方重复地在链路上发送给验证方,直到验证被通过或者链路连接终止。当必须使用明文密码在远端主机上模拟登录的时候,这种验证方式是最合适的。\uf06ePAP验证的过程如下图所示。验证方被验证方我的用户名和密码分别是……我已经在我的用户列表里找到了你的用户名和密码,完全正确,认证通过!对不起,你的用户名或密码不正确,认证失败!Authenticate-RequestAuthenticate-AckAuthenticate-Nak\uf0d8被验证方发送本端用户名和口令到验证方。\uf0d8验证方根据本地用户表查看是否有被验证方的用户名以及口令是否正确,然后返回不同的响应(接受或拒绝)。PAP不是一种安全的验证协议。当验证时,口令以明文方式在链路上发送,并且由于完成PPP链路建立后,被验证方会不停地在链路上反复发送用户名和口令,直到身份验证过程结束,所以不能防止攻击。协商PAP验证协议的配置参数选项帧格式如下图所示。TypeLengthAuthentication-Protocol071531各字段的含义如下表所示。字段长度(字节)含义Type1当值是0x03时表示是验证协议。常用的协商类型值请参见表:常用协商类型值。Length1此时固定值是4,表示这个配置参数选项帧格式总长度是4个字节。Authentication-Protocol2当值是0xC023表示是PAP协议。常用的协议代码请参见表:常见的协议代码。在验证协议中,Data字段的内容就是Authentication-Protocol的内容。一个PAP数据报是封装在协议域为C023的PPP数据链路层帧的信息域中的。PAP数据报的帧格式如下图所示。CodeIdentifierLength071531Data各字段的含义如下表所示。字段长度(字节)含义Code1标识PAP数据报的类型。1表示是Authenticate-Request报文2表示是Authenticate-Ack报文3表示是Authenticate-Nak报文Identifier1标识请求报文和应答报文的匹配。Length2表示包括Code、Identifier、Length和Data域在内的PAP报文长度。超出此长度的报文将被认为是填充字节并被丢弃。Data0或多个字节Data域的帧由Code域来决定。验证-请求报文用于表示PAP验证的开始。链路的被验证方在验证阶段必须传输code值为0x01的PAP验证报文。验证报文必须被重复发送,直到收到了有效的回复报文,或计数器的值已满,此时应该终止链路连接。验证方只能等待被验证方发送验证-请求报文。当收到验证-请求报文后,必须根据实际情况回复不同的应答报文。验证-请求报文的帧格式如下图所示。CodeIdentifierLengthPeer-IDLengthPeer-IDPasswordLengthPassword071531各字段的解释如下表所示。字段长度(字节)含义Code10x01表示验证-请求报文。具体的code值含义请参见Error:Referencesourcenotfound。Identifier1标识请求报文和应答报文的匹配。对于每个请求报文的应答报文,该域都必须不同。Length2表示该报文的总长度。Peer-IDLength1标识Peer-ID域的长度。Peer-ID0或多个标识被验证方的名字。PasswordLength1标识Password域的长度。Password0或多个标识被验证的密码。如果在验证-请求报文中的用户名和密码都能被验证方验证通过,验证方必须返回Code值是2的Authenticate-Ack报文,表示验证通过。如果验证-请求报文中用户名或密码有一项没有通过验证,验证方必须返回Code值是3的Authenticate-Nak报文,表示验证失败。Authenticate-Ack和Authenticate-Nak报文的帧格式如下图所示。CodeIdentifierLengthMessageLengthMessage071531各字段的含义如下表所示。字段长度(字节)含义Code10x02表示Authenticate-Ack报文,0x03表示Authenticate-Nak报文。具体的code值含义请参见Error:Referencesourcenotfound。Identifier1标识请求报文和应答报文的匹配。该域的值必须和引起该应答报文的Authenticate-Request报文一样。Length2表示该报文的总长度。MessageLength1标识Message域的长度。Message0或多个由报文的内容决定。2.2.3PPP的CHAP验证协议CHAP(ChallengeHandshakeAuthenticationProtocol)验证协议为三次握手验证协议。它只在网络上传输用户名,而并不传输用户密码,因此安全性要比PAP高。CHAP协议是在链路建立的开始就完成的。在链路建立完成后的任何时间都可以重复发送进行再验证。当链路建立阶段完成后,验证方发送一个“challenge”报文给被验证方。被验证方经过一次哈希算法后,给验证方返回一个值。验证方把自己经过哈希算法生成的值和被验证方返回的值进行比较。如果两者匹配,那么验证通过。否则验证不通过,连接应该被终止。\uf06eCHAP的验证过程如下图所示。验证方被验证方我的用户名和加密报文分别是……我的用户名(可选)和随机报文分别是……比较结果一致,认证通过ChallengeResponseSuccess比较结果不一致,认证失败FailureCHAP单向验证是指一端作为验证方,另一端作为被验证方。双向验证是单向验证的简单叠加,即两端都是既作为验证方又作为被验证方。在实际应用中一般只采用单向验证。CHAP单向验证过程分为两种情况:验证方配置了用户名和验证方没有配置用户名。推荐使用验证方配置用户名的方式,这样可以对验证方的用户名进行确认。验证方配置了用户名的验证过程验证方把随机产生的“质询(Challenge)”报文和本端主机名一起发送给被验证方。被验证方收到报文后,根据验证方的用户名在本地用户列表中查找本地口令。根据查找到的口令和质询报文,通过MD5算法进行计算得出一个数值,并将计算得出的数值和自己的主机名发回验证方(Response)。验证方收到Response后,根据其中携带的被验证方主机名,在本端用户表中查找被验证方口令字,找到匹配项后,利用质询报文和被验证方口令字,通过MD5算法进行计算得出一个数值,根据此数值与收到的Response的结果进行比较,然后返回不同的响应(接受或拒绝)。验证方没有配置用户名时,验证方只把“质询”报文发送到被验证方。被验证方直接根据本地接口设置的口令和质询报文通过MD5算法计算得出一个数值,并将计算得出的数值和自己的主机名发回验证方。其他过程和验证方配置了用户名时相同。协商CHAP协议的配置参数选项帧格式如下图所示。TypeLengthAuthentication-Protocol071531Algorithm各字段含义如下表所示。字段长度(字节)含义Type10x03表示是验证协议报文。具体值含义请参见表:常用协商类型值。Length1此时固定是5,表示该报文的总长度是5个字节。Authentication-Protocol2当值是0xC223时表示是CHAP验证协议。具体值的含义请参见Error:Referencesourcenotfound。Algorithm1表示使用的一次哈希方法。0~4:不用,保留5:MD5算法\uf06eCHAP数据报的帧格式确切来讲,CHAP报文是封装在PPP数据链路层的Information域的。在Information域中protocol域的值固定是0xC223,表示CHAP验证协议。CHAP协议数据报格式如下图所示。CodeIdentifierLength071531Data各字段含义如下表所示。字段长度(字节)含义Code1表示CHAP数据报文的类型。1表示Challenge报文2表示Response报文3表示Success报文4表示Failure报文Identifier1表示挑战报文、应答报文等之间的对应。Length2表示包括Code、Identifier、Length和Data域在内的CHAP数据报文的长度。超出该长度值的字节应该被认为是数据链路层的填充字节,在接收时应该被忽略。Data0或多个帧格式由Code域值决定。\uf06eChallenge报文和Response报文Challenge报文用来发起CHAP验证。验证方必须发送一个Code域值是1的CHAP数据报文,来表示是Challenge报文。其他附加挑战报文必须在收到有效的回应报文或计数器满后才可以发送。挑战报文也可以在网络层协议阶段发送,以确认连接是否完整。在验证阶段和网络层协议阶段,被验证方要等待验证方发送Challenge报文。只要接收到Challenge报文,被验证方必须返回一个Code域值是2的CHAP报文,表示是回应报文。只要接收到回应报文,验证方就会把自己计算的值和返回值进行比较。根据比较的结果,验证方返回不同的回应报文。挑战和回应报文的帧格式如下图所示。CodeIdentifierLengthValue-sizeValue071531Name各字段的含义如下表所示。字段长度(字节)含义Code11表示是Challenge报文2表示是回应报文Identifier1它标识挑战报文和回应报文的对应关系。Length2表示该报文的总长度。Value-size1表示Value域的长度。Value1或多个挑战报文中此域是一些字节流。回应报文中此域是挑战报文字节流经过一次哈希算法后得到的值。Name1或多个该域的大小由Length域决定。\uf06eSuccess报文和Failure报文如果验证方接收到的值和自己计算的值相同,验证方必须要返回一个Code域值是3的CHAP报文,表示验证通过。如果验证方接收到的值和自己计算出的值不同,验证方必须返回一个Code域值是4的CHAP报文,表示验证失败。并且应该终止链路连接。验证通过或验证失败时的报文格式如下图所示。CodeIdentifierLengthMessage071531各字段的含义如下表所示。字段长度(字节)含义Code13表示验证通过4表示验证失败Identifier1表示回应报文和该响应报文的对应关系。Length2表示该报文的总长度。Message0或多个该域的长度由Length域的值决定。2.2.4PPP的报文压缩PPP链路层协议上的对IP、UDP、RTP和TCP报文头的压缩,压缩方式有如下三种:Stac压缩:需要协商CCP,是对IP整个报文的压缩。TCP/IP报文头压缩:需要IPCP协商,只压缩报文头的部分。PPP头压缩:只压缩PPP报文头部分。VJTCP头压缩是一种压缩算法,英文全称是VanJacobsonTCPHeaderCompression。这种压缩算法能够将TCP/IP包头的大小减小到近3个字节,从而提高低速线路的效率。。2.3PPPOE简介2.3.1PPPoE的引入当客户接入到服务器时,客户希望接入的成本低,而且希望在接入时不要或者很少改变配置。以太网无疑是最好的组网方式。服务提供商想通过同一个接入服务器连接到远程站点上的多个主机,同时要求服务器能提供与使用PPP拨号上网类似的访问控制功能和支付功能。PPP(Point-to-Point)协议提供在点到点链路上传送多协议数据报的标准方法。PPP应用虽然很广泛,但是不能用于以太网,因此提出了PPPoE技术。PPPoE是对PPP的扩展,它可以使PPP协议应用于以太网。PPPoE提供通过简单桥接的接入服务器把一个网络的多个主机连接到远程接入服务器的功能。2.3.2PPPoE简介PPPoE描述在以太网上建立PPP会话以及封装PPP数据报的方法。这些功能要求在通信双方之间存在点到点的关系,而不是在以太网和其他多访问环境中所出现的多点关系使用该模型,每一个主机使用自己的PPP协议栈,呈现给用户的还是熟悉的用户接口。访问控制、支付以及服务类型(TypeofService)都能基于每一个用户,而不是基于站点。为了提供以太网上的点到点连接,每一个PPP会话必须知道远程通信对方的以太网地址,并建立一个唯一的会话标识符。PPPoE包含一个发现协议来提供这个功能。PPPoE分为两个阶段,即地址发现(Discovery)阶段和PPP会话(PPPSession)阶段。当某个主机希望发起一个PPPoE会话时,它必须首先执行Discovery来确定对方的以太网MAC地址并建立起一个PPPoE会话标识符Session_ID。虽然PPP定义的是端到端的对等关系,Discovery却是一种客户端-服务器关系。在Discovery的过程中,主机作为客户端,发现某个作为服务器的接入访问集中器AC(AccessConcentrator)。根据网络的拓扑结构,可能主机能够跟不止一个的访问集中器通信。Discovery阶段允许主机发现所有的访问集中器并从中选择一个。当Discovery阶段成功完成之后,主机和访问集中器两者都具备了在以太网上建立点到点连接所需的所有信息。Discovery阶段一直保持无状态(stateless),直到建立起一个PPP会话。一旦PPP会话建立,主机和作为接入服务器的访问集中器都必须为一个PPP虚拟接口分配资源。PPP会话建立成功后,主机和接入服务器便可以通信了。2.4PPPoE原理及应用2.4.1PPPoE的数据帧1、以太网的帧格式RFC2516定义了以太网的帧格式如下图所示。Destination_address(6bytes)Source_address(6bytes)Ethernet_Type(2bytes)PayloadCheckSum图:以太网的帧格式各域的含义如下:\uf0d8Destination_address:一个以太网单播目的地址或者以太网广播地址(0xFFFFFFFF)。对于Discovery数据包来说,该域的值是在Discovery阶段定义的单播地址或者多播地址。对于PPP会话流量来说,该域必须是Discovery阶段已确定的通信对方的单播地址。\uf0d8Source_address:是源设备的以太网MAC地址。\uf0d8Ethernet_Type:设置为0x8863表示Discovery阶段,0x8864表示PPP会话阶段。2、以太网Payload报文格式PPPoE的以太网Payload报文如图所示:VERTypeCodeSession_IDLengthPayload0371531各域含义如下:\uf0d8VER域的长度是4比特,PPPoE规范的本版本必须设置为0x01。\uf0d8Type域的长度是4比特,PPPoE规范的本版本必须设置为0x01。\uf0d8Code域的长度是8比特,其定义在后面的Discovery和PPP会话中分别指定。\uf0d8Session_ID域的长度是16比特,是一个网络字节序的无符号值。其值在后面Discovery数据包中定义。对一个给定的PPP会话来说该值是一个固定值,并且与以太网Source_address和Destination_address一起实际地定义了一个PPP会话。值0xFFFF为将来的使用保留,不允许使用。\uf0d8Length域的长度是16比特。该值表明了PPPoE的Payload长度。它不包括以太网头部和PPPoE头部的长度。\uf0d8Checksun域是校验和字段。2.4.2Discovery阶段当主机开始PPPoE进程时,它必须先识别接入端的以太网MAC地址,建立PPPoE的Session_ID。这就是Discovery阶段的目的。1、Discovery阶段简介Discovery阶段由四个步骤组成。完成之后通信双方都知道了PPPoESession_ID以及对方以太网地址,它们共同确定了唯一的PPPoE会话。(1)主机以广播形式发送PADI报文PADIPADIPADIPADIPCServerAServerBServerC说明•如果在PPPoE的服务器端配置service-name,client将发送Discovery阶段的PADI报文给服务器端请求建立连接。•如果该PADI报文中包含有不为空的service-name时,服务器端将用配置的service-name和该报文中的service-name进行完全匹配性检测。如果两者完全相同,服务器端提供后续服务,否则,服务器端不提供服务。•以上是两者的service-name都不为空时的情况。但如果两者中有一个service-name为空,就不进行此项检测,直接按照原来的程序执行。以太网内的所有服务器收到这个PADI报文后,将其中请求的服务与自己能提供的服务进行比较,可以提供此服务的服务器发回PADO(PPPoEActiveDiscoveryOffer)报文。如中,ServerA和ServerB都可以提供服务,所以都会向主机发回PADO报文。(2)服务器发回PADO报文PADO-APADO-APADO-BPCServerAServerBServerCPADO-B主机可能收到多个服务器的PADO报文,主机将依据PADO的内容,从多个服务器中选择一个,并向它发回一个会话请求报文PADR(PPPoEActiveDiscoveryRequest)。(3)主机选择ServerA,并发回PADR报文。PADRPADRPCServerAServerBServerC(4)服务器产生唯一的会话标识,标识和主机的这段PPPoE会话。并把此会话标识通过会话确认报文PADS(PPPoEActiveDiscoverySession-confirmation)发回给主机,如果没有错误,双方进入PPPSession阶段。例如在图中,ServerA收到PADR报文后,会向主机发送PADS报文。PADSPADSPCServerAServerBServerC接入服务器发送确认数据包后,它就可以进入到PPP会话阶段。当主机接收到该确认数据包后,它就可以进入PPP会话阶段。Discovery阶段所有的以太网帧的Ethernet_Type域都设置为0x8863。PPPoE的Payload部分包含0个或多个Tag。一个Tag是一个TLV(Type-Length-Value)结构,其帧结构定义如图所示。Tag_TypeTag_LengthTag_Value......01531\uf06e各域的含义如下:Tag_Type域的长度是16比特,也就是网络字节序。图列出了各种Tag_Type和Tag_Value的对应关系和含义。Tag_ValueTag_Type含义0x0000End-Of-List该Tag值表明表中是最后一个Tag。该Tag的Tag_Length必须总是0。不要求使用该标签,它是为了向后兼容。0x0101Service-Name该Tag表明后面紧跟的是服务的名称。Tag_Value是不以NULL结束的字符串。当Tag_Length为0时,该TAG用于表明接受任何服务。使用Service-Name标签的例子是表明Internet服务提供商ISP或者一类服务或者服务的质量。0x0102AC-Name该Tag表明后面紧跟的字符串唯一地表示了某个特定的接入服务器。它可以是商标、型号以及序列号等信息的集合,或者该接入服务器MAC地址的一个简单表示。它不以NULL来结束。Tag_ValueTag_Type含义0x0103Host-Uniq该Tag由主机用于把接入服务器的响应报文(PADO或者PADS)与主机的某个唯一特定的请求联系起来。Tag_Value是主机选择的长度和值,可以是任意的二进制数据。它不能由接入服务器解释。主机可以在PADI或者PADR中包含一个Host-Uniq标签。如果接入服务器收到了该标签,它必须在对应的PADO或者PADS中不加改变的包含该标签。0x0104AC-Cookie该Tag由接入服务器用于防止服务攻击。接入服务器可以在PADO数据包中包含该Tag。如果主机收到了该标签,它必须在接下来的PADR中不加改变的包含该标签。Tag_Value的长度和值都是任意的二进制数据。0x0105Vendor-Specific该Tag用来传送厂商自定义的信息。Tag_Value的前4个字节包含了厂商的识别码,其余字节尚未定义。厂商识别码的高字节为0,低3个字节为网络字节序的厂商的SMI网络管理专用企业码。不推荐使用该Tag。为了确保互操作性,在实现过程中,可以悄悄的忽略Vendor-SpecificTag。0x0110Relay-Session-Id该Tag可由中继流量的中间代理加入到Discovery数据包中。Tag_Value对主机和接入服务器都是不透明。如果主机或接入服务器收到该Tag,则它们必须在所有的Discovery数据包中包含该Tag以作为响应。所有的PADI数据包必须保证足够空间来加入Tag_Value长度为12字节的Relay-Session-Id标签。如果Discovery数据包中已经包含一个Relay-Session-Id标签,则不允许再加入该标签。这种情况下,中间代理应该使用该现有的Relay-Session-Id标签。如果它不能使用现有的标签,或者没有足够空间来增加一个Relay-Session-Id标签,那么它应该向发送者返回一个Generic-Error标签。Tag_ValueTag_Type含义0x0201Service-Name-Error该Tag典型的有一个长度为零的数据部分。它表明了由于某种原因,没有理睬所请求的Service-Name。如果有数据部分,并且数据部分的头一个字节非0,那么它必须是一个可打印字符串,解释请求被拒绝的原因。该字符串可以不以NULL结束。0x0202AC-System-Error该Tag表明了接入服务器在处理主机请求时出现了某个错误。例如没有足够资源来创建一个虚拟电路。PADS数据包中可以包含该标签。如果有数据,并且数据的第一个字节不为0,那么数据必须是一个可打印字符串,该字符串解释了错误的性质。该字符串可以不以NULL结束。0x0203Generic-Error该Tag表明发生了一个错误。当发生一个不可恢复的错误并且没有其它合适的Tag时,它可被加到PADO、PADR或PADS数据包中。如果出现数据部分,那么数据必须是一个解释错误性质的字符串。该字符串不允许以NULL结束。Tag_Length域的长度是16比特,是一个网络字节序的无符号值,表明Tag_Value的字节数。如果收到的Discovery数据包中包含未知的Tag_Type,则必须忽略掉该Tag,除非本文档特别指出。这样规定是为了在增加新的Tag时保持向后兼容。如果增加强制使用的Tag,则版本号version将会提高。2、PADI数据包主机发送Destination_address为广播地址的PADI数据包,Code域设置为0x09,Session_ID域必须设置为0x0000。PADI数据包必须包含且仅包含一个Tag_Type为Service-Name的Tag,以表明主机请求的服务,以及任意数目的其它类型的TAG。整个PADI数据包,包括PPPoE头部不允许超过1484个字节,以留足空间让中继代理向数据包中增加类型为Relay-Session-Id的Tag。PADI报文结构示例图0xFFFFFFFF0xFFFFHost_MAC_addressHost_MAC_address(Continue)Ethernet_Type(0x8863)Session_ID(0x0000)Tag_Type(0x0101)Length(0x0004)Tag_Length(0x0000)V=1T=1Code(0x09)0152331192、PADO数据包如果接入服务器能够为收到的PADI请求提供服务,它将通过发送一个PADO数据包来做出应答。Destination_address是发送PADI报文的主机的单播地址,Code域为0x07,Session_ID域必须设置为0x0000。PADO数据包必须包含一个类型为AC-Name的Tag,AC是接入服务器的名字。还必须包含与PADI中相同的Service-Name,以及任意数目的类型为Service-Name的Tag,表明接入服务器提供的其它服务。如果接入服务器不能为PADI提供服务,则不允许用PADO作响应。Host_MAC_addressHost_MAC_address(Continue)Access_Concentrator_MAC_addressAccess_Concentrator_MAC_address(Continue)Ethernet_Type(0x8863)Session_ID(0x0000)Tag_Type(0x0101)Length(0x0020)Tag_Length(0x0000)V=1T=1Code(0x07)015233119Tag_Type(0x0102)Tag_Length(0x0018)0x470x6F0x200x520x650x640x420x610x630x6B0x200x2D0x200x650x730x680x730x680x650x730x680x6F0x6F0x743、PADR数据包由于PADI是广播的,主机可能收到不止一个PADO。它将审查接收到的所有PADO并从中选择一个。可以根据其中的AC-Name或PADO所提供的服务来作出选择。主机向选中的接入服务器发送一个PADR数据包。其中,Destination_address域设置为发送PADO的接入服务器的单播地址,Code域设置为0x19,Session_ID必须设置为0x0000。PADR必须包含且仅包含一个Tag_Type为Service-Name的TAG,表明主机请求的服务,以及任意数目其他类型的Tag。4、PADS数据包当接入服务器收到一个PADR数据包,它就准备开始一个PPP会话。它为PPPoE会话创建一个唯一的Session_ID并用一个PADS数据包来向主机作出响应。Destination_address域是发送PADR数据包的主机的单播以太网地址,Code域设置为0x65,Session_ID必须设置为所创建好的PPPoE会话标识符。PADS数据包中包含且仅包含一个Tag_Type为Service-Name的Tag,表明接入服务器已经接受的该PPPoE会话的服务类型,以及任意数目的其他类型的Tag。如果接入服务器不接受PADR中的Service-Name,那么它必须用一个PADS来作出应答,并且该PADS中带有类型为Service-Name-Error的Tag以及任意数目的其它TAG类型。这种情况下,Session_ID必须设置为0x0000。5、PADT数据包PADT(PPPoEActiveDiscoveryTerminate)数据包可以在会话建立以后的任意时刻发送,表明PPPoE会话已经终止。它可以由主机或接入服务器发送,Destination_address域为单播以太网地址,Code域设置为0xA7,Session_ID必须表明终止的会话,这种数据包不需要任何Tag。当收到PADT以后,就不允许再使用该会话发送PPP流量了。在发送或接收到PADT后,即使是常规的PPP结束数据包也不允许发送。PPP通信双方应该使用PPP协议自身来结束PPPoE会话,但在无法使用PPP时可以使用PADT。2.4.3PPP会话阶段一旦PP会话(PPPSession)开始,PPP数据就像其它PPP封装一样发送。PPP报文作为PPPoE帧的净荷,封装在以太网帧发送到对端。所有的以太网数据包都是单播的。Ethernet_Type域设置为0x8864。PPPoE的Code必须设置为0x00。PPP会话的Session_ID不允许发生改变,必须是Discovery阶段所指定的值。PPPoE的Payload包含一个PPP帧,帧始于PPPProtocol-ID。从主机发送到接入服务器的PPPLCP数据包示例图Access_Concentrator_MAC_addressAccess_Concentrator_MAC_address(Continue)Host_MAC_addressHost_MAC_address(Continue)Ethernet_Type(0x8864)Session_ID(0x1234)PPPProtocol(0xC021)Length(0x????)V=1T=1Code(0x00)015233119PPPPayload进入PPPSession阶段后,在会话阶段,主机或服务器任何一方都可发PADT报文通知对方结束PPP会话。2.4.4PPPoE的应用PPPoE协议提供了在如以太网的广播式的网络中,多台主机连接到远端的访问集中器AC上的一种标准。而目前能完成访问集中器功能的设备一般是宽带接入服务器。PPPoE组网图:InternetGE1/0/0HostHostRouter...POS2/0/0在这种网络模型中,PPPoE可用于同一个以太网上的多个主机通过一个或多个桥接的调制解调器向多个目的主机开放其PPP会话。因此PPPoE主要用于宽带远程访问技术,即访问服务的提供者希望通过提供一个桥接的拓扑结构从而保持PPP会话。在PPPoE网络中,所有用户的主机都需要能独立地初始化自已的PPP协议栈。利用以太网将大量主机组成网络,通过一个远端接入服务器连入因特网。而且通过PPP协议本身所具有的一些特点,能实现在广播式网络上对用户进行计费和管理。由于具有很高的性能价格比,PPPoE被广泛应用于小区组网等环境中。PPPoE协议推出后,各网络设备制造商也相继推出自已品牌的宽带接入服务器(BAS)。它不仅能支持PPPoE协议数据报文的终结,而且还能支持其它许多协议。',)


  • 编号:1700877604
  • 分类:标准规范
  • 软件: wps,office word
  • 大小:28页
  • 格式:docx
  • 风格:商务
  • PPT页数:193241 KB
  • 标签:

广告位推荐

相关标准规范更多>