iSCSI协议简介

article/2025/9/23 1:56:38

本文综合了几篇参考文献的内容,做了删减与重组,但严格来说,不算原创。

笔者笔记如下:

iSCSI initiator和target的核心功能都在内核中,无须人工干预;而要人工干预的大约是这么几件事: 

1. 建立iSCSI Initiator到iSCSI target的session(虽也可自动发现,但还是要有些配置)

2. 建立LUN,以便位于Initiator端的系统进行块设备的挂载

3. 将来不需要的时候,可删除1和2中建立的LUN和iSCSI连接

至于应用程序将读写块设备,大致路径是:应用程序 -> 系统调用 -> 文件系统 -> 内核 -> iSCSI相应模块(initiator or target) -> 网络协议栈 -> 对端

 

1. SCSI协议

SCSI: Small Computer System Interface,SCSI最初是一种专门为小型计算机系统设计的I/O技术,但由于其架构和协议自身的优点,后被广泛应用于实现DAS以及作为SAN的底层技术。

所有的SCSI设备是通过一根总线将其连接起来,这个线就叫做SCSI总线。SCSI总线是SCSI设备之间传输数据的通路。SCSI总线又被称作SCSI通道。SCSI总线最终会连接到SCSI控制器上,SCSI控制器也称为主机适配器(HBA),它控制着SCSI总线上所有的设备与计算器之间的通信。控制器既可以是插入可用插槽的卡,也可以内置在主板上。

(注:SCSI连线长度一般不超过25米,挂载的总设备数不超过16个(除去SCSI控制器,就是15个))

因此,SCSI控制器和SCSI设备的连接方式如下图所示:

wKiom1T4j5WxrZMVAAFn4osqIqI716.jpg

在SCSI总线末端上有一个终结器,用来减小相互影响的信号,维持SCSI链上的电压恒定。

 

1.1 SCSI基本概念介绍

SCSI ID

一个独立的SCSI总线按照规格不同可以支持8或16个SCSI目标设备(可以称为Target),每个SCSI目标设备都必须具有唯一的标识符(ID)才能正常工作。SCSI ID实际上就是这些目标设备的地址。

窄SCSI总线最多允许8个、宽SCSI总线最多允许16个不同的SCSI目标设备和它进行连接。但是一般SCSI控制器需要使用一个ID,因此,能使用的ID理论比实际要少一个。

LUN

在每一个SCSI目标设备(Target)下还可以连接多个逻辑设备(如磁盘,卷组等等),为了让系统区分每一个逻辑设备,因此每一个逻辑设备都有一个LUN(Logical  Unit Number)来标识自己。每个SCSI ID最多有32个LUN,默认从0开始(不过0被占用了),每一个LUN对应着一个逻辑设备。

SCSI通信模型

SCSI是一个C/S架构,其中client端叫做initiator(启动器),服务器端叫做target(目标设备)。SCSI协议采用了分层的思想,SCSI协议簇从上向下可以分为四层:设备特定命令集,共享命令集,传输协议,互联网层。并且SCSI的数据传输是以块的方式进行的。

CDB (命令描述块)

SCSI的命令以及参数是填充在一定长度的数据块内传输的。这个数据块就是命令描述块,即CDB. 

典型的SCSI系统

 

2. iSCSI协议

虽然SCSI控制器可以连接多个存储设备,形成自己的网络,但是它只能与直接相连的存储设备进行通信,只能在在局域网内部使用,不能再以太网上共享。因此,对于SCSI协议来说,传输数据的距离是非常有限的。因此,人们为了利用SCSI协议长距离的传输数据,于是就研发了一种新的技术,就是iSCSI协议。另有一个重要的原因是,基于Fiber Channel的FC-SAN比较昂贵,而基于iSCSI的IP-SAN就便宜很多。
iSCSI协议是一种新的存储技术,它是将SCSI接口与以太网(Ethernet)技术结合起来工作的,简单的说iSCSI协议是将用户的请求转换成SCSI规则编码,然后再将这些数据封装在IP包中以便在以太网中进行传输的协议。

 

2.1 iSCSI协议的功能

