当前位置:文档之家› PPPoE协议(RFC2516)中文

PPPoE协议(RFC2516)中文

A Method for Transmitting PPP Over Ethernet

(PPPoE)

在以太网上传输PPP的方法

RFC2516

目录

1.前言 (3)

2.简介 (3)

3.协议总述 (3)

4.Payloads 有效载荷 (4)

5.Discovery阶段 (5)

5.1. PPPoE Active Discovery Initiation数据包(PADI) (6)

5.2. PPPoE Active Discovery Offer 数据包(PADO) (6)

5.3. PPPoE Active Discovery Request 数据包(PADR) (6)

5.4. PPPoE Active Discovery Session-confirmation 数据包(PADS) (6)

5.5. The PPPoE Active Discovery Terminate数据包(PADT) (7)

6.PPP会话阶段 (7)

7.LCP方面的考虑 (7)

8.其它方面的考虑 (8)

9.安全方面的考虑 (8)

10.参考文献 (8)

附录 A -- TAG_TYPE和TAG_VALUE (8)

附录B -- 数据包的几个例子: (10)

1.前言

点到点协议(PPP,参考文献[1])提供在点到点连路上传送多协议数据报的标准方法。

本文档描述在以太网上建立PPP会话以及封装PPP数据报的方法。

可行性

本说明书试图提供PPP所定义的工具,如链路控制协议(Link Control Protocol,LCP),

网络层控制协议(Network-layer Control Protocols, NCP),认证以及其它机制。这

些功能要求在通信双方之间存在点到点的关系,而不是在以太网和其他多访问环境

中所出现的多点关系。

本规范可用于同一个以太网上的多个主机通过一个或多个跨接(桥接)调制解调器

向多个目的主机建立PPP会话。主要用于采用提桥接以太网拓扑结构的宽带远程

访问技术中,由服务提供商维护PPP会话。

本文档描述的PPPoE是RedBack Networks, RouterWare, UUNET 及其它厂商所采

用的在以太网上封装PPP的方法。

2.简介

现代接入技术需要面对有几个互相冲突的设计目标。人们希望通过同一个家庭接入设备来连接到远程站点上的多个主机,同时(又希望在使用习惯上)提供与拨号上网(使用PPP)类似的访问控制和计费功能。在很多接入技术中,把多个主机连接到家庭接入设备的最经济的方法就是通过以太网。另外,还想尽量保持设备的低成本同时要求不改变或很少改变其配置。

以太网上的PPP(PPPoE)提供了通过简单桥接接入设备把一个网络的多个主机连接到远程接入集线器的功能。使用该模型,每一个主机使用自己的PPP协议栈,呈现给用户的还是熟悉的用户接口。访问控制、计费以及业务类型都能基于每一个用户,而不是基于站点。

为了提供以太网上的点到点连接,每一个PPP会话必须知道对端的以太网地址,并建立一个唯一的会话标识符。PPPoE包含一个(以太网地址)发现协议来提供这个功能。

3.协议总述

PPPoE分为两个阶段,即Discovery(地址发现)阶段和PPP会话阶段。当某个主机希望发起一个PPPoE会话时,它必须首先执行Discovery来确定对方的以太网MAC地址并建立起一个PPPoE会话标识符SESSION_ID。虽然PPP定义的是端到端的对等关系,Discovery却是天生的一种客户端-服务器关系。在Discovery的过程中,由主机(作为客户端)来发现接入集线器(Access Concentrator,作为服务器)。根据网络的拓扑结构,可能存在不止一个能和主机进行通信的接入集线器。Discovery阶段允许主机发现所有的接入集线器并从中选择一个。当Discovery阶段成功完成之后,主机和接入集线器两者都具备了用于在以太网上建立点到点连接所需的所有信息。

Discovery阶段保持无状态(stateless)直到建立起一个PPP会话。一旦PPP会话建立,主机和访问集中器两者都必须为一个PPP虚拟接口分配资源。

4.Payloads 有效载荷

这里定义了下面所示的数据包格式。payload的内容将在Discovery和PPP的章节中描述。

以太网的帧格式如下所示:

1

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| DESTINATION_ADDR |

| (6 octets) |

| |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| SOURCE_ADDR |

| (6 octets) |

| |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| ETHER_TYPE (2 octets) |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

~ ~

~ payload ~

~ ~

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| CHECKSUM |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

DESTINATION_ADDR域是一个以太网单播目的地址或者以太网广播地址(0xffffffff)。

对于Discovery数据包来说,该域的值是在Descovery章节中定义的单播或者多播地址。

对于PPP会话流来说,该域必须是Descovery阶段已确定的通信对方的单播地址。

SOURCE_ADDR域必须包含源设备的以太网MAC地址。

ETHER_TYPE设置为0x8863(Discovery阶段)或者0x8864(PPP会话阶段)。

采用PPPoE时,以太网帧的payload如下所示:

1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| VER | TYPE | CODE | SESSION_ID |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| LENGTH | payload ~

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

VER域为4bit,PPPoE规范的本版本必须设置为0x1。

TYPE域为4bit,PPPoE规范的本版本必须设置为0x1。

CODE域为8bit,其取值在后面的Discovery和PPP会话章节分别指定。

SESSION_ID域为16位,是一个网络字节序的无符号值。其值在后面Discovery数据包中定义。对一个给定的PPP会话来说该值是一个固定值,并且与以太网SOURCE_ADDR和DESTINA TION_ADDR一起实际地定义了一个PPP会话。值0xffff 为将来的使用保留,不允许使用。

LENGTH域为16位。该值(网络字节序)表明了PPPoE 的payload长度。不包括以太网头部和PPPoE头部的长度。

5.Discovery阶段

Discovery阶段由4个步骤组成。完成之后通信双方都知道了PPPoE SESSION_ID以及对方以太网地址,它们共同定义了唯一的PPPoE会话。这些步骤包括:

?主机广播一个Initiation(发起)数据包(以请求建立链路),

?一个或多个接入集线器发送Offer(提供)数据包

?主机发送单播Session Request(会话请求)数据包

?选中的接入集线器发送Confirmation(确认)数据包

当主机接收到确认数据包后,它就可以进入PPP会话阶段。接入集线器发送确认数据包后,它就可以进入到PPP会话阶段。

Discovery阶段所有的以太网帧的ETHER_TYPE域都设置为0x8863。

PPPoE的payload部分包含0个或多个TAG。一个TAG是一个TLV(type-length-value)结构,定义如下:

1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| TAG_TYPE | TAG_LENGTH |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| TAG_VALUE ... ~

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

TAG_TYPE域为16bit值(网络字节序),附录A列出了各种TAG_TYPE和TAG_V ALUE。

TAG_LENGTH域为16bit,是无符号值(网络字节序),表明TAG_V ALUE的字节数。

如果收到的discovery数据包中包含未知的TAG_TYPE,则必须忽略掉该TAG,除非本文档特别指出。这样规定是为了在增加新的TAG时保持向后兼容。如果增加强制使用的TAG,则版本号(version)将会提高。

附录B中有一些Discovery数据包的例子。

5.1. PPPoE Active Discovery Initiation数据包(PADI)

主机发送DESTINA TION_ADDR 为广播地址的PADI数据包,CODE域设置为0x09,SESSION_ID域必须设置为0x0000。

PADI数据包包含:

?TAG_TYPE为Service-Name的TAG。它表示主机请求的服务(必须有,而且

只能有一个)

?任意数目的其它类型的TAG。

整个PADI数据包(包括PPPoE头部)不允许超过1484个字节,以留足空间让中继代理(向数据包中)增加类型为Relay-Session-Id的TAG。

5.2. PPPoE Active Discovery Offer 数据包(PADO)

