WAN

 

 

一、PPP

1.1 三种报文类似

  1. LCP(链路控制协议,用于协商报文),是用来协商ppp的参数的,最多会协商五个参数
  1. 2. PAP和CHAP报文,这是用来认证的,认证并不是必须的,也就是说我们在PPP的时候可以配置它协商用户名密码什么的,也可以不用认证,这一步是可选的;如果你想认证的话,又要两种认证可以选择:PAP和CHAP这两种。
  1. 3. 最后是NCP(网络控制协议),这一步可以协商IP地址,PPP的IP是可以不用通过DHCP,可以自行进行协商;NCP是报文的一个种类,并不是一种报文,NCP下属于IPCP、IPV6CP、OSICP、MPLSCP,究竟使用哪一种,取决于网络层使用的是什么协议,比如三层是使用的IP协议,那么就使用IPCP,如果三层使用的是MPLS的话,就使用MPLSCP,无论是IPCP,还是MPLSCP都是NCP

1.2 三个问题

  1. 1.     为什么PPP链路比以太网效率更大更好呢?
    因为PPP的包头只有9个字节,而以太网的包头有18个字节,所以PPP的效率更高一些。

2. 什么样的链路会封装PPP协议
- 串行链路
- pos接口链路(用的比较多)

3. 阐述一下PPP链路的建立的过程
1. 初始是dead,这就是初始的状态,物理链路down的状态;
2. 当接口up之后,就会进入参数的协商过程,在这个过程当中状态是establish,在此过程当中最多协商五个参数,这里有两种可能性:成功和失败,什么情况下会失败呢?比如一端要求通过pap认证,另一端却要求chap认证,就会协商不成功,协商不成功就会进入FAIL状态,然后再进入dead状态;如果成功了呢?就会进入opend状态(这些状态我们可以通过display接口查看到),换句话说如果进入到opend状态之后,就能判断,参数没有问题;
3. 如果配置了认证的话,这里就会进入到authenticate状态,这里也会有两种结果,要么成功,要么失败,失败了之后会先进入到fail状态,然后再进入到终结状态,最后进入到dead状态,过一段时间之后,又会从dead状态开始。
4. 如果认证成功了的话就会进入第三个阶段NCP(网络控制协议),在这个阶段会协商IP地址,协商IP地址成功了之后,最进入最终成功的状态:opend,然后就会卡在这个状态当中。

1.3 报文类型

PPP有六种报文类型;
第一种:config-request,这里面是LCP阶段当中要协商的参数列表,包含是发送者试图使用的,没有使用的默认列表。

第二种:configure-ack,如果对方同意协商用到的参数,就会回复此种报文,值得一提的是这两种报文是交互的,也就是说A会给B发送,B回复ack,B会发送请求报文,A会回复ack。


第三种:configure-nak,这种报文什么情况出现呢?对方不同意协商的参数,比如一端配置使用pap认证,另一端配置使用chap认证。

第四种:configure-reject,这种报文什么时候使用呢?就是完全不认识对方发送的报文是什么意思时,比如一端启用了ppp,另一端还没来得及启用的话,就会出现此种报文。

第五种和第六种:echo-requestecho-replay当ppp链路建立之后,会发送echo-request,然后对方回复echo-replay,这两种报文也是双向的。

第一种和第二种报文在LCP阶段,而第三种和第四种报文在认证阶段;

1.4 LCP

再重复一下,LCP是什么?LCP是link control protocol的缩写,链路控制协议,是干啥的呢?用来协商PPP的参数的,协商什么参数?一共要协商几个参数呢?最多是五个参数,并不一定要协商五个参数,比如第二个参数是认证,但是我们如果不配置协商那就不协商。

LCP要协商的参数
第一个参数:最大传输单元(MRU),这有点类似于以太网的MTU,与以太网的MTU类似,都是1500的字节,取两端的最小值。请注意这个1500个字节,这个1500个字节与以太网的1500几乎是一个意思,那就是不算二层封装的话是最大有1500个字节,如果算是以太网的封装的话是1518个字节,因为以太网郑头部最大就是18个字节,如果放在ppp链路当中的话,那就是1509个字节。

