1.1背景知识

  1. PPP
    点到点协议(Point-to-Point Protocol,PPP)是目前点对点链路中应用最广泛的一种数据链路层协议。PPP具有差错检测、支持多种网络层协议、允许在建立连接时动态协商IP地址、允许身份认证等功能。PPP不进行纠错、不提供可靠传输、不提供流量控制、不支持多点链路通信,因此协议设计和实现简单。

    PPP主要由以下三部分组成。 ① 封装成帧,PPP提供一种封装多协议数据报的方法。既支持异步链路,又支持面向比特的同步链路。 ② 链路控制协议(Link Control Protocol,LCP)用来建立、配置、管理和测试数据链路连接,在建立连接过程中,通信双方可以就一些选项进行协商。 ③一组网络控制协议(Network Control Protocol,NCP),每一个NCP支持不同的网络层协议,以实现PPP对多种网络层协议的支持。
    PPP帧格式
    2.PPPoE
    PPP要求进行通信的双方之间是点到点的关系,不适于广播类型的以太网和另外一些多点访问类型的网络,于是产生了PPPoE(Point-to-Point Protocol over Ethernet,基于以太网的点对点协议)。它不仅为使用桥接以太网的用户提供了一种宽带接入手段,同时还能提供方便的接入控制和计费。每个接入用户均建立一个独一无二的PPP会话。会话建立前PPPoE必须通过发现协议获取远端访问集中器的MAC地址。
    PPPoE分为发现阶段和会话阶段。当主机希望开始一个PPPoE会话时,它首先要执行一个发现过程来识别对方的MAC地址,然后建立一个唯一的PPPoE会话。PPPoE通过基于客户-服务器模式的发现机制来完成发现阶段。由于以太网的广播特性,在这个过程中主机(客户)能发现所有的访问集中器(服务器),并选择其中之一,根据所获信息在两者间建立点对点连接。当一个PPPoE会话建立起来之后,PPPoE的发现阶段就结束了。
    在PPPoE的会话阶段,主机和访问集中器之间依据PPP传送PPP数据,进行PPP的各项协商和数据传输。在这一阶段传输的数据包中必须包含在发现阶段确定的会话标识并保持不变。
    PPPoE报文作为以太网帧的净载荷封装在以太网帧中,发现阶段承载一些会话标记,会话阶段承载PPP数据报文。
    发现阶段的PPPoE帧格式和会话阶段的PPPoE阶段帧格式分别如图
    在这里插入图片描述

1.2实验配置

拓扑图

该实验主要用于观察PPPoE和PPP的数据封装格式。其中,PC1到ISP1段的链路使用PPPoE,ISP1已经配置为PPPoE服务器。ISP1和ISP2之间的链路使用PPP
在这里插入图片描述

Note:请使用Cisco Packet Tracer 6及以下版本,经测试7版本和8版本均无法开启PPPoe。

IP地址的设置

设备名接口名IP地址子网掩码默认网关
ISP1F0/0220.10.0.1255.255.255.0
ISP1S0/0/0202.119.93.1255.255.255.0
ISP2S0/0/0202.119.93.2255.255.255.0
ISP2F0/0202.119.94.254255.255.255.0
PC2202.119.94.1255.255.255.0202.119.94.254

1.3实验目的

① 了解PPP的封装格式。
② 了解PPPoE的封装格式。

1.4实验步骤

(一)链接上图中的拓朴结构

① 放置两个PC 两个Switch
两个Router后,接着分别点开Router的Physical页,并分别为两个Router在关电的条件下安装HWIC-2T,安装完成后打开电源。
在这里插入图片描述
② 使用DTE串口线连接两个路由器的Serial口,其余线路使用直通线连接。
在这里插入图片描述

Note:这里出现链路不通是正常现象(强迫症同学可以在路由器config中打开PortStatus,不打开也不影响接下来的操作)

(二)对ISP1配置PPPoE

ISP1 CLI:

Router>
Router>en           //特权模式
Router#conf t       //全局模式
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#hostname R0   //主机名修改为R0
R0(config)#vpdn enable       //启用虚拟拨号
R0(config)#vpdn-group 1      //虚拟拨号分组1(可自行定义)
R0(config-vpdn)#accept-dialin  //允许拨入
R0(config-vpdn-acc-in)#protocol pppoe //使用pppoe协议
% PPPoE config from vpdn-group is converted to pppoe-profile based config.
% Continue PPPoE configuration under 'bba-group pppoe global'
% PPPoE config from vpdn-group is converted to pppoe-profile based config.
% Continue PPPoE configuration under 'bba-group pppoe global'

%LINK-5-CHANGED: Interface Virtual-Access1, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface Virtual-Access1, changed state to up