如果接入集线器能够为收到的PADI请求提供服务,它将通过发送一个PADO数据包来做出应答。DESTINA TION_ADDR为发送PADI的主机的单播地址,CODE域为0x07,SESSION_ID域必须设置为0x0000。

PADO数据包必须包含:

?TAG_TYPE为AC-Name的TAG(包含了访问集中器的名字)

?与PADI中相同的TAG_TYPE为Service-Name的TAG

?任意数目的类型为Service-Name的TAG表明接入集线器提供的其它服务。

如果接入集线器不能为PADI提供服务,则不允许用PADO作响应。

5.3. PPPoE Active Discovery Request 数据包(PADR)

由于PADI是广播的,主机可能收到不止一个PADO,它将审查接收到的所有PADO并从中选择一个。可以根据其中的AC-Name或PADO所提供的服务来作出选择。然后主机向选中的访问集中器发送一个PADR数据包。其中,DESTINATION_ADDR域设置为发送PADO的接入集线器的单播地址,CODE域设置为0x19,SESSION_ID必须设置为0x0000。

PADR必须包含:

?包含且仅包含一个TAG_TYPE为Service-Name的TAG,表明主机请求的服务

?任意数目其他类型的TAG。

5.4. PPPoE Active Discovery Session-confirmation 数据包(PADS)

当接入集线器收到一个PADR数据包,它就准备开始一个PPP会话。它为PPPoE会话创建一个唯一的SESSION_ID并用一个PADS数据包来给主机作出响应。

DESTINATION_ADDR域为发送PADR数据包的主机的单播以太网地址,CODE域设置为0x65,SESSION_ID必须设置为所创建好的PPPoE会话标识符。

PADS数据包包含:

?且仅包含一个TAG_TYPE为Service-Name的TAG,表明接入集线器已经接受

了该PPPoE会话的服务类型

?任意数目的其他类型的TAG

如果接入集线器不喜欢PADR中的Service-Name,那么它必须用一个带有类型为Service-Name-Error的TAG(以及任意数目的其它TAG类型)的PADS来作出应答。这种情况下,SESSION_ID必须设置为0x0000。

5.5. The PPPoE Active Discovery Terminate数据包(PADT)

这种数据包可以在会话建立以后的任意时刻发送,表明PPPoE会话已经终止。它可以由主机或接入集线器发送,DESTINATION_ADDR域为单播以太网地址,CODE域设置为0xa7,SESSION_ID设置为将要终止的会话的SESSION_ID,这种数据包不需要任何TAG。

当收到PADT以后,就不允许再使用该会话发送PPP数据流了。在发送或接收到PADT 后,即使是常规的PPP结束数据包也不允许发送。PPP通信双方应该使用PPP协议自身来结束PPPoE会话,但在无法使用PPP时可以使用PADT。

6.PPP会话阶段

一旦PPPoE会话开始,PPP数据就像其它PPP封装一样发送。所有的以太网数据包都是单播的。ETHER_TYPE域设置为0x8864。PPPoE的CODE必须设置为0x00。PPPoE 会话的SESSION_ID不允许发生改变,必须是Discovery阶段所指定的值。PPPoE的payload包含一个PPP帧,帧始于PPP Protocol-ID。

附录B中给出了数据包的一个实例。

7.LCP方面的考虑

推荐使用Magic Number LCP配置选项,不推荐使用协议域压缩(Protocol Field Compression,PFC)选项。不允许协议实现体请求使用下面的任何一个配置选项,对此必须作出拒绝:

?Field Check Sequence (FCS) Alternatives,

?Address-and-Control-Field-Compression (ACFC),

?Asynchronous-Control-Character-Map (ACCM)

协商后(PPPoE)的最大接收单元(MRU)不允许超过1492。因为以太网的最大净载为1500字节,而PPPoE头部为6个字节,PPP Protocol-ID为2个字节,所以PPP的MTU 不允许超过1492。

建议接入集线器不时地向主机发送回声请求(Echo-Request)数据包,以确定会话的状态。否则如果主机在没有发送结束请求(Terminate-Request)数据包的情况下终止会话,则接入集线器将无法得知该会话已经“死去”。

当LCP结束的时候,主机和接入集线器必须停止使用该PPPoE会话。如果主机希望开始另一个PPP会话,则它必须重新进入PPPoE Discoverey阶段。

8.其它方面的考虑

如果主机在一段指定时间内没有收到PADO数据包,它应该重发其PADI数据包并把等待的间隔加倍。按所期望的次数重复这个动作。主机在等待接收PADS数据包时,应该采用类似的定时机制,只是主机重新发送的是PADR数据包。在重发指定次数后(还没有收到PADO),主机应该重新发送PADI。

本文档中的ETHER_TYPE(0x8863,0x8864)已经被IEEE指定专用于以太网上的PPP (PPPoE),使用这两个值和PPPoE VER(版本)域将唯一标识本协议。

本文档始终使用UTF-8(参考文献[5])而不是ASCII。UTF-8支持所有ASCII字符集同时允许国际字符集。参见参考文献[5]。

9.安全方面的考虑

为了防止拒绝服务攻击(Denial of Service,简称DOS), 接入集线器可以使用类型为AC-Cookie的TAG。接入集线器应该能够根据PADR的SOURCE_ADDR来重新产生具有唯一性的TAG_V ALUE。使用这种方法,接入集线器可以确保PADI的SOURCE_ADDR确实是可到达的,并对该地址的并行会话数进行限制。使用什么样的算法并没有指定,留给实现细节自己选择。对主机MAC地址使用HMAC(参考文献[3])就是一个例子,(在进行HMAC密码散列时)使用的是仅有接入集线器知道的密码。虽然AC-Cookie对防止某些DOS有用,但它不能防止所有的DOS攻击,接入集线器可以使用其它的方法来保护。

很多接入集线器不希望提供信息表明为未认证实体提供什么服务。在这种情况下,接入集线器应该使用下面两种策略之一:它应该根据请求中的Service-Name标签不拒绝该请求,并返回收到的TAG_V ALUE;或者应该仅接受带有TAG_LENGTH为0(表明任意服务)的Service-Name标签的请求。推荐使用前一种方案。

10.参考文献

[1] Simpson, W., Editor, “点到点协议(PPP)”, STD 51, RFC 1661, July 1994

[2] Bradner, S., “RFC中表明条件级别的关键词”, BCP 14, RFC 2119, March 1997.

[3] Krawczyk, H., Bellare, M. and R. Canetti, “HMAC:消息认证的密钥散列”, RFC2104,

February 1998.

[4] Reynolds, J. and J. Postel, “指定值”, STD 2, RFC 1700, October 1994. 参见:

http://biz.doczj.com/doc/6010269108.html,/numbers.html

[5] Yergeau, F., “UTF-8,ISO 10646的一种转换”, RFC 2279, January 1998.

附录 A -- TAG_TYPE和TAG_VALUE

0x0000 End-Of-List

该TAG表明表中没有其它TAG了。该TAG的TAG_LENGTH必须总是0。不强制使用该标签,存在是为了向后兼容。

0x0101 Service-Name

该TAG表明后面紧跟的是服务的名称。TAG_V ALUE是不以NULL结束的UTF-8字符串。当TAG_LENGTH为0时,该TAG用于表明接受任何服务。使用Service-Name 标签的例子是表明ISP(Internet服务提供商)或者一类服务或者服务的质量。

0x0102 AC-Name

该TAG表明后面紧跟的字符串唯一地表示了某个特定的接入集线器。它可以是商标、型号以及序列号等信息的集合,或者该接入集线器MAC地址的一个简单的UTF-8表示。它不以NULL来结束。

0x0103 Host-Uniq

