CN109787778A - 一种设备的唤醒方法和装置 - Google Patents

一种设备的唤醒方法和装置 Download PDF

Info

Publication number
CN109787778A
CN109787778A CN201910002879.6A CN201910002879A CN109787778A CN 109787778 A CN109787778 A CN 109787778A CN 201910002879 A CN201910002879 A CN 201910002879A CN 109787778 A CN109787778 A CN 109787778A
Authority
CN
China
Prior art keywords
wake
target
message
wakes
mac address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910002879.6A
Other languages
English (en)
Inventor
孙海龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Information Technologies Co Ltd
Original Assignee
Unis Huashan Information Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Unis Huashan Information Technologies Co Ltd filed Critical Unis Huashan Information Technologies Co Ltd
Priority to CN201910002879.6A priority Critical patent/CN109787778A/zh
Publication of CN109787778A publication Critical patent/CN109787778A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Small-Scale Networks (AREA)

Abstract

本申请提供了一种设备的唤醒方法和装置,涉及计算机的技术领域,该方法包括:获取多个待唤醒设备的网卡MAC地址;基于网卡MAC地址构建目标唤醒报文,其中,目标唤醒报文包括目标设备序列标识,目标设备序列标识包括多个待唤醒设备的网卡MAC地址;发送目标唤醒报文,以使接收到目标唤醒报文的待唤醒设备启动唤醒模式。本申请缓解了现有的唤醒技术无法实现同时唤醒多个设备的技术问题。

Description

