5 PPPOE协议 联系客服

发布时间 : 星期三 文章5 PPPOE协议更新完毕开始阅读6ce6824ff7ec4afe04a1df23

TAG_LENGTH域(16比特),无符号,网络顺序,TAG_VALUE八位组长度; 如果收到的发现包中包含未知的TAG_TYPE,该TAG必须被忽略。当新的TAG加入时,提供向后兼容。

1.4 PPPOE主动发现初始化包(PADI)

主机发送PADI包(DESTINATION_ADDR设置为广播地址),CODE域置为0x09,SESSION_ID必须置为0x0000。

PADI包必须包含一个TAG_TYPE为服务名的TAG,用于指明主机请求的服务。整个PADI(包括PPPOE头)包长度不能超过1484字节,以便为中继代理加一个Relay-Session-ID TAG留下足够的空间。

1.5 PPPOE主动发现提供包(PADO)

当访问集中器收到它可以服务的PADI包后,用PADO包响应。DESTINATION_ADDR是发送PADI主机的地址。CODE域必须设置为0x07,SESSION_ID域必须设置为0x0000。

PADO必须包含一个AC-Name TAG(包含访问集中器的名称),一个Service-Name TAG(与收到PADI中的Service-Name TAG相同),还可以包含其它Service-Name TAG来说明该访问集中器可以提供的其它服务。如果访问集中器不能提供PADI指定的服务,则它不能用PADO进行响应。

1.6 PPPOE主动发现请求包(PADR)

因为PADI是广播的,因此,主机可能收到多个PADO,主机检查它收到PADO,并选择其中之一。选择基于AC-Name或提供的服务。选定后主机向选定的访问集中器发送PADR,DESTINATION_ADDR设置为目标访问集中器的拟态网地址,CODE域设置为0x19,SESSION_ID必须被设置为0x0000。

PADR包必须包含Service-Name TAG,指明主机请求的服务。

1.7 PPPOE主动发现会话确认包(PADS)

当访问集中器收到PADR包后,它准备开始一PPP会话,为PPPOE会话生成唯一的SESSION_ID,并用PADS响应主机。DESTINATION_ADDR域为发送PADR主机的拟态网地址。CODE域设置为0x65。SESSION_ID必须设置为为该PPPOE会话生成的唯一的值。

PADS必须包含Service-Name TAG,用于表明访问集中器已经接受PPPOE会话的服务。

如果访问集中器不喜欢PADR中的Service-Name,它必须发送包含Service-Name-Error TAG的PADS响应包。在这种情况下,SESSION_ID必须置为

0x0000。

1.8 PPPOE主动发现终止包(PADT)

该协议包可以在会话建立后的任何时候发送,用于指示PPPOE会话已经被终止。该协议包既可以由主机发送,也可以由访问集中器发送。DESTINATION_ADDR域必须单播拟态网地址,CODE域必须为0xa7,SESSION_ID必须被置为将要终止的会话ID。该协议包中不需要TAG。

一旦收到PADT,就不能用该会话发送任何PPP数据。在发送或接收PADT后,即便一般的PPP终止包也不能被发送。一个PPP端点应当PPP协议本身来终止PPPOE会话,但PADT可以在PPP不能使用时使用。

1.9 PPP会话阶段

一旦PPPOE会话开始,PPP数据象其它PPP封装一样被发送。所有的拟态网包都是单播的。ETHER_TYPE域被设置为0x8864。PPPOE CODE域必须被设置为0x00。SESSION_ID必须域主动发现阶段生成的会话ID相同。PPPOE的负荷包含PPP帧,PPP帧以PPP协议ID开始。

1.10 其它需要考虑的事项

当一个主机在一定时间内没有收到PADO协议包时,它应当重发PADI,并且将等待时间延长一倍。该过程应当重复一定次数。当主机等待PADS协议包时,应当使用同样的超时机制,重发PADR。如果重发一定次数后,主机应当重发PADI协议包。