R0(config-vpdn-acc-in)#
R0(config-vpdn-acc-in)#virtual-template 1    //使用虚拟接口 1
% PPPoE config from vpdn-group is converted to pppoe-profile based config.
% Continue PPPoE configuration under 'bba-group pppoe global'
R0(config-vpdn-acc-in)#exit
R0(config-vpdn)#exit
R0(config)#                                //回退至全局模式
R0(config)#username user1 password 112233  //设置多组用于拨号的账号密码
R0(config)#username user2 password 123123
R0(config)#ip local pool pppoegroup 220.10.0.10 220.10.0.100 //设置ip地址池(pppoegroup可自行定义)
R0(config)#inter virtual-Template 1       //配置虚拟接口 1
R0(config-if)#ip unnumbered f0/0          //使用f0/0接口接入路由
R0(config-if)#peer default ip add pool pppoegroup  //使用前面的ip地址池
R0(config-if)#ppp authentication chap     //使用chap握手(或pap)
AAA: Warning, authentication list default is not defined for PPP.

R0(config-if)#inter f0/0                  //配置f0/0接口
R0(config-if)#pppoe enable                 //启用pppoe
R0(config-if)#ip add 220.10.0.1 255.255.255.0  //设置ip地址
R0(config-if)#no shutdown                   //打开接口

R0(config-if)#
%LINK-5-CHANGED: Interface FastEthernet0/0, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up

R0(config-if)#

打开PC1->Desktop->PPPoEDialer 输入任意一组账号密码
在这里插入图片描述
鼠标悬停于PC1观察所分配的IP地址:
在这里插入图片描述
使用cmd 的 ipconfig 命令查看PC1信息:
在这里插入图片描述
使用Add Simple PDU分别先后点击IPS1与PC1:
在这里插入图片描述

(三)ISP1与ISP2使用PPP协议连接

ISP1 CLI:

R0>
R0>en
R0#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R0(config)#inter s0/0/0                     //配置s0/0/0接口
R0(config-if)#encapsulation ppp             //使用ppp协议(默认HDLC)
R0(config-if)#ppp authentication chap
R0(config-if)#username R1 password 123456 //注意此处账号应为对方hostname
R0(config)#inter s0/0/0
R0(config-if)#ip add 202.119.93.1 255.255.255.0
R0(config-if)#no shutdown

%LINK-5-CHANGED: Interface Serial0/0/0, changed state to down

ISP2 CLI 同理:

Router>
Router>en
Router#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#hostname R1           //别忘了第二个路由器还没改主机名
R1(config)#inter s0/0/0
R1(config-if)#encapsulation ppp
R1(config-if)#ppp authentication chap
R1(config-if)#username R0 password 123456
R1(config)#inter s0/0/0
R1(config-if)#ip add 202.119.93.2 255.255.255.0
R1(config-if)#no shutdown

R1(config-if)#
%LINK-5-CHANGED: Interface Serial0/0/0, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface Serial0/0/0, changed state to up

R1(config-if)#

使用Add Simple PDU分别先后点击ISP1与ISP2:
在这里插入图片描述

(四)ISP2与PC2的以太网连接

配置ISP2的以太网端口:

R1>
R1>en
R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#inter f0/0
R1(config-if)#ip add 202.119.94.254 255.255.255.0
R1(config-if)#no shutdown

R1(config-if)#
%LINK-5-CHANGED: Interface FastEthernet0/0, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up

配置PC2的IP地址:

使用Add Simple PDU分别先后点击ISP2与PC2:
在这里插入图片描述
使用Add Simple PDU分别先后点击PC1与PC2:
在这里插入图片描述
注意观察会发现链路中所有线路都已经绿灯,且PDU的发送在PC1与ISP1发送成功、ISP1与ISP2发送成功、ISP2与PC2发送成功,但是PC1与PC2发送失败。
这是为什么呢???
继续往下看,你会得到答案 (●ˇ∀ˇ●)

(五)路由选择协议配置

ISP1 CLI:

R0>
R0>en
R0#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R0(config)#router rip                    //使用rip协议作为路由选择协议
R0(config-router)#version 2              //版本2
R0(config-router)#network 202.119.93.0   //注意看是网络地址
R0(config-router)#network 220.10.0.0

ISP2 CLI同理:

R1>
R1>en
R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#router rip
R1(config-router)#version 2
R1(config-router)#network 202.119.93.0
R1(config-router)#network 202.119.94.0

使用Add Simple PDU分别先后点击PC1与PC2:
在这里插入图片描述

1.5查看封装格式

切换至模式式,从PC1向PC2发送PDU,抓取在各个链路中的数据包查看封装格式

(一)PC1到ISP1使用PPPoE

在这里插入图片描述

(二)ISP1到ISP2使用PPP

在这里插入图片描述

(三)ISP2到PC2使用Ethernet

在这里插入图片描述

鸣谢

张老师的悉心指导、王学长的经验传授、百度文库PPPoE配置指导CSDN“退休码农飞伯德”的PPP协议配置指导

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