admin管理员组

文章数量:1600864

MP(MultiLink PPP)是将多个PPP链路捆绑使用的技术。MP捆绑的是物理PPP链路,包括Serial接口、Async接口、CPOS接口、ISDN BRI接口、E1-F接口、CE1/PRI接口、T1-F接口、CT1/RPI接口、虚拟模板接口、POS接口。

虚拟模板接口也算是物理PPP链路?

MP概述

单个PPP链路无法提供足够的带宽,这时将多个PPP链路进行捆绑形成MP链路。如图RouterA和RouterB之间存在三条直连PPP链路,可以通过创建MP链路,将三条PPP链路进行捆绑,可以提供速率更高、带宽更大的链路,且其中一条链路发生故障时,其他链路可以正常通信。

MP是通过PPP捆绑多条PPP链路来实现的。类似E-Trunk是通过捆绑多条Ethernet链路实现的。

MP主要有两种方式,一种是利用虚拟接口模板VTVirtual-Template),另一种是利用MP-group接口

VT(Virtual-Template,虚拟模板)接口是用来在PPP链路中需要承载其他链路层协议(如此处的MP)时所采用的一种逻辑接口通过这一句,可知道VT接口是用来进行链路层到链路层协议的封装,同时知道MP协议是链路层协议,即二层协议。这里就是用PPP封装MP)。另外,在ATM和VPN应用中也经常要用到VT接口,如PPPoA专线ADSL中就有ATM应用,需要使用VT。在实际应用环境中,虚拟访问模板的创建和删除由系统自动完成,但VT接口在链路层只支持PPP网络层只支持IP(可直接配置IP地址,或者通过从对端协商获取IP地址)。

对于采用虚拟接口模板实现MP的方式,不管是将PPP链路直接绑定到VT上实现MP,还是按照PPP链路用户名查找VT实现MP,由一个虚拟接口模板都可以派生出若干个MP Bundle,每个MP Bundle对应一条MP链路。为区分虚拟接口模板派生出的多个MP Bundle,需要指定捆绑方式。设备在虚拟模板接口视图下提供了命令ppp mp binding-mode来指定绑定方式,绑定方式有authentication、descriptor和both三种,缺省是both。

● 选择authentication时,只有具有相同对端用户名的链路才会加入到同一个MP Bundle中。

● 选择descriptor时,只有具有相同终端标识符(LCP协商时,会协商出这个选项值)的对端链路才会加入到同一个MP Bundle中。

● 选择both时,只有具有相同的对端用户和相同终端标识符的对端链路才会加入到同一个MP Bundle中。

MP-Group是一个专门用于MP的逻辑接口,通过建立接口和MP-Group的对应关系,将多个接口捆绑到一个MP-Group逻辑接口,实现MP捆绑。MP-Group通常应用在具有动态带宽需求的场合。但MP-Group接口在链路层只支持PPP,网络层只支持IP(可直接配置IP,可协商获取)。

MP建链过程和PPP建链过程类似,在Dead阶段与Terminate阶段与PPP一致,在其他阶段与PPP有一定区别,主要表现如下:

1)在Establish阶段,在MP中的PPP链路进行LCP协商时,除了协商一般LCP参数外,还要验证终端描述符是否一致,以及对端接口是否也工作在MP方式下,如协商不一致,LCP协商不成功。

2)在Authenticate阶段,无论是VT接口还是MP-Group接口都不支持验证只能在物理接口下进行验证配置

3)在Network阶段,是在MP链路上进行ICPC协商,IPCP协商通过后,MP链路便可以正式使用,在上面传输IP报文。

MP主要特性

MP特性包括分片和最大捆绑数,但不支持跨板MP。

有限的带宽与超负荷的网络需求造成网络中时常会出现延迟、信号丢失等情况,这些都是由于拥塞产生的。当网络间歇性的出现拥塞,且时延敏感业务要求得到比非时延敏感业务更高质量的QoS服务时,需要进行拥塞管理;如果配置拥塞管理后仍然出现拥塞,则需要增加带宽。拥塞管理一般采用队列技术,比如优先级队列PQ(Priority Queuing)和加权公平队列WFQ(Weighted Fair Queueing),使用不同的调度算法来发送队列中的报文流。

