admin管理员组

文章数量:1651820

2024年3月13日发(作者:)

竭诚为您提供优质文档/双击可除

lsp协议

篇一:mplsldp建立lsp示例及解析

ldp建立lsp示例及解析

摘要:本文简要介绍ldp建立lsp的配置,及lsp建立

好之后,mpls包的转发。ldp建立lsp的核心思路:通过全

局启用ldp和接口的mpls标签转发功能,借由已经建立好

的igp并通告的路由,实现fec和标签、接口的映射关系,

Forwardingequivalenceclass(Fec)转发等价类在此处即是

具有相同目的子网的地址,通过igp交互获得。ldp负责标签

的交互(分发),维持邻居关系。出接口也是通过igp获知。

基本ldp配置示例

1.拓扑:

2.

配置说明(cisco):

全局启用cisco快速转发(ceF)全局启用ldpmpls标

签交换

1 20

配置接口ip地址包括loopback环回口地址启用igp协

议,这里用的ospF接口下启用mpls

通常启用mpls的基本配置思路接口ip(包括

loopback)igplsRid

mplsldp全局使能接口mplsldp使能

3.主要配置:

接口,loopback接口地址地址,ospf配置略,具体可

参看配置文件。这里需要说明的是ospF配置的目的主要是

要能把pe1,2,p1,2之间的链路的路由通告给对方,包括

loopback接口。router-id不是必须使用loopback接口,

但这样比较好,接口不容易出现异动。pe1(config)#ipcef

pe1(config)#mplsldprouter-idloopback1//配置

ldprouter-id配置一个可达的接口

pe1(config)#intgi1/0pe1(config-if)#mplsip

p1,p2,pe2配置参考上述配置

showrunning-config配置:

4.检查配置生效结果:

配置完成后可通过showmplsldpneighbor查看到ldp邻

居关系。pe1#shomplsldpneighbor

2 20

peerldpident:3.3.3.3:0;localldpident1.1.1.1:0tcpcon

nection:3.3.3.3.14246-1.1.1.1.646

state:oper;msgssent/rcvd:113/111;downstreamuptime:0

1:29:44

ldpdiscoverysources:

gigabitethernet1/0,srcipaddr:55.1.1.2addressesbound

topeerldpident:

55.1.1.23.3.3.355.2.2.2

通过showmplsforwarding-table查看mpls的转发表。

pe1#showmplsforwarding-table

localoutgoingprefixbyteslabeloutgoingnexthoplabella

belorVcortunnelidswitchedinterface16164.4.4.4/320gi

1/055.1.1.217poplabel3.3.3.3/320gi1/055.1.1.218172.

2.2.2/320gi1/055.1.1.2191855.3.3.0/240gi1/055.1.1.2

20poplabel55.2.2.0/240gi1/055.1.1.2

标签交换:

在完成了ldp邻居会话的交互之后,ldp协议会自动从

labelrange里面随机挑选label,并根据igp出接口和其所

在网段针对Fec为上游进行du(downsteamunsolicited)标签

3 20

分配(默认方式)

pe1上

showmplsforwarding-table

p1上

showmplsforwarding-table

p2上showmplsforwarding-table

pe2上

showmplsforwarding-table

以pe2上2.2.2.2的Fec分类向pe1逐跳分配标签示例

来看。注:具体分配过程并不是逐跳从pe2->p2->p1->pe1这

样进行的,实际的分配是ldp邻居建立起来后就向上游分发。

虚线箭头代表标签(label)分发方向。

loopback22.2.2.2/32

lsR

phplsR

再以pe1上1.1.1.1的Fec分类向pe2逐跳分配标签示

例来看。注意ingresslsR和egresslsR都是相对数据流而

言,没有绝对的意义,并且与ldp无关。虚线箭头代表标签

(label)分发方向。这里恰好p1,p2向上游邻居分配的标签

恰好都是19.

loopback22.2.2.2/32

egresslsR

4 20

ingresslsR

6.

mpls转发过程解析

通过pe1上pingpe2上loopback2接口地址2.2.2.2,

抓包和表项来理解mpls转发过程。

1

上pingpe2的loopback2接口地址2.2.2.2,并在pe1-p1

链路,p1-p2链路,p2-pe2

链路上抓包。

pe1-p1链路抓包:

篇二:防火墙网络封包过滤详细介绍(lsp)(spi)

分层服务提供者(lsp)(1)

开发过滤数据包的lsp程序可以定义过滤规则,恩,先看

lsp本身是dll,可以将它安装至winsock目录,创建套

接字的应用程序不必知道此lsp的任何信息就能调用它

1.运行原理

用户创建套接字

1)套接字创建函数(如socket)在winsock目录寻找合适

的协议

2)此协议的提供者导出的函数完成各种功能

我们的目的:

5 20

1)将自己编写的提供者安装到winsock目录中,让用户

调用我们的服务提供者

2)由我们的提供者调用下层提供者

就可以截获所有的winsock调用

服务提供者本身是dll,导出与windowsapi相对应的函

数,如wspstartup,wspsocket,wspsendto等.

