PPPOE

1PPPOE流程

11  定义

通过PPPOE,在一个共享的以太网上的多个主机,可以通过一个或多个简单的桥接入设备,与远程接入集中器进行多个PPP会话。使用这种模型,每个主机使用它自己的PPP协议栈,并且提供给用户一个熟悉的用户接口。接入控制、计费和服务类型能够基于每用户,而不是每站点来处理。PPPOE包含发现和PPP会话两个阶段,发现阶段是无状态的Client/Server模式,目的是获得PPPOE终结端的以太网MAC地址,并建立一个唯一的PPPOE SESSION_ID。发现阶段结束后,就进入标准的PPP会话阶段。

12  协议基本框架

PPPOE协议参照RFC2516PPPOE实现PPP帧在Ethernet上的适配,并提供Ethernet上的PPP连接。图1和图2分别是以太网上的PPPOE协议栈和AAL5上的PPPOE协议栈。

PPPOE - wisp - 无敌懒羊羊

 

1 3  PPPOE连接示意图

3显示了典型的PPPOE的连接方式。

                       PPPOE - wisp - 无敌懒羊羊

 

 14  PPPOE通信流程

PPPOE有两个不同的阶段:发现阶段和PPP会话阶段。当一个主机想开始一个PPPOE会话,它必须首先进行发现阶段以识别对端的以太网MAC地址,并建立一个PPPOE SESSION_ID。在发现阶段,基于网络的拓扑,主机可以发现多个接入集中器。发现阶段允许主机发现所有的接入集中器,然后选择一个。当发现阶段成功完成,主机和选择的接入集中器都有了他们在以太网上建立PPP连接的信息。直到PPP会话建立,发现阶段一直保持无状态的状态。一旦PPP会话建立,主机和接入集中器都必须为PPP虚接口分配资源。图4显示了PPPOE通信流程。

                                      PPPOE - wisp - 无敌懒羊羊

 

141  发现阶段

发现阶段有四个步骤,当此阶段完成,通信的两端都知道PPPOE SESSION_ID和对端的以太网地址,他们一起唯一定义PPPOE会话。这些步骤包括:主机广播一个发起分组(PADI),一个或多个接入集中器发送给予分组(PADO),主机发送单播会话请求分组(PADR),选择的接入集中器发送一个确认分组(PADS)。当主机接收到确认分组,它可以开始进行PPP会话阶段。当接入集中器发送出确认分组,它可以开始进行PPP会话阶段。

当主机在指定的时间内没有接收到PADO,它应该重新发送它的PADI分组,并且加倍等待时间,这个过程会被重复期望的次数。如果主机正在等待接收PADS,应该使用具有主机重新发送PADR的相似超时机制。在重试指定的次数后,主机应该重新发送PADI分组。

    PPPOE还有一个PADT分组,它可以在会话建立后的任何时候发送,来终止PPPOE会话。它可以由主机或者接入集中器发送。当接收到一个PADT,不再允许使用这个会话来发送PPP业务。在发送或接收PADT后,即使正常的PPP终止分组也不必发送。PPP对端应该使用PPP协议自身来终止PPPOE会话,但是当PPP不能使用时,可以使用PADT

1. 42  PPP会话阶段

一旦PPPOE会话开始,PPP数据就可以以任何其它的PPP封装形式发送。所有的以太网帧都是单播的。PPPOE会话的SESSION_ID一定不能改变,并且必须是发现阶段分配的值。

15  PPPOELCP配置选项

PPP over EthernetRFC2516)建议进行魔数选项协商,不建议进行协议域压缩选项(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的发现阶段。

2PPP会话终结

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

                                                     对端

 

 

 

                 PPPOE - wisp - 无敌懒羊羊

  

 

              PPPOE - wisp - 无敌懒羊羊

 

PPP建链的具体过程如下:

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

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

3)认证成功即进行Network阶段协商(NCP),在IP接入中主要是IPCP协商(如IP地址和DNS地址的协商等)。任何阶段的协商失败都将导致链路的拆除。

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

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