该TAG由主机用于把接入集线器的响应(PADO或者PADS)与主机的某个唯一特定的请求联系起来。TAG_V ALUE是主机选择的长度和值为任意的二进制数据。它不能由接入集线器解释。主机可以在PADI或者PADR中包含一个Host-Uniq标签。

如果接入集线器收到了该标签,它必须在对应的PADO或者PADS中不加改变的包含该标签。

0x0104 AC-Cookie

该TAG由接入集线器用于防止拒绝服务攻击(见“安全方面的考虑”)。接入集线器可以在PADO数据包中包含该TAG。如果主机收到了该标签,它必须在接下来的PADR中不加改变的包含该标签。TAG_V ALUE 是长度和值任意的二进制数据,不能由主机解释。

0x0105 Vendor-Specific

该TAG用来传送厂商自定义的信息。TAG_V ALUE的头4个字节包含了厂商的识别码,其余字节尚未定义。厂商识别码的高字节为0,低3个字节为网络字节序的厂商的SMI网络管理专用企业码,如“定义值RFC”(参考文献[4])中定义的那样。

不推荐使用该TAG。为了确保互操作性,实现可以悄悄的忽略Vendor-Specific TAG。

0x0110 Relay-Session-Id

该TAG可由中间代理加入到Discovery数据包中。TAG_V ALUE对主机和访问集中器都是透明的(paque)。如果主机或接入集线器收到该TAG,则它们必须在所有的Discovery数据包中包含该TAG以作为响应。所有的PADI数据包必须保证足够空间来加入TAG_V ALUE长度为12字节的Relay-Session-Id标签。

如果Discovery数据包中已经包含一个Relay-Session-Id标签,则不允许再加入该标签。这种情况下,中间代理应该使用该现有的Relay-Session-Id标签。如果它不能使用现有的标签,或者没有足够空间来增加一个Relay- Session-Id标签,那么它应该向发送者返回一个Generic-Error标签。

0x0201 Service-Name-Error

该TAG(典型的有一个长度为零的数据部分)表明了由于某种原因,不能处理所请求的Service-Name。如果有数据部分,并且数据部分的头一个字节非0,那么它必须是一个可打印的UTF-8字符串,解释请求被拒绝的原因。该字符串可以不以NULL结

束。

0x0202 AC-System-Error

