广域网技术
[TOC]
广域网基本概念:
广域网是连接不同地区局域网的网络,通常所覆盖的范围从几十公里到几千公里。能连接多个地区、城市和国家,或横跨几个洲提供远距离通信,形成国际性的远程网络
广域网是一种通过租用ISP网络或者自建专用网络来构建的覆盖地理区域比较广的计算机网络

广域网络设备角色介绍
广域网络设备基本角色有三种,CE [Customer Edge,用户边缘设备 ] 、PE [Provider Edge,服务提供商边缘设备 ] 和P [Provider ,服务提供商设备 ]
- CE:用户端连接服务提供商的边缘设备。CE连接一个或多个PE,实现用户接入
- PE:服务提供商连接CE的边缘设备。PE同时连接CE和P设备,是重要的网络节点
- P:服务提供商不连接任何CE的设备

早期的广域网技术主要是针对不同的物理链路类型,在数据链路层进行不同的二层封装
在CE与PE之间常用的广域网封装协议有PPP/HDLC/FR等,用于解决用户接入广域网的长距离传输问题。在ISP内部常用的广域网协议主要是ATM,它用于解决骨干网高速转发的问题
PPP协议原理与配置
PPP协议原理
PPP [Point-to-Point Protocol,点到点协议] 是一种常见的广域网数据链路层协议,主要用于在全双工的链路上进行点到点的数据传输封装
- PPP提供了安全认证协议族PAP [Password Authentication Protocol,密码验证协议] 和CHAP [Challenge Handshake Authentication Protocol,挑战握手认证协议]
- PPP协议具有良好的扩展性,当需要在以太网链路上承载PPP协议时,PPP可以扩展为PPPoE
- PPP协议提供LCP [Link Control Protocol,链路控制协议],用于各种链路层参数的协商
- PPP协议提供各种NCP [Network Control Protocol,网络控制协议],如IPCP [IP Control Protocol ,IP控制协议],用于各网络层参数的协商,更好地支持了网络层协议。
PPP链路建立流程
PPP链路的建立有三个阶段的协商过程,链路层协商、认证协商 [可选] 和网络层协商
- 链路层协商:通过LCP报文进行链路参数协商,建立链路层连接
- 认证协商 [可选]:通过链路建立阶段协商的认证方式进行链路认证
- 网络层协商 :通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商

PPP链路建立流程详述
PPP协商由链路两端的接口完成。接口的状态表示了协议的协商阶段

正常PPP链路建立需要经历链路建立阶段、认证阶段和网络层协商阶段,详细过程如下:
- 通信双方开始建立PPP链路时,先进入到Establish [建立] 阶段
- 在Establish阶段,进行LCP协商:协商通信双方的MRU [Maximum Receive Unit,最大接收单元]、认证方式和**魔术字 [Magic Number]**等选项。协商成功后进入Opened状态,表示底层链路已建立
- 如果配置了认证,将进入Authenticate [认证] 阶段。否则直接进入Network阶段
- 在Authenticate阶段,会根据连接建立阶段协商的认证方式进行链路认证。认证方式有两种:PAP和CHAP
- 如果认证成功,进入Network阶段
- 如果认证失败,进入Terminate [终止] 阶段,拆除链路,LCP状态转为Down
- 在Network阶段,PPP链路进行NCP协商。通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商。最常见的NCP协议是IPCP,用来协商IP参数
- 在Terminate阶段,如果所有的资源都被释放,通信双方将回到Dead阶段
- PPP运行过程中,可以随时中断连接,物理链路断开、认证失败、超时定时器时间到、管理员通过配置关闭连接等动作都可能导致链路进入Terminate阶段
LCP报文格式
PPP报文可由Protocol字段标识不同类型的PPP报文
当Protocol字段为0xC021时,代表是LCP报文,又由Code字段标识不同类型LCP报文