第二个参数是:认证协议,只有认证端发送的config-request才携带的认证类似,发送给被认证端,被认证端必须支持认证方使用的认证协议并正确配置,否则协商不成功,默认是不认证的。

第三个参数是魔术字,是啥用呢?这个数是随机产生的,主要是为了防止环路,如果自已收到了一个报文的魔术字与自已一样的话,那就是产生了环路,如果产生了环路意味着LCP协商失败,然后进入dead状态,然后从头再来。

第四个参数是MP,多链路协商,可以用来协商链路捆绑,也是双向的。

第五个参数是压缩,这个压缩是指是否压缩包头,而不是压缩内容,大多数的时候是不压缩的,为什么呢?因为大多数ppp接口都是pos口,pos的带宽很大,不需要压缩,再者压缩还要消耗cpu。在速率上是以太网强一点,在效率上是pos口更强一点,因为pos口的车头很小

1.5 Chap

chap的握手过程其实很简单,是三次握手,认证方发送一个challenge报文给被认证方,然后被认证方再回复一个response报文,最后认证方要回复一个successfailure的报文告知对方认证成功还是失败。

在讲chap的认证过程之前,我们先来看一下被认证的方的配置,被认证方肯定要配置一个用户和密码的用来chap认证,那么这个用户名和密码配置在什么地方呢?在接口下还是aaa当中,其实都行,但是chap认证时,对这两种方式是区别开来的。

chap的密码有点和非对称加密有一点类似,都不从报文当中体现出密码,但没有像非对称加密那么复杂,chap加密将密码推到了的身上,什么意思呢?就是两端都知道密码,这个密码是人设置的,但这个密码不会在报文当中体现,这样的方法虽然简单但特别巧妙,有时候不得不感叹设计这个的人是真聪明呀!

下面仍然以认证方和被认证方举例子,当前管理员已经在双方的接口下都配置好了用户名和密码,注意我这里说的是在接口下配置的用户名和密码,在全局aaa下配置用户名和密码与当前的情况不同。认证方将发送一个随机数(实际上不仅是随机数,是ID+随机数+可选用户名)给被认证方,然后被认证方将(明文的用户名、随机数和密码哈希后的MD5值),再发送给认证方,认证方会用刚才生成的随机数(认证方肯定知道呀,因为是它发给被认证方的)和本地存储的密码一做一个md5的运算,然后比对被认证方发过来的md5,如果一样的话就回复认证成功的报文,否则就回复认证失败的报文。有个疑问,认证方可能会有多个用户,它怎么知道要用哪个用户的密码做哈希运算呢?这是因为在被认证方回复的报文当中会将用户名发送过来,注意,这个用户名是明文的,没有被加密。

在第一个认证方发送给被认证方挑战报文时,有时候会携带用户名,有时候不会携带,那什么时候会携带呢?如果管理员将用户和密码没有配置在认证方的接口下的时候,就会发送,因为两端的设备上都可能会有多个用户,被认证方怎么知道将计算哪个用户的md5值呢?这时候就得需要认证方在挑战报文当中指定用户名。

如果接口下的用户名和密码与aaa当中的用户名和密码冲突,接口下的优先。

1.6 NCP

NCP(network control protocol)协商网络层的参数,网络层有IP、IPV6、RIP、MPLS等网络层协议
最常见的就是IPCP、IPV6CP、MPLSCP。

NCP协商的内容
1. 网络层协议(ip/IPV6等)、
2. 协商IP地址(自动获取和分配地址,不需要DHCP加持,但本身就有协商地址的功能)

协商IP地址的含义
协商IP地址分为两类:
- 静态协商IP地址(互推地址),在NCPconfig-request里面推送IP地址

注意是ncp的config-request而不是LCP的config-request,ncp除了config-request报文之外,还有config-ack,用来回复的。

A会在ncp的config-request里面携带自已的IP地址给对方,不带子网掩码,为什么将自已的IP地址告诉对对方,目的是让对方形成到自已的32位主机路由,这是一个双向的过程,虽然是直接,但不配置成同一个网段,这样可以吗?其实这样也是可以的,不是一个网段其实也是可以的,就是因为有主机路由,以太网是不行的,因为以太网没有互推地址的功能。

