zoukankan      html  css  js  c++  java
  • HCNA Routing&Switching之PPPoE协议

      前文我们了解了广域网中的HDLC和PPP协议相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15174240.html;今天我们来聊一聊PPPoE协议相关话题;

      数字用户线路DSL(Digital Subscriber Line)是以电话线为传输介质的传输技术,我们通常把所有的DSL技术统称为xDSL,x代表不同种类的数字用户线路技术;目前比较流行的宽带接入方式是ADSL,ADSL是非对称DSL技术,使用的是PPPoE(PPP over Ethernet)协议;PPPoE协议通过在以太网上提供点到点的连接,建立PPP会话,使得以太网中的主机能够连接到远端的宽带接入服务器。PPPoE具有使用范围广、安全性高、计费方便等特点;

      DSL技术应用场景

      提示:BRAS是运营商的宽带接入设备;DSLAM是Digital Subscriber Line Access Multiplexer的简称,中文称呼数字用户线路接入复用器。DSLAM是各种DSL系统的局端设备,属于最后一公里接入设备(the last mile),其功能是接纳所有的DSL线路,汇聚流量,相当于一个二层交换机。

      PPPoE在DSL中的应用

      提示:在企业内部,我们通过PPPoE客户端通过网线和Modem连接;Modem的作用就是将数字信号转换为模拟信号,它有两个种接口,一种是连接PPPoE客户端的网口,一种是连接DSLAM的电话口;运营商希望通过一台接入设备来连接远程的多个主机,同时接入设备能够提供访问控制和计费功能;在众多的接入技术中,把多个主机连接到接入设备的最经济的方法就是以太网,而PPP协议可以提供良好的访问控制和计费功能,于是产生了在以太网上传输的PPP报文技术,即PPPoE;PPPoE利用以太网将大量主机组成网络,通过一个远端接入设备连接因特网,并运用PPP协议对接入的每个主机进行控制,具有使用范围广,安全性高,计费放备案的特点;PPPoE解决了用户上网收费等实际应用问题,得到了宽带接入运营商店认可并被广泛应用;

      PPPoE报文格式

      提示:PPPoE报文是使用Ethernet格式进行封装,所以PPPoE是以太网的上层协议;在封装过程中首先要先封装以太网首部,随后才是PPPoE首部;以太网首部中的Type是用来表示上层协议的类型;当Type的值为0x8863时,就表示承载的是PPPoE发现阶段的报文;当type的值为0x8864时就表示承载的是PPPoE会话阶段的报文;

      PPPoE会话建立过程

      提示:PPPoE建立会话的过程主要要经过上述二个阶段,发现阶段和会话阶段;其中发现阶段主要是发现PPPoE服务器,获取对方以太网地址;会话阶段主要是PPP协议的各种协商;经过上述两个阶段以后,一个PPPoE会话就建立好了,后续用户就可以通过PPPoE会话进行上网,数据传输;会话终结阶段是用户侧发送PPPoE终止报文,随后PPPoE会话终止;

      PPPoE数据包类型

      提示:PPPoE会话建立和终止过程中主要有以上5中类型的报文;PADI是PPPoE发现初始报文,主要用户寻找PPPoE服务端;当PPPoE服务端收到PPPoE客户端发送的PADI报文后,对应服务端会向客户端发送PADO,该类型报文主要是告诉PPPoE客户端对应服务端能够满足客户端的请求;当客户端收到服务端发送的PADO时(可能会有多个服务端发送PADO),它会选择最早收到的PADO对应的服务端发送PADR;PADR是客户端向服务端请求建立会话,同时也拒绝其他服务端发送的PADO报文;服务端收到客户端发送的PADR后,会回复一个PADS报文,该类型报文主要作用是告诉客户端会话id等信息;当客户端或服务端需要断开连接时,客户端或服务端会向对端发送PADT,表示终止连接,该类型报文的主要作用是通知对端PPPoE会话结束;对端收到该类型报文,会话会立即断开;

      PPPoE工作流程

      提示:客户端通过广播发送PADI报文来发送接入服务器;类似DHCP中的DHCP discover包;

      提示:当服务器收到客户端发送的PADI报文后,将客户端请求的服务于自己能够提供的服务进行比较,如果可以提供,则单播恢复PADO报文;类似DHCP中的DHCP offer包;

      提示:PPPoE客户端会根据自己收到的PADO选择最优的PADO报文对应的服务器,并单播发送一个PADR报文;PADR报文有两层作用,一层是向对应服务端请求建立会话等信息,二是拒绝其他服务端的PADO;类似DHCP中的DHCP Request包;

      提示:PPPoE服务端收到客户端的PADR报文后,服务端会生成一个唯一的PPPoE session ID,并通过发送PADS报文给客户端,表示会话建立成功;类似DHCP中的DHCP ack包;

      提示:当PPPoE会话建立成功以后,后续就是PPP参数协商;ppp参数协商和串口链路上的PPP参数协商过程一样;主要分LCP和NCP协商;如果有认证,还需要进行认证;当PPP参数协商成功以后,对应客户端会通过服务端获取到一个规划的ip地址等参数,后续客户端就可以通过这个ip地址等进行上网,数据传输;

      PPPoE会话建立全过程

      提示:只有PPP中NCP协商完成以后,对应客户端才会获取到ip地址,后续的通信客户端会通过这个ip地址来进行数据传输;

      PPPoE会话终止过程

      提示:当PPPoE客户端或者服务端需要关闭连接时,可以向服务端或者客服端发送PADT报文;表示关闭连接;在PADT报文中,目的mac地址为单播地址,session id为希望关闭的session id;一旦收到一个PADT报文后,对应会话会随即关闭;

      PPPoE配置

      实验:如下拓扑,配置PPPoE客户端和服务端

      服务端配置

      1、在服务端上建立用于认证的用户名和密码

      2、创建用于分配ip地址等信息的地址池

      提示:地址池中可以添加网关、dns、排除地址等等信息;

      3、创建虚拟模板接口

      提示:虚拟模板接口里主要配置ppp认证模式,以及关联地址池,和本端的ip地址;

      4、将物理接口和虚拟模板接口关联

      服务端全部配置

    sys
    sys server
    aaa
    local-user qiuhom password cipher admin123.com
    local-user qiuhom server ppp
    q
    ip pool PPPoE
    net 100.1.1.0 mask 255.255.255.252
    q
    int virtual-template 1
    ppp authentication-mode chap
    remote address pool PPPoE
    ip add 100.1.1.1 30
    q
    int g0/0/0
    pppoe-server bind virtual-template 1
    View Code

      客户端配置

      1、创建拨号规则

      提示:上述命令表示允许所有ip协议的报文进行拨号;

      2、创建拨号接口,并在接口下配置ppp认证,并绑定拨号规则

      提示:dialer user xxx 中的用户名称它只用于标识和绑定dialer的作用,不用于ppp认证,所以这里的用户名可以是任意的;

      3、将物理接口和拨号接口做绑定

      验证:看看对应拨号接口是否获取到ip地址?

      提示:可以看到对应拨号接口已经正常获取到ip地址;说明我们的配置没有问题;

      4、配置默认路由,将出接口指向对应的拨号接口

      提示:配置好默认路由以后,对应客户端就可以通过pppoe的会话链路进行上网;

      客户端全部配置

    sys 
    sys client
    dialer-rule
    dialer-rule 1 ip permit
    q
    int dialer 1
    dialer user xxx
    dialer bundle 1
    ppp chap user qiuhom
    ppp chap password ci admin123.com
    ip add ppp-negotiate
    int g0/0/0
    pppoe-client dial-bundle-number 1
    q
    ip route-s 0.0.0.0 0 dialer 1
    View Code

      在客户端验证PPPoE会话信息

      在服务端验证PPPoE会话信息

      在客户端验证对应拨号接口

      提示:可以看到对应拨号接口使用的是PPP协议,对应LCP和IPCP都是opened,并且对应接口也通过ppp协商获取到100.1.1.2地址;

    作者:Linux-1874
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    java网络请求工具类
    MySql 日期比较大小
    JAVA泛型整理
    循环list从list中移除数据
    MySql UNION字段
    session理解
    IDEA鼠标悬停提示变量值
    JAVA常用的RPC框架
    字符串查找重复字符最多的
    java List分组
  • 原文地址:https://www.cnblogs.com/qiuhom-1874/p/15182512.html
Copyright © 2011-2022 走看看