该TAG表明了接入集线器在处理主机请求时出现了某个错误。(例如没有足够资源来创建一个虚拟电路。PADS数据包中可以包含该标签。

如果有数据部分,并且数据的第一个字节不为0,那么它必须是一个可打印的UTF-8 字符串,该字符串解释了错误的性质。该字符串可以不以NULL结束。

0x0203 Generic-Error

该TAG表明发生了一个错误。当发生一个不可恢复的错误并且没有其它合适的TAG 时,它可被加到PADO, PADR或PADS数据包中。如果出现数据部分,那么数据必须是一个UTF-8字符串,解释错误的性质。该字符串不允许以NULL结束。

附录B -- 数据包的几个例子:

PADI数据包:

1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| 0xffffffff |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| 0xffff | Host_mac_addr |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Host_mac_addr (cont) |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| ETHER_TYPE = 0x8863 | v = 1 | t = 1 | CODE = 0x09 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| SESSION_ID = 0x0000 | LENGTH = 0x0004 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| TAG_TYPE = 0x0101 | TAG_LENGTH = 0x0000 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

PADO数据包:

1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Host_mac_addr |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Host_mac_addr (cont) | Access_Concentrator_mac_addr |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Access_Concentrator_mac_addr (cont) |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| ETHER_TYPE = 0x8863 | v = 1 | t = 1 | CODE = 0x07 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| SESSION_ID = 0x0000 | LENGTH = 0x0020 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| TAG_TYPE = 0x0101 | TAG_LENGTH = 0x0000 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| TAG_TYPE = 0x0102 | TAG_LENGTH = 0x0018 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| 0x47 | 0x6f | 0x20 | 0x52 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| 0x65 | 0x64 | 0x42 | 0x61 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| 0x63 | 0x6b | 0x20 | 0x2d |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| 0x20 | 0x65 | 0x73 | 0x68 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| 0x73 | 0x68 | 0x65 | 0x73 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| 0x68 | 0x6f | 0x6f | 0x74 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

PPP LCP数据包:显示了PPP protocol的值(0xc021),但是PPP的净载数据留给读者。这是一个从主机发给接入集线器的数据包。

1 2 3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Access_Concentrator_mac_addr |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|Access_Concentrator_mac_addr(c)| Host_mac_addr |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| Host_mac_addr (cont) |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| ETHER_TYPE = 0x8864 | v = 1 | t = 1 | CODE = 0x00 |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| SESSION_ID = 0x1234 | LENGTH = 0x???? |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

| PPP PROTOCOL = 0xc021 | PPP payload ~

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

PPPoE协议工作原理

4.3.2 PPPoE协议工作原理 PPPoE协议的工作流程包含发现和会话两个阶段,发现阶段是无状态的,目的是获得PPPoE 终结端(在局端的ADSL设备上)的以太网MAC地址,并建立一个唯一的PPPoESESSION_ID。发现阶段结束后,就进入标准的PPP会话阶段。 当一个主机想开始一个PPPoE会话,它必须首先进行发现阶段,以识别局端的以太网MAC 地址,并建立一个PPPoESESSION_ID。在发现阶段,基于网络的拓扑,主机可以发现多个接入集中器,然后允许用户选择一个。当发现阶段成功完成,主机和选择的接入集中器都有了他们在以太网上建立PPP连接的信息。直到PPP会话建立,发现阶段一直保持无状态的Client/Server(客户/服务器)模式。一旦PPP会话建立,主机和接入集中器都必须为PPP虚接口分配资源。 PPPoE协议会话的发现和会话两个阶段具体进程如下: 1. 发现(Discovery)阶段 在发现(Discovery)阶段中用户主机以广播方式寻找所连接的所有接入集线器(或交换机),并获得其以太网MAC地址。然后选择需要连接的主机,并确定所要建立的PPP会话识别标号。发现阶段有四个步骤,当此阶段完成,通信的两端都知道PPPoESESSION_ID和对端的以太网地址,他们一起唯一定义PPPoE会话。这四个步骤如下: (1)主机广播一个发起分组(PADI),分组的目的地址为以太网的广播地址0xffffffffffff,CODE (代码)字段值为0x09,SESSION_ID(会话ID)字段值为0x0000。PADI包必须至少包含一个服务名称类型的标签(标签类型字段值为0x0101),向接入集中器提出所要求提供的服务。(2)接入集中器收到在服务范围内的PADI包分组,发送PPPoE有效发现提供包(PADO)分组,以响应请求。其中CODE字段值为0x07 ,SESSION_ID字段值仍为0x0000。PADO分组必须包含一个接入集中器名称类型的标签(标签类型字段值为0x0102),以及一个,或多个服务名称类型标签,表明可向主机提供的服务种类。 (3)主机在可能收到的多个PADO分组中选择一个合适的PADO分组,然后向所选择的接入集中器发送PPPoE有效发现请求分组(PADR)。其中CODE字段为0x19 ,SESSION_ID字段值仍为0x0000。PADR分组必须包含一个服务名称类型标签,确定向接入集线器(或交换机)请求的服务种类。当主机在指定的时间内没有接收到PADO,它应该重新发送它的PADI 分组,并且加倍等待时间,这个过程会被重复期望的次数。 (4)接入集中器收到PADR包后准备开始PPP会话,它发送一个PPPoE有效发现会话确认(PADS)分组。其中CODE字段值为0x65 ,SESSION_ID字段值为接入集中器所产生的一个惟一的PPPoE会话标识号码。PADS分组也必须包含一个接入集中器名称类型的标签确认向主机提供的服务。当主机收到PADS包确认后,双方就进入PPP会话阶段。 【注意】如果主机正在等待接收PADS分组,应该使用具有主机重新发送PADR的相似超时机制。在重试指定的次数后,主机应该重新发送PADI分组。 2. PPP会话阶段 用户主机与接入集中器根据在发现阶段所协商的PPP会话连接参数进行PPP会话。一旦PPPoE会话开始,PPP数据就可以以任何其它的PPP封装形式发送。所有的以太网帧都是单播的。PPPoE会话的SESSION_ID一定不能改变,并且必须是发现阶段分配的值。 PPPoE还有一个PADT分组,它可以在会话建立后的任何时候发送,来终止PPPoE会话,也就是会话释放。它可以由主机或者接入集中器发送。当对方接收到一个PADT分组,就不再允许使用这个会话来发送PPP业务。PADT包不需要任何标签,其CODE字段值为0xa7 ,SESSION_ID字段值为需要终止的PPP会话的会话标识号码。在发送或接收PADT后,即使正

完整word版pppoe原理协议详解

PPPoE(Point to Point Protocol over Ethernet,基于以太网的点对点协议)的工作流程包含发现(Discovery)和会话(Session)两个阶段,发现阶段是无状态的,目的是获得PPPoE 终端(在局端的ADSL设备上)的以太网MAC 地址,并建立一个惟一的PPPoE SESSION-ID。发现阶段结束后,就进入标准的PPP会话阶段 1.发现阶段(PPPoED:PPPoE Discovery) ) Initiation PADI(PPPoE Active Discovery1.1 主机广播发起分组,分组的目的地址为以太网的广播地址 0xffffffffffff,CODE(代码)字段值为0×09(PADI Code),SESSION-ID(会话ID)字段值为0x0000。PADI分组必须至少包含一个服务名称类型的标签(Service Name Tag,字段值为0x0101),向接入集中器提出所要求提供的服务。) Offer(PPPoE Active Discovery1.2 PADO接入集中器收到在服务范围内的PADI 分组,发送PPPoE有效发现提供包分组,以响应请求。其中CODE字段值为0×07(PADO Code),SESSION-ID字段值仍为0x0000。PADO分组必须包含一个接入集中器名称类型的标签(Access Concentrator Name Tag,字段值为0x0102),以及一个或多个服务名称类型标签,表明可向主机提供的服务种类。PADO和PADI的值相同。Host-Uniq Tag ) Request PADR(PPPoE Active Discovery1.3主机在可能收到的多个PADO分组中选择一个合适的PADO分组,然后向所选择的接入集中器发送PPPoE有效发现请求分组。其中CODE字段为0x19(PADR Code),SESSION_ID字段值仍为0x0000。PADR分组必须包含一个服务名称类型标签,确定向接入集线器(或交换机)请求的服务种类。当主机在指定的时间内没有接收到PADO,它应该重新发送它的PADI分组,时间,这个过程会被重复期望的次数。并且加倍等待)-confirmation(PPPoE Active Discovery Session1.4 PADS接入集中器收到PADR分组后准备开始PPP会话,它发送一个PPPoE有效发现会话确认PADS分组。其中CODE字段值为0×65(PADS Code),SESSION-ID字段值为接入集中器所产生的一个惟一的PPPoE 会话标识号码。PADS分组也必须包含一个接入集中器名称类型的标签以确认向主机提供的服务。当主机收到PADS 分组确认后,双方就进入PPP会话阶段。PADS值相同。的和PADRHost-Uniq Tag )PPPoES:PPPoE Session会话阶段(2. 数据包来配置和测试数据通信链路。PPP会话的建立,需要两端的设备都发送LCP 会话。一PPP用户主机与接入集中器根据在发现阶段所协商的PPP会话连接参数进行

详解PPP及PPPoE协议,文章写得通俗易懂

PPP(Point-to-Point Protocol点到点协议),一种二层协议,通常部署在专线网和按需电路网上面,PPP 有很多丰富的可选特性,如支持多协议、提供可选的身份认证服务、可以以各种方式压缩数据、支持动态地址协商、支持多链路捆绑等等。这些丰富的选项增强了PPP的功能。同时,不论是异步拨号线路还是路由器之间的同步链路均可使用。因此,应用十分广泛 当然,在专线网上我们也可以使用HDLC二层协议,但用的并不多,原因有三: 1.不支持验证,一层通二层就通 2.不支持多种上层协议(ip/ipx/appletalk等),而PPP帧中专门有一个字段用来标示上层协议类型 3.HDLC协议为厂商私有协议,各个厂商互不兼容,但HDLC是cisco产品的默认广域网封装方式, 要使用PPP协议需要encapsulation ppp 命令改变接口封装协议 我们家庭拨号上网就是通过PPP协议在用户端和运营商的接入服务器之间建立通信链路。目前,宽带接入已基本取代拔号接入,在宽带接入技术日新月异的今天,PPP也衍生出新的应用。典型的应用是在ADSL(非对称数据用户环线,Asymmetrical Digital Subscriber Loop)接入方式当中,PPP与其他的协议共同派生出了符合宽带接入要求的新的协议,如PPPoE(PPP over Ethernet),PPPoA(PPP over ATM)。 利用以太网(Ethernet)资源,在以太网上运行PPP来进行用户认证接入的方式称为PPPoE。PPPoE 即保护了用户方的以太网资源,又完成了ADSL的接入要求,是目前ADSL接入方式中应用最广泛的技术标准。 同样,在ATM(异步传输模式,Asynchronous Transfer Mode)网络上运行PPP协议来管理用户认证的方式称为PPPoA。它与PPPoE的原理相同,作用相同;不同的是它是在ATM网络上,而PPPoE是在以太网网络上运行,所以要分别适应ATM标准和以太网标准 好的,下面我们就以点到点专线上的PPP协议和以太网上的PPPoE协议为例,详细介绍它们的工作原理、验证过程及其配置方法 一、点到点专线上的PPP协议 PPP特性有很多,但主要的特性是具备验证技术,所以在此我们主要是讨论PPP的验证。PPP的验证方式分为两种:PAP和CHAP PAP( 密码验证协议):客户端向服务器端发送验证信息,包含用户名和密码。如果用户名和密码与服务器里保存的一致,那就通过验证,否则就不能通过(通过两次握手)。 CHAP(挑战握手验证协议):CHAP首先是由服务器发起的,它向客户端发送含有random值(随机生成)、id号、用户名和密码的数据,客户端收到数据后提取random、id和用户所对应的密码使用MD5算法进行哈希(hash)得到hash值。然后再把自己保存的用户名连同id和刚得到的hash值一起发送给服务器。服务器再收到数据后也进行以上操作得到hash值,再把算得的hash值与从客户端得到的hash 值进行比较:两值相同服务器就发送一个通过的信息;两值不同服务器就发送一个拒绝的信息。可以看出,CHAP在整个验证过程中是不发送密码的,所以是一种安全的认证。 好的,下面我们就以实例来演示PAP和CHAP的配置过程 1、实验拓朴 2、配置步骤 首先我们来做个PAP认证

PPPOE协议工作原理

协议的工作流程包含发现和会话两个阶段,发现阶段是无状态的,目的是PPPoE 地址,并建立一个唯一的以太网MACADSL设备上)获得PPPoE终结端(在局端的的PPPoESESSION-ID。发现阶段结束后,就进入标准的PPP会话阶段。 当一个主机想开始一个PPPoE会话,它必须首先进行发现阶段,以识别局端的以太网MAC地址,并建立一个PPPoESESSION-ID。在发现阶段,基于网络的拓扑,主机可以发现多个接入集中器,然后允许用户选择一个。当发现阶段成功完成,主机和选择的接入集中器都有了他们在以太网上建立PPP连接的信息。直到PPP会话建立,发现阶段一直保持无状态的Client/Server(客户/服务器)模式。一旦PPP会话建立,主机和接入集中器都必须为PPP虚接口分配资源。 PPPoE协议会话的发现和会话两个阶段具体进程如下。 1.发现(Discovery)阶段 在发现(Discovery)阶段中用户主机以广播方式寻找所连接的所有接入集中器(或),并获得其以太网MAC地址。然后选择需要连接的主机,并确定交换机所要建立的PPP会话标识号码。发现阶段有4个步骤,当此阶段完成,通信的两端都知道PPPoESESSION-ID和对端的以太网地址,他们一起唯一定义PPPoE会话。这 4个步骤如下。 (1)主机广播发起分组(PADI) 主机广播发起分组(PADI),分组的目的地址为以太网的广播地址0× ffffffffffff,CODE(代码)字段值为0×09,SESSION-ID(会话ID)字段值为0×0000。PADI分组必须至少包含一个服务名称类型的标签(标签类型字段值为0×0101),向接入集中器提出所要求提供的服务。 (2)接入集中器 接入集中器收到在服务范围内的PADI分组,发送PPPoE有效发现提供包(PADO)分组,以响应请求。其中CODE字段值为 0×07,SESSION-ID字段值仍为0×0000。PADO分组必须包含一个接入集中器名称类型的标签(标签类型字段值为0×0102),以及一个或多个服务名称类型标签,表明可向主机提供的服务种类。 (3)主机选择一个合适的PADO分组 主机在可能收到的多个PADO分组中选择一个合适的PADO分组,然后向所选择的接入集中器发送PPPoE有效发现请求分组(PADR)。其中 CODE字段为0×19,SESSION_ID字段值仍为0×0000。PADR分组必须包含一个服务名称类型标签, 当主机在指定的时间内没有接收请求的服务种类。)或交换机(确定向接入集线器.到PADO,它应该重新发送它的PADI分组,并且加倍等待时间,这个过程会被重复期望的次数。 (4)准备开始PPP会话 接入集中器收到PADR分组后准备开始PPP会话,它发送一个PPPoE有效发现会话确认PADS分组。其中CODE字段值为 0×65,SESSION-ID字段值为接入集 中器所产生的一个唯一的PPPoE会话标识号码。PADS分组也必须包含一个接入 集中器名称类型的标签以确认向主机提供的服务。当主机收到PADS分组确认后,双方就进入PPP会话阶段。 2.PPP会话阶段 用户主机与接入集中器根据在发现阶段所协商的PPP会话连接参数进行PPP 会话。一旦PPPoE会话开始,PPP数据就可以以任何其他的PPP封装形式发送。所有的以太网帧都是单播的。PPPoE会话的SESSION-ID一定不能改变,并且必

PPPoE协议(RFC2516)中文

A Method for Transmitting PPP Over Ethernet (PPPoE) 在以太网上传输PPP的方法 RFC2516

目录 1.前言 (3) 2.简介 (3) 3.协议总述 (3) 4.Payloads 有效载荷 (4) 5.Discovery阶段 (5) 5.1. PPPoE Active Discovery Initiation数据包(PADI) (6) 5.2. PPPoE Active Discovery Offer 数据包(PADO) (6) 5.3. PPPoE Active Discovery Request 数据包(PADR) (6) 5.4. PPPoE Active Discovery Session-confirmation 数据包(PADS) (6) 5.5. The PPPoE Active Discovery Terminate数据包(PADT) (7) 6.PPP会话阶段 (7) 7.LCP方面的考虑 (7) 8.其它方面的考虑 (8) 9.安全方面的考虑 (8) 10.参考文献 (8) 附录 A -- TAG_TYPE和TAG_VALUE (8) 附录B -- 数据包的几个例子: (10)

1.前言 点到点协议(PPP,参考文献[1])提供在点到点连路上传送多协议数据报的标准方法。 本文档描述在以太网上建立PPP会话以及封装PPP数据报的方法。 可行性 本说明书试图提供PPP所定义的工具,如链路控制协议(Link Control Protocol,LCP), 网络层控制协议(Network-layer Control Protocols, NCP),认证以及其它机制。这 些功能要求在通信双方之间存在点到点的关系,而不是在以太网和其他多访问环境 中所出现的多点关系。 本规范可用于同一个以太网上的多个主机通过一个或多个跨接(桥接)调制解调器 向多个目的主机建立PPP会话。主要用于采用提桥接以太网拓扑结构的宽带远程 访问技术中,由服务提供商维护PPP会话。 本文档描述的PPPoE是RedBack Networks, RouterWare, UUNET 及其它厂商所采 用的在以太网上封装PPP的方法。 2.简介 现代接入技术需要面对有几个互相冲突的设计目标。人们希望通过同一个家庭接入设备来连接到远程站点上的多个主机,同时(又希望在使用习惯上)提供与拨号上网(使用PPP)类似的访问控制和计费功能。在很多接入技术中,把多个主机连接到家庭接入设备的最经济的方法就是通过以太网。另外,还想尽量保持设备的低成本同时要求不改变或很少改变其配置。 以太网上的PPP(PPPoE)提供了通过简单桥接接入设备把一个网络的多个主机连接到远程接入集线器的功能。使用该模型,每一个主机使用自己的PPP协议栈,呈现给用户的还是熟悉的用户接口。访问控制、计费以及业务类型都能基于每一个用户,而不是基于站点。 为了提供以太网上的点到点连接,每一个PPP会话必须知道对端的以太网地址,并建立一个唯一的会话标识符。PPPoE包含一个(以太网地址)发现协议来提供这个功能。 3.协议总述 PPPoE分为两个阶段,即Discovery(地址发现)阶段和PPP会话阶段。当某个主机希望发起一个PPPoE会话时,它必须首先执行Discovery来确定对方的以太网MAC地址并建立起一个PPPoE会话标识符SESSION_ID。虽然PPP定义的是端到端的对等关系,Discovery却是天生的一种客户端-服务器关系。在Discovery的过程中,由主机(作为客户端)来发现接入集线器(Access Concentrator,作为服务器)。根据网络的拓扑结构,可能存在不止一个能和主机进行通信的接入集线器。Discovery阶段允许主机发现所有的接入集线器并从中选择一个。当Discovery阶段成功完成之后,主机和接入集线器两者都具备了用于在以太网上建立点到点连接所需的所有信息。

OSI七层模型的每一层都有哪些协议、PPPOE机制

OSI七层模型协议 谈到网络不能不谈OSI参考模型,OSI参考模型(OSI/RM)的全称是开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它是由国际标准化组织ISO 提出的一个网络系统互连模型。虽然OSI参考模型的实际应用意义不是很大,但其的确对于理解网络协议内部的运作很有帮助,也为我们学习网络协议提供了一个很好的参考...... 第一层:物理层: 物理层规定了激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个传输数据的物理媒体。只是说明标准 在这一层,数据的单位称为比特(bit)。 属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45、fddi 令牌环网等。 第二层:数据链路层802.2、802.3ATM、HDLC、FRAME RELAY 数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。 在这一层,数据的单位称为帧(frame)。 数据链路层协议的代表包括:ARP、RARP、SDLC、HDLC、PPP、STP、帧中继等。 第三层:网络层IP、IPX、APPLETALK、ICMP 网络层负责对子网间的数据包进行路由选择。网络层还可以实现拥塞控制、网际互连等功能。在这一层,数据的单位称为数据包(packet)。加密解密是在网络层完成的. 网络层协议的代表包括:IP、IPX、RIP、OSPF等。 第四层:传输层TCP、UDP、SPX 传输层是第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。 在这一层,数据的单位称为数据段(segment)。 传输层协议的代表包括:TCP、UDP、SPX等。 第五层:会话层RPC、SQL、NFS 、X WINDOWS、ASP 会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。 第六层:表示层ASCII、PICT、TIFF、JPEG、MIDI、MPEG 表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。 第七层:应用层HTTP,FTP,SNMP等 应用层为操作系统或网络应用程序提供访问网络服务的接口。 应用层协议的代表包括:Telnet、FTP、HTTP、SNMP等。

OSI七层模型的每一层都有哪些协议、PPPOE机制

OSI七层模型的每一层都有哪些协议 由低到高 谈到网络不能不谈OSI参考模型,OSI参考模型(OSI/RM)的全称是开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它是由国际标准化组织ISO 提出的一个网络系统互连模型。虽然OSI参考模型的实际应用意义不是很大,但其的确对于理解网络协议内部的运作很有帮助,也为我们学习网络协议提供了一个很好的参考...... 物理层规定了激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个传输数据的物理媒体。只是说明标准 在这一层,数据的单位称为比特(bit)。 属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45、fddi 令牌环网等。 第一层:物理层 数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。 在这一层,数据的单位称为帧(frame)。 数据链路层协议的代表包括:ARP、RARP、SDLC、HDLC、PPP、STP、帧中继等。 第二层:数据链路层802.2、802.3A TM、HDLC、FRAME RELAY 网络层负责对子网间的数据包进行路由选择。网络层还可以实现拥塞控制、网际互连等功能。在这一层,数据的单位称为数据包(packet)。 网络层协议的代表包括:IP、IPX、RIP、OSPF等。 第三层:网络层IP、IPX、APPLETALK、ICMP 传输层是第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。 在这一层,数据的单位称为数据段(segment)。 传输层协议的代表包括:TCP、UDP、SPX等。 第四层:传输层TCP、UDP、SPX 会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。 第五层:会话层RPC、SQL、NFS 、X WINDOWS、ASP 表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。 第六层:表示层ASCII、PICT、TIFF、JPEG、MIDI、MPEG 应用层为操作系统或网络应用程序提供访问网络服务的接口。 应用层协议的代表包括:Telnet、FTP、HTTP、SNMP等。

PPPOE协议详解-对报文进行了详细分析解释通俗易懂

华为技术有限公司版权所有侵权必究

目录(TOC Heading) 第1章概述 (1) 1.1 PPPOE协议的基本概念 (1) 1.1.1 PPPOE协议出现的背景 (1) 1.1.2 PPPOE协议简介 (1) 1.2总结 (2) 1.3思考 (2) 第2章 PPPOE的发现阶段 (1) 2.1 PPPOE的初始化过程 (1) 2.1.1以太网的帧格式 (1) 2.1.2 PPPOE的数据报文格式 (2) 2.1.3 PPPOE发现阶段的数据报文 (3) 2.1.3.1 PPPOE数据报文中Tag(标记)的格式 (3) 2.1.3.2 PADI(PPPOE Active Discovery Initiation)报文 (4) 2.1.3.3 PADO(PPPOE Active Discovery Offer)报文 (5) 2.1.3.4 PADR(PPPOE Active Discovery Request)报文 (6) 2.1.3.5 PADS(PPPOE Active Discovery Session-confirmation)报文 (7) 2.1.3.6 PADT(PPPOE Active Discovery Terminate)报文 (7) 2.2总结 (7) 2.3思考 (8) 第3章 PPPOE的会话阶段 (9) 3.1 PPPOE的会话过程 (9) 3.2总结 (9) 3.3思考 (9)

第1章概述 1.1 PPPOE协议的基本概念 1.1.1 PPPOE协议出现的背景 随着宽带网络技术的不断发展,以xDSL、CableModem和以太网为主的几种 主流宽带接入技术的应用已开展的如火如荼。同时又给各大网络运营商们带 来了种种困惑,无论使用哪种接入技术,对于他们而言可盼和可求的是如何 有效的管理用户,如何从网络的投资中收取回报,因此对于各种宽带接入技 术的收费的问题就变得更加敏感。在传统的以太网模型中,我们是不存在所 谓的用户计费的概念,要么用户能设置/获取IP地址上网,要么用户就无法上 网。IETF的工程师们在秉承窄带拨号上网的运营思路(使用NAS设备终结用 户的PPP数据包),制定出了在以太网上传送PPP数据包的协议(Point To Point Protocol Over Ethernet),这个协议出台后,各网络设备制造商也相继 推出自已品牌的宽带接入服务器(BAS),它不仅能支持PPPOE协议数据报 文的终结,而且还能支持其它许多协议。如华为公司的MA5200(小BAS) 和ISN8850(大BAS)。 1.1.2 PPPOE协议简介 PPPOE协议提供了在广播式的网络(如以太网)中多台主机连接到远端的访 问集中器(我们对目前能完成上述功能的设备为宽带接入服务器)上的一种 标准。在这种网络模型中,我们不难看出所有用户的主机都需要能独立的初 始化自已的PPP协议栈,而且通过PPP协议本身所具有的一些特点,能实现 在广播式网络上对用户进行计费和管理。为了能在广播式的网络上建立、维 持各主机与访问集中器之间点对点的关系,那么就需要每个主机与访问集中 器之间能建立唯一的点到点的会话。 PPPOE协议共包括两个阶段,即PPPOE的发现阶段(PPPOE Discovery Stage)和PPPOE的会话阶段(PPPOE Session Stage)。在这篇培训教材 中更注重是PPPOE发现阶段的介绍,因为对于PPPOE的会话阶段,可以看 成和PPP的会话过程是一样的(可直接参照PPP协议培训教材),而两者的 主要区别在于只是在PPP的数据报文前封装了PPPOE的报文头。无论是哪 一个阶段的数据报文最终会被封装成以太网的帧进行传送。

PPPOE协议

PPPOE协议 modem接入技术面临一些相互矛盾的目标,既要通过同一个用户前置接入设备连接远程的多个用户主机,又要提供类似拨号一样的接入控制,计费等功能,而且要尽可能地减少用户的配置操作。 PPPOE 的目标就是解决上述问题, 1998年后期问世的以太网上点对点协议(PPP over Ethernet)技术是由Redback 网络公司、客户端软件开发商RouterWare公司以及Worldcom子公司UUNET Technologies 公司在IETF RFC 的基础上联合开发的。通过把最经济的局域网技术-以太网和点对点协议的可扩展性及管理控制功能结合在一起,网络服务提供商和电信运营商便可利用可靠和熟悉的技术来加速部署高速互联网业务。它使服务提供商在通过数字用户线、电缆调制解调器或无线连接等方式,提供支持多用户的宽带接入服务时更加简便易行。同时该技术亦简化了最终用户在选择这些服务时的配置操作。PPPOE特点 PPPOE在标准PPP报文的前面加上以太网的报头,使得PPPOE提供通过简单桥接接入设备连接远端接入设备,并可以利用以太网的共享性连接多个用户主机,在这个模型下,每个用户主机利用自身的ppp堆栈,用户使用熟悉的界面。接入控制,计费等都可以针对每个用户来进行。 PPPOE的优点: .?安裝与操作方式类似于以往的拨号网络模式,方便用戶使用。 .?用户处的XDSL 调制解调器无须任何配置。 .?允许多个用户共享一个高速数据接入链路。 .?适应小型企业和远程办公的要求。 .?终端用户可同时接入多个ISP,这种动态服务选择的功能可以使ISP容易创建和提供新的业务。 .?兼容现有所有的XDSL Modem 和DSLAM。 .?可与ISP 有接入结构相融合。 PPPOE的帧格式

详解PPP及PPPoE协议

详解PPP及PPPoE协议 PPP(Point-to-Point Protocol点到点协议),一种二层协议,通常部署在专线网和按需电路网上面,PPP有很多丰富的可选特性,如支持多协议、提供可选的身份认证服务、可以以各种方式压缩数据、支持动态地址协商、支持多链路捆绑等等。这些丰富的选项增强了PPP的功能。同时,不论是异步拨号线路还是路由器之间的同步链路均可使用。 因此,应用十分广泛 当然,在专线网上我们也可以使用HDLC二层协议,但用的并不多,原因有三: 1.不支持验证,一层通二层就通 2.不支持多种上层协议(ip/ipx/appletalk等),而PPP帧中专门有一个字段用来标示上层协议类型 3.HDLC协议为厂商私有协议,各个厂商互不兼容,但HDLC是cisco产品的默认广域网封装方式,要使用PPP协议需要encapsulation ppp 命令改变接口封装协议 我们家庭拨号上网就是通过PPP协议在用户端和运营商的接入服务器之间建立通信链路。目前,宽带接入已基本取代拔号接入,在宽带接入技术日新月异的今天,PPP 也衍生出新的应用。典型的应用是在ADSL(非对称数据用户环线,Asymmetrical Digital Subscriber Loop)接入方式当中,PPP与其他的协议共同派生出了符合宽带接入要求的新的协议,如PPPoE(PPP over Ethernet),PPPoA(PPP over ATM)。 利用以太网(Ethernet)资源,在以太网上运行PPP来进行用户认证接入的方式称为PPPoE。PPPoE即保护了用户方的以太网资源,又完成了ADSL的接入要求,是目前ADSL接入方式中应用最广泛的技术标准。 同样,在ATM(异步传输模式,Asynchronous Transfer Mode)网络上运行PPP协议来管理用户认证的方式称为PPPoA。它与PPPoE的原理相同,作用相同;不同的是它是在ATM网络上,而PPPoE是在以太网网络上运行,所以要分别适应ATM标准和以太网标准 好的,下面我们就以点到点专线上的PPP协议和以太网上的PPPoE协议为例,详细介绍它们的工作原理、验证过程及其配置方法 一、点到点专线上的PPP协议 PPP特性有很多,但主要的特性是具备验证技术,所以在此我们主要是讨论PPP的验证。PPP的验证方式分为两种:PAP和CHAP PAP( 密码验证协议):客户端向服务器端发送验证信息,包含用户名和密码。如果用户名和密码与服务器里保存的一致,那就通过验证,否则就不能通过(通过两次握手)。 CHAP(挑战握手验证协议):CHAP首先是由服务器发起的,它向客户端发送含有random值(随机生成)、id号、用户名和密码的数据,客户端收到数据后提取random、id和用户所对应的密码使用MD5算法进行哈希(hash)得到hash值。然后再把自己保存的用户名连同id和刚得到的hash值一起发送给服务器。服务器再收到数据后也进行以上操作得到hash值,再把算得的hash值与从客户端得到的hash值进行比较:两值相同服务器就发送一个通过的信息;两值不同服务器就发送一个拒绝的信息。可以看出,CHAP在整个验证过程中是不发送密码的,所以是一种安全的认证。 好的,下面我们就以实例来演示PAP和CHAP的配置过程 1、实验拓朴 2、配置步骤 首先我们来做个PAP认证 1)基本配置: R1#conf t R1(config)#int s0 R1(config-if)#ip add 192.168.0.1 255.255.255.252 R1(config-if)#no shutdown R2#conf t R2(config)#int s0

