PPPoE(Point to Point Protocol over Ethernet,基于以太网的点对点协议)的工作流程包括发觉(Discovery)和会话(Session)两个时期,发觉时期是无状态的,目的是取得PPPoE 终端(在局端的ADSL设备上)的以太网MAC 地址,并成立一个惟一的PPPoE SESSION-ID。
发觉时期终止后,就进入标准的PPP会话时期1.发觉时期(PPPoED:PPPoE Discovery)PADI(PPPoE Active Discovery Initiation)主机广播发起分组,分组的目的地址为以太网的广播地址0xffffffffffff,CODE(代码)字段值为0×09(PADI Code),SESSION-ID(会话ID)字段值为0x0000。
PADI分组必需至少包括一个效劳名称类型的标签(Service Name Tag,字段值为0x0101),向接入集中器提出所要求提供的效劳。
PADO(PPPoE Active Discovery Offer)接入集中器收到在效劳范围内的PADI分组,发送PPPoE有效发觉提供包分组,以响应请求。
其中CODE字段值为0×07(PADO Code),SESSION-ID字段值仍为0x0000。
PADO分组必需包括一个接入集中器名称类型的标签(Access Concentrator Name Tag,字段值为0x0102),和一个或多个效劳名称类型标签,说明可向主机提供的效劳种类。
PADO和PADI的Host-Uniq Tag值相同。
PADR(PPPoE Active Discovery Request)主机在可能收到的多个PADO分组中选择一个适合的PADO分组,然后向所选择的接入集中器发送PPPoE有效发觉请求分组。
其中CODE字段为0x19(PADRCode),SESSION_ID字段值仍为0x0000。
PADR分组必需包括一个效劳名称类型标签,确信向接入集线器(或互换机)请求的效劳种类。
当主机在指定的时刻内没有接收到PADO,它应该从头发送它的PADI分组,而且加倍等待时刻,那个进程会被重复期望的次数。
PADS(PPPoE Active Discovery Session-confirmation)接入集中器收到PADR分组后预备开始PPP会话,它发送一个PPPoE有效发觉会话确认PADS分组。
其中CODE字段值为0×65(PADS Code),SESSION-ID字段值为接入集中器所产生的一个惟一的PPPoE会话标识号码。
PADS分组也必需包括一个接入集中器名称类型的标签以确认向主机提供的效劳。
当主机收到PADS 分组确认后,两边就进入PPP 会话时期。
PADS和PADR的Host-Uniq Tag值相同。
2.会话时期(PPPoES:PPPoE Session)PPP会话的成立,需要两头的设备都发送LCP数据包来配置和测试数据通信链路。
用户主机与接入集中器依照在发觉时期所协商的PPP会话连接参数进行PPP会话。
一旦PPPoE会话开始,PPP数据就能够够以任何其他的PPP封装形式发送。
所有的以太网帧都是单播的。
PPPoE会话的SESSION-ID必然不能改变,而且必需是发觉时期分派的值。
LCP协商时期(LCP:Link Control Protocol)LCP的Request主机和AC都要给对方发送,LCP协商时期完成最大传输单元(MTU),是不是进行认证和采纳何种认证方式(Authentication Type)的协商。
(1)LCP协议数据报文分类链路配置报文:用来成立和配置一条链路,要紧包括Configure-Request、Configure-Ack、Configure-Nak和Configure-Reject报文链路保护报文:用来治理和调试链路,要紧包括Code-Reject、Protocol-Reject、Echo-Request、Echo-Reply和Discard-Request报文链路终止报文:用来终止一条链路,要紧包括Terminate-Request和Terminate-Reply报文(2)LCP协商进程LCP协商的进程如下:协商两边相互发送一个LCP Config-Request报文,确认收到的Config-Request报文中的协商选项,依照这些选项的支持与同意情形,做出适当的回应。
假设两头都回应了Config-ACK,那么标志LCP链路成立成功,不然会继续发送Request报文,直到对端回应了ACK报文为止。
说明:(1)Config-ACK:假设完全支持对端的LCP选项,那么回应Config-ACK报文,报文中必需完全携带对端Request报文中的选项。
(2)Config-NAK:假设支持对端的协商选项,但不认可该项协商的内容,那么回应Config-NAK报文,在Config-NAK的选项中填上自己期望的内容,如:对端MRU值为1500,而自己期望MRU值为1492,那么在Config-NAK报文中埴上自己的期望值1492。
(3)Config-Reject:假设不能支持对端的协商选项,那么回应Config-Reject报文,报文中带上不能支持的选项,如Windows拨号器会协商CBCP(被叫回呼),而ME60不支持CBCP 功能,那么回将此选项拒绝掉。
认证时期(PPP Authentication:PAP/CHAP)会话两边通过LCP协商好的认证方式进行认证,若是认证通过了,才能够进行下面的网络层的协商。
认证进程在链路协商终止后就进行。
ⅠPAP(Password Authentication Protocol,口令认证协议)认证PAP为两次握手协议,它通过用户名及口令来对用户进行验证。
PAP验证进程如下:当两头链路可彼此传输数据时,被验证方发送本端的用户名及口令到验证方,验证方依照本端的用户表(或Radius效劳器)查看是不是有此用户,口令是不是正确。
如正确那么会给对端发送Authenticate-ACK报文,通告对端已被许诺进入下一时期协商;不然发送NAK 报文,通告对端验证失败。
现在,并非会直接将链路关闭。
只有当验证只是次数达到必然值(缺省为10)时,才会关闭链路。
PAP的特点是在网络上以明文的方式传递用户名及口令,如在传输进程中被截获,便有可能对网络平安造成极大的要挟。
因此,它适用于对网络平安要求相对较低的环境。
ⅡCHAP(Challenge Handshake Authentication Protocol,质询握手认证协议)认证CHAP为三次握手协议。
只在网络上传输用户名,并非传输用户口令,因此它的平安性要比PAP高。
CHAP的验证进程为:第一由验证方(Server)向被验证方(Client)发送一些随机产生的报文,并同时将本端的主机名附带上一路发送给被验证方。
被验证方接到对端对本端的验证请求(Challenge)时,便依照此报文中验证方的主机名和本端的用户表查找用户口令字,如找到用户表中与验证方主机名相同的用户,便利用报文ID、此用户的密钥用Md5算法生成应答(Response),随后将应答和自己的主机名送回。
验证方接到此应答后,用报文ID、本方保留的口令字(密钥)和随机报文用Md5算法得出结果,与被验证方应答比较,依照比较结果返回相应的结果(ACK or NAK)(1)同意认证端发送Challenge(2)申请认证端发验证请求报文(3)同意认证端回应认证同意报文通过以上三次报文交互后,CHAP认证完成。
NCP协商时期(NCP:Network Control Protocol)NCP有很多种,如IPCP、BCP、IPv6CP,最为经常使用的是IPCP(Internet Protocol Control Protocol)协议。
NCP的要紧功能是协商PPP报文的网络层参数,如IP地址,DNS Server IP 地址,WINS Server IP地址等。
PPPoE用户要紧通过IPCP来获取访问网络的IP地址或IP地址段。
NCP流程与LCP流程类似,用户与ME设备之间相互发送NCP Config-Request报文而且相互回应NCP Config-Ack报文后,标志NCP己协商完,用户上线成功,能够正常访问网络了。
IPCP的协商进程是基于PPP状态机进行协商的。
通过两边协商,通过配置请求、配置确认、配置否定等包文互换配置信息,最终由initial (或closed)状态变成Opened状态。
IPCP 状态变成Opened的条件必需是发送方和接收方都发送和接收过确认包文。
IPCP协商进程中,协商包文可包括多个选项,即参数。
各个选项的拒绝或否定都不能阻碍IPCP的UP,IPCP能够无选项协商,无选项协商也一样能够UP。
选项有IP Address、网关、掩码等,其中IP Address是最重要的一个选项,有些厂家的实现必需那个选项取得确认,大多数厂家的实现许诺那个选项为空。
NCP的大体协商流程见以下图:用户和接入设备对IP效劳时期的一些要求进行多次协商,以决定两边都能够接收的约定。
如:IP业务时期利用的IP紧缩协议等。
两边的协议是通过报文中包括的Option项进行协商的,每一个Option都是一个需要协商的问题。
最后两边都需要对方回答Configure_Ack的同意报文。
会话维持(Session Keep-alive)设备主动发送Echo Request进行PPPoE心跳保活,假设3次未取得效劳器的响应,那么设备主动释放地址。
发LCP Echo Request 的时候,魔术字字段要和之前通信的Configure_Request利用的魔术字字段维持一致。
有些设备或终端不支持主动发送Echo-Request 报文, 只能支持回应Echo-Reply报文。
会话终止(Session Termination)PPPoE 还有一个PADT(PPPOE Active Discovery Terminate)分组,它能够在会话成立后的任何时候发送,来终止PPPoE会话,也确实是会话释放。
它能够由主机或接入集中器发送,目的地址填充为对端的以太网的MAC地址。
当对方接收到一个PADT(PPPOE Active Discovery Terminate)分组,就再也不许诺利用那个会话来发送PPP业务。
PADT分组不需要任何标签,其CODE字段值为0xa7(PADT Code),SESSION-ID字段值为需要终止的PPP会话的会话标识号码。
在发送或接收PADT后,即便正常的PPP终止分组也没必要发送。
PPP对端应该利用PPP协议自身来终止PPPoE会话,可是当PPP不能利历时,能够利用PADT。