一种设备的唤醒方法和装置
技术领域
本申请涉及计算机的技术领域,尤其是涉及一种设备的唤醒方法和装置。
背景技术
WOL(Wake On Lan)称之为远程唤醒。WOL是现在很多电脑、服务器都支持的功能,即通过网络触发设备上电。由于WOL实现简单、操作方便在很多场景下都有应用,最典型的就是网吧、机房、培训教室、数据中心等设备密集的地方,通过WOL可以很方便地控制批量的设备上电。
在现有的唤醒技术中,终端设备为每个待唤醒的设备构造一个唤醒报文,若存在多个待唤醒的设备,则终端设备构造多个唤醒报文,然后,将多个唤醒报文分别发送给对应的多个待唤醒的设备,以实现逐个唤醒待唤醒设备。针对需要同时唤醒多个设备的应用场景,现有的唤醒技术则无法实现多个设备的同时唤醒。
发明内容
有鉴于此,本申请的目的在于提供一种设备的唤醒方法和装置,以缓解了现有的唤醒技术无法实现同时唤醒多个设备的技术问题。
第一方面,本申请实施例提供了一种设备的唤醒方法,应用于终端设备,包括:
获取多个待唤醒设备的网卡MAC地址;
基于所述网卡MAC地址构建目标唤醒报文,其中,所述目标唤醒报文包括目标设备序列标识,所述目标设备序列标识包括多个待唤醒设备的网卡MAC地址;
发送所述目标唤醒报文,以使接收到所述目标唤醒报文的所述待唤醒设备启动唤醒模式。
进一步地,所述发送所述目标唤醒报文,具体包括:
向与所述待唤醒设备连接的目标交换机发送所述目标唤醒报文,以使所述目标交换机根据目的MAC地址,向除接收所述目标唤醒报文的接口外的第一目标接口广播所述目标唤醒报文;
其中,所述第一目标接口与所述待唤醒设备连接。
进一步地,所述基于所述网卡MAC地址构建目标唤醒报文,具体包括:
将所述多个待唤醒设备的网卡MAC地址按照预设方式进行组合,得到所述目标设备序列标识;将目标设备序列标识添加至所述目标唤醒报文的负载部分;将目标设备序列标识添加至所述目标唤醒报文的负载部分。
进一步地,所述基于所述网卡MAC地址构建目标唤醒报文,具体包括:
获取每个所述待唤醒设备的唤醒时间;
将所属于同一唤醒时间的待唤醒设备划分到同一待唤醒设备组,得到至少一个待唤醒设备组;
基于每个待唤醒设备组中待唤醒设备的网卡MAC地址,为所述每个待唤醒设备组构建对应的目标唤醒报文,所述目标唤醒报文中携带用于表征待唤醒设备组的唤醒时间的标识信息。
进一步地,发送所述目标唤醒报文包括:
向与每个所述待唤醒设备组连接的一个或多个交换机发送对应的目标唤醒报文,以使所述一个或多个交换机根据所述对应的目标唤醒报文中的目的MAC地址,向第一目标接口发送所述对应的目标唤醒报文;
其中,所述第一目标接口为所述一个或多个交换机中与所述待唤醒设备组中的每个待唤醒设备相连接的接口。
第二方面,本申请实施例还提供了一种设备的唤醒装置,设置于终端设备,包括:
获取单元,用于获取多个待唤醒设备的网卡MAC地址;
构建单元,用于基于所述网卡MAC地址构建目标唤醒报文,其中,所述目标唤醒报文包括目标设备序列标识,所述目标设备序列标识包括多个待唤醒设备的网卡MAC地址;
发送单元,用于发送所述目标唤醒报文,以使接收到所述目标唤醒报文的所述待唤醒设备启动唤醒模式。
进一步地,所述发送单元用于:
向与所述待唤醒设备连接的目标交换机发送所述目标唤醒报文,以使所述目标交换机根据目的MAC地址,向除接收所述目标唤醒报文的接口外的第二目标接口广播所述目标唤醒报文;
其中,所述第二目标接口与所述待唤醒设备连接。
进一步地,所述构建单元包括:
将所述多个待唤醒设备的网卡MAC地址按照预设方式进行组合,得到所述目标设备序列标识;
将目标设备序列标识添加至所述目标唤醒报文的负载部分。
进一步地,所述构建单元包括:
获取模块,用于获取每个所述待唤醒设备的唤醒时间;
划分单元,用于将所属于同一唤醒时间的待唤醒设备划分到同一待唤醒设备组,得到至少一个待唤醒设备组;
第二构建模块,用于基于每个待唤醒设备组中待唤醒设备的网卡MAC地址,为所述每个待唤醒设备组构建对应的目标唤醒报文,所述目标唤醒报文中携带用于表征待唤醒设备组的唤醒时间的标识信息。
进一步地,所述发送单元还用于:
向与每个所述待唤醒设备组连接的一个或多个交换机发送对应的目标唤醒报文,以使所述一个或多个交换机根据所述对应的目标唤醒报文中的目的MAC地址,向第一目标接口发送所述对应的目标唤醒报文;
其中,所述第一目标接口为所述一个或多个交换机中与所述待唤醒设备组中的每个待唤醒设备相连接的接口。
第三方面,本申请实施例还提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行上述第一方面中任一项所述的方法。
在本申请实施例中,首先,获取多个待唤醒设备的网卡MAC地址,并基于网卡MAC地址构建目标唤醒报文,其中,目标唤醒报文中包括目标设备序列标识,该目标设备序列标识包括多个待唤醒设备的网卡MAC地址;之后,发送目标唤醒报文,以使接收到目标唤醒报文的待唤醒设备启动唤醒模式。通过上述操作,能够达到通过一个唤醒报文来同时唤醒多个设备的目的,而不需要针对每个设备发送一个对应的唤醒报文,进而缓解了现有的唤醒技术无法实现同时唤醒多个设备的技术问题,从而实现了通过一个唤醒报文同时唤醒多个设备的技术效果。
本申请的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例的一种设备的唤醒方法的流程图;
图2是根据本申请实施例的一种终端设备和待唤醒设备之间的网络关系图;
图3是根据本申请实施例的一种设备的唤醒装置的示意图;
图4是根据本申请实施例的一种终端设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在此简单说明一下WOL的原理,具体为:在设备上使能了WOL功能之后,虽然设备处于正常关机状态,但设备的网卡、处理器(Central Processing Unit,简称CPU)并没有完全下电,它们还工作在一种极低功耗的模式下。在这种极低功耗的模式下,设备的网卡还是能接收、处理一些简单报文。在设备的网卡接收到终端设备发送的唤醒报文(Magic Packet),并对唤醒报文校验通过之后,网卡会向设备的电源或主板发出信号以唤醒计算机,从而使得设备主动触发系统上电,完成开机动作。
在现有的唤醒技术中,终端设备针对网络中的每个待唤醒设备构造一个唤醒报文,每个待唤醒设备通过接收到该唤醒报文即可实现自身唤醒。如果网络中存在多个设备,则终端设备构造多个报文,并分别发送、逐个唤醒各设备。若待唤醒设备的数量较多,则需终端设备耗费大量的时间构造大量的唤醒报文、并向各设备分别发送唤醒报文,以逐个唤醒各设备。如果唤醒网络中的全部设备,则整个网络的唤醒时间耗时过长,这在大型网络中是不可取的。针对上述问题,本申请提出了一种设备的唤醒方法,该方法能够缓解了现有的唤醒技术无法实现同时唤醒多个设备的技术问题,下面将结合具体实施例介绍该方法。
实施例一:
本申请实施例提供了一种设备的唤醒方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本申请实施例的一种设备的唤醒方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,获取多个待唤醒设备的网卡MAC地址;
在本申请中,通过终端设备获取多个待唤醒设备的网卡MAC地址,待唤醒设备可以为服务器和计算机等网络设备,本申请实施例中不做具体限定。
首先,用户向终端设备发送用于多个待唤醒设备的唤醒指令,其中,唤醒指令中可以包括多个待唤醒设备的网卡MAC地址;除此之外,唤醒指令中还可以包括:用于表征各个待唤醒设备的身份信息的身份标识信息,其中,终端设备能够根据该标识信息获取各个待唤醒设备的网卡MAC地址。
步骤S104,基于所述网卡MAC地址构建目标唤醒报文,其中,所述目标唤醒报文中包括目标设备序列标识,所述目标设备序列标识包括多个待唤醒设备的网卡MAC地址;
在本申请实施例中,终端设备在获取到多个待唤醒设备的网卡MAC地址之后,就可以基于所述网卡MAC地址构建目标唤醒报文。
目标唤醒报文包括:报文头信息和目标设备序列标识,该报文头信息用于指示该目标唤醒报文是否为广播报文,目标设备序列标识中包括各个待唤醒设备的网卡MAC地址。
步骤S106,发送所述目标唤醒报文,以使接收到所述目标唤醒报文的所述待唤醒设备启动唤醒模式。
在本申请实施例中,终端设备在构建得到目标唤醒报文之后,就可以以广播的形式发送该目标唤醒报文,以实现通过一个目标唤醒报文同时唤醒多个待唤醒设备的技术效果。
在本申请实施例中,首先,获取多个待唤醒设备的网卡MAC地址,并基于网卡MAC地址构建目标唤醒报文,其中,目标唤醒报文中包括目标设备序列标识,该目标设备序列标识包括多个待唤醒设备的网卡MAC地址;之后,发送目标唤醒报文,以使接收到目标唤醒报文的待唤醒设备启动唤醒模式。通过上述操作,能够达到通过一个唤醒报文来同时唤醒多个设备的目的,而不需要针对每个设备发送一个对应的唤醒报文,进而缓解了现有的唤醒技术无法实现同时唤醒多个设备的技术问题,从而实现了通过一个唤醒报文同时唤醒多个设备的技术效果。
可选地,在本申请实施例中,目标唤醒报文可以为Magic Packet报文。当待唤醒设备处于断电状态时,待唤醒设备工作在一种极低功耗的模式下。在这种极低功耗的模式下,待唤醒设备的网卡和处理器能接收、处理一些简单报文,并对简单的报文进行解析。
基于此,在本申请实施例中,终端设备在接收到用户输入的唤醒多个待唤醒设备的唤醒指令之后,就可以基于待唤醒设备的网卡MAC地址构建目标唤醒报文。其中,构建得到的目标唤醒报文中包含目标设备序列标识。在构建得到目标唤醒报文之后,终端设备通过自身的网络端口向待唤醒设备发送该目标唤醒报文。待唤醒设备的网络端口在接收到该目标唤醒报文之后,通过网卡将该目标唤醒报文发送至待唤醒设备的处理器,以使该处理器对该目标唤醒报文进行识别,以根据识别结果确定是否执行唤醒操作,其中,唤醒操作可以理解为上电操作。处理器对该目标唤醒报文进行识别是指处理器识别目标设备序列标识中是否包含其所在待唤醒设备的网卡MAC地址,具体识别过程将在下述实施例进行介绍。
通过上述描述可知,在该Magic Packet报文中包括目标设备序列标识,其中,该目标设备序列标识中包括每个待唤醒设备的网卡MAC地址。当待唤醒设备为多个时,目标设备序列标识中包括每个待唤醒设备的网卡MAC地址。
基于此,在本申请实施例的一个可选实施方式中,步骤S102,基于所述网卡MAC地址构建目标唤醒报文包括:
步骤S11,将所述多个待唤醒设备的网卡MAC地址按照预设方式进行组合,得到所述目标设备序列标识;
步骤S12,将目标设备序列标识添加至所述目标唤醒报文的负载部分。
其中,上述预设方式可以为将每个待唤醒设备的网卡MAC地址依次组合,并在每个网卡MAC地址的起始位置添加识别字符,该识别字符用于识别该报文为唤醒报文。同时,该识别字符也可将不同待唤醒设备的网卡MAC地址分割开,即每两个相邻的识别字符中的字段为待唤醒设备的MAC地址。
可选地,该识别字符可以为6个字节的FF。
也就是说,在本申请实施例中,首先获取待唤醒设备的网卡MAC地址;然后,将各个待唤醒设备的网卡MAC地址依次进行组合,并在任意两个相邻的网卡MAC地址之间设置有识别字符(即,6个字节的FF)。
例如,某个待唤醒设备M的网卡MAC地址为:11-22-33-44-55-66,若另外一个待唤醒设备N的网卡MAC地址为:21 22 23 24 25 26。那么Magic Packet报文的目标设备序列标识中应当包含以下信息:
ff ff ff ff ff ff 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 5566 11 2233 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 1122 33 4455 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 3344 55 6611 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 5566ff ff ff ff ff ff 21 22 23 24 25 26 21 22 23 24 25 26 21 22 23 24 25 26 2122 23 24 2526 21 22 23 24 25 26 21 22 23 24 25 26 21 22 23 24 25 26 21 22 2324 25 26 2122 23 24 25 26 21 22 23 24 25 26 21 22 23 24 25 26 21 22 23 24 2526 21 22 2324 25 26 21 22 23 24 25 26 21 22 23 24 25 26 21 22 23 24 25 26。
其中,ff ff ff ff ff ff即为识别字符,识别字符设置在每个待唤醒设备的网卡MAC地址的起始位置。
假设,在申请实施例中,定义“识别字符+待唤醒设备的网卡MAC地址”的数据序列为目标数据序列。
通过上述描述可知,上述待唤醒设备M所对应的目标数据序列M1和待唤醒设备N目标数据序列N1进行首尾组合。除此之外,还可以在目标数据序列M1和目标数据序列N1之间插入几个字节随机数据或者插入预设符号,具体插入内容,本申请实施例中不做具体限定。
针对普通的网络环境,一个Magic Packet报文的最大长度是1500字节,如果一个设备序列标识的长度是6+16*6=102字节。那么,一个Magic Packet报文可以同时唤醒14个设备。
另外,由于当前的交换机、网卡都支持以太网“巨帧”(Jumbo Frame)功能,因此,终端设备可将一个Magic Packet报文的最大长度配置为9000字节以上。此时一个MagicPacket报文可以同时唤醒80多个设备。
下面的序列是采用本申请实施例所提供的方法构建的一个可选的Magic Packet报文中目标设备序列标识的具体内容:
ff ff ff ff ff ff 08 2e 5f 20 4b 6b 08 42ff ff
ff ff ff ff 60 0b 03 6f 47 3a 60 0b 03 6f 47 3a
60 0b 03 6f 47 3a 60 0b 03 6f 47 3a 60 0b 03 6f
47 3a 60 0b 03 6f 47 3a 60 0b 03 6f 47 3a 60 0b
03 6f 47 3a 60 0b 03 6f 47 3a 60 0b 03 6f 47 3a
60 0b 03 6f 47 3a 60 0b 03 6f 47 3a 60 0b 03 6f
47 3a 60 0b 03 6f 47 3a 60 0b 03 6f 47 3a 60 0b
03 6f 47 3a ff ff ff ff ff ff 30 7b ac 76 0e 52
30 7b ac 76 0e 52 30 7b ac 76 0e 52 30 7b ac 76
0e 52 30 7b ac 76 0e 52 30 7b ac 76 0e 52 30 7b
ac 76 0e 52 30 7b ac 76 0e 52 30 7b ac 76 0e 52
30 7b ac 76 0e 52 30 7b ac 76 0e 52 30 7b ac 76
0e 52 30 7b ac 76 0e 52 30 7b ac 76 0e 52 30 7b
ac 76 0e 52 30 7b ac 76 0e 52
在上述目标设备序列标识中,包含2个待唤醒设备的“识别序列+待唤醒设备的网卡MAC地址”(即,目标数据序列)。其中,ff ff ff ff ff ff 60 0b03 6f 47 3a 60 0b 036f 47 3a 60 0b 03 6f 47 3a 60 0b 03 6f 47 3a 60 0b 03 6f47 3a 60 0b 03 6f 473a 60 0b 03 6f 47 3a 60 0b 03 6f 47 3a 60 0b 03 6f 47 3a60 0b 03 6f 47 3a 600b 03 6f 47 3a 60 0b 03 6f 47 3a 60 0b 03 6f 47 3a 60 0b03 6f 47 3a 60 0b 036f 47 3a 60 0b 03 6f 47 3a为一个待唤醒设备的目标数据序列。
ff ff ff ff ff ff 30 7b ac 76 0e 52 30 7b ac 76 0e 52 30 7b ac 76 0e52 30 7b ac 76 0e 52 30 7b ac 76 0e 52 30 7b ac 76 0e 52 30 7b ac 76 0e 52 307b ac 760e 52 30 7b ac 76 0e 52 30 7b ac 76 0e 52 30 7b ac 76 0e 52 30 7b ac76 0e 5230 7b ac 76 0e 52 30 7b ac 76 0e 52 30 7b ac 76 0e 52 30 7b ac 76 0e52为另一个待唤醒设备的目标数据序列。ff ff ff ff ff ff 08 2e 5f 20 4b 6b 08 42为报文的头信息。
需要说明的是,若目标唤醒报文通过二层广播报文的方式进行发送,报文的头信息中包括6个ff,以表示该目标唤醒报文通过二层广播报文的方式进行发送。
如果有更多的设备需要唤醒,则可以在目标唤醒报文的目标数据序列中继续添加第三个、第四个,…,第N个设备的目标数据序列,此处不再详细赘述。
在本申请实施例的一个可选实施方式中,基于所述网卡MAC地址构建目标唤醒报文还包括如下步骤:
步骤S21,获取每个所述待唤醒设备的唤醒时间;
步骤S22,将所属于同一唤醒时间的待唤醒设备划分到同一待唤醒设备组,得到至少一个待唤醒设备组;
步骤S23,基于每个待唤醒设备组中待唤醒设备的网卡MAC地址,为所述每个待唤醒设备组构建对应的目标唤醒报文,所述目标唤醒报文中携带用于表征待唤醒设备组的唤醒时间的标识信息。
当待唤醒设备的数量为多个,且待唤醒设备之间的唤醒时间不同时,按照上述的描述方式,需要为每个唤醒时间对应的待唤醒设备构建目标唤醒报文。例如,为T1唤醒时刻对应的待唤醒设备构建目标唤醒报文,以及为T2唤醒时刻对应的待唤醒设备构建目标唤醒报文。
需要说明的是,在本申请实施例中,唤醒时间为工作人员预先在终端设备中设定的各个待唤醒设备的唤醒时间。
针对上述不同唤醒时间的待唤醒设备,在申请实施例中,可以在同一时刻为不同唤醒时间的待唤醒设备分别构建目标唤醒报文。具体过程为:
在获取到唤醒待唤醒设备的唤醒指令之后,获取每个待唤醒设备的标识信息,其中,在唤醒指令中可以携带每个唤醒设备的标识信息。该标识信息用于表征每个待唤醒设备的唤醒时间。
也即,上述步骤S102中所描述的唤醒指令,除了可以包含多个待唤醒设备的网卡MAC地址,或者包含用于表征各个待唤醒设备的身份信息的身份标识信息之外,还可以携带用于指示每个待唤醒设备的唤醒时间的标识信息。假设,待唤醒设备A1至待唤醒设备A20的唤醒时间为T1时刻,待唤醒设备A21至待唤醒设备A40的唤醒时间为T2时刻。此时,待唤醒设备A1至待唤醒设备A20所对应的标识信息可以为“00”,待唤醒设备A21至待唤醒设备A40所对应的标识信息可以为“01”。
然后,按照标识信息对多个待唤醒设备进行分组,得到至少一个待唤醒设备组。即待唤醒设备A1至待唤醒设备A20为一个待唤醒设备组,记为B1,待唤醒设备A21至待唤醒设备A40为另一个待唤醒设备组,记为B2。
接下来,就可以分别为待唤醒设备组B1和待唤醒设备组B2构建目标唤醒报文。具体构建方法如上述步骤S11至步骤S12所述,此处不再赘述。在构建得到目标唤醒报文之后,就可以设置终端设备在T1时刻自动的向每个待唤醒设备发送目标唤醒报文,并在T2时刻自动的向每个待唤醒设备发送目标唤醒报文。
假设,如果待唤醒设备A21在T1时刻收到终端设备发送的目标唤醒报文,但是,经过待唤醒设备A21经过识别之后,发现自身不需要执行唤醒操作,则不执行该唤醒操作。如果待唤醒设备A21在T2时刻收到目标唤醒报文,但是,经过待唤醒设备A21经过识别之后,发现自身需要执行唤醒操作,则执行该唤醒操作。
针对上述需要为不同唤醒时刻的待唤醒设备构建目标唤醒报文的问题,采用上述处理方式,能够实现待唤醒设备的批量唤醒,而不再需要终端设备耗费大量的时间来为每个待唤醒设备构造唤醒报文,并向各个待唤醒设备逐个发送唤醒报文。本申请实施例所提供的方法,缩短了整个网络中待唤醒设备的唤醒时间,提高了整个网络中待唤醒设备的唤醒效率,以及缓解了现有的唤醒技术无法实现同时唤醒多个设备的技术问题。
在一个可选的实施方式中,发送所述目标唤醒报文包括如下步骤:
步骤S1041,向与所述待唤醒设备连接的目标交换机发送所述目标唤醒报文,以使所述目标交换机根据目的MAC地址,向除接收所述目标唤醒报文的接口外的第二目标接口广播所述目标唤醒报文,其中,所述第二目标接口与所述待唤醒设备连接。
如图2所示,在本申请实施例中,目标唤醒报文的发送方式可以为二层广播报文的形式进行发送。
具体地,终端设备首先向与待唤醒设备连接的目标交换机发送目标唤醒报文,目标唤醒报文达到目标交换机之后,目标交换机向第一目标接口广播该目标唤醒报文,以使各个待唤醒设备接收到该目标唤醒报文,其中,第一目标接口与待唤醒设备相连接。
因此,在本申请实施例中,认为连接在同一目标交换机下的待唤醒设备会同时接收到目标唤醒报文,并同时触发与该目标交换机相连接的待唤醒设备上电。
在一个可选的实施方式中,发送所述目标唤醒报文包括如下步骤:
步骤S1042,向与每个所述待唤醒设备组连接的一个或多个交换机发送对应的目标唤醒报文,以使所述一个或多个交换机根据所述对应的目标唤醒报文中的目的MAC地址,向第二目标接口发送所述对应的目标唤醒报文,其中,所述第二目标接口为所述一个或多个交换机中与所述待唤醒设备组中的每个待唤醒设备相连接的接口。
在本申请实施例中,在同时唤醒同一个待唤醒设备组中的待唤醒设备时,可以首先确定该待唤醒设备中各个待唤醒设备所连接的一个或多个交换机。然后,确定出的一个或多个交换机可以按照二层广播报文的发送方式,将与该待唤醒设备组相对应的目标唤醒报文发送至待唤醒设备,从而使得待唤醒设备启动唤醒模式。
例如,待唤醒设备A1至待唤醒设备A20所连接交换机为交换机B1;待唤醒设备A21至待唤醒设备A30所连接交换机为交换机B2。为了唤醒待唤醒设备A1至待唤醒设备A20,那么可以向交换机B1发送用于唤醒待唤醒设备A1至待唤醒设备A20的目标唤醒报文。然后,交换机B1按照二层广播报文的发送方式向交换机B1中与待唤醒设备A1至待唤醒设备A20相连接的接口(也即,第二目标接口)发送所述对应的目标唤醒报文。
通过上述描述可知,在本申请实施例中,针对大量的处于相同唤醒时间的待唤醒设备,仅需要构建一个相同的目标唤醒报文,就能够同时唤醒上述待唤醒设备,而不再需要为每个待唤醒设备分别构建一个唤醒报文。进一步地,在本申请实施例中,通过终端设备向交换机发送一次目标唤醒报文,就能够实现与该交换机相连接的待唤醒设备同时接收到该目标唤醒报文的效果,而不再需要终端设备向每个待唤醒设备分别发送该目标唤醒报文。
在本申请实施例中,在向每个待唤醒设备发送目标唤醒报文之后,待唤醒设备对目标唤醒报文进行识别,以确定是否执行唤醒操作。具体识别过程描述如下:
首先,判断所述目标设备序列标识中是否包含待唤醒设备的MAC地址;
其中,若所述目标设备序列标识中包含待唤醒设备的MAC地址,则待唤醒设备执行唤醒操作;若所述目标设备序列标识中不包含待唤醒设备的MAC地址,则待唤醒设备丢弃目标唤醒报文,不执行唤醒操作。
待唤醒设备判断目标设备序列标识中是否包含自身MAC地址的具体过程可以描述为:从目标设备序列标识中的第一个字节开始,连续读取N个字节,N为每个待唤醒设备的目标数据序列的字节长度;判断连续N个字节所构成的目标序列与当前待唤醒设备的MAC地址是否一致;如果一致,则待唤醒设备确定目标设备序列标识中包含自身的MAC地址;如果不一致,则从目标设备序列标识中的第二个字节开始,继续连续读取N个字节,直至待唤醒设备读取到的连续N个字节与自身的MAC地址一致。在反复执行上述操作的过程中,如果待唤醒设备未读取到自身的MAC地址,则待唤醒设备丢弃目标唤醒报文,不执行唤醒操作。例如,在读取到目标设备序列标识中倒数第N个字节时,如果目标设备序列标识中倒数N个字节至最后一个字节,依然不是待唤醒设备自身的MAC地址,则不再执行读取操作,即可确定出目标设备序列标识中不包含该待唤醒设备的MAC地址。
通过上述描述可知,在本申请实施例中,实现了终端设备通过一个唤醒报文来同时唤醒多个设备的目的,而不需要终端设备针对每个设备发送一个对应的唤醒报文,进而解决了现有的唤醒技术无法实现同时唤醒多个设备的技术问题。
例如,在数据中心,机房等这种存在大量服务器的应用场景中。需要对整个供电系统进行评估,其中一项评估为测试在所有设备同时上电的瞬间,对数据中心或者机房的电压、电流的影响。再例如,在刀箱服务器的测试中,也要需要评估在所有的刀片节点同时上电的瞬间对整个机箱电压、电流的影响,以确保电源模块能够应对最恶劣的情况。在这些场景下,需要一种能够控制多个设备同时上电的方法。现有技术中常用的方法为直接物理上拉闸断电。
但是,当前绝大多数的服务器,包括刀箱服务器中的每个刀片节点都包含一个BMC(Baseboard Management Controller,基板管理控制器)系统,其中,刀箱服务器中的每个刀片节点实际上就是一块系统主板。每个刀片节点可以启动自己的主控制系统,如Windows、Linux等,类似于一个个独立的服务器。在物理上给电之后,BMC系统先上电,然后在BMC系统初始化到一定阶段后,再为每个刀片节点的主控制系统(例如,X86服务器的主操作系统)上电。而每个刀片节点的主控制系统才是耗电的主体,相比来说,BMC系统的耗电几乎可以忽略。如果在每个刀片节点上电的过程中间,加入了BMC系统上电、软件初始化等这些动作,就很难保证每个刀片节点的主控制系统在同一时间点上电。但是,在本申请实施例中,采用的是Magic Packet报文上电的方式,该处理方式能够保证每个刀片节点在同一时间点上电。
实施例二:
本申请实施例还提供了一种设备的唤醒装置,该设备的唤醒装置主要用于执行本申请实施例上述内容所提供的设备的唤醒方法,以下对本申请实施例提供的设备的唤醒装置做具体介绍。
图3是根据本申请实施例的一种设备的唤醒装置的示意图,如图3所示,该设备的唤醒装置主要包括第一获取单元31,构建单元32和发送单元33,其中:
获取单元31,用于获取多个待唤醒设备的网卡MAC地址;
构建单元32,用于基于所述网卡MAC地址构建目标唤醒报文,其中,所述目标唤醒报文包括目标设备序列标识,所述目标设备序列标识包括多个待唤醒设备的网卡MAC地址;
发送单元33,用于发送所述目标唤醒报文,以使接收到所述目标唤醒报文的所述待唤醒设备启动唤醒模式。
在本申请实施例中,首先,获取多个待唤醒设备的网卡MAC地址,并基于网卡MAC地址构建目标唤醒报文,其中,目标唤醒报文中包括目标设备序列标识,该目标设备序列标识包括多个待唤醒设备的网卡MAC地址;之后,发送目标唤醒报文,以使接收到所述目标唤醒报文的所述待唤醒设备启动唤醒模式。通过上述操作,能够达到通过一个唤醒报文来同时唤醒多个设备的目的,而不需要针对每个设备发送一个对应的唤醒报文,进而缓解了现有的唤醒技术无法实现同时唤醒多个设备的技术问题,从而实现了通过一个唤醒报文同时唤醒多个设备的技术效果。
可选地,所述发送单元用于:向与所述待唤醒设备连接的目标交换机发送所述目标唤醒报文,以使所述目标交换机根据目的MAC地址,向除接收所述目标唤醒报文的接口外的第二目标接口广播所述目标唤醒报文,其中,所述第二目标接口与所述待唤醒设备连接。
可选地,所述构建单元包括:将所述多个待唤醒设备的网卡MAC地址按照预设方式进行连接,得到所述目标设备序列标识;将目标设备序列标识添加至所述目标唤醒报文的负载部分。
可选地,所述构建单元包括:还:获取模块,用于获取每个所述待唤醒设备的唤醒时间;划分单元,用于将所属于同一唤醒时间的待唤醒设备划分到同一待唤醒设备组,得到至少一个待唤醒设备组;第二构建模块,用于基于每个待唤醒设备组中待唤醒设备的网卡MAC地址,为所述每个待唤醒设备组构建对应的目标唤醒报文,所述目标唤醒报文中携带用于表征待唤醒设备组的唤醒时间的标识信息。
可选地,所述发送单元还用于:向与每个所述待唤醒设备组连接的一个或多个交换机发送对应的目标唤醒报文,以使所述一个或多个交换机根据所述对应的目标唤醒报文中的目的MAC地址,向第一目标接口发送所述对应的目标唤醒报文,其中,所述第一目标接口为所述一个或多个交换机中与所述待唤醒设备组中的每个待唤醒设备相连接的接口。
本申请实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
实施例三:
参见图4,本发明实施例还提供一种终端设备100,包括:处理器40,存储器41,总线42和通信接口43,所述处理器40、通信接口43和存储器41通过总线42连接;处理器40用于执行存储器41中存储的可执行模块,例如计算机程序。
其中,存储器41可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非易失存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口43(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线42可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器41用于存储程序,所述处理器40在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器40中,或者由处理器40实现。
处理器40可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器40中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器40可以是通用处理器,包括中央处理器(CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器41,处理器40读取存储器41中的信息,结合其硬件完成上述方法的步骤。
在本申请实施例的另一个实施例中,还提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行上述实施例一中任一项所述的方法,或者,执行上述实施例二中任一项所述的方法。
另外,在本申请实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。
在本申请的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种设备的唤醒方法,其特征在于,应用于终端设备,所述方法包括:
获取多个待唤醒设备的网卡MAC地址;
基于所述网卡MAC地址构建目标唤醒报文,其中,所述目标唤醒报文包括目标设备序列标识,所述目标设备序列标识包括多个待唤醒设备的网卡MAC地址;
发送所述目标唤醒报文,以使接收到所述目标唤醒报文的所述待唤醒设备启动唤醒模式。
2.根据权利要求1所述的方法,其特征在于,所述发送所述目标唤醒报文,具体包括:
向与所述待唤醒设备连接的目标交换机发送所述目标唤醒报文,以使所述目标交换机根据目的MAC地址,向除接收所述目标唤醒报文的接口外的第一目标接口广播所述目标唤醒报文;
其中,所述第一目标接口与所述待唤醒设备连接。
3.根据权利要求1所述的方法,其特征在于,所述基于所述网卡MAC地址构建目标唤醒报文,具体包括:
将所述多个待唤醒设备的网卡MAC地址按照预设方式进行组合,得到所述目标设备序列标识;
将目标设备序列标识添加至所述目标唤醒报文的负载部分。
4.根据权利要求1所述的方法,其特征在于,所述基于所述网卡MAC地址构建目标唤醒报文,具体包括:
获取每个所述待唤醒设备的唤醒时间;
将所属于同一唤醒时间的待唤醒设备划分到同一待唤醒设备组,得到至少一个待唤醒设备组;
基于每个待唤醒设备组中待唤醒设备的网卡MAC地址,为所述每个待唤醒设备组构建对应的目标唤醒报文,所述目标唤醒报文中携带用于表征待唤醒设备组的唤醒时间的标识信息。
5.根据权利要求4所述的方法,其特征在于,发送所述目标唤醒报文包括:
向与每个所述待唤醒设备组连接的一个或多个交换机发送对应的目标唤醒报文,以使所述一个或多个交换机根据所述对应的目标唤醒报文中的目的MAC地址,向第二目标接口发送所述对应的目标唤醒报文;
其中,所述第二目标接口为所述一个或多个交换机中与所述待唤醒设备组中的每个待唤醒设备相连接的接口。
6.一种设备的唤醒装置,其特征在于,设置于终端设备,包括:
获取单元,用于获取多个待唤醒设备的网卡MAC地址;
构建单元,用于基于所述网卡MAC地址构建目标唤醒报文,其中,所述目标唤醒报文包括目标设备序列标识,所述目标设备序列标识包括多个待唤醒设备的网卡MAC地址;
发送单元,用于发送所述目标唤醒报文,以使接收到所述目标唤醒报文的所述待唤醒设备启动唤醒模式。
7.根据权利要求6所述的装置,其特征在于,所述发送单元用于:
向与所述待唤醒设备连接的目标交换机发送所述目标唤醒报文,以使所述目标交换机根据目的MAC地址,向除接收所述目标唤醒报文的接口外的第二目标接口广播所述目标唤醒报文;
其中,所述第二目标接口与所述待唤醒设备连接。
8.根据权利要求6所述的装置,其特征在于,所述构建单元用于:
将所述多个待唤醒设备的网卡MAC地址按照预设方式进行组合,得到所述目标设备序列标识;
将目标设备序列标识添加至所述目标唤醒报文的负载部分。
9.根据权利要求6所述的装置,其特征在于,所述构建单元包括:还:
获取模块,用于获取每个所述待唤醒设备的唤醒时间;
划分单元,用于将所属于同一唤醒时间的待唤醒设备划分到同一待唤醒设备组,得到至少一个待唤醒设备组;
第二构建模块,用于基于每个待唤醒设备组中待唤醒设备的网卡MAC地址,为所述每个待唤醒设备组构建对应的目标唤醒报文,所述目标唤醒报文中携带用于表征待唤醒设备组的唤醒时间的标识信息。
10.根据权利要求9所述的装置,其特征在于,所述发送单元还用于:
向与每个所述待唤醒设备组连接的一个或多个交换机发送对应的目标唤醒报文,以使所述一个或多个交换机根据所述对应的目标唤醒报文中的目的MAC地址,向第一目标接口发送所述对应的目标唤醒报文;
其中,所述第一目标接口为所述一个或多个交换机中与所述待唤醒设备组中的每个待唤醒设备相连接的接口。
CN201910002879.6A 2019-01-02 2019-01-02 一种设备的唤醒方法和装置 Pending CN109787778A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910002879.6A CN109787778A (zh) 2019-01-02 2019-01-02 一种设备的唤醒方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910002879.6A CN109787778A (zh) 2019-01-02 2019-01-02 一种设备的唤醒方法和装置

Publications (1)

Publication Number Publication Date
CN109787778A true CN109787778A (zh) 2019-05-21

Family

ID=66499842

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910002879.6A Pending CN109787778A (zh) 2019-01-02 2019-01-02 一种设备的唤醒方法和装置

Country Status (1)

Country Link
CN (1) CN109787778A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023020357A1 (zh) * 2021-08-16 2023-02-23 阿里云计算有限公司 一种终端设备与终端设备通信的方法和终端设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047378A (en) * 1997-09-29 2000-04-04 International Business Machines Corporation Wake multiple over LAN
CN102870371A (zh) * 2010-05-06 2013-01-09 罗伯特·博世有限公司 用于变更至少一个设备的运行状态的方法
CN107864042A (zh) * 2017-10-31 2018-03-30 青岛海信电器股份有限公司 应用程序唤醒方法及装置
CN107896238A (zh) * 2016-10-04 2018-04-10 丰田自动车株式会社 车载网络系统
CN107968713A (zh) * 2016-10-20 2018-04-27 北京华为数字技术有限公司 远程唤醒方法、装置及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047378A (en) * 1997-09-29 2000-04-04 International Business Machines Corporation Wake multiple over LAN
CN102870371A (zh) * 2010-05-06 2013-01-09 罗伯特·博世有限公司 用于变更至少一个设备的运行状态的方法
CN107896238A (zh) * 2016-10-04 2018-04-10 丰田自动车株式会社 车载网络系统
CN107968713A (zh) * 2016-10-20 2018-04-27 北京华为数字技术有限公司 远程唤醒方法、装置及系统
CN107864042A (zh) * 2017-10-31 2018-03-30 青岛海信电器股份有限公司 应用程序唤醒方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023020357A1 (zh) * 2021-08-16 2023-02-23 阿里云计算有限公司 一种终端设备与终端设备通信的方法和终端设备

Similar Documents

Publication Publication Date Title
US9110843B2 (en) Rack and method thereof for simultaneously updating basic input output systems
CN110097157B (zh) 一种电子货架标签唤醒方法、系统及相关组件
WO2009123586A1 (en) Automated power topology discovery
US10114436B2 (en) Aux power controller
TWI475491B (zh) 更新電子貨架標籤的系統與方法以及一電子貨架標籤的更新裝置與方法
JP6619800B2 (ja) 無線ベースステーションおよびこの無線ベースステーションを含むシステム
CN111124981B (zh) 一种服务器i2c设备的管理系统及方法
CN103229463B (zh) 一种确定管理域的方法、网络设备及虚拟集群
CN109474467A (zh) 网络自动化管理方法、装置、存储介质及电子设备
CN109787778A (zh) 一种设备的唤醒方法和装置
CN101751265B (zh) 服务器的基本输入/输出系统的更新系统及其方法
CN103955195A (zh) 一种控制指令的发送、响应方法及装置
CN111211955A (zh) 从节点地址分配的方法和节点管理系统
CN108445788A (zh) 一种酒店场景控制方法及相关装置
CN103685083A (zh) 异步管理网络中的通信方法
CN111045703A (zh) 一种电池管理单元软件升级方法及系统
CN107204865A (zh) 终端系统维护方法、监控设备和远程监护的设备
CN115599617B (zh) 总线检测方法、装置、服务器及电子设备
KR20150104435A (ko) 라우팅 처리기의 동작 모드 천이 방법
CN103986588A (zh) 电脑系统及电脑装置的远端遥控方法
CN108845613B (zh) 交互智能平板及其数据处理方和装置
JP2007027889A (ja) Plcシステムにおけるネットワーク構成情報教示方法
CN102938699A (zh) 均衡供电方法及装置
US10841158B1 (en) Systems and methods for node maintenance in a network
CN112698606A (zh) 采集报文的处理方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
CB02 Change of applicant information

Address after: 310000 11/F, 466 Changhe Road, Binjiang District, Hangzhou City, Zhejiang Province

Applicant after: H3C INFORMATION TECHNOLOGY Co.,Ltd.

Address before: 310000 11/F, 466 Changhe Road, Binjiang District, Hangzhou City, Zhejiang Province

Applicant before: UNIS HUASHAN INFORMATION TECHNOLOGIES Co.,Ltd.

CB02 Change of applicant information
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20190521

RJ01 Rejection of invention patent application after publication