PPPoE协议抓包分析

课程设计成绩评价表

成都信息工程学院 课程设计 课程名称:网络协议实践 设计题目:PPPoE协议数据包分析 班级:网络工程网络083班 学号:2008121093 姓名:白玉强 指导老师:刘云本提交日期:2011-12-17

摘要 网络协议的定义:为计算机网络中进行数据交换而建立的规则、标准或约定的集合。例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识。为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符后,才进入网络传送,到达目的终端之后,再变换为该终端字符集的字符。当然,对于不相容终端,除了需变换字符集字符外。其他特性,如显示格式、行长、行数、屏幕滚动方式等也需作相应的变换。 网络协议是网络上所有设备(网络服务器、计算机及交换机、路由器、防火墙等)之间通信规则的集合,它规定了通信时信息必须采用的格式和这些格式的意义。大多数网络都采用分层的体系结构,每一层都建立在它的下层之上,向它的上一层提供一定的服务,而把如何实现这一服务的细节对上一层加以屏蔽。 一台设备上的第n层与另一台设备上的第n层进行通信的规则就是第n层协议。 在网络的各层中存在着许多协议,接收方和发送方同层的协议必须一致,否则一方将无法识别另一方发出的信息。网络协议使网络上各种设备能够相互交换信息。常见的协议有:TCP/IP协议、IPX/SPX协议、NetBEUI协议等。 物理层:以太网·调制解调器·电力线通信(PLC)·SONET/SDH·G.709·光导纤维·同轴电缆·双绞线等 数据链路层:Wi-Fi(IEEE802.11)·WiMAX(IEEE 802.16)·ARP·RARP·ATM·DTM·令牌环·以太网·FDDI·帧中继·GPRS·EVDO·HSPA·HDLC·PPP·L2TP·PPTP·ISDN·STP等 网络层协议:IP(IPv4·IPv6)·ICMP·ICMPv6·IGMP·IS-IS·IPsec等 传输层协议:TCP·UDP·TLS·DCCP·SCTP·RSVP·OSPF等 关键词:协议TCP