这里的lsp向上导出所有的spi函数供ws2_调

用,在内部又通过基础服务提供者实现这些spi

2.安装lsp

实现lsp之前,将分层提供者安装到winsock目录,安装

一个lsp包括安装一个wsapRotocol_inFow结构(协议的入

口),让创建套接字的应用程序可以枚举到它.

wsapRotocol_inFow结构:定义了分层提供者的特性和

lsp是如何填写"链"的.

(1)协议链lsp和基础提供者连在一起形成了协议链,协

议链描述了分层提供者加入winsock目录的顺序.

spi提供三中协议:分层协议,基础协议,协议链

协议类型由wsapRotocol_inFow结构内的

wsapRotocolchain结构中数据指定,如下:

typedefstruct_wsapRotocolchain{

intchainlen;//链的大小,也就是下面数组的大小

dwoRdchainentries[max_pRotocol_chain];//协议链

6 20

入口数组,数组成员为链中协议的目录id号

}wsapRotocolchain,*lpwsapRotocolchain;

chainlen暗示了入口的提供者类型

0,分层协议1,基础协议(基础提供者,如tcp和udp提供

者,有与之关联的内核模式协议驱动)2,协议链

(目录id-wsapRotocol_inFow结构中的dwcatalogentryid

域)

lsp在协议链中位置的影响:

顶层:被ws2_加载

非顶层:被链中位于它上层的lsp加载

lsp被加载后的动作:

1)首先调用lsp导出的函数wspstartup

2)将包含协议链的wsapRotocol_inFow结构传递给这个

函数

3)lsp再找到协议链中位于自己下方的提供者,进而加

载它

安装lsp

1)安装一个分层协议,用系统分配给此协议的目录id和

下层提供者的目录id构建一个chainentries数组,进而构

建一个wsapRotocol_inFow结构

7 20

2)安装协议链

(2)安装函数

该函数只需提供lsp的guid,dll位置,描述它支持的协

议的一个或多个wsapRotocol_inFow结构即可

intwscinstallprovider(

constlpguidlpproviderid,//要安装的提供者的guid

constlpwstRlpszproviderdllpath,//指向提供者dll

的路径

constlpwsapRotocol_inFolpprotocolinfolist,//指

向一个wsapRotocol_inFow结构数组

dwoRddwnumberofentries,//lpprotocolinfolist数组

中入口的数量,即数组大小lpintlperrno//返回可能的失败

代码

);//只有unicode版本,失败则返回socket_eRRoR

lpproviderid:guid可以通过命令行工具uuidgen或者

编程中是用uuidcreate函数生成.

lpszproviderdllpath:unicode字符串,包含环境变量.

如%systemRoot%

lpprotocolinfolist:wsapRotocol_inFow结构的数组,

每个数组成员是一个要安装的单独的入口,即可一次安装多

个服务提供者

通常从它要分层的下层提供者拷贝,两种情况例外:

8 20

第一,szprotocol域要修改,以包含新提供者的名称

第二,如有xp1_iFs_handles标志,从dwserviceFlags1

域中移除

xp1_iFs_handles标志表示此提供者返回的句柄是真正

地操作系统句柄,可能会被传递到内部api.此提供者必须关

联内核模式组件,创建一样的句柄.

(3)重新为目录排序

intwscwriteproviderorder(

lpdwoRdlpwdcatalogentryid,//wsapRotocol_inFow结

构中的catalogentryid元素数组

dwoRddwnumberofentries//上面数组的大小

);

lpwdcatalogentryid:dwoRd类型数组,以新的顺序包含

了目录中每个提供者的目录入口.

这个函数定义在spoRdeR.h和库中,新的

sdk中,定义转移到ws2_中

总结:

1)安装分层协议入口,获取系统分配的目录id号

2)安装一个或多个协议链,安装数量根据要分层的下层

协议数量决定,如要把lsp安装在tcp,udp和Raw之上,就要

安装3个协议链.

(4)示例代码

9 20

//函数名installprovider

//参数:wchaR*wszdllpath,为安装的lspdll路径地址

//功能:将lsp安装到udp协议之上

//返回值:错误值

//步骤

//1.枚举所有的服务程序提供者,当发现其

iaddressFamily==aF_inet和iprotocol==ippRoto_udp停止

//2.得到该协议信息,为wsapRotocol_inFow结构

//3.安装分层协议,根据上面得到的结构修改

szprotocol,chainlen,dwproviderFlags

//tallprovider安装

//6.获取分层协议的目录id号,根据providerid成员

的判断得到该id号

//7.安装协议链,原udp的协议放在分层协议下层,协议

链取新名,注意协议链与分层协议是两者不相关的

//8.重新排序winsock目录,将我们的协议链提前

//首先先查找协议链,找到chainentries[0]=该分层协

议的协议链,放在第一个位置

//而后添加其他基本协议(包括分层协议)或

chainentries[0]不等于该分层协议的协议链

3.移除lsp

传递要移除的提供者的guid即可

10 20

本文标签: 协议提供者分层接口配置