PPP帧格式:
-
Flag字段标识一个物理帧的起始和结束,该字节为二进制序列01111110 [0X7E]
-
Address字段字节固定为11111111 [0XFF],是一个广播地址
-
Control字段默认为00000011 [0X03],表明为无序号帧
-
FCS [帧校验序列] 字段是个16 bit的校验和,用于检查PPP帧的完整性
-
Protocol 字段用来说明PPP所封装的协议报文类型,0XC021代表LCP报文,0XC023代表PAP报文,0XC223代表CHAP报文
-
Information字段包含Protocol字段中指定协议的内容,该字段的最大长度被称为最大接收单元MRU,缺省值为1500
-
当Protocol字段为0XC021时,Information结构如下:
- Identifier字段为1个字节,用来匹配请求和响应
- Length域的值就是该LCP报文的总字节数据
- Data字段则承载各种TLV(Type/Length/Value)参数用于协商配置选项,包括最大接收单元,认证协议等等
LCP报文携带的一些常见的配置参数有MRU、认证协议和魔术字
- 在VRP [Versatile Routing Platform,通用路由平台]上,MRU参数使用接口上配置的MTU值来表示
- 常用的PPP认证协议有PAP和CHAP,一条PPP链路的两端可以使用不同的认证协议认证对端,但是被认证方必须支持认证方要求使用的认证协议并正确配置用户名和密码等认证信息
- LCP使用魔术字来检测链路环路和其他异常情况,魔术字是随机产生的
Code | 名称 | 内容 |
---|---|---|
0x01 | Configure-Request | 配置请求报文 |
0x02 | Configure-Ack | 配置成功报文 |
0x03 | Configure-Nak | 配置参数需协商 |
0x04 | Configure-Reject | 配置参数不识别 |
LCP协商过程
1、LCP协商过程 - LCP正常协商:
LCP协商由不同的LCP报文交互完成。协商由任意一方发送Configure-Request报文发起。如果对端接收此报文且参数匹配,则通过回复Configure-Ack响应协商成功

- R1首先发送一个Configure-Request报文,此报文中包含R1上配置的链路层参数
- 当R2收到此Configure-Request报文之后,如果R2能识别并接受此报文中的所有参数,则向R1回应一个Configure-Ack报文
- R2也需要向R1发送Configure-Request报文,使R1检测R2上的参数是不是可接受的
- R1没有收到Configure-Ack报文的情况下,每3秒重传一次Configure-Request报文,连续10次发送Configure-Request报文仍没有收到Configure-Ack报文,则认为对端不可用,停止发送Configure-Request报文
2、LCP协商过程 - 参数不匹配:
在LCP报文交互中出现LCP参数不匹配时,接收方回复Configure-Nak响应告知对端修改参数然后重新协商

- 当R2收到R1发送的Configure-Request报文之后,如果R2能识别此报文中携带的所有链路层参数,但是认为部分或全部参数的取值不能接受,即参数的取值协商不成功
- R2需要向R1回应一个Configure-Nak报文
- 在这个Configure-Nak报文中,只包含不能接受的链路层参数,并且此报文所包含的链路层参数将被修改为R2上可以接受的取值
- 在收到Configure-Nak报文之后,R1需要根据此报文中的链路层参数重新选择本地配置的其他参数,并重新发送一个Configure-Request
3、LCP协商过程 - 参数不识别:
在LCP报文交互中出现LCP参数不识别时,接收方回复Configure-Reject响应告知对端删除不识别的参数然后重新协商

- R2收到R1发送的Configure-Request报文之后,如果R2不能识别此报文中携带的部分或全部链路层参数
- R2需要向R1回应一个Configure-Reject报文。在此Configure-Reject报文中,只包含不能被识别的链路层参数
- 在收到Configure-Reject报文之后,R1需要向R2重新发送一个Configure-Request报文,在新的Configure-Request报文中,不再包含不被对端识别的参数
认证协商过程
链路协商成功后,进行认证协商,认证协商有两种模式,PAP和CHAP
1、PPP认证模式 - PAP:
PAP认证双方有两次握手,协商报文以明文的形式在链路上传输

LCP协商完成后,认证方要求被认证方使用PAP进行认证
PAP认证协议为两次握手认证协议,密码以明文方式在链路上发送,过程如下:
- 被认证方将配置的用户名和密码信息使用Authenticate-Request报文以明文方式发送给认证方
- 认证方收到对方发送的用户名和密码信息之后,根据本地配置的用户名和密码数据库检查信息是否匹配
- 如果匹配,则返回Authenticate-Ack报文,表示认证成功
- 否则,返回Authenticate-Nak报文,表示认证失败
2、PPP认证模式 - CHAP:
CHAP认证双方有三次握手,协商报文被加密后再在链路上传输

LCP协商完成后,认证方要求被认证方使用CHAP进行认证
CHAP认证过程需要三次报文的交互,过程如下:
- 认证方主动发起认证请求,认证方向被认证方发送Challenge报文,报文内包含随机数和ID
- 被认证方收到此Challenge报文之后,进行一次加密运算,然后将此摘要信息和端口上配置的CHAP用户名一起封装在Response报文中发回认证方
- 认证方接收到被认证方发送的Response报文之后,按照其中的用户名在本地查找相应的密码信息,得到密码信息之后,进行一次加密运算,运算方式和被认证方的加密运算方式相同
- 认证方将运算得到的摘要信息和Response报文中封装的摘要信息做比较,相同则认证成功,不相同则失败
NCP协商过程
PPP认证协商后,双方进入NCP协商阶段,协商在数据链路上所传输的数据包的格式与类型。以常见的IPCP协议分为静态IP地址协商和动态IP地址协商
1、NCP协商 - 静态IP地址协商:
静态IP地址协商需要手动在链路两端配置IP地址

