一种在网络接入设备上实现PPPoA到PPPoE转换的方法 【发明领域】
本发明一般涉及网络通信技术,特别涉及一种在网络接入设备上实现PPPoA到PPPoE转换的方法。
背景技术
目前,运营商在采用宽带技术接入用户时,普遍使用PPPoA(PPP OverATM,ATM承载点对点协议)或PPPoE(PPP Over Ethernet,以太网承载点对点协议)作为接入的二层协议,以便利用PPP协议良好的用户认证、管理特性。宽带接入设备在接收到用户的PPPoA或PPPoE报文后不改变报文的封装,而将其透传给BAS(Broadband Access Server,宽带接入服务器)设备处理。当前的发展趋势是采用PPPoE的用户越来越多,而采用PPPoA的用户正在逐渐减少。
宽带接入设备可以分为控制模块和数据转发处理模块,其中转发处理模块又可分为两部分,即:用于处理从用户线路输入的数据的上行处理模块以及用于处理从上行接口(与BAS的接口)输入的数据的下行处理模块。控制模块的核心是CPU。CPU通过运行设备软件来完成对设备的控制以及对控制报文的处理。
目前的宽带接入设备对PPPoA报文只做ATM转发处理,具体来讲:当其上行处理模块从用户线路上接收到ATM信元后,它将根据预先配置的用户PVC(永久虚连接)属性对信元头的VPI/VCI(虚通路标识符/虚信道标识符;)进行切换,然后将切换后形成的报文发送给上级设备(BAS,或者是ATM交换机);当宽带接入设备的下行处理模块接收到来自上级设备的ATM信元之后,它将根据预先配置的用户PVC属性对信元头的VPI/VCI进行切换,然后将切换后形成的报文发送到对应地用户线路上。在这个过程中,宽带接入设备既不需要识别PPPoA协议也不对ATM信元的净荷作处理,从而使二层协议保持不变。这样,通过由BAS设备提供对PPPoA的支持,就可以完成用户的认证以及用户数据包的转发。
为了支持PPPoA,BAS设备需要提供ATM接口用以支持PPPoA协议;为了支持PPPoE,BAS设备需要提供以太网接口用以支持PPPoE协议。因此,为了能够同时支持PPPoA和PPPoE,BAS设备就需要同时提供ATM接口和以太网接口。由于接口种类比较多,所以会大大增加BAS设备的成本以及运营商的管理成本,而且其处理流程也变得较为复杂。
【发明内容】
因此,本发明就是针对现有技术中的上述问题而提出的,其目的是在宽带接入设备上提供PPPoA到PPPoE协议的转换。通过这样的转换,可以使宽带接入设备与BAS设备的接口统一为以太网接口,并使BAS设备只需处理PPPoE协议。
为了实现上述目的,本发明提供了一种在网络接入设备上实现PPPoA到PPPoE转换的方法,所述网络接入设备包括:控制模块,用于完成PPPoE客户端功能,并建立和维护所述接入设备到网络服务器之间的PPPoE链路;以及数据转发处理模块,用于完成报文的PPPoA与PPPoE之间的协议适配和转发,该方法包括以下步骤:1)当所述网络接入设备接收到来自PPPoA用户的数据报文时,所述数据转发处理模块将把该数据报文封装成PPPoE报文,并将其通过上行接口转发出去;2)当所述网络接入设备接收到来自所述网络服务器并且发往PPPoA用户的数据报文时,所述数据转发处理模块将把该数据报文封装成PPPoA报文,将其分片成信元,并将信元通过下行接口转发出去。
上述用于上行转发数据报文的步骤1)进一步包括以下步骤:1-1)判断所述数据报文是否来自PPPoA用户;1-2)在所述数据报文是来自PPPoA用户的情况下,判断所述PPPoA用户的PPPoE链路是否已经建立;1-3)当所述PPPoA用户的PPPoE链路已经建立时,判断所述数据报文是否为链路控制协议(LCP)报文;以及1-4)当所述数据报文不是LCP报文时,将其封装成PPPoE报文,并将其通过上行接口转发出去。
上述步骤1-1)进一步包括对不是来自PPPoA用户的数据报文按照与用户商定的协议进行处理的步骤。
上述步骤1-2)进一步包括在所述PPPoA用户的PPPoE链路尚未建立的情况下将数据包交给所述控制模块进行处理的步骤。在这种情况下,控制模块将与所述网络服务器协商建立一条PPPoE链路,并将该链路与所述PPPoA用户绑定。
上述步骤1-3)进一步包括将LCP数据报文交给控制模块进行处理的步骤。
上述用于下行转发数据报文的步骤2)进一步包括以下步骤:2-1)判断所述数据报文是否发往PPPoA用户;2-2)在所述数据报文是发往PPPoA用户的情况下,判断所述数据报文所属的PPPoE链路是否已经建立;2-3)当所述数据报文所属的PPPoE链路已经建立时,判断所述数据报文是否为链路控制协议(LCP)报文;以及2-4)当所述数据报文不是LCP报文时,将其封装成PPPoA报文,将其分片成信元,并将信元通过下行接口转发出去。
上述步骤2-1)进一步包括对不是发往PPPoA用户的数据报文按照与用户商定的协议进行处理的步骤。
上述步骤2-2)进一步包括在所述数据报文所属的PPPoE链路尚未建立的情况下将数据包交给所述控制模块进行处理的步骤。在这种情况下,控制模块将与所述网络服务器协商建立一条PPPoE链路,并将该链路与所述PPPoA用户绑定。
上述步骤2-3)进一步包括将LCP数据报文交给控制模块进行处理的步骤。
在本发明的实施例中,所述网络接入设备优选地为宽带接入设备,所述网络服务器优选地为宽带接入服务器(BAS)。
本发明的有益效果在于,通过在宽带接入设备上完成PPPoA和PPPoE协议的转换,使宽带接入设备与BAS设备的接口统一为以太网接口,并且BAS设备只需要处理PPPoE协议,从而降低了BAS的复杂度,因此可以降低BAS成本。同时,由于宽带接入设备和BAS设备之间只需要建以太网而不需要建ATM网,有利于运营商简化网络建设,降低网络建设和维护成本。
【附图说明】
通过以下结合附图对本发明实施例做出的说明,本发明的上述目的、特征及优点将变得更加清楚。在以下的附图中:
图1示出了根据本发明实施例所述在宽带接入设备上进行PPPoA到PPPoE转换的上行处理流程;
图2示出了根据本发明实施例所述在宽带接入设备上进行PPPoE到PPPoA转换的下行处理流程;
图3示出了PPPoE报文帧的格式;
图4示出了PPPoA报文帧的格式。
【具体实施方式】
以下将以本发明在宽带接入设备上的使用为例对本发明的具体实施方式做出详细说明。但是,本领域的普通技术人员可以明白,本发明的思想并不仅限于在宽带接入设备上的应用,而是可以扩展到各种相关的网络接入设备上。
图1示出了根据本发明实施例所述在宽带接入设备上进行PPPoA到PPPoE转换的上行处理流程。如图1所示,当接收到来自用户线路的数据报文之后,宽带接入设备的数据转发处理模块首先将用户信元重组成数据包(步骤1),然后判断该数据报文是否来自PPPoA用户(步骤2),如果不是,则需要按与用户商定的协议进行处理(步骤3)(这不在本发明的讨论范围之内)。接下来,在确定出该数据报文是来自PPPoA用户的情况下,数据转发处理模块将进一步检查用户的PPPoE链路是否已经建立(步骤4),如果链路还没有建立,则将数据包交给宽带接入设备的控制模块进行处理(步骤8)。这里,在步骤8中,控制模块能够为每个PPPoA用户代理完成PPPoE Client(PPPoE客户端)的功能,其建立用户PPPoE连接可以采用用户上行首包驱动的方式,即,当从一个PPPoA用户接收到数据包时,如果发现还没有为这个用户建立PPPoE链路,则按照PPPoE Client的要求,与BAS服务器协商建立一条PPPoE链路,并将这条链路与这个用户绑定。另外,宽带接入设备与用户之间的PPPoE链路还可以采用静态配置永久链路的方式,即,在宽带接入设备与BAS之间建立永久性的PPPoE链路,并将这些链路与用户绑定。在这种方式中,链路的建立由配置决定,它与收到的报文无关。
在确定用户的PPPoE链路已经建立的情况下,数据转发处理模块将从数据报文中取出用户的PPP报文(步骤5),然后判断用户的PPP报文是否为LCP(链路控制协议)报文(步骤6)。如果用户的PPP报文为LCP报文,则它将被交给控制模块处理(步骤8)。在步骤8中,控制模块检查用户的PPP报文是否为用户的LCP Terminate-ACK报文(LCP的终止-允许报文),如果是,则拆除相应的用户PPPoE链路(也可以等报文从上行接口转发出去后再拆除链路)。在这种情况下,控制模块可以采用以下2种拆链方式:a)接收到BAS服务器的PADT报文后,拆除PADT报文中指定的用户PPPoE链路;b)接收到BAS服务器或用户的LCP Terminate-ACK报文后,拆除相应的用户PPPoE链路。经过上述处理后,控制模块处理通过数据转发处理模块将这个报文封装成PPPoE报文(步骤7)。当用户的PPP报文不是LCP报文时,数据转发处理模块将直接把用户的PPP报文封装成PPPoE报文(步骤7)。
在上述步骤7中,将用户的PPP报文封装成PPPoE报文的具体做法是:a)通过上述步骤4或步骤8来确定进行PPPOE封装所需的用户的各种信息。例如,可以根据用户端口和用户的VPI/VCI在以下的表1中查找出所需的用户信息。
表1:用户信息表 用户1 SESSION_ID1 SMAC1用户端口1 VPI/VCI1 用户2 SESSION_ID2 SMAC2用户端口2 VPI/VCI2 …… …… ………… …… 用户n SESSION_IDn SMACn用户端口n VPI/VCIn
该用户信息表是由控制模块根据用户与PPPoE链路的绑定关系来维护的,其中包括进行PPPoE封装时所需的SESSION_ID,以及SMAC(源MAC地址);b)将进行PPPoE封装时所需的DMAC(目的MAC地址)设定为BAS服务器的地址;以及c)利用前面所述的这些信息(包括DMAC、SMAC以及SESSION_ID)将PPP报文封装成PPPoE报文。图3示出了经过封装后的PPPoE报文帧的格式,由于其具体内容都是公知的,故此省略说明。
最后,数据转发处理模块封装后的PPPoE报文通过宽带接入设备的上行接口转发出去(步骤9)。
图2示出了根据本发明实施例所述在宽带接入设备上进行PPPoE到PPPoA转换的下行处理流程。如图2所示,当收到来自BAS的数据报文之后,宽带接入设备的数据转发处理模块首先判断该报文是否发往PPPoA用户(步骤1′),如果不是,则需要按与用户商定的协议进行处理(步骤3′)(这不在本发明的讨论范围之内)。接下来,在确定该数据报文是发往PPPoA用户的情况下,数据转发处理模块将进一步判断该数据报文是否为PPPoE报文(步骤2′),如果不是,则该数据报文将被丢弃(步骤5′)。如果是,则数据转发处理模块将判断该数据报文所属的PPPoE链路是否已经建立(步骤4′),如果没有,则丢弃这个报文(步骤5′);如果该数据报文所属的PPPoE链路已经建立,则数据转发处理模块将从该数据报文中取出用户的PPP报文(步骤6′),并判断用户的PPP报文是否为LCP报文(步骤7′)。如果用户的PPP报文是LCP报文,则数据转发处理模块会将其交给控制模块进行处理(步骤9′)。在步骤9′中,控制模块检查用户的PPP报文是否为BAS的LCP Terminate-ACK报文,如果是则拆除相应的用户PPPoE链路。控制模块处理完后再由数据转发处理模块将这个报文封装成PPPoA报文并分片成信元(步骤8′)。当用户的PPP报文不是LCP报文时,数据转发处理模块将直接把用户的PPP报文封装成PPPoA报文,并将封装后的PPPoA报文分片成信元(步骤8′)。
在上述步骤8′中,将用户的PPP报文封装成PPPoA报文并将封装后的PPPoA报文分片成信元的具体做法是:a)通过上述步骤4′确定所需的用户的各种信息。例如,可以根据用户的SESSION_ID在上述表1中查找出包括用户端口和用户的VPI/VCI;b)将PPP报文封装成PPPoA报文。图4示出了经过封装后的PPPoA报文帧的格式,由于其具体内容都是公知的,故此省略说明;以及c)将PPPoA报文按AAL5适配标准分片成ATM信元,由于分片技术也是现有技术,故此不再赘述。
最后,数据转发处理模块将信元通过宽带接入设备的用户线路端口发送出去(步骤10′)。
以上对在网络接入设备上实现PPPoA到PPPoE转换的方法进行了详细说明。当然,在网络接入设备上实现PPPoE到PPPoA的转换也是可以的。但是,在实现PPPoE到PPPoA转换的情况下,网络接入设备只需对PPPoE报文进行分片/重组,而不需要像PPPoA到PPPoE转换那样对封装进行修改。另外,目前PPPoE到PPPoA的转换使用的非常广泛,并且几乎所有宽带网络接入设备都支持。因此,作为现有技术,本文中不对PPPoE到PPPoA的转换方法进行赘述。
虽然以上对本发明的描述是参考其具体实施方式来进行的,但是,这些描述不应当被认为是对本发明的限制。任何不背离本发明精神和范围的修改和变换都属于由附带权利要求所定义的本发明的范围之内。