在低速串行链路上进行实时交互式通信时,如Telnet和VoIP,即使采取队列技术进行拥塞管理,往往会由于低优先级超大报文的发送而导致阻塞延迟,使高优先级报文无法优先传输。例如,当超大报文被调度而等待发送时,语音报文到达,它需要等该超大报文被传输完毕后才能被调度,这会导致对端听到话音断断续续。

交互式语音要求端到端的延迟小于等于150ms,一个1500bytes的报文需要花费215ms穿过56Kbps的链路,这超过了人所能忍受的延迟限制。为了在低速链路上限制实时报文的延迟时间,需要一种方法将超大报文进行分片,将超大报文的分片和不需要分片的报文一起加入到队列。

链路分片与交叉LFILink Fragmentation and Interleaving)功能将超大报文分割成小型报文,与其他小片的报文一起发送,这样高优先级的报文可以优先传输,从而避免了低优先级超大报文造成的阻塞延迟,减少了交互式通信在速度较慢的链路上的延迟和抖动。被分割的报文在目的地被重组。

MP最大捆绑数

通常情况下,如果需限制MP链路的带宽,可以配置允许单一MP可以最大捆绑的PPP链路数。缺省一个MP最多捆绑16条PPP链路。

配置将PPP链路直接绑定到VT上实现MP

设备通过多个接口和一个虚拟模板接口的直接绑定实现MP。在这种MP实现方式下,可以配置PPP认证,也可以不配置PPP认证(但认证均仅可在物理接口上配置)。配置PPP认证时,各PPP物理接口通过PPP认证后,绑定才能生效;不配置PPP认证时,当各PPP物理接口的LCP状态为Up后,绑定就生效。

配置步骤:

system-view
interface virtual-template vt-number
    创建并进入指定的虚拟模板接口视图。
ip address ip-address {mask | mask-length}   直接为VT接口配置IP地址,不要再在各物理PPP链路接口配置IP。
ip address ppp-negotiate      配置本端VT接口接受PPP协商产生的对端接口分配的IP地址。不要再在各物理PPP链路接口配置IP。
quit
interface interface-type interface-number  键入要绑定到VT中的物理接口。
ppp mp virtual-template vt-number   将以上物理接口绑定在指定的VT上。

配置按照PPP链路用户名查找VT实现MP

设备可以根据验证通过的对端用户名找到绑定的VT接口,使使用相同用户名认证的PPP链路被绑定到同一个VT接口上。这种MP绑定方式一定要配置PPP认证,只有通过PPP认证后,绑定才能生效。

配置步骤:

system-view
interface virtual-template vt-number
    创建并进入指定的虚拟模板接口视图。
ip address ip-address {mask | mask-length}   直接为VT接口配置IP地址,不要再在各物理PPP链路接口配置IP。
ip address ppp-negotiate      配置本端VT接口接受PPP协商产生的对端接口分配的IP地址。不要再在各物理PPP链路接口配置IP。
ppp mp binding-mode {authentication | descriptor | both}   配置MP绑定的条件。
quit
ppp mp user username bind virtual-template vt-number
   配置对端用户和虚拟接口模板的对应关系。
interface interface-type interface-number
ppp mp

配置将PPP链路加入MP-Group实现MP

MP-Group是一个专门用于MP的逻辑接口,通过建立接口和MP-Group的对应关系,将多个接口加入到一个MP-Group逻辑接口,实现MP。

配置步骤:

system-view
interface mp-group group-number
    创建并进入指定的MP-group接口视图。
ip address ip-address {mask | mask-length}   直接为MP-group接口配置IP地址,不要再在各物理PPP链路接口配置IP。
ip address ppp-negotiate      配置本端MP-group接口接受PPP协商产生的对端接口分配的IP地址。不要再在各物理PPP链路接口配置IP。
quit
interface interface-type interface-number  键入要绑定到MP-group中的物理接口。
ppp mp mp-group number   将以上物理接口绑定在指定的MP-group上。

配置MP分片和捆绑数

