深入理解Lustre文件系统-第3篇 LNET:Lustre网络

LNET是Lustre网络子系统,提供消息传递API,由LNET层和LND层构成。LND实现从通用LNET层到特定网络驱动的接口,支持TCP/IP sockets、OFA IB等多种网络。LNET结构中,LNet对象维护系统状态,通过LNetMEAttach和LNetMDAttach创建和关联匹配项和内存描述符。LNET启动时,通过LNetNIInit初始化网络接口。发送消息主要通过LNetPut,接收则涉及lnet_parse()和lnet_ni_recv()等函数。LNET支持基于RDMA的消息传输,减少内存拷贝。路由器实现静态路由,消息接收完毕后转发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    LNET是Lustre Networking的缩写,是Lustre的网络子系统,负责提供消息传递API。LNET源自于Sandia Portals,但又与之存在着差异。

3.1      结构

    LNET由两部分组成:

  • LNET层。它以通信API的方式,向被称为LNET客户端的高层提供一个与网络类型无关的服务。在LNET层,以LNet作为前缀的函数名是为高层提供的外部API,而以lnet作为前缀的函数则是内部函数,只能被LNET层或下层的LND层调用。
  • LND(Lustre Network Driver)层。它实现从一般化的LNET层到特定网络驱动之间的接口。那些LNET层可以调用的函数都以lnet作为前缀。

    这里需要的注意的是,LNET既被用来表示整个网络子系统,又被用来指代LND之上的一个软件层。我们不应该混淆它们的含义。

    LNET可以以内核模块的方式运行,也可以用户库的方式运行。因而,其中的LND层可以是内核模块,也可以是用户层程序。

图 LND支持的网络类型

名字

描述

socklnd

TCP/IP sockets

{cib,open}iblnd

Topspin IB

iiblnd

Silverstorm IB

viblnd

Voltaire IB

o2iblnd

OFA IB

ptllnd

Cray Portals

ralnd

Cray RapidArray

qswlnd

Quadrics Elan

gmlnd

Myricom GM (no RDMA)

mxlnd

Myricom MX

       另外,LND还支持TCP/IP sockets、OFA IB、Cray Portals等几种用户层网络。在下面的内容中,如果没有特殊说明,都指的是内核层实现。

       LNET的结构图如下图所示:


图 LNET的结构

3.2      网络驱动层

    Lustre支持一系列的网络类型。对每种网络类型的支持,都是以内核模块的形式提供的。在这些内核模块的初始化函数中,都会调用lnet_register_lnd,注册一个类型为lnd_t的全局变量。这个类型为lnd_t的对象,就描述了这个驱动的全部信息。

表 lnd_t对象提供的方法

字段

描述

lnd_startup

LNET打开这类网络接口时调用

lnd_shutdown

LNET关闭这类网络接口时调用

lnd_ctl

处理来自用户空间的ioctl命令。LNET通过一个特殊的设备文件,支持许多ioctl,其中一些ioctl命令由LNET直接处理(例如,增加路由),另外一些必须传递到LND处理

lnd_send

发送正在送出的消息

lnd_recv

接收正在来到的消息

lnd_eager_recv

消息的处理由于缺乏资源(转发缓冲或额度)而被推迟,调用此函数以期释放一些资源。

lnd_notify

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值