两边子网掩码不一样也可以,不管是多少位,我都只写成32位的,32位的路由是最优先的。
注意,点到点,是不需要MAC地址,自然也不需要有arp广播了

这么搞有什么好处呢?在中间配置ospf没有任何问题,ospf在以太网环境当中是检测掩码的,掩码不一样是无法建立邻居的,但是在ppp环境当中是没有问题的,学到到ospf路由也是没有问题(面试题)
1. 不同网段可以通,而且可以校验IP地址是否冲突
2. 节省IP地址
3. 不同网段跑ospf ok,可以学路由
4. 即使掩码不同,也可以建立ospf邻居,可以正常学习ospf路由。

如何理解节省IP地址呢?A与B连接时,按理说是要配置IP地址的,但是公网上的IP地址是有限的,怎么办呢?我们可以在A路由器上配置一个本地环回接口,然后在ppp接口上借用这个IP地址,这是完全没有问题的,这在以太网中是无法实现的,但在ppp链路当中是可以实现的。

静态互推有没有什么缺点?怕环路。环路分为两种,一种是二层环路,另一种三层环路,二层环路是指物理链路有环路,而三层环路即使是单根物理链路也会有环路,单条链路怎么就会环路呢?又如何避免这个问题呢?假如A路由的ppp接口配置的1.1.1.1/24,而B路由器的ppp接口配置的1.1.1.2/24,那A会形成一条路由,将1.1.1.0/24指定ppp接口,而B也会形成这样一条路由,这时候,如果A如果收到一个报文目的地址是1.1.1.5,A会通过路由ppp接口交给B,B会根据路由再交给A,直到ttl全部消耗完。在配置ppp链路时,直接 将掩码改成30位,直接掩死,不要配置30位以下的,这样就会环路了。

中间无法插交接机,一者接口都不一样,二者就算插上了,协议也不一样,交换机是以太网交换机,是无法转发ppp的报文时,协议是无法协商的,以太网是二层协议,ppp也是二层协议。

动态协商地址(类似dhcp)

其实很简单,两个报文完成协商。其实pppoe,就是家用的拨号上网,其实就是用的ncp的地址协商功能。

pppoe(ppp over ethernet),使用了ppp的协商IP的功能,同时利用了以太网的多点功能,将两者结合起来了。

在A路由器上启用NCP的地址协商,然后在B路由器除了配置自已ppp接口的地址之外,再配置一个地址池,或者直接指定A的IP地址,然后A就可以通过协商报文获得自已的IP地址。

1.7 MP

MP的意思就是多链路的PPP,类似以太网当中的链接捆绑。
只要里面线路里面传输的二层的ppp,那就是可以捆绑的,不管是网线还是光纤,变或是串行线缆,现在大多数的ppp链路都是pos接口,而pos接口往往接的都是光纤线。

如果二层是以太网就用e-trunk来捆绑,如果是ppp,就用mp来捆绑,如果HDLC就用ip-trunk来捆绑。
直接封装ppp的物理接口一般就两种:pos和串口

二、IP-TRUNK

HDLC是ppp的一个组件,是ppp的封装方法,HDLC的封装方法想要封装的话就得使用ip-trunk的方式。
trunk可以理解为重要的链路,eth-trunk只能由以太网组成,而ip-trunk一般由pos接口组成。

ip-trunk与eth-trunk有比较类似的地方,也可以实现逐包和逐流两种方式
- 逐流:当报文的源和目标都相同时,这些报文从同一个成员链路上通过(常用,eth-trunk也是常用这个);
- 逐包:以报文为单位分别从不同的成员链路上发送

ip-trunk的成员接口只能使用HDLC的封装形式,ip-trunk的原理与eth-trunk类似

HDLC与ppp是什么关系

HDLC是(high-level datal link control 高级数据链路控制)的缩写,是和ppp同一等级的广域网二层协议,HDCL与PPP的协协议的帧格式是不同的。
HDLC是年代比较久远的广域网二层协议,现在多用的是ppp。
HDLC可以独立存在,也可以被PPP协议调用,当前的理解大概就是这个意思。

原文地址:https://www.cnblogs.com/yizhangheka/p/14644935.html