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

    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

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值