基于BAS的PPPoE协议实现

前面我们对PPPoE的基础内容进行了讲解。这里我们则重点讲解一下PPPoE协议在BAS上的实现。PPPoE拨号软件在应用中已经很成熟(Windows XP中自带),下面重点讨论PPPoE 在接入服务器BAS中的实现方式。 1 PPPoE协议的效率 从PPPoE协议模型可以看出,BAS汇聚了用户的所有数据流,它必须将每一个PPPoE包都拆开检查处理,这在很大程度上是沿袭了传统的PPP处理的方式,虽然有很好的安全性,但一旦用户很多,数据包数量很大,解封装速度就需要很快,BAS很大的精力花在检测用户的数据包上,容易形成接入的“瓶颈”。 为此,在BAS的硬件结构上可以采用分布式网络处理器(NP)和ASIC芯片设计。网络处理器是专门针对电信网络设备而开发的专用处理器,它有一套专门的指令集,用于处理电信网络的各种协议和业务,可以大大提高设备的处理能力。同时,ASIC芯片转发数据包时接近硬件的转发性能,远非CPU软件方式可比,采用这种方式将PPPoE数据流的处理与转发分开,工作效率大大提高。此外在软件系统结构上还应该与其他技术相结合,更好地发挥PPPoE 的性能。 2 PPPoE与VLAN的结合 VLAN即虚拟局域网,是一种通过将局域网内的设备逻辑地划分成一个个不同的网段,从而实现虚拟工作组的技术。划分VLAN的目的,一是提高网络安全性,不同VLAN的数据不能自由交流,需要接受第三层的检验;二是隔离广播信息,划分VLAN后,广播域缩小,有利于改善网络性能,能够将广播风暴控制在一个VLAN内部。 PPPoE是一个客户端/服务器协议,客户端需要发送PADI包寻找BAS,因此它必须同BAS 在同一个广播式的二层网络内,与VLAN的结合很好地解决了这方面的安全隐患。此外通过将不同业务类型的用户分配到不同的VLAN处理,可以灵活地开展业务,加快处理流程,当然VLAN的规划必须在二层设备和BAS之间统一协调。 BAS收到上行的PPPoE包后,首先判别VLAN ID的所属类别,如果是普通的拨号用户,则确定是Discovery阶段还是会话阶段的数据包,并严格按照PPPoE协议处理。在会话阶段,根据不同的用户类型从不同的地址池中向用户分配IP地址,地址池由上层网管配置。如果是已经通过认证的用户的数据包,则根据该用户的服务类型处理,比如,如果是本地认证的拨号用户,且对方也申请有同样的功能,则直接由本地转发。 如果是专线用户,则不用经过PPPoE协议复杂的认证过程,直接根据用户的VLAN ID便可进入专线用户处理流程,接入速度大大提高。此外为了统一网管,在BAS与其他设备之间需要通信,这些数据包是内部数据包,也可根据VLAN ID来辨别。 对于下行数据,由于BAS负责分配和解析用户的IP,兼有网关的功能,它收到数据包的目的IP是用户的,因此以IP为索引查找用户的信息比根据MAC要方便得多,这一点与普通的交换机有所不同,具体过程跟上行处理差不多。 3 PPPoE对多业务选择的支持 多业务选择指的是用户通过一条终结到BAS的PPP连接来自主地选择后台网络运营商所提供的多种业务。之所以要支持多业务的选择,一方面是因为各种业务的具体实现在技术上的侧重点是不同的,对网络性能的要求也不尽相同,以前采取的固定分配的方式非常不便;另

