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
版权声明:本文标题:lsp协议 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1710283691a257406.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论