MP的分片功能可以通过两种方法实现:一是直接在MP中要使用的VT接口或MP-Group接口下手动配置允许的最小分片大小;二是通过VT接口或者MP-Group接口下的LFI功能,使系统自动对报文进行分片。而MP捆绑数的配置就是配置一个MP中允许捆绑的最大PPP链路数。

配置步骤:

system-view
interface virtual-template vt-number
 
ppp mp min-fragment size   配置多链路捆绑中对MP出报文进行分片的最小报文长度。缺省500字节。
ppp mp lfi    在以上接口上使能链路分片与交叉LFI功能。使能LFI后,分片大小=(分片最大时延*接口承诺信息速率)/8,单位字节。分片最大时延由ppp mp lfi delay-per-frag max-delay设置,接口承诺信息速率由qos gts cir cir-value[cbs cbs-value]设置。
ppp mp max-bind max-bind-number   以上接口配置MP最大捆绑链路数。
shutdown
undo shutdown

将PPP链路直接绑定到VT上实现MP的配置

eNSP实验:


在S1/0/0链路上抓包:

可以看到,协商使用的依然是LCP,只是在协商的内容上多了Multilink MRRU和Multilink Endpoint Discriminator,判断是否是同一个MP捆绑的应该是Multilink Endpoint Discriminator,可见直接 绑定到virtual-template的方式默认是使用descriptor的,即具有相同终端标识符(LCP协商时,会协商出这个选项值,抓包可以清楚看到这个值,就是data域的3f03017269e2,class是什么意思?本地指定的地址)的对端链路才会加入到同一个MP Bundle中。

这里是有些疑惑的,个人理解是一条链路的两端的discriptor相同,才能加入MP bundle,同一个MP bundle中的不同PPP链路,其discriptor不同。从包中数据看不出属于哪一个MP Bundle。

IPCP的协商也同单链路PPP相同,但是在S1/0/1链路上没有抓到IPCP的协商包:

再看PING的过程,在配置完成后,通过PING命令,进行了五次PING交互,在S1/0/0链路:

通过了三个PING交互包,在S1/0/1链路通过了两个PING交互包,也就是捆绑是成功的,两条链路都承载了数据。

在链路层看不到使用MP的地方,那么实现捆绑在哪里体现呢?

通过IP包,通过Identification域,可以看出,包的发送是交互的在两条PPP链路上传送的,在S1/0/0,Identification依次是0、2、4。在S1/0/1链路上是1和3。

按PPP链路用户名查找VT实现MP的配置

需要根据PPP链路的用户名灵活地增加或减少传输带宽,且对安全性要求较高。可选择使用按照PPP链路用户名查找VT实现MP的方式,并在每条PPP链路上配置CHAP双向认证。


通过查看端口信息,可以看到,虚拟接口是route port,有IP地址,链路层协议是PPP,而其中的PPP物理链路,也是route port,但是IP协议模块是没有启动的,链路层协议是PPP,并且LCP和MP打开的。

从上面的查询,可以看出virtual-access是代表所有虚拟访问接口的,它包含了VT、dialer等虚拟接口,而virtual-template 1是一个接口,是一个虚拟接口,virtual-access叫虚拟访问,查看虚拟访问中的一个虚拟模板接口,可以看到Phisical是MP,而直接dis int virtual-template 1,则其Physical是None,没有物理层。

这些概念之间的关系是什么?很疑惑。

抓包:

同样,一条链路协商通过IP后,其他的就不进行IPCP协商,通过PING命令,看到实现了捆绑,数据包在多条链路上传送。

将PPP链路加入MP-Group实现MP的配置

将PPP链路加入MP-Group实现MP,,并对物理接口采用CHAP双向认证。



用户名的配置很重要,要与认证方本地创建的用户名保持一致,不能省略域名。

mp-group的查询结果与dis virtual-access vt 1的结果很像,物理层是MP。

抓包:

因为RB配置的用户名与RA本地创建的不符,所以认证失败。修改后

关于虚拟接口模板-virtual-template、虚拟接口-virtual-accessmp-group接口的思考

对于MP,一直不太明白,这里涉及到虚拟接口模板-virtual-template、虚拟接口-virtual-access、mp-group接口,还有与物理接口的关系。