iSCSI:internet Small Computer System  Interface的缩写,即Internet小型计算机接口。iSCSI技术是一种由IBM公司研究开发的,是一个供硬件设备使用的可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行 SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择。它是基于TCP/IP协议的,用来建立和管理IP存储设备、主机和客户机之间的相互连接,并创建SAN。这样使得SAN利用SCSI协议应用在高速数据传输网络成为可能。这种传输是以块级别的方式在各个存储设备上进行的。

2.2 iSCSI的结构

由于SCSI协议是一个C/S架构,因此iSCSI协议也是一个C/S结构,其中client是initiator,server端为target。iSCSI协议的主要功能是利用TCP/IP网络,在主机系统(可称为initiator)和目标存储设备(称为target)之间进行大量的数据封装和可靠传输过程。此外,iSCSI协议还将SCSI协议封装在IP网络上,并且运行在TCP上。
因此,ISCSI协议的协议栈为下图所示:

wKioL1T67XKxgABQAAEgPELrafo516.jpg

 

2.3 iSCSI协议的工作原理

当iSCSI主机发起数据读写操作后,操作系统会生成一个SCSI指令集,然后该SCSI指令集在iSCSI initiator端被封装成iSCSI消息包,并通过TCP/IP网络传输到存储区域,当存储区域的iSCSI target收到iSCSI消息包时会将其解开,读取其中的SCSI指令,然后再将其SCSI指令传送给SCSI设备执行其指令。当SCSI指令被执行后,返回的数据经过SCSI设备传送给iSCSI target时被封装为iSCSI的响应PDU,然后再通过TCP/IP网络传输给iSCSI initiator端,iSCSI initiator解开其iSCSI PDU包,读取其中的SCSI响应内容,并将其提交给操作系统进行处理,然后操作系统在将其处理后的内容返回给应用程序。

 

2.4 iSCSI的优点

iSCSI最大的优点就是节约成本,利用iSCSI协议构建一个存储网络,除了需要存储设备,交换机、线缆还有以太网接口以外,基本就不需要其他的设备了,只需要在现有的网络上安装iSCSI就可以实现构建一个比较大的存储网络了。

 

2.5 iSCSI基本概念

iSCSI客户端 (iSCSI Initiator)

iSCSI客户端为iSCSI initiator,这是I/O操作的发起者。在RedHat Linux系统中可以通过软件来模拟,需要安装iSCSI设备驱动。如iscsi-initiator-utils.rpm
iSCSI  initiator具有的特性:
a) 既然是I/O操作的发起者,需要通过发现过程请求远端快设备。
b) 它可以与target进行持久连接
c) Linux中可以通过软件方式来实现

iSCSI服务器端 (iSCSI Target)

iSCSI服务器端为iSCSI target,这是I/O操作的执行者。在RedHat Enterprise Linux中可以使用scsi-target-utils软件包来模拟实现。
iSCSI target端具有的特性:
a) 需要导出一个或多个块设备供启动者(initiator)使用
b) 可以通过硬件和软件的方式来实现

iSCSI target设备名称

iSCSI target名称必须是全球唯一的,其格式为:

iqn.<yyyy-mm>.<tld.domain.some.host>[:<identifier>]# iqn:iSCSI target名称必须是以iqn开头的
# yyyy-mm:表示的是时间
# tld.domain.some.host:这个表示的是一个反过来写的域名
# identifier:这个可以是任意字符串
# 如:iqn.2015-03.com.xsl.www:storge.disk1

逻辑单元号LUN

LUN ID由iSCSI目标设备(Target)分配。iSCSI 启动端(Initiator)设备当前支持在每个目标设备(Target)中导出最多256个LUN。即最大支持16个target。
对于LUN,比较通俗的理解就是磁盘分区、LVM卷组、RAID等等。

Target 即“储存设备”(Storage Device),也就是存放数据的硬盘(以硬盘阵列居多)。在使用iSCSI时,会在 iSCSI 储存设备上去建立 LUN(Logical Unit Number)来提供给具备 iSCSI Initiator 功能的主机来存取 数据的。LUN 好比是个“逻辑单位磁碟”,物理上通常是由数个实体磁碟( RAID 或 LVM 技术的技术实现)所组成。


2.6 iSCSI的发现机制

iSCSI发起端为了和iSCSI目标端建立iSCSI会话,initiator需要知道target的 IP地址,TCP端口号和名字 三个信息。iSCSI发现的目的是为了让iSCSI发起端获取一条到iSCSI目标端的通路。iSCSI有三种发现机制:

