CN101202735A - 一种基于tcp/ip协议建立ppp链路的装置及方法 - Google Patents

一种基于tcp/ip协议建立ppp链路的装置及方法 Download PDF

Info

Publication number
CN101202735A
CN101202735A CNA2006100646781A CN200610064678A CN101202735A CN 101202735 A CN101202735 A CN 101202735A CN A2006100646781 A CNA2006100646781 A CN A2006100646781A CN 200610064678 A CN200610064678 A CN 200610064678A CN 101202735 A CN101202735 A CN 101202735A
Authority
CN
China
Prior art keywords
ppp
pppoe
module
link
protocol
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2006100646781A
Other languages
English (en)
Inventor
赵小虎
陈琳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Coship Electronics Co Ltd
Original Assignee
Shenzhen Coship Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Coship Electronics Co Ltd filed Critical Shenzhen Coship Electronics Co Ltd
Priority to CNA2006100646781A priority Critical patent/CN101202735A/zh
Publication of CN101202735A publication Critical patent/CN101202735A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明适用于宽带接入领域,提供了一种基于TCP/IP协议建立PPP链路的装置及方法,所述装置包括一PPP/PPPoE模块,所述PPP/PPPoE模块封装有PPP协议和PPPoE协议;所述PPP/PPPoE模块位于TCP/IP协议栈的以太网数据链路层与IP层之间,该模块与以太网数据链路层、IP层以及用户进程通过相应的接口通信,根据用户进程配置的参数建立并维护PPP链路。在本发明中,PPP/PPPoE协议用一个PPP/PPPoE模块实现,用户进程启动PPP/PPPoE模块,该模块完成PPPoE发现阶段后,在PPPoE的会话阶段加载PPP协议,建立并维护PPP/PPPoE链路,用户进程在此链路上通信,在以太网上实现PPP协议更加简单、高效。

Description