MP是Multilink PPP的简写,路由器可以将多个PPP链路进行捆绑使用,捆绑后的链路把它称为一个bundle,并形成一个新的逻辑端口MP端口。这个逻辑端口MP端口可以有两种:virtual-access端口和mp-group端口

有资料是这样描述的:

可以根据需要动态地创建或解除一个虚拟的端口,这个端口就是Virtual-access,这个虚拟端口的属性和相关配置一个通用的虚拟接口模板提供的,这个模板就是Virtual-template。由于它设计的通用性,因此被广泛地应用在许多地方。例如,Multilink PPP、IP over X.28、L2TP等。

  虚拟接口模板链路层协议仅支持PPP,网络层协议仅支持IP

虚拟接口模板只是一个虚拟接口的模板,要保证在虚拟接口创建之前建立,在虚拟接口删除之后删除。

通过上面的这段描述,可以知道,当使用interface virtual-template 10命令时,进入的是模板的配置界面,这里的配置将来会被virtual-access 10使用,virtual-access 10是动态创建的,当在具体的物理端口中进行配置:

interface serial 1/0/0
ppp mp virtual-template 1
quit
interface serial 1/0/1
ppp mp virtual-template 1
quit

后,并且物理端口LCP完成后,才创建virtual-access端口,virtual-access只在各个物理端口LCP分别协商通过后(协议UP)再动态地生成并进行IPCP的协商,因为是物理端口的LCP协商成功后才能建立virtual-access接口,所以,每个物理端口的PPP配置可以独立于virtual-template的配置的,也就是说你可以配置某些端口的接入需要pap认证,某些需要chap认证等ppp的参数。只有当验证完成后,才能真正完成MP协商过程。MP不会导致链路的拆除。如果配置了MP,两个链路不符合MP条件,则会建立一条新的MP通道,这同时也表明允许MP为单链路。MP的捆绑是完全依照用户(或描述符或两者同时)进行的,只有相同才能进行捆绑。如果一端配置了MP,另一端不支持或未配置成MP,则建立起来的链路为非MP链路。如下配置:

interface virtual-template 1             ##进入模板10的配置界面
ip address 10.10.10.9 30
ppp mp binding-mode Authentication     ##绑定模式设置为认证绑定,即按同一个用户绑定
quit
ppp mp user userb@system bind virtual-template 1  ##在系统视图下,配置VT1要绑定的对端用户名

配置物理接口Serial1/0/0、Serial1/0/1工作在MP方式,并采用CHAP认证,配置设备作为认证方时需要配置的本地用户以及作为被认证方时需要的CHAP认证用户名和密码。

interface serial 1/0/0
ppp authentication-mode chap domain system
ppp chap user usera@system     ##配置绑定的用户
ppp chap password simple usera
ppp mp        ##这里只需配置物理端口工作在mp模式下就可以,无须明确绑定的模板
quit
interface serial 1/0/1
ppp authentication-mode chap domain system
ppp chap user usera@system
ppp chap password simple usera
ppp mp
quit

virtual-access端口建立后,virtual-access端口与具体绑定的物理端口的关系,以下为个人观点:因为virtual-template链路层只支持ppp,网络层只支持IP,所以上层IP包先到达virtual-access端口,有可能启用了LFI,包被分片,然后被封装成ppp,再传递给物理端口,因为物理端口有多个,使用队列管理,从不同的端口发出,因为物理端口也是PPP协议,所以无需再次封装,只是发送,在接收端,同一个MP链路上的多个物理PPP链路接收的数据包,无需处理,发送到virtual-access逻辑接口,进行分片重组装和拆包,去掉ppp协议层,送到IP协议栈处理。如果物理层不是PPP链路,如是ATM链路,在virtual-access下发PPP包后,ATM物理接口将PPP打包成ATM包进行发送,这就是PPPoA吧。

对于MP-Group接口,它是通过interface mp-group命令直接创建的,不像virtual-access端口是动态创建的。

好像有资料介绍,配置了MP-Group配置后,具体绑定的物理端口只能使用MP-group的配置,不能使用具体物理端口的配置信息,而virtual-template的配置,可以使用具体物理端口的配置。MP-Group只能用在PPP链路,是PPP专用的。

 

本文标签: 路由器配置管理mp