当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]嵌入式操作系统VxWorks下PPPoE的实现

摘要:PPPoE是一种很常用的拨号协议,介绍PPPoE Discovery阶段的基本流程和帧封装格式,同时介绍PPP的连接控制协议(LCP)、认证协议(CHAP、PAP)、IP控制协议I(PCP)各协议子层之间的关系和PPP的数据包封装格式。讨论PPPoE、PPP协议在嵌入式操作系统VxWorks的TCP/IP协议栈体系中的具体位置和PPP、PPPoE数据包收发二个方向的处理流程,同时给出VxWorks下PPPoE实现的具体的软件模块设计,具有一定的工程应用价值。
关键字:PPPoE;PPP;VxWorks;嵌入式操作系统

1 前言
    在目前的通信市场,宽带逐渐增温,接入方式呈现多样性:LAN、ADSL、HFC Cable Modem、WLAN各有一定的市场份额,而ADSL是全球范围内占据主流地位的宽带接入方式,它能够提供最低512 kHz,最高8 MHz的带宽。用户可以独享带宽,不会因为上网人数的增加而导致上网速率的降低。更为重要的是ADSL价格低廉,能为普通消费者所接受。目前国内的各大运营商和宽带接入提供商正在如火如荼地进行宽带革命。中国电信推出“ADSL网络快车”,并且已经圈定了大规模的用户群;中国网通也有类似的市场规模。另一方面,VoIP语音业务也飞速发展。目前国内大多数VoIP语音接入终端多为LAN方式。主要用户对象集中于智能化小区、校园、话吧等。由于大多数家庭用户的宽带接入为ADSL方式,运营商不得不考虑到目前的ADSL用户对VoIP语音业务的需求。所以,如果VoIP的终端设备支持PP-PoE的接入方式,只要将VoIP的终端设备挂到AD-SLMODEM下就可以提供VoIP语音业务。VoIP终端设备的软件大多都基于嵌入式操作系统。VxWorks是WRS(Wind River Systems Inc.)推出的嵌入式实时操作系统。VxWorks以无可比拟的高效能、高可靠性、高效的调试工具和稳定、高效的网络协议等优点在高端通信市场占据了优势地位,太多数通讯设备都采用VxWorks作为操作系统。本文详细介绍PPP、PPPoE协议在VxWorks下的具体实现。

2 PPP和PPPOE协议
    IP接入的功能包括动态IP地址分配、AAA和ISP动态选择,实现这些功能通常需要用到一个著名的接入协议即PPP协议,PPP协议是一成熟的IP接入协议,支持多种协议封装,实现简单,易于与现有的ISP配合。它具有链路层和网络层配置和协商功能,可方便地自动分配TP。PPP本身也是一个数据链路层协议,它可采用不同的传输机制传送。常用的有HDLC、ATM和以太网。承载在以太网上的称为PPPoE(PPP over Ethernet)。

2.1 PPPoE协议

    RFC2516定义了一种在以太网上传送PPP的方法即PPPoE。PPPoE分为二个阶段,即Discovery(地址发现)阶段和PPP会话阶段。当某个主机希望发起一个PPPoE会话时,它必须首先执行Discovery来确定对方的以太网MAC地址并建立起一个PP-PoE会话标识符SESSION_ID。虽然PPP定义的是端到端的对等关系,Discovery却是天生的一种客户端-服务器关系。在Discovery的过程中,主机(作为客户端)发现某个访问集中器(Access Concentrator,作为服务器),根据网络的拓扑结构,主机能够与不只一个的访问集中器通信。Discovery阶段允许主机发现所有的访问集中器并从中选择一个。当Discovery阶段成功完成后,主机和访问集中器二者都具备了用于在以太网上建立点到点连接所需的所有信息。
    (1)PPPoE的帧格式和种类
    Discovery阶段所有的以太网帧的ETHER_TYPE域都设置为0x8863。PPP会话阶段以太网帧的ETHER_TYPE域都设置为0x8864。PPPoE的payload部分包含O个或多个TAG。一个TAG是一个TLV(type-length-value)结构,TAG_TYPE域为16位值(网络字节序),RFC2516标准附录A列出了各种TAG_TYPE和TAG_VALUE。PPPoE的帧格式如图l所示。

    PPPoE discovery阶段有5种基本的帧,分别为PPPoE Active Discovery Initiation (PADI)、PPPoE Active Discovery Offer(PADO)、PPPoE Active Discovery Request (PADR)、PPPoE Active Discovery Sessionconfirmation (PADS)、PPPoE Active Discovery Terminate(PADT)。
    (2)PPPoE的工作流程
    PPPoE包含二个阶段:Discovery搜索阶段和Session会话阶段。PPPoE Discovery的主要步骤为:
    ●主机发送PADl分组,其目的地址为广播地址,会话IAD为0(未分配);
    ●任一接入服务器收到PADI并任提供所需的服务时,就回送PADO分组,会话IAD为O;
    ●主机可能收到多个PADO,根据服务及其提供的服务选定一个服务器,然后向该服务器发送PADR分组,其目的地址为该服务器的单播地址。会话ID为0(未分配);
    ●该服务器收到PADR后生成一个唯一的会话ID,向主机回送PADS分组,准备启动PPP。
    当搜索阶段完成后,PPPoE的Host主机从接入服务器AC获取一个Session ID。搜索成功后主机和接入服务器之间就可以建立Ethernet的PPP连接,进入PPP会话阶段。