一种基于TCP/IP协议建立PPP链路的装置及方法
技术领域
本发明属于宽带接入领域,尤其涉及一种基于TCP/IP协议建立PPP链路的装置及方法。
背景技术
点对点协议(Point-to-Point Protocol,PPP)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。利用以太网(Ethernet)资源,在以太网上运行PPP来进行用户认证接入的方式称为PPPoE。PPPoE即保护了用户方的以太网资源,又完成了ADSL的接入要求,是目前ADSL接入方式中应用最广泛的技术标准。
PPPoE有发现(Discovery)和会话(Session)两个阶段。发现阶段获得PPPoE接入集中器的以太网媒介接入控制(MAC)地址,并建立一个唯一的PPPoE会话标识(Session-ID)。发现阶段结束后进入会话阶段。在发现阶段包含有PADI、PADO、PADR、PADS、PADT五种报文,其中:
PADI(PPPoE Active Discovery Initiation):为用户端发出的广播报文,用于检测网上是否有PPPoE接入集中器可提供接入服务。
PADO(PPPoE Active Discovery Offer):为某个PPPoE接入集中器发出的应答报文,表示可以提供PPPoE接入服务。
PADR(PPPoE Active Discovery Request):为用户端发出的请求接入该PPPoE接入集中器的请求报文。
PADS(PPPoE Active Discovery Session-confirmation):为该PPPoE接入集中器发出的应答报文,同时分配会话标识符和允许接入用户端信号。
PADT(PPPoE Active Discovery Terminate):断开PPPoE连接,用户端和接入集中器端均可发出该报文。
目前,在TCP/IP协议栈中实现PPP/PPPoE的方法是将PPP和PPPoE分别独立于两个模块--PPP模块和PPPoE模块中,用户进程和PPP交互,运行在虚拟的PPP链路上,PPPoE模块相当于PPP模块在以太网上的驱动。
以嵌入式Linux为例,PPP/PPPoE的一种实现方法是在用户空间实现。在用户空间,PPP守护程序pppd实现PPP的主体部分,同时以PPPoE守护程序pppoed处理以太网网卡的PPP数据包,并将该数据包转发给pppd。pppd和pppoed通过伪终端进行通信。其不足之处在于,pppd与pppoed之间的通信复杂,不适合于嵌入式应用。
以嵌入式Linux为例,PPP/PPPoE的另一种实现方法是在用户空间和内核中实现。位于用户空间的pppd实现PPP的主体部分,它通过通用PPP驱动程序和PPPoE驱动程序通信,另外它也通过PPPoE套结字直接和PPPoE驱动程序通信,PPPoE相当于PPP在以太网上的一个驱动。其不足之处在于,pppd、通用PPP驱动程序和PPPoE之间的通信比较复杂,不适合于嵌入式应用。
发明内容
本发明实施例的目的在于提供一种基于TCP/IP协议建立PPP链路的装置,旨在解决现有技术中存在的在以太网上建立PPP链路过程繁琐、PPP协议模块与其他各模块之间通信复杂,不适合于嵌入式应用的问题。
本发明实施例是这样实现的,一种基于TCP/IP协议建立PPP链路的装置,所述装置包括一PPP/PPPoE模块,所述PPP/PPPoE模块封装有PPP协议和PPPoE协议;
所述PPP/PPPoE模块位于TCP/IP协议栈的以太网数据链路层与IP层之间,与以太网数据链路层、IP层以及用户进程通过相应的接口通信,根据用户进程配置的参数建立并维护PPP链路。
本发明实施例的另一目的在于提供一种利用上述装置建立PPP链路的方法,所述方法包括以下步骤:
用户进程设置参数,启动PPP/PPPoE模块,等待PPPoE链路建立完成;
PPP/PPPoE模块根据用户进程设置的参数完成PPPoE的发现阶段,主机识别对端的以太网MAC地址并建立一个PPPoE会话标识;
PPP/PPPoE模块进入PPPoE的会话阶段,加载PPP协议完成LCP配置、PAP/CHAP验证和IPCP配置,通知用户进程PPP链路建立完成。
在本发明中,PPP/PPPoE协议用一个PPP/PPPoE模块实现,用户进程启动PPP/PPPoE模块,该模块完成PPPoE发现阶段后,在PPPoE的会话阶段加载PPP协议,建立并维护PPP/PPPoE链路,用户进程在此链路上通信,使得在以太网上实现PPP协议更加简单、高效。
附图说明
图1是本发明实施例提供的PPP/PPPoE模块在TCP/IP协议栈中的位置示意图;
图2本发明实施例提供的PPP/PPPoE模块与TCP/IP协议栈之间建立PPP链路的交互时序图;
图3是本发明实施例中提供的建立PPP链路的实现流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,将PPP协议和PPPoE协议封装在一个软件模块PPP/PPPoE模块实现,用户进程首先启动PPP/PPPoE模块,该模块完成PPPoE发现阶段后,在PPPoE的会话阶段加载PPP协议,建立并维护PPP链路。
本发明实施例中在一个软件模块(PPP/PPPoE模块)中封装有PPP协议和PPPoE协议。PPP由PPPoE启动,PPPoE由用户进程通过PPP/PPPoE模块启动。在该模块中,PPPoE根据用户进程设置的各种参数,首先获得接入集中器的以太网MAC地址和唯一的标识此次会话的会话标识,PPP/PPPoE模块在PPPoE的会话阶段将PPP作为一子协议加载。
PPP/PPPoE模块在TCP/IP协议栈中的位置如图2所示,TCP/IP协议栈包括以太网数据链路层11(Ethernet)、IP层13、传输层14以及应用层15。PPP/PPPoE模块12位于IP层13和以太网数据链路层11之间,通过用户自定义接口分别与以太网数据链路层11、IP层13进行通信。同时PPP/PPPoE模块12通过用户自定义接口可直接与用户进程15进行通信。
PPP/PPPoE模块12与用户进程之间的接口包括用户进程设置参数、启动PPP/PPPoE模块12、获取当前PPP/PPPoE链路状态、发送PPP终止分组和PPPoE终止分组等。用户进程设置的参数包括xDSL服务商的帐号、密码以及在PPP验证阶段采用的验证方式等。验证方式包括PPP认证协议(PPP AuthenticationProtocol,PAP)验证和挑战握手认证协议(Challenge Handshake AuthenticationProtocol,CHAP)验证。
PPP/PPPoE模块12与TCP/IP协议栈之间的接口包括两个,其中PPP/PPPoE模块12调用其与太网数据链路层11之间的接口用以发送封装好的以太网数据包(调用太网数据链路层11的驱动程序)。PPP/PPPoE模块12与IP层13之间的接口一方面处理来自IP层13的IP数据包,对其添加PPP头、PPPoE头和以太网头;一方面处理来自太网数据链路层11的数据包:如果是IP数据包则递交给IP层13,否则直接由PPP/PPPoE模块12处理。
主机中的用户进程16通过用户自定义接口启动PPP/PPPoE模块12,该模块首先完成PPPoE发现阶段,获得接入集中器的以太网MAC地址并建立起一个PPPoE会话标识符(Session ID)。这时,主机和所选择的接入集中器(AccessConcentrator,AC)两者都具备了用于在以太网上建立点对点连接所需的信息。
随后进入PPPoE会话阶段,PPP被加载,完成链路层配置(LCP)、用户认证(PAP/CHAP)和网际互连层配置(IPCP)过程。至此,PPPoE链路建立完成,主机与AC即可进行通信。通信过程中,用户进程可以主动或被动终止PPP/PPPoE链接。
图2示出了本发明实施例提供的PPP/PPPoE模块与TCP/IP协议栈之间建立PPP链路的交互时序。
在本发明实施例中,用户进程启动PPP/PPPoE模块,该模块首先完成PPPoE发现阶段,接着进入PPPoE会话阶段,PPP作为PPPoE的一个子协议在PPPoE会话阶段被加载,完成LCP配置、PAP/CHAP验证、IPCP配置,建立PPP链路。用户进程利用该PPP/PPPoE链路与AC进行通信,在通信过程中,PPP/PPPoE模块负责维护PPP/PPPoE链路。一方面,PPP/PPPoE模块接收从TCP/IP协议栈IP层传送来的包并加上PPP头、PPPoE头和Ethernet头后,通过用户自定义接口下发到以太网数据链路层的驱动程序。另一方面,PPP/PPPoE模块通过用户自定义接口接收从TCP/IP协议栈以太网数据链路层传送来的数据包并去掉PPPoE头和PPP头,然后进行分发:如果该包为IP数据包则递交给TCP/IP协议栈的IP层,如果该包为PPP链路控制数据或网络控制数据等控制信息,则由PPP/PPPoE模块直接进行处理。用户进程与TCP/IP协议栈之间通过套接字进行通信,从而实现基于以太网的宽带接入服务。在此过程中,PPP/PPPoE模块一直维护PPP链路直到会话阶段结束。主机或者AC在通信过程中随时都可以通过发送PADT包来结束会话。
图3示出了本发明实施例中提供的建立PPP链路的实现流程,详述如下:
在步骤S101中,用户进程设置参数、启动PPP/PPPoE模块并等待PPP链路建立完成。
在步骤S102中,PPP/PPPoE模块根据用户进程设置的参数建立并维护PPP链路。
首先,PPP/PPPoE模块启动PPPoE的发现阶段,用户进程主机识别对端的以太网MAC地址并建立一个PPPoE Session_ID。
发现阶段可以分为四个步骤,详述如下:
(1)主机在本以太网内广播一个PADI包,在此包中包含主机想要得到的服务类型信息。
(2)以太网内的所有接入集中器在收到该PADI包后,将其中请求的服务与自身能提供的服务进行比较,其中可以为此主机提供此服务的接入集中器发回PADO包,不能提供此服务的集中器不能发PADO包。
(3)主机可能收到多个集中器的PADO包,主机通过PADO包的内容,依据一定的条件从发回PADO包的可提供服务的接入集中器中挑选一个,并向它发回一个会话请求包PADR(非广播),在这个包中再次包含所想得到的服务的信息。
(4)被选定的接入集在收到会话请求包PADR后,就开始准备进入PPP会话阶段。它会产生一个会话标识以唯一的标识它和主机的这段PPPoE会话。并把这个特定的会话标识包含在会话确认包PADS中发回给主机,如果没有错误发生就进入到PPP会话阶段,而主机在收到会话确认包后如果没有错误发生也进入到PPPoE会话阶段。
然后,PPP/PPPoE模块进入会话阶段,加载PPP,完成链路层配置,根据步骤S101中选定的验证方式进行用户认证和网际互连层配置过程,通知用户进程PPP链路建立完成。此时,进入一种无状态的状态维护PPP链接一直到会话阶段结束。
在步骤S103中,用户进程在已经建立起来的PPPoE链路上与对端AC通信。
在步骤S104中,用户进程主动或被动终止PPPoE链接。正常情况下,会话阶段的结束是由PPP协议控制完成的,但在PPPoE中定义了一个PADT包用来结束会话,主机或者接入集中器可以在PPP会话开始后的任何时候通过发送这个数据包来结束会话。
以下以一个示例对本发明实施例的实现进行说明。本示例所采用的操作系统是意法半导体(STMicroelectronics)公司的实时操作系统OS20/OS21;所用的TCP/IP协议栈是NexGen Software公司的NexGenIP。
实现步骤如下:
第一步:用户进程(或task)设置必需的参数,包括xDSL服务商的帐号、密码,以及在PPP阶段是用PAP验证还是CHAP验证等等。然后,用户进程启动PPP/PPPoE模块并等待PPP/PPPoE模块完成链路的配置过程。具体过程叙述如下:
1)用户进程调用setParam()例程设置参数;
2)调用starPPP()例程启动PPP/PPPoE模块;
3)调用waitPppBeConstructed()例程等待PPP链路建立完成;
第二步:PPP/PPPoE模块建立并维护PPP/PPPoE链路。这一步又可以分成两个子过程:
1.PPP/PPPoE模块启动PPPoE的Discovery阶段。
注意在这个阶段,PPP/PPPoE模块利用与TCP/IP协议栈自定义的接口函数完成收发包的功能。
具体说明如下:
1)调用sendPADI()例程发送PADI包,然后调用waitForPADO()例程等待PADO包。这个过程可能重复几次;
2)调用sendPADR()例程发送PADR包,然后调用waitForPADS()例程等待PADS包。这个过程可能重复几次;
在PPPoE发现阶段主机识别对端的以太网MAC地址并建立一个PPPoESESSION_ID。
2.PPP/PPPoE模块进入PPPoE的Session阶段。
在这个阶段,PPP/PPPoE模块加载PPP协议完成LCP配置、PAP(或CHAP)验证和IPCP配置过程并通知用户进程PPP链路建立完成。PPP/PPPoE模块进入一种无状态的状态,维护PPP链路的连接一直到会话阶段结束。
这一子过程的详细步骤是:
1)调用loadPPP()例程加载PPP协议并完成配置和验证过程;
2)调用sendPppBeConstructed()例程通知用户PPP链路建立完成;
3)调用resideInPpp()例程进入一种无状态的状态,维护PPP链路的连接一直到会话阶段结束;
在这一子过程的第三个阶段,一方面PPP/PPPoE模块通过和TCP/IP协议栈自定义的接口函数从TCP/IP协议栈IP层接收包并作相应处理(加上PPP、PPPoE的头和Ethernet的头)后下发到Ethernet层驱动程序;另一方面,PPP/PPPoE模块从TCP/IP协议栈Ethernet层接收包并作相应处理(去掉PPPoE和PPP的头)后进行分发:若是IP数据报则递交给TCP/IP协议栈的IP层;若是PPP的链路控制数据或网络控制数据等控制信息,则直接由PPP/PPPoE模块处理。
第三步:用户在已经建立起来的PPP链路上与对端AC(Access Concentrator,即接入集中器)通信;
第四步:用户主动或被动地终止PPPoE会话:
1)用户主动终止:用户进程调用PPP/PPPoE模块的terminateLinkByLcp()例程终止PPP链接或/和sendPADT()例程终止PPPoE会话;
2)用户被动终止:PPP/PPPoE模块收到PPP终止分组或/和PPPoE PADT包后用户被迫被动终止。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种基于TCP/IP协议建立PPP链路的装置,其特征在于,所述方法包括一PPP/PPPoE模块,所述PPP/PPPoE模块封装有PPP协议和PPPoE协议;
所述PPP/PPPoE模块位于TCP/IP协议栈的以太网数据链路层与IP层之间,与以太网数据链路层、IP层以及用户进程通过相应的接口通信,根据用户进程配置的参数建立并维护PPP链路。
2.如权利要求1所述的装置,其特征在于,所述用户进程配置的参数包括服务商账号、密码以及验证方式。
3.如权利要求1所述的装置,其特征在于,所述PPP/PPPoE模块与用户进程之间的接口包括设置用户参数、启动PPP/PPPoE模块、获取当前PPP/PPPoE链路状态、发送PPP终止分组以及PPPoE终止分组。
4.如权利要求1所述的装置,其特征在于,所述PPP/PPPoE模块与太网数据链路层之间的接口用于将封装后的以太网数据包发送出去。
5.如权利要求1所述的装置,其特征在于,所述PPP/PPPoE模块与IP层之间的接口用于处理来自IP层来的IP数据包,对其添加PPP头、PPPoE头和以太网头,并处理来自太网数据链路层的数据包。
6.一种利用权利要求1的装置建立PPP链路的方法,其特征在于,所述方法包括以下步骤:
用户进程设置参数,启动PPP/PPPoE模块,等待PPPoE链路建立完成;
PPP/PPPoE模块根据用户进程设置的参数完成PPPoE的发现阶段,主机识别对端的以太网MAC地址并建立一个PPPoE会话标识;
PPP/PPPoE模块进入PPPoE的会话阶段,加载PPP协议完成LCP配置、PAP/CHAP验证和IPCP配置,通知用户进程PPP链路建立完成。
7.如权利要求6所述的方法,其特征在于,所述用户进程配置的参数包括服务商账号、密码以及验证方式。
CNA2006100646781A 2006-12-29 2006-12-29 一种基于tcp/ip协议建立ppp链路的装置及方法 Pending CN101202735A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA2006100646781A CN101202735A (zh) 2006-12-29 2006-12-29 一种基于tcp/ip协议建立ppp链路的装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2006100646781A CN101202735A (zh) 2006-12-29 2006-12-29 一种基于tcp/ip协议建立ppp链路的装置及方法