PPPOE协议技术与标准-20020613-C

PPPOE协议技术与标准 华为技术有限公司 版权所有侵权必究

PPPOE协议技术与标准文档密级:内部公开 修订记录

PPPOE协议技术与标准文档密级:内部公开 目录 第1章概述 (1) 1.1 PPPOE协议的基本概念 (1) 1.1.1 PPPOE协议出现的背景 (1) 1.1.2 PPPOE协议简介 (1) 1.2 总结 (2) 1.3 思考 (2) 第2章 PPPOE的发现阶段 (3) 2.1 PPPOE的初始化过程 (3) 2.1.1 以太网的帧格式 (3) 2.1.2 PPPOE的数据报文格式 (4) 2.1.3 PPPOE发现阶段的数据报文 (5) 2.1.4 PPPOE数据报文中Tag(标记)的格式 (5) 2.1.5 PADI(PPPOE Active Discovery Initiation)报文 (7) 2.1.6 PADO(PPPOE Active Discovery Offer)报文 (8) 2.1.7 PADR(PPPOE Active Discovery Request)报文 (9) 2.1.8 PADS(PPPOE Active Discovery Session-confirmation)报文 (9) 2.1.9 PADT(PPPOE Active Discovery Terminate)报文 (10) 2.2 总结 (10) 2.3 思考 (10) 第3章 PPPOE的会话阶段 (11) 3.1 PPPOE的会话过程 (11) 3.2 总结 (11) 3.3 思考 (11)