2.2 PPP协议
    (1)PPP协议组成
    PPP协议由IETF RFCl661定义,主要包含4个部分:
    ●帧封装的方法;
    ●链路控制协议(LCP-Link Control Protocol),完成线路的启动、测试、任选参数的协商和最终线路断开功能;
    ●网络控制协议(NCP),最常用的NCP协议为IP控制协议IPCP。它的一个重要功能就是动态分配IP地址;
    ●用户认证,主要通过LCP协商采用何种认证协议,但认证协议本身不是PPP协议的范围。
    PPP可分为三个阶段:LCP协商、认证和NCP协商。从协议上来说可以分为三个子层,每层可向相邻的子层发送“Up”或“Down”事件。“Up”表示该层已激活,“Down”表示该层已终结。就整个接入过程而言,还可以认为LCP之下还有一个物理层,在每个NCP之上还有一个网络接口。
    一个子层的激活(Up)需具有三个事件:上层发出“打开”(Open)请求,下层收到“Up”事件;本层协商成功。
    协议的基本过程为:用户通过某个接口请求建立链路,此时Open事件发送到PPP的LCP子层,当LCP启动后,即请求建立物理链路,开始PPPoE协商,当PPPoE协商成功后,就向LCP层发送Up事件。然后LCP向对端发送协商请求,双方确定链路的配置参数后,LCP向认证层发送Up事件。认证成功后,在向NCP层发Up事件。如不需要认证,则可直接向NCP层发送up事件。NCP协议收到Up事件后开始NCP处理。例如IPCP协议将开始协商IP地址等。PPP正常终结过程是,每个NCP分别终结,然后LCP终结,最后物理层终结。但PPP实现必须能够处理物理链路自行断开、NCP尚未终结时LCP先行终结的异常情况。
    (2)PPP的封装格式
    PPPP的封装格式如下:

   
    发送的顺序是从左到右。Protocol定义被封装的数据报的协议类型,最常用的几种定义为:

   

3 在VxWorks下的实现
3.1 PPP和PPPoE数据包收发处理流程
   
为了更清楚地介绍VxWorks下的PPP和PPPoE数据包收发处理流程,先介绍一下Vx-Works下的TCP/IP协议栈的结构。
    PPP和PPPoE在VxWorks TCP/IP协议栈中的位置如下:

    VxWorks的TCP/IP协议栈与标准的BSD的TCP/IP协议的最大不同在于加入了MUX层。MUX层的作用是负责管理协议层和驱动层之间的相互作用,使协议层和驱动层相互透明。从而使一个VxWorks操作系统可以同时支持多个协议和驱动。PPP和PPPoE都属于链路层的协议,所以介于MUX和IP层之间。
    PPPoE层主要实现PPPoE拨号过程和对上层PPP的数据包进行PPPoE封装。PPPoE通过MUX层的接口发送方向采用以太网发送函数ehterOutput发送数据包,接收方向主要是调用VxWorks提供的增加钩子函数etherInputHookAdd添加自己的以太网钩子函数对以太网帧类型为0x8863和0x8864的包进行处理。如帧类型为0x8863,则为PPPoE Dis-covery包,如为0x8864,则为PPPoE Session阶段的包经拆封处理后送到PPP层处理。
    PPP层软件主要实现LCP链路建立、PPP认证、IPCP协商IP地址和对IP数据包的PPP封装等功能。
    PPP层与IP层的接口主要通过再添加一个if_PPP的网络接口。从IP层看来if_PPP接口和普通的网口设备没什么不同。if_ppp作为VxWorks TCP/IP协议栈中的一个网络接口,可以封装IP数据包,并且在PPP的链路上收发IP包。PPP和PPPoE层也有相应接口函数。发送方向PPP的数据包(无论是IP还是LCP、IPCP)都通过PPPoE层封装后发送出去;接收方向,PPPoE层收到包先进行判断,如是PPF包,就交PPP层处理。PPP层根据协议类型分发到LCP、IPCF、IP等相关模块进行处理。整个PPP和PPPoE的收发包处理流程如图2所示。

3.2 PPP和PPPoE软件模块设计
    整个PPPoE、PPP软件由PPP、PPP Adapter、PP-
PoE Discovery、PPPoE Session、PPPoE Timer、PPPoE Adpater、PPPoE Config模块组成,如图3所示。

    1)PPP模块主要实现LCP、IPCP和认让协议(chap、pap)等,PPP还实现一个虚拟的ifnet接口,实现对上层IP报的封装和分发处理。
    2)PPP Adpater模块主要实现PPP和PPPoE模块之间的接口适配。
    3)PPPoE Discoverv模块实现PPPoE的Discov-ely阶段的处理。
    4)PPPoE Session模块实现PPPoE的Session阶段的处理,主要是PPPoE封装和解包处理。
    5)PPPoE Timer模块主要实现PPPoE模块的定时处理功能,用于PPPoE Discovery阶段的状态机切换处理。
    6)PPPoE Adapater模块主要实现PPPoE的包的收发处理。
    7)PPPoE Config模块主要实现PPP和PPPoE的相关配置功能。如配置用户名密码等。

4 结束语
   
本文介绍应用PPP和PPPoE协议实现VoIP的语音接人方法,详细介绍了PPP、PPPoE协议的原理,讨论了PPP和PPPoE协议在VxWorks操作系统下的具体实现,具有一定的工程应用价值。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