Publications (1)

Publication Number Publication Date
CN101202735A true CN101202735A (zh) 2008-06-18

Family

ID=39517701

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2006100646781A Pending CN101202735A (zh) 2006-12-29 2006-12-29 一种基于tcp/ip协议建立ppp链路的装置及方法

Country Status (1)

Country Link
CN (1) CN101202735A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102143027A (zh) * 2010-12-24 2011-08-03 华为数字技术有限公司 接入网络的方法和设备
CN103441893A (zh) * 2013-08-16 2013-12-11 大连梯耐德网络技术有限公司 基于广电网络的用户上网行为分析方法
CN101854339B (zh) * 2009-04-03 2014-07-09 华为技术有限公司 信息传送的实现方法、模块和传送网节点

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101854339B (zh) * 2009-04-03 2014-07-09 华为技术有限公司 信息传送的实现方法、模块和传送网节点
CN102143027A (zh) * 2010-12-24 2011-08-03 华为数字技术有限公司 接入网络的方法和设备
CN103441893A (zh) * 2013-08-16 2013-12-11 大连梯耐德网络技术有限公司 基于广电网络的用户上网行为分析方法

Similar Documents

Publication Publication Date Title
US20070274290A1 (en) Apparatus and method for packet forwarding in layer 2 network
CN101257420A (zh) 一种点对点协议接入方法、系统及接入节点设备
EP1764975A1 (en) Distributed authentication functionality
CN100583799C (zh) 一种CDMA 1x LNS负载均衡的实现方法及系统
EP2525531B1 (en) Method and network access device for enabling data forwarding between different physical media
WO2007033519A1 (fr) Procede permettant la mise a jour d'un reseau de communication prive virtuel dynamiquement
KR100642116B1 (ko) Um 및 rm 인터페이스를 통한 ppp의 동시 셋업
CN102223270A (zh) 一种路由器上网方式检测方法
CN100563257C (zh) 一种改进的PPPoE认证方法
CN107277058A (zh) 一种基于bfd协议的接口认证方法及系统
CN101202735A (zh) 一种基于tcp/ip协议建立ppp链路的装置及方法
WO2008037212A1 (fr) Terminal d'accès et procédé permettant d'attacher un terminal à l'opérateur
KR20140054425A (ko) 네트워크 발호 방법 및 장치
EP2073432B1 (en) Method for binding an access terminal to an operator and corresponding access terminal
CN1270532C (zh) 在嵌入式操作系统中支持非对称数字用户线路接入的方法
Cisco Configuring PPP for Wide-Area Networking
CN101489259A (zh) 数据业务处理方法、系统以及接入网
Cisco Configuring PPP for Wide-Area Networking
Cisco Configuring PPP for Wide-Area Networking
Cisco Configuring PPP for Wide-Area Networking
Cisco Configuring PPP for Wide-Area Networking
Cisco Configuring PPP for Wide-Area Networking
Cisco Configuring PPP for Wide-Area Networking
Cisco Configuring PPP for Wide-Area Networking
Cisco Configuring X.25 on ISDN Using AO/DI

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20080618