PPPOE协议技术与标准文档密级:内部公开关键词: PPPOE 集中器PADR 摘要: PPPOE协议提供了在广播式的网络中多台主机连接到远端的访问集中器上的一种标准。本文主要介绍了PPPOE协议的报文结构以及PPPOE发现阶段的报文交互过程。 缩略语清单: 参考资料清单:

PPPoE协议的基本功能以及报文格式

PPPoE协议调研 by 00848223 刘盾 PPPoE是一种在以太网上进行PPP点对点拨号连接的协议。因为以太网属于专网,网络是直接连接的,不用拨号,所以物理层上的连接是没有问题的。但为了确保连接安全,并且只允许合法用户连接,所以采取了类似电话拨号方式的身份验证,此时所拨的不是电话号码,而是用户的账户,属于数据链路层的协议。 PPPoE虽然是目前应用最广的一种ADSL网络协议,但它不是随着ADSL技术的出现而出现的,它是在1998年才开发出来的,主要目的是为了解决公网IP地址不足的问题。所谓虚拟拨号是指用ADSL接入Internet时同样需要输入用户名与密码才能进行连接,与传统的模拟电话线路+MODEM、数字电话线路+ISDN Ta的接入方式不同,ADSL不是对具体的电话号码进行拨号,而是直接在局端以太网上进行身份验证。因为事实上在没有拨号前物理网络是连通的,只是通过相应账户的身份验证登录网络系统,所以称之为“虚拟拨号”。 PPPoE技术最早是由Redback 网络公司、客户端软件开发商RouterWare公司以及Worldcom子公司“UUNET Technologies”公司,于1998年后期在IETF RFC基础上联合开发的。通过把最经济的以太局域网和点对点协议的可扩展性和管理控制功能结合在一起,网络服务提供商和电信运营商便可利用可靠、熟悉的技术来加速部署高速互联网业务。它使服务提供商在通过DSL、Cable MODEM或WLAN(无线局域网)等方式,提供支持多用户的宽带接入服务时更加简便易行。而在以前,在传统的以太网模型中,我们是不存在所谓的用户计费的概念,要么用户能获取IP 地址上网,要么用户就无法上网。IETF 的工程师们在秉承窄带拨号上网的运营思路的基础上,制定出了在以太网上传送PPP 数据包的协议——PPPoE。这个协议出台后,各网络设备制造商也相继推出自己品牌的宽带接入服务器(BAS),使得PPPoE这种灵活的ADSL接入方式迅速得到了广泛应用。 PPPoE利用以太网络的工作机制,将ADSL MODEM的10Base-T接口(因为目前ADSL的最高接入速率在10Mbps以内,无须更高速率端口)与内部以太网互联。ADSL的这种接入方式在 RFC1483文档中规定。在ADSL MODEM中采用的桥接封装方式对终端发出的PPP数据包进行封装后,通过连接两端的PVC(永久虚电路)在ADSL MODEM与中继传输网和数据交换 网(这些网之间通常是采用虚电路连接的)的宽带接入服务器之间建立连接,实现PPP的动态接入。组网方式很简单,大大降低了网络的复杂程度。 通过PPPoE协议,在一个共享的以太网上的多个主机可以通过一个或多个简单的桥接接入设备,与远程接入集中器进行多个PPP会话,这就是ADSL 应用最广的桥接接入模式,使用这种模型,每个主机使用它自己的PPP协议栈,并且为每个用户分配一个熟悉的用户接口。接入控制、计费和服务类型能够基于每用户,而不是每站点来处理。 PPPoE协议的工作流程包含发现和会话两个阶段,发现阶段是无状态的,目的是获得PPPoE终结端(在局端的ADSL设备上)的以太网MAC地址,并建立一个惟一的PPPoESESSION-ID。发现阶段结束后,就进入标准的PPP会话阶段。 当一个主机想开始一个PPPoE会话,它必须首先进行发现阶段,以识别局端的以太网MAC地址,并建立一个PPPoESESSION-ID。在发现阶段,基于网络的拓扑,主机可以发现多个接入集中器,然后允许用户选择一个。当发现阶段成功完成,主机和选择的接入集中器都有了他们在以太网上建立PPP连接的信息。直到PPP会话建立,发现阶段一直保持无状态的Client/Server(客户/服务器)模式。一旦PPP会话建立,主机和接入集中器都必须为PPP虚接口分配资源。 PPPoE协议会话的发现和会话两个阶段具体进程如下。 1.发现(Discovery)阶段 在发现(Discovery)阶段中用户主机以广播方式寻找所连接的所有接入集中器(或交换机),并获得其以太网MAC地址。然后选择需要连接的主机,并确定所要建立的PPP会话标识号码。发现阶段有4个步骤,当此阶段完成,通信的两端都知道PPPoESESSION-ID和对端的以太网地址,他们一起惟一定义 PPPoE会话。这4个步骤如下。

相关主题