- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式操作系统VxWorks下PPPoE的实现来源国外电子元器件作者
嵌入式操作系统VxWorks下PPPoE的实现
来源:国外电子元器件 作者:中兴通讯股份有限公司 徐善鹏 时间:2007-12-20 发布人:林逸 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添加自己的以太网钩子函数对以太网帧类型为0x
文档评论(0)