a. 静态配置

在iSCSI发起端已经知道iSCSI目标端的IP地址TCP端口号和名字信息时,iSCSI发起端不需要执行发现。iSCSI发起端直接通过IP地址和TCP端口来建立TCP连接,使用iSCSI目标端的名字来建立iSCSI会话。这种发现机制比较适合比较小的iSCSI体系结构

b. SendTarget发现

在iSCSI发起端知道iSCSI目标端的IP地址和TCP端口的情况下,iSCSI使用IP地址和TCP端口号建立TCP连接后建立发现对话。iSCSI发起端发送SendTarget命令查询网络中的存在的iSCSI信息。这种方法主要用于网关设备,iSCSI发起端被静态配置连接到指定的iSCSI设备。iSCSI发起端和iSCSI网关设备建立对话并发送SendTarget请求给iSCSI网关设备。iSCSI网关设备返回一系列和它相连的ISCSI目标端的信息。iSCSI发起端选择一个目标端来建立对话。

c. 零配置发现

这种机制用于iSCSI发送设备完全不知道iSCSI目标端的信息的情况下。iSCSI发起端利用现有的IP网络协议SLP(Service Location Protocol for Discovery,服务定位协议)。iSCSI目标端使用SLP来注册,iSCSI发起端可以通过查询SLP代理来获得注册的iSCSI目标端的信息。当iSCSI目标端加入到网络中的时候,拓扑结构也随之改变。虽然这种方法增加了实现的复杂性,但它不需要重新配置发起端即可找到新的目标端。

 