静态IP地址协商过程如下:
- 每一端都要发送Configure-Request报文,在此报文中包含本地配置的IP地址
- 每一端接收到此Configure-Request报文之后,检查其中的IP地址,如果IP地址是一个合法的单播IP地址,且和本地配置的IP地址不同,则认为对端可以使用该地址,回应一个Configure-Ack报文
2、NCP协商 - 动态IP地址协商:
动态IP地址协商支持PPP链路一端为对端配置IP地址

动态协商IP地址的过程:
- R1向R2发送一个Configure-Request报文,此报文中会包含一个IP地址0.0.0.0,表示向对端请求IP地址
- R2收到上述Configure-Request报文后,认为其中包含的地址 [0.0.0.0]不合法,使用Configure-Nak回应一个新的IP地址10.1.1.1
- R1收到此Configure-Nak报文之后,更新本地IP地址,并重新发送一个Configure-Request报文,包含新的IP地址10.1.1.1
- R2收到Configure-Request报文后,认为其中包含的IP地址为合法地址,回应一个Configure-Ack报文
- R2同时向R1发送Configure-Request报文请求使用地址10.1.1.2
- R1认为此地址合法,回应Configure-Ack报文
PPP协议配置
PPP基础配置命令:
1. 配置接口封装PPP协议:
[Huawei-Serial0/0/0] link-protocol ppp
# 在接口视图下,将接口封装协议改为ppp,华为串行接口默认封装协议为ppp
2. 配置协商超时时间间隔:
[Huawei-Serial0/0/0] ppp timer negotiate seconds
#在PPP LCP协商过程中,本端设备会向对端设备发送LCP协商报文,如果在指定协商时间间隔内没有收到对端的应答报文,则重新发送
PAP认证配置命令:
1. 配置验证方以PAP方式认证对端:
[Huawei-aaa] local-user user-name password { cipher | irreversible-cipher } password
[Huawei-Serial0/0/0] ppp authentication-mode pap
# 配置验证方以PAP方式认证对端,首先需要通过AAA将被验证方的用户名和密码加入本地用户列表,然后选择认证模式
2. 配置被验证方以PAP方式被对端认证:
PPPoE原理与配置
PPPoE概述
PPPoE [PPP over Ethernet,以太网承载PPP协议] 是一种把PPP帧封装到以太网帧中的链路层协议
- PPPoE可以使以太网网络中的多台主机连接到远端的宽带接入服务器。
- PPPoE集中了PPP和Ethernet技术的优点。既有以太网的组网灵活,又可利用PPP协议实现认证、计费等功能

PPPoE报文
PPPoE会话的建立通过不同的PPPoE报文交互实现
PPPoE报文结构及常见的报文类型如下所示:

PPPoE报文封装在Ethernet帧中,Ethernet中各字段解释如下:
- DMAC:表示目的设备的MAC地址,通常为以太网单播目的地址或者以太网广播地址 [0xFFFFFFFF]
- SMAC:表示源设备的以太网MAC地址
- Eth-Type:表示协议类型字段,当值为0x8863时表示承载的是PPPoE发现阶段的报文。当值为0x8864时表示承载的是PPPoE会话阶段的报文
- PPPoE字段中的各个字段解释如下:
- VER:表示PPPoE版本号,值为0x01
- Type:表示类型,值为0x01
- Code:表示PPPoE报文类型,不同取值标识不同的PPPoE报文类型
- PPPoE会话ID,与以太网SMAC和DMAC一起定义了一个PPPoE会话
- Length:表示PPPoE报文的长度
PPPoE会话建立
PPPoE会话建立有三个阶段,PPPoE发现阶段、PPPoE会话阶段和PPPoE终结阶段

PPPoE发现阶段
PPPoE协议发现有四个步骤:客户端发送请求、服务端响应请求、客户端确认响应和建立会话