3PPP会话续传(L2TP VPN

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

1)远程用户通过PPPOAPPPOELAC请求建立PPP连接。LAC接受远程用户的PPP连接。

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

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

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

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

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

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

PPPOE - wisp - 无敌懒羊羊
7 L2TP VPN通信流程

上面的流程只是一次认证的过程,两次认证没有列出。67两个过程的执行顺序依赖是用户还是LNS发起拆除连接而定。

在具体实现的过程中,需要对现有的PPP模块和RADIUS模块进行改动,增加VPDN属性支持。现有的ZXIP10-AS中实现的L2TP LAC时,采用的是分级管理机制,L2TP隧道是基于整个接入单元的,而会话则是与每个端口相关联的。从软件分布上看,L2TP隧道位于AUC板上,L2TP会话位于DMODS板上。如果移植到ZXB10平台上时,可以将L2TP隧道移植到运行路由协议的MPP板上,L2TP会话移植到PPP业务处理板上。

4.用户认证和IP地址分配

当用户和接入服务器之间的PPPOE建立之后,就可以在上面建立PPP会话。PPP会话的建立分为三个阶段:LCP协商、认证、IPCP协商。

对于PPP终结和PPP续传,LCP协商阶段是相同的。认证和IPCP协商不同。

41  LCP协商

LCP协商主要完成某些链路路特性和认证方式的协商,LCP协商成功后,用户根据协商的认证方式向接入服务器发起认证请求,用户认证的方式采用PAPCHAP方式。

42  PPP终结时的认证和IP地址分配

PAP为两次握手认证,口令为明文。PAP认证过程如下:拨号用户发送用户名和口令到接入服务器,接入服务器通过RADIUS协议到RADIUS服务器上去查看是否有此用户,口令是否正确,然后发送相应的响应。

CHAP为三次握手认证,口令为密文。CHAP拨号用户发送用户名到接入服务器,接入服务器发送一些随机产生的报文,交给被拨号用户,拨号用户用自己的口令用MD5算法进行加密,传回密文,接入服务器用从RADIUS服务器取得的用户口令及随机报文用MD5算法加密,比较二者的密文,根据比较结果返回认证成功或失败的响应。

    接入服务器和RADIUS服务器之间通过一个共享密钥以密文方式通信。

在认证阶段,如果在用户数据库中为该用户名配置了IP地址,则RADIUS服务器将这个IP地址返回给接入服务器,作为这个用户上网使用的IP地址。

如果用户在认证阶段还没有获得IP地址,就需要在IPCP阶段协商IP地址。一般来说,运营商为用户提供接入服务时,应该有一批IP地址,即IP地址池,用户上网所需要的IP地址就来自与此,当用户上网时,从IP地址池分配一个IP地址,当用户下网时,这个IP地址归还到地址池。在运营商开通接入服务时,将IP地址池配置到接入服务器中,在IPCP阶段,接入服务器从IP地址池分配一个空闲的IP地址给用户,作为用户上网的IP地址。如果已经没有可用的IP地址,则IPCP协商失败,关闭PPP连接,在用户看来,则是拨号失败,ISP暂时不能为他提供接入服务。

43  PPP续传时的认证和IP地址分配

LCP协商结束后,如果经RADIUS服务器检查这是一个VPN用户,则接入服务器为这个用户建立到LNS的会话,如果没有隧道还要建立隧道。认证分为两种情况:一次认证和两次认证。

一次认证是指只在LACRADIUS服务器上认证一次,LNS信任LACRADIUS服务器。用户的IP地址可以由LACRADIUS服务器指定,也可以由用户和LNS进行IPCP协商获得。

两次认证是指用户需要输入两次用户名和口令,一个是接入Internet的权限验证,一个是进入VPN的权限验证。认证的时候需要LACRADIUS服务器和LNSRADIUS服务器共同配合。IP地址的可以由LNSRADIUS服务器指定,也可以由用户和LNS进行IPCP协商获得。

44  RADIUS协议扩展

为实现对用户更全面的管理,在RADIUS协议中,至少应该扩展以下属性:用户的接入带宽、用户接入所使用的PVC,如果用户间希望互相通信,需要指明对方的用户名或IP地址。客户端和服务器端同时支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值