2.7 iSCSI设备具有的特性

  1. 支持报头和数据摘要
  2. 支持两种挑战握手协议CHAP(ChallengeHandshake  Authentication Protocol)的认证方式
  3. 目标端支持R2T(ReadytoTransfer)流控制
  4. 从RHEL4U2开始支持多通道(multipath
  5. 支持sendtargets发现机制
  6. 支持动态目标端发现
  7. 具备异步事件通知入口
  8. 支持即时数据更新
  9. 支持动态设备重配
  10. 支持自动挂接iSCSI技术
  11. 支持IPV6技术

2.8 iSCSI设备名称

iSCSI设备在iSCSI启动端(Initiator)导入的时候,其内核将按当前的设备情况给iSCSI设备分配一个本地SCSI设备名(例如/dev/sda或/dev/sdb等),如果导入的iSCSI设备已被分区,在导入iSCSI设备建立本地SCSI设备的同时也会建立相应的分区设备名(例如/dev/sda1、/dev/sda5等等),但是此SCSI设备名并不是每次导入是都是固定的,比如你的主机之前没有/dev/sda设备,你导入了iSCSI设备,其被内核命名为/dev/sda;之后你将其取消了导入,并重新挂接了一个热插拔设备(如U盘或移动硬盘),这个热插拔设备占据的/dev/sda设备;你又重新导入了iSCSI设备,此时其被内核分配的设备名就成了 /dev/sdb。

 

3. tgtadm的使用

tgtadm是一个服务器端管理配置工具,它也是一个模式化的命令,其常见的模式有target、logicalunit、account


3.1 target模式

tgtadm  --lld  <driver>  --mode  target  --op  {new|delete|show|update|bind|unbind} [option]

其中,driver一般为iscsi, --op后面的参数表示要进行的操作:

  • new: 增加一个target,语法格式为:--tid <id> --targetname <name>
  • delete:删除一个target,语法格式为:delete --tid <id>
  • show:显示所有的target,后面可以接某个target的id,只显示某个target的信息。格式为:show [--tid <id>]
  • update:修改某个特定的target的参数。格式为:update --tid <id> --name <param> --value <value>
  • bind:将某个特定的initiator和target绑定在一起,表示只接受特定的initiator的请求。语法格式为: bind --tid <id> --initiator-address <address>
  • unbind:解绑。语法格式为:unbind --tid <id> --initiator-address  <address>

 

3.2 logicalunit模式

tgtadm --lld  <driver>   --mode   logicalunit  --op  {new|delete}  [option]

其中,driver一般为iscsi,--op后面的参数表示要进行的操作: 

  • new: 新建一个LUN,语法格式为:new --tid <id> --lun <lun>  --backing-store <device-path> --bstype <type> --bsoflags 
  • delete: 删除一个LUN,语法格式为:delete --tid <id> --lun <lun>

 

3.3 account模式

tgtadm --lld  <driver>   --mode   account  --op  {new|delete|bind|unbind}  [option]

其中,driver一般为iscsi,--op后面的参数表示要进行的操作:

  • new: 新建一个账号和密码,格式为:new --user <name> --password <pass>
  • delete: 删除某个已有的账号,格式为:delete --user <name>
  • bind:在某个特定的target上添加账号,格式为:bind --tid <id> --user <name> [--outgoing],如果使用了--outgoing选项,将被添加作为出去的账号来使用。
  • unbind:在某个特定的target上删除某个账号。其格式为:account --op unbind --tid <id> --user <name>

 

在tgtadm命令中,某些长选项可以使用短选项来代理,如:

 --lld=-L--tid=-t--lun=-l--backing-store=-b--initiator-address=-I--targetname <targetname>=-T

 

4. iscsiadm的使用

iscsiadm是一个客户端的管理工具,它也是一个模式化的工具,其模式可通过-m或--mode选项指定,常见的模式有discovery、node、fw、session、host、iface几个。这些模式的主要功能如下:

  • discovery: 用于发现某服务器是否有target输出,以及输出了哪些target
  • node: 管理跟某target的关联关系
  • session:用于显示所有的活动会话和连接
  • fw:显示所有的启动固件值
  • host:显示所有的iSCSI主机
  • iface:显示/var/lib/iscsi/ifaces目录中的所有ifaces设定

4.1 discovery模式

iscsiadm -m discovery  [ -d debug_level ]  [ -I iface -t type -p  ip:port  [-l ] ] 

discovery模式下可用选项:

  • -d, --debug   显示debug信息,级别为0-8;
  • -l, --login   表示登录target的意思
  • -t, --type 这里可以使用的类型为sendtargets(可简写为st)、slp、fw和 isns,此选项仅用于discovery模式,且目前仅支持st、fw和isns;其中st表示允许每个iSCSI target发送一个可用target列表给initiator;
  • -p, --portal  指定target服务的IP和端口;
  • -m, --mode   可用的mode有discovery, node, fw, host iface 和 session

4.2 node模式

iscsiadm -m node [ -d debug_level ] [ -L all,manual,automatic ] [ -U all,manual,automatic ] [ [ -T targetname -p ip:port -I iface ] [ -l | -u | -R | -s] ] [ [ -o operation ] 

node模式下可用选项:

  • -L ,--loginall  表示登录到所有发现的target设备上。all表示登录到所有的target设备上;manual表示手动登录;automatic表示自动登录。
  • -T, --targetname  用于指定target的名字
  • -u, --logout   从target设备上登出
  • -s, --stats   显示session统计信息
  • -o, --op:指定针对discoverydb数据库的操作,其仅能为new、delete、update、show和nonpersistent其中之一;
  • -I, --interface:指定执行操作的iSCSI接口,这些接口定义在/var/lib/iscsi/ifaces中;

4.3 session模式

iscsiadm -m session  -s  # 显示会话的相关信息

4.4 客户端配置文件/etc/iscsi/iscsid.conf 

这个文件中的主要参数有如下:

  • node.startup   设置启动方式,可选的参数有auotmatic 和manual
  • node.session.auth.authmethod 设置使用CHAP认证方式,默认为NONE
  • node.session.auth.username target端认证所需initiator提供的用户
  • node.session.auth.password target端认证所需initiator提供的密码
  • node.session.auth.username_in initiator端认证所需target提供的用户
  • node.session.auth.password_in initiator端认证所需target提供的密码
  • discovery.sendtargets.auth.authmethod 设置使用CHAP认证方式用以发现target端导出的设备,默认为NONE
  • discovery.sendtargets.auth.username 发现操作时target端认证所需initiator提供的用户
  • discovery.sendtargets.auth.passwd 发现操作时target端认证所需initiator提供的密码
  • discovery.sendtargets.auth.username_in 发现操作时initiator端认证所需target提供的用户
  • discovery.sendtargets.auth.password_in 发现操作时initiator端认证所需target提供的密码

4.5 客户端的认证方式

客户端的认证方式有2种:一种是基于ip认证的;另一种是基于用户认证的,使用的认证协议为CHAP。同时iscsi-initiator-utils不支持discovery的认证。对于用户认证而言,必须先配置基于ip认证,然后才可以配置基于用户认证。

 

参考文献:

http://blog.51cto.com/xslwahaha/1617781

https://blog.csdn.net/qq776306395/article/details/27490977

https://wenku.baidu.com/view/5aa43ef6f705cc175527097b.html

 


http://chatgpt.dhexx.cn/article/lIYPFgOX.shtml

相关文章

【存储】SCSI、iSCSI协议详解及对比

作 者&#xff1a; NGDCN 原文链接&#xff1a;【存储】SCSI、iSCSI协议详解及对比 - NGDCN 版 权&#xff1a; 本文由 NGDCN 于2022-11-11原创发布在 NGDCN&#xff0c;未经许可&#xff0c;禁止转载。 SCSI SCSI是小型计算机系统接口&#xff08;Small Compu…

ISCSI详解(二)——ISCSI基础知识

今天继续给大家介绍Linux运维相关知识&#xff0c;本文主要内容是ISCSI基础知识。 一、ISCSI简介 ISCSI&#xff0c;即Internel Small Computer System Interface&#xff0c;互联网小型计算机接口&#xff0c;就是在互联网上运行SCSI协议的一种技术。 ISCSI把原本用于用于计…

ISCSI介绍

ISCSI Internet Small Computer System Interface ISCSI是一种在Internet协议上&#xff0c;特别是以太网上进行数据块传输的标准&#xff0c;它是一种基于IP Storage理论的新型存储技术&#xff0c;该技术是将存储行业广泛应用的SCSI接口技术与IP网络技术相结合&#xff0c;…

iSCSI详解及 iSCSI服务端配置、客户端(Linux、Windows配置)

一、简介&#xff1a; iSCSI&#xff0c;Internet小型计算机系统接口&#xff0c;又称为IP-SAN&#xff0c;是一种基于因特网及SCSI-3协议下的存储技术&#xff0c;由IETF提出&#xff0c;并于2003年2月11日成为正式的标准。iscsi通过TCP/IP协议&#xff0c;实现远程存储单元的…

交换机的Access口与Trunk口

基本概念 Access类型的端口只能属于1个VLAN&#xff0c;一般用于连接计算机的端口&#xff1b; Trunk类型的端口可以允许多个VLAN通过&#xff0c;可以接收和发送多个VLAN的报文&#xff0c;一般用于交换机之间连接的端口&#xff1b; 处理流程 Acess端口收报文&#xff1a;…

交换机中access和trunk详解

首先需要说明的是&#xff0c;vlan的标准802.1q中采用的是untagged,tagged这两个术语来制定vlan规范&#xff0c;并没有access,trunk。然而大多数实际的交换机设备在配置时&#xff0c;却都采用access&#xff0c;trunk。 以下简称802.1q中数据包中的vlan标识部分为vid标签。 …

什么是trunk端口?

什么是iis7服务器监控工具Trunk端口 基本概念 Trunk类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口; 处理流程 trunk端口收报文: 收到一个报文,判断是否有VLAN信息,如果没有则打上端口的PVID,并进行交换转发;如果有判断…

链路聚合Eth-Trunk

链路聚合简介 以太网链路聚合Eth-Trunk简称链路聚合&#xff0c;它通过将多条以太网物理链路捆绑在一起成为一条逻辑链路&#xff0c;从而实现增加链路带宽的目的。同时&#xff0c;这些捆绑在一起的链路通过相互间的动态备份&#xff0c;可以有效地提高链路的可靠性。 目的&…

超详细讲解access和trunk的区别,从此不再迷糊

我在网上阅读了好几篇关于这个主题的博文&#xff0c;发现很多都是有错误理解的&#xff0c;特此发表一下关于本人的理解&#xff0c;本文只简单概述access和trunk的区别并且hybrid不做探讨。 一、接收区别 access收到的帧通常是不带vlanTag的&#xff0c;收到无tag的帧会打上…

Eth-Trunk技术原理与配置

目录 前言Eth-Trunk概念手工负载分担模式LACP模式LACP模式活动链路的选取LACP模式的抢占机制 Eth-Trunk接口负载分担模式配置手工负载分担模式配置LACP模式 前言 随着网络中部署的业务量不断增长&#xff0c;对于全双工点对点链路&#xff0c;单条物理链路的带宽已不能满足正常…

TRUNK通信过程

一、拓扑结构 拓扑说明&#xff0c;PC1、PC3连接到VLAN10接口下&#xff0c;PC2、PC4连接到VLAN20接口下&#xff0c;两台交换机用trunk链路连接&#xff0c;允许VLAN10 20 通过 以上述拓扑为例&#xff0c;说明PC1到PC3的通信过程 二、通信过程 PC1 ping PC3 PC1发起一个与…

trunk与access的区别

首先声明我没研究过交换机底层实现&#xff0c;以下结论都是我的个人理解。不保证正确&#xff0c;但是有助于理解trunk和access。以下言论可能你在哪里都没有看到过。 先说观点&#xff1a;我认为trunk与access并没有本质的区别。 access收到带vlan的帧和自己所属vlan比较&a…

TRUNK详解

TRUNK 详解 TRUNK作为一个重要的指标&#xff0c;常常在二层交换机的性能参数中被提到&#xff0c;许多的二层交换机产品在介绍其性能时&#xff0c;都会提到能够支持TRUNK功能&#xff0c;从而可以为互连的交换机之间提供更好的传输性能。一下就是TRUNK的介绍 一、什么是TRUN…

链路聚合(eth-trunk)

文章目录 1.链路聚合概述①概念&#xff1a;②链路聚合两种模式&#xff1a;当两台交换机之间使用链路聚合技术进行互连时&#xff0c;各个成员端口需要满足以下哪些条件&#xff1f; 2.二层链路聚合配置修改负载均衡的方式&#xff1a;(可选&#xff09;注意&#xff1a;e-tru…

Trunk和Access分析

一、配置界面&#xff1a; 如果有页面可以添加trunk口和access口&#xff0c;如常规的HCI产品上&#xff0c;交换机通常可以增加新的trunk和access, 新建的时候&#xff0c;配置参数就不一样&#xff1a; 1、trunk&#xff1a;两个配置参数 &#xff08;1&#xff09;、vlan范…

实验: 配置trunk

配置trunk 实验: 配置trunk1、实验拓扑结构图如下&#xff1a;2、给每台主机配置IP地址3.配置SW14.配置SW25.配置trunk端口(两个交换机都要配置)6.流量控制7.修改nativeVLAN为VLAN 90 实验: 配置trunk 实验目标: 1.学会配置trunk,实现端到端VLAN通信 2.配置trunk流量控制 3.修…

Access、Trunk、Hybrid模式详解

文章目录 华为交换机转发VLAN数据时的行为详解前言参考阅读一、交换机的行为1.1 接收数据1.2 转发数据 二、工作模式横向对比2.1 接入模式2.2 中继模式2.3 混杂模式 三、实验详解3.1 几种模式的配置3.2 DHCP分配地址时对于native vlan的处理方式至此&#xff0c;理论实验完成&a…

Trunk概念

一、为什么需要trunk&#xff1f; 1、当一条链路&#xff0c;需要承载多VLAN信息的时候&#xff0c;需要使用trunk来实现。 2、trunk两端的交换机需要采用相同的干道协议。 3、一般见于交换机之间或交换机与路由器、服务器之间。 4、划分多个vlan之后&#xff0c;解决不同交换机…

access与trunk详细解析+区别

目录 一、Access 二、Trunk 三、区别&#xff1a; 四、额外说明&#xff1a; 一、Access Access只能属于一个vlan&#xff0c;一般用来连接计算机的端口Access接受和转发的数据包必是无VID的数据包Access端口发送出去的数据包无VID&#xff0c;可被PC接受或access口接受。…

TRUNK 的介绍和配置

一、 TRUNK 的背景 &#xff1a; 如果交换机与交换机之间存在多条链路&#xff0c;交换机每增加一个vlan&#xff0c;交换机与交换机就会增加一条链路。这样会存在链路浪费&#xff0c;就产生了 DTP &#xff08; dynamic trunk protocols&#xff09;采用trunk后&#xff0c;所…