-
PPPoE客户端在本地以太网中广播一个PADI报文,此PADI报文中包含了客户端需要的服务信息
- PADI报文的目的MAC地址是一个广播地址,Code字段为0x09,Session ID字段为0x0000
- 所有PPPoE服务器端收到PADI报文之后,会将报文中所请求的服务与自己能够提供的服务进行比较
-
如果服务器端可以提供客户端请求的服务,就会回复一个PADO报文
- PADO报文的目的地址是发送PADI报文的客户端MAC地址,Code字段为0x07,Session ID字段为0x0000
-
客户端可能会收到多个PADO报文,此时将选择最先收到的PADO报文对应的PPPoE服务器端,并发送一个PADR报文给这个服务器端
- PADR报文的目的地址是选中的服务器端的MAC地址,Code字段为0x19,Session ID字段为0x0000
-
PPPoE服务端收到PADR报文后,生成一个唯一的Session ID标识和PPPoE客户端的会话,发送PADS报文
- PADS报文的目的地址是PPPoE客户端的MAC地址,Code字段为0x65,Session ID字段是PPPoE服务器端为本PPPoE会话产生的Session ID
-
会话建立成功后,PPPoE客户端和服务器端进入PPPoE会话阶段
PPPoE会话阶段
PPPoE会话阶段可分为两部分:PPP协商阶段和PPP报文传输阶段
PPPoE Session上的PPP协商和普通的PPP协商方式一致,分为LCP、认证、NCP三个阶段
- LCP阶段主要完成建立、配置和检测数据链路连接
- LCP协商成功后,开始进行认证,认证协议类型由LCP协商结果决定
- 认证成功后,PPP进入NCP阶段,NCP是一个协议族,用于配置不同的网络层协议,常用的是IP控制协议 IPCP,负责配置用户的IP地址和DNS服务器地址

PPPoE终结阶段
当PPPoE客户端希望关闭连接时,会向PPPoE服务器端发送一个PADT报文,用于关闭连接,同样,如果PPPoE服务器端希望关闭连接时,也会向PPPoE客户端发送一个PADT报文

- 在PADT报文中,目的MAC地址为单播地址,Session ID为希望关闭的连接的Session ID。一旦收到一个PADT报文之后,连接随即关闭
PPPoE基础配置
1. 通过拨号规则来配置发起PPPoE会话的条件:
[Huawei] dialer-rule
2. 配置拨号接口用户名,此用户名必须与对端服务器用户名相同:
[Huawei-Dialer1] dialer user username
3. 将接口置于一个拨号访问组:
[Huawei-Dialer1]dialer-group group-number
4. 指定当前拨号接口使用的拨号绑定:
[Huawei-Dialer1]dialer-bundle number
5. 将物理端口与dialer-bundle进行绑定:
[Huawei-Ethernet0/0/0]pppoe-client dial-bundle-number number
广域网技术的发展
传统IP路由转发
传统的IP转发采用的是逐跳转发。数据报文经过每一台路由器,都要被解封装查看报文网络层信息,然后根据路由最长匹配原则查找路由表指导报文转发。各路由器重复进行解封装查找路由表和再封装的过程,所以转发性能低
传统IP路由转发的特点:
- 所有路由器需要知道全网的路由
- 传统IP转发是面向无连接的,无法提供较好的端到端QoS保证
MPLS标签转发
- MPLS是一种IP骨干网技术
- MPLS是一种隧道技术,在IP路由和控制协议基础上,向网络层提供面向连接的交换。能提供较好的QoS保证
MPLS标签指导报文转发的过程中,使用本地标签查找替代传统IP转发的路由查找,大大提高转发效率
MPLS转发过程中使用的标签,既可以通过手工静态配置,又可以通过动态标签分发协议分配
Segment Routing
- 基于现有协议进行扩展:扩展后的IGP/BGP具有标签分发能力,因此网络中无需其他任何标签分发协议,实现协议简化
- 引入源路由机制:基于源路由机制,支持通过控制器进行集中算路
- 由业务来定义网络:业务驱动网络,由应用提出需求(时延、带宽、丢包率等),控制器收集网络拓扑、带宽利用率、时延等信息,根据业务需求计算显式路径
Segment Routing转发原理
SR将网络路径分成段 [Segment],并且为这些段分配SID [Segment ID]
-
SID的分配对象有两种,转发节点或者邻接链路
-
SID用于标识Segment,它的格式取决于具体的技术实现
- 可以使用MPLS标签、MPLS标签空间中的索引、IPv6报文头部
- 使用MPLS标签被称为SR-MPLS,使用IPv6被称为SRv6
邻接链路和网络节点的SID有序排列形成段序列 [Segment List],它代表一条转发路径。SR由源节点将段序列编码在数据包头部,随数据包传输
- 接收端收到数据包后,对段序列进行解析
- 如果段序列的顶部段标识是本节点时,则弹出该标识,然后进行下一步处理
- 如果不是本节点,则使用ECMP [Equal Cost Multiple Path] 方式将数据包转发到下一节点
SR的部署方式
SR部署分为有控制器部署和无控制器部署。控制器配合方式由控制器收集信息,预留路径资源和计算路径,最后将结果下发到头结点,是更为推荐的部署方式
Segment Routing的应用
SR可以简易的指定的报文转发路径,在现网中可以为不同业务定义不同的路径。例如本例定义了数据下载、视频和语音三条显式路径,实现了业务驱动网络。设备由控制器纳管,支持路径实时快速发放。