1.10.1 PPPOE的LCP配置选项

PPP over Ethernet(RFC2516)建议进行魔数选项协商,不建议进行协议域压缩选项(PFC)协商。实现中必须不请求进行任何下面的选项协商,并且必须拒绝这样选项协商的请求:

Field Check Sequence (FCS) Alternatives,

Address-and-Control-Field-Compression (ACFC), Asynchronous-Control-Character-Map (ACCM) MRU必须不能大于1492。

建议接入集中器偶尔向主机发送Echo_Request报文,来决定会话的状态。否则,如果主机没有发送Terminate_Request报文就终止了会话,接入集中器将会不能决定会话已经终止了。

当LCP终止,主机和接入集中器必须停止使用这个PPPOE会话。如果主机希望开始另一个PPP会话,它必须返回到PPPOE的发现阶段。

1.10.2 PPP会话终结

PPP在建立链路之前要进行一系列的协商过程,如图5所示。图6为PPP建链各阶段图。

端 对端

LCP协商 验 证 网络阶段协商(NCP) 拆链

图5 PPP通信阶段图

图6 PPP建链各阶段图

PPP建链的具体过程如下:

(1)LCP协商,协商内容包括除RFC1661中所定义的选项之外,还要考虑PPPOA和PPPOE协议中规定的内容。

(2)LCP协商过后就到了Establish阶段,开始PAP或CHAP认证。PAP为两次握手认证,口令为明文。PAP认证过程如下:发送用户名同口令到认证方,认证方查看是否有此用户,口令是否正确,然后发送相应的响应。CHAP为三次握手认证,口令为密文(密钥)CHAP认证由认证方发送一些随机产生的报文,交给被认证,被认证方用自己的口令字用MD5算法进行加密,传回密文,认证方用自己保存的口令字及随机报文用MD5算法加密,比较二者的密文,根据比较结果返回响应的响应。

(3)认证成功即进行Network阶段协商(NCP),在IP接入中主要是IPCP协商(如IP

地址和DNS地址的协商等)。任何阶段的协商失败都将导致链路的拆除。

(4)协商成功,则链路建立成功,可以开始传输网络层数据报文。

在PPP会话建立的时候,根据用户属性确定此用户的缺省路由和对应的网络接口,将之绑定在PPPCTL结构上,可以对用户上行数据包实现快速转发,不必让每个包去查找路由表。此方法对下行数据影响相对较小,因为在业务处理板上必须区分每一个会话,这只有通过检查数据包中的目的地址来实现。

1.10.3 PPP会话续传(L2TP VPN)

PPP会话续传(L2TP VPN)的流程如图7所示,具体过程如下:

(1)远程用户通过PPPOA或PPPOE向LAC请求建立PPP连接。LAC接受远程用户的PPP连接。

(2)LAC认证远程用户是否VPDN用户。如果远程用户不是VPDN客户,则以普通用户方式接入Internet;如果远程用户是VPDN客户,就连接某一指定的LNS。

(3)建立控制连接(Control Connection)。创建L2TP隧道控制连接是LAC和LNS之间的初始连接。在控制连接建立后,LAC和LNS才可以建立会话连接。控制连接主要用于双方的安全认证,L2TP版本、数据格式、载体性能的协商。建立控制连接需要进行三种信息交换。

(4)建立L2TP会话(Session)。会话在控制连接建立后建立,每一个会话对应于一个LAC和LNS之间的PPP流。会话连接的建立与控制连接建立不同:对于呼入和呼出,会话连接的建立有不同的流程。

(5)数据交互。会话建立后,LAC透明地传递远程用户到LNS的PPP包,远程用户相当于一个LNS的拨号用户,LAC对于远程用户和LNS是不可见的。

(6)会话的中断。会话的中断可以由LAC或LNS发起,当一条隧道里所有会话都中断后,控制连接也可以随之中断。

(7)拆除已建立的PPP连接。