网络管理系统的制作方法

文档序号:7991457阅读:264来源:国知局
网络管理系统的制作方法
【专利摘要】一种网络管理系统包括连接至多个探测器的服务器,每个探测器连接至一个或多个被管理设备。一种对该系统进行操作的方法包括步骤:在探测器处接收被管理设备的错误事件,检测到所接收的错误事件的速率已经达到或接近服务器的过载水平,识别对所达到或接近的过载水平有所贡献的被管理设备,针对所识别的被管理设备将探测器切换至洪泛防止模式,并且以洪泛防止模式对经切换的探测器进行操作由此将所识别的被管理设备的多个错误事件合并为单个错误事件以便传输至服务器。
【专利说明】网络管理系统
【技术领域】
[0001]本发明涉及一种对网络管理系统进行操作的方法以及该网络管理系统自身。在一个实施例中,本发明为网络管理系统提供了有所改进的事件洪泛保护。
【背景技术】
[0002]许多计算系统包括共同向外部客户端提供一种或多种服务的所连接设备的大型网络。包括该系统的计算设备例如可以包括服务器和存储设备。为了监视这样的系统的操作,一般使用网络管理系统对该计算系统的操作的各个方面进行监视,包括系统内所出现的错误。存在多种可用的网络管理系统。这些系统跨网络从分散设备收集错误信息并且随后以允许操作人员有效地管理网络和修复网络的方式对该错误信息进行关联、分类、区分优先级和呈现。
[0003]管理非常大型的网络所存在的一个问题在于,存在着能够导致生成大量错误事件的网络故障模式,特别是在出现网络级联故障时。所产生的大量错误事件会以错误事件的巨大数量洪泛网络管理系统,使得网络管理系统无法做出响应并且使得操作人员难以有效地隔离故障的原始起因或者区分修复工作的优先级。计算网络内的一个或多个设备可能在短的时间范围内产生非常大量的错误事件,并且这些错误事件将会利用无法被有效处理和/或将阻止针对故障的响应的错误事件而在管理系统中进行洪泛。美国专利第 US7120819B1 号(Giirer, D 等(Method and System for Fault Diagnosis in a DataNetwork),2006年10月10日)公开了一种使得数据网络中确定错误的处理自动化的方法和系统。
[0004]在一些网络管理系统中,一旦错误事件速率超过给定阈值,就通过关闭可以从多个设备收集数据的监视探测器(probe)并且随后在该水平下降到阈值以下时重新启动探测器,来解决这一问题。然而,这针对该问题提供了一种非常粗放的解决方案,因为关闭探测器导致,包括对于修复网络而言可能很关键的信息在内。此外,如果探测器正在监视多个设备,则即使在仅有一个被监视设备产生错误事件的洪泛的情况下,来自所有被监视设备的数据也都会丢失。
[0005]因此,本领域需要解决以上所提到的与事件洪泛相关联的问题。

【发明内容】

[0006]根据本发明的第一方面,提供了一种对网络管理系统进行操作的方法,该系统包括连接至多个探测器的服务器,每个探测器连接至一个或多个被管理设备,该方法包括步骤:在探测器处接收被管理设备的错误事件,检测到所接收的错误事件的速率已经达到或接近服务器的过载水平,识别对所达到或接近的过载水平有所贡献的被管理设备,针对所识别的被管理设备将探测器切换至洪泛防止模式,并且以洪泛防止模式对经切换的探测器进行操作由此将所识别的被管理设备的多个错误事件合并为单个错误事件以便传输至服务器。[0007]根据本发明的第二方面,提供了一种网络管理系统,该系统包括连接至多个探测器的服务器,每个探测器连接至一个或多个被管理设备,该系统被配置为在探测器处接收被管理设备的错误事件,检测到所接收的错误事件的速率已经达到或接近服务器的过载水平,识别对所达到或接近的过载水平有所贡献的被管理设备,针对所识别的被管理设备将探测器切换至洪泛防止模式,并且以洪泛防止模式对经切换的探测器进行操作由此将所识别的被管理设备的多个错误事件合并为单个错误事件以便传输至服务器。
[0008]根据本发明的第三方面,提供了一种计算机可读介质上用于对网络管理系统进行操作的计算机程序产品,该系统包括连接至多个探测器的服务器,每个探测器连接至一个或多个被管理设备,该产品包括指令,其用于在探测器处接收被管理设备的错误事件,检测到所接收的错误事件的速率已经达到或接近服务器的过载水平,识别对所达到或接近的过载水平有所贡献的被管理设备,针对所识别的被管理设备将探测器切换至洪泛防止模式,并且以洪泛防止模式对经切换的探测器进行操作由此将所识别的被管理设备的多个错误事件合并为单个错误事件以便传输至服务器。
[0009]从另外的方面来看,本发明提供了一种用于对网络管理系统进行操作的计算机程序产品,该计算机程序产品包括:可由处理电路进行读取并且存储指令的计算机可读存储介质,该指令由处理电路执行以便执行用于执行本发明的步骤的方法。
[0010]从另外的方面来看,本发明提供了一种存储在计算机可读介质并且可加载到数字计算机的内部存储器中的计算机程序,其包括当所述程序在计算机上运行时用于执行本发明的步骤的软件代码部分。
[0011]由于本发明,可能提供一种实施减少来自故障设备的事件数据数量的更为智能的方法的网络管理系统。在洪泛防止模式中,探测器将缓冲来自特定设备的数据并且定期产生对来自所缓冲的多个错误事件的信息进行封装的单个概要事件。这例如能够通过对类似事件进行分组来完成。在有所改进的系统的最为简单的形式中,探测器在该探测器传送任何事件之前执行去冗余(de-duplication)功能。随后作为检测到事件洪泛的结果,可以执行适当的网络管理操作。在更为复杂的形式中,通过找出具有大量相同列(column)的事件并且将差异编码为单个概要事件来实现事件压缩。在一个实施例中,从整合服务器使用双向通信系统来实现将探测器置于事件压缩模式或者返回正常模式的外部控制。
[0012]在网络管理系统的可替换形式中,探测器可以在所接收的错误事件的数量超过事件上限的情况下自动开始减少事件数据的数量。将被置于事件减少模式的设备馈送(feed)可以在事件量上进行选择,或者可以被加权以使得更为重要的设备较不可能降低其事件速率。在网络管理系统的另一种可替换形式中,探测器还将在触发洪泛保护/防止模式之前对服务器上的负载进行检查以确保需要如此。
【专利附图】

【附图说明】
[0013]现在将参考如以下附图中所图示的优选实施例仅通过示例对本发明进行描述:
[0014]图1是依据现有技术并且可以在其中实施本发明的优选实施例的网络管理系统的不意图;
[0015]图2是根据本发明优选实施例的包括错误事件的部分网络管理系统的示意图;
[0016]图3是根据本发明优选实施例的网络管理系统的探测器的示意图;[0017]图4是根据本发明优选实施例的网络管理系统的服务器的示意图;以及
[0018]图5是根据本发明实施例的网络管理系统的第二实施例的示意图。
【具体实施方式】
[0019]图1示出了一种网络管理系统。该系统包括连接至多个探测器12的服务器10,每个探测器12连接至一个或多个被管理设备14。该系统该包括代理服务器16,其图示出探测器12不必直接连接至服务器10而是可以经由代理服务器16的中介进行连接。探测器12可以是软件组件,其能够直接位于在设备14上或者位于被连接至被管理设备14的不同设备上。根据系统的拓扑,图中所示组件之间的连接可以经由局域或广域网络。
[0020]被管理设备14可以是一个或多个不同类型的设备,包括服务器、存储设备、存储设备机架、网络设备或者诸如其它管理系统的软件组件,例如单元管理系统(EMS)或网络管理系统(NMS)。被管理设备14形成被设计为利用一些服务对外部客户端进行服务的计算系统的一部分。设备14例如可以构成大型组织的计算网络,或者可以是支持诸如商业机构网站之类的对一般公众进行服务的大型和复杂网站的计算系统。设备14每秒钟可以处理数千条请求并且设备14所服务的请求的数量和复杂度意味着错误能够且实际上在发生。
[0021]当任何设备14例如通过无法正确完成客户端请求而产生错误时,具体的被管理设备14就将与负责产生故障的设备14的探测器12进行通信。探测器12随后将根据具体规则创建错误事件,其将直接或经由代理服务器16被发送至服务器10。由于单个探测器12可能收集来自多个设备14的数据,因此探测器12所生成的错误事件可能是针对不同的设备14。管理员有权经由针对服务器10的适当图形用户接口访问服务器10并且能够查看从探测器12所接收的错误事件。
[0022]探测器12是能够对来自一个或多个设备14的原始错误或解析数据进行处理的监视组件。如图2所示,所接收的错误/解析根据预定义的规则集合而被转换为错误事件18,该规则集合具有列标准集合。该规则还管理事件18应当被写入服务器10所维护的一个或多个集中数据库中的目的地表格。一旦事件18已经被转换为标准的列格式,它们就被放到每个目的地表格一个的消息队列上。单独的线程随后将该数据传送至相关目标数据库表格。如果目标数据库未在线,则数据被存储在文件中直至该数据库再次可用并且数据随后被传送。
[0023]探测器12被配置为使得其具有不同的操作模式。这些不同模式由不同探测器12对其进行访问的不同规则集合所管理。探测器12可以在不同操作模式进行切换。该切换可以从服务器10进行指示,或者探测器12可以被配置为使得探测器12能够基于其响应于具体环境而自行在模式之间执行切换。在基本的正常操作模式中,探测器12将在从设备14接收到错误指示的任何时候创建错误事件18。在洪泛防止模式中,将使用一些形式的压缩,以下对其进行更为详细的讨论。
[0024]探测器的不同操作模式特定于探测器12与之连接的被管理设备14。这意味着如果探测器12连接至多个被管理设备14,则探测器12能够针对不同设备14以不同模式进行操作。因此连接至两个不同被管理设备14的探测器12能够针对第一设备14以洪泛防止模式进行操作,并且能够针对第二设备14以基本模式进行操作。探测器12能够根据从服务器12所接收的指令或者其自己的决策制定过程而在不同模式之间来回切换。[0025]当探测器12针对该探测器12所负责的具体设备14而被置于洪泛防止模式时,探测器12将针对该具体的被管理设备14将多个错误事件18合并为单个错误事件以便传输至服务器10。这可以以多种方式来实现,例如通过仅每隔η个传送错误事件18或者通过将多个相似错误事件18压缩为单个错误事件18等。对于针对被管理设备14而处于洪泛防止模式的探测器12而言重要的一点在于探测器12减少了被传送至服务器10的与该具体设备14相关的错误事件18的数量。
[0026]图3中示出了探测器12的更多细节。新的事件减少算法在探测器12内的事件传输线程20内运行。这意味着当探测器12在洪泛防止模式中运行时,其将既不放慢错误接收线程22也不放慢事件处理线程26。算法26由模式28进行切换。此外,由于事件传输线程20所执行的大部分工作涉及数据库通信,所以减少事件18的数量将以增加事件延时为代价而使得探测器12的整体性能加速。该图中还示出了用于创建事件18的规则30。
[0027]在该系统的第一实施例中,探测器12将具有已经被置于洪泛防止模式的一个或多个设备14的散列表。能够连同模式28 —起存储的该表格的内容将被服务器10发送至探测器12。在使用多个服务器10的层级系统中,整合数据的服务器10将是系统中用于以这种方式控制探测器12的组件,因为这是将首先受到事件洪泛影响的组件(以下参考图5更为详细地讨论)。被管理设备14被其节点所标识,即网络上的主机名称。
[0028]以下伪代码描述了增加至探测器传输线程20的新功能。
[0029]1.从处理线程消息队列的规则文件读取事件数据。
[0030]2.错误事件的节点列处于洪泛防止散列表中?
[0031]3.如果是,则将错误事件写入设备专属缓冲器,存储为指针列表并去往5。
[0032]4.将事件正常写入服务器表格。
[0033]5.可配置的缓冲器间隔时间已经过期(在探测器执行属性文件中设置)?
[0034]6.如果否,则去往I。
[0035]依次在每个设备缓冲器上执行步骤7至20。
[0036]7.解析错误事件缓冲器并对事件进行去冗余,即将所有相同的事件转化为标签列(tally column)等于事件数量的单个事件。
[0037]8.从缓冲器中删除相同的事件。
[0038]9.缓冲器中事件的最终数量低于阈值(在探测器执行属性文件中设置)?
[0039]10.如果是则将事件的缓冲器写入服务器表格并且去往I。
[0040]11.解析错误事件缓冲器并且找出具有最少数量的匹配列的事件。例如,除了标识符之外,事件类型、时间和概要全部相同。以缓冲器中找到的前两个相似事件作为开始。
[0041]12.找到了任何相似事件?
[0042]13.如果否,则将事件的其余缓冲器写入服务器表格并且去往I。
[0043]14.创建特殊的概要事件。所有相同列被存储在新事件中。
[0044]15.将来自相似事件列表的不相同的事件信息添加至概要事件的灵活扩展的属性列。
[0045]16.将概要事件写入服务器表格。
[0046]17.从缓冲器删除相似事件的列表。
[0047]18.缓冲器中事件的最终数量低于阈值(在探测器执行属性文件中设置)?[0048]19.如果是,则将事件的其余缓冲写入服务器表格并且去往I。
[0049]20.去往 11。
[0050]控制服务器10可以定期对要被置于洪泛防止模式的设备的新列表进行写入。这可以包含更多或更少的设备。
[0051]在该系统的可替换实施例中,探测器12自动将设备置于洪泛防止模式。以下伪代码描述了这如何在规则文件处理线程中完成。
[0052]1.初始化。在读取探测器规则文件时,在可获得的情况下还读取设备优先级权重的表格。权重O将导致设备始终都不会被置于洪泛防止模式。缺失的设备将有效地具有默认权重I。
[0053]2.如之前那样对到来的错误事件进行处理。
[0054]3.记录每个设备到来的错误事件速率。
[0055]4.洪泛调节周期已经过期?
[0056]5.如果否,则去往2。
[0057]6.针对所有设备计算到来的错误事件速率。
[0058]7.错误事件速率大于最大阈值(在探测器执行属性文件中设置)?
[0059]8.如果否,则去往16。
[0060]9.在存在其权重的情况下将每个设备的错误事件速率乘以其在优先级表格中的权重。
[0061]10.按照事件速率对设备列表进行排序。
[0062]11.找出还未处于洪泛防止模式的、具有最高加权事件速率的设备或者具有O权重的设备,并且将其设置为洪泛防止模式。如果没有则将其记入日志并去往2。
[0063]12.针对所有设备从到来事件速率中减去设备的故障事件速率。
[0064]13.故障事件速率大于最大阈值?
[0065]14.如果否,则去往2。
[0066]15.去往 11。
[0067]16.所有设备的故障事件速率都小于最大阈值的一半(在探测器执行属性文件中设置)?
[0068]17.如果否,则去往2。
[0069]18.在存在其权重的情况下将每个设备的错误事件速率乘以其在优先级表格中的权重。
[0070]19.按照事件速率对设备列表进行排序。
[0071]20.找出处于洪泛防止模式的、具有最低加权错误事件速率的设备(如果其存在)并且关闭洪泛防止模式。
[0072]21.去往 2。
[0073]在该系统的另一个可替换实施例中,探测器12能够在探测器12开始将设备14置于洪泛防止模式之前查询服务器10以查看其负载多重。这可以通过针对服务器10的查询用多久返回数据进行计时来完成,或者其可以通过查询服务器10所记录的性能量度来完成,例如在使用IBM? Netcool.⑧Network Management的ObjectServer的情况下通过从 catalog, profiles 选择 sum(PeriodSQLTime)或者从 catalog.trigger_stats 选择sum(PeriodTime)来完成。如果这些量度中的任一个的平均值超过给定阈值,以及总体错误事件速率高于其阈值,则探测器12开始基于加权错误事件速率而将设备14置于洪泛防止模式。这允许服务器10具有来自其它探测器12和用户等的非常少的负载并且因此能够处理来自该探测器12的高事件速率。IBM和Netcool是国际商业机器公司在全球许多司法辖区所注册的商标。
[0074]ObjectServer去冗余触发器能够被修改以共同增加到来的错误事件标签,而使得针对已经在缓冲器间隔时间在探测器12处被部分去冗余的错误事件18记录正确标签。这还确保了(基于标签的)错误事件速率计算将保持正确。在IBM Netcool7.3.1中,探测器12并不设置标签列。将为IBM Netcool错误事件列表提供将在需要的情况下对概要事件进行解包的工具。这将允许用户在需要的情况下重新创建来自设备14的完整事件列表。这使用扩展属性的列数据连同其余概要列数据一起以产生新的事件。概要事件随后将被删除。
[0075]图4示出了连接至探测器12和/或(多个)代理服务器16的服务器10的示例。服务器10从探测器12接收针对被管理设备14的错误事件,并且在一个实施例中,检测到所接收错误事件18的速率已经达到或接近服务器10的过载水平。服务器10可以利用定义具体服务器10的过载水平的阈值水平进行编程。该阈值例如可以被表达为每秒钟接收错误时间18的速率。当已经达到该阈值或者接收速率有所增加而使得阈值将在预定时间段内达到该阈值时,则服务器10将采取措施。
[0076]服务器10将识别对已达到或接近过载水平有所贡献的被管理设备14并且将针对所识别的被管理设备14将探测器12切换到洪泛防止模式。这能够通过创建每个被管理设备14的错误事件速率的列表32并且选择具有最大错误事件速率的被管理设备14来实现。表格32定义了(由节点名称所表示的)设备14、负责具体设备14的探测器12,并且还表示了用于特定设备14的每秒钟接收错误事件18的速率。表格32的每一行涉及不同的被管理设备14。
[0077]在图4的示例中,具有〈15000错误事件/秒的阈值,设备“节点I”将被置于洪泛防止模式,这会涉及到指示“探测器I”针对该具体设备14切换至洪泛防止模式。可能有更为复杂的策略,并且如果计算出改变“节点I”将不会为服务器10提供充分的保护,则可以将另外的设备14同时置于洪泛防止模式。实际上,很可能需要将大量设备14置于洪泛防止模式。一旦服务器10不再可能过载,则处理可以逆转并且设备14能够退出洪泛防止模式。
[0078]图5示出了网络管理系统的第二实施例。该实施例使用了以上所提到的整合服务器10a。这种类型的实施例将在非常大型的系统中使用,该系统使用很多设备而使得拥有连接至所有探测器12的单个服务器10是不切实际的。在该实施例中,多个服务器10在系统内形成收集层,并且收集层中的每个服务器10连接至多个探测器12,该探测器12自身连接至一个或多个被管理设备14。显示服务器34形成网络管理系统内的显示层。
[0079]被管理设备14所生成的错误被传输至与生成错误消息的具体设备14相连接的探测器12。探测器12依据探测器12根据其进行操作的规则而创建格式化的事件消息18。该事件消息18被传送至收集层中的服务器10并且收集层服务器10与整合服务器IOa进行通信。已经被去冗余的事件消息18被上报整合服务器10a。服务器10在向服务器IOa发送事件之前还删除过期事件并且执行预处理。因此,整合服务器IOa得到合并的错误事件并且与必须自行执行这一阶段的情况相比负载有所下降。服务器IOa将创建错误报告和数据库条目,它们被送至显示服务器34,以使得管理员能够在不增加整合服务器IOa的负担的情况下访问到该信息。
[0080]所接收的错误事件18的速率已经达到或接近过载水平的检测是相对于整合服务器IOa进行测量的。这是在存在错误事件18的洪泛时系统内处于过载危险之中的组件。如以上详细讨论的,一旦整合服务器IOa检测到达到或即将达到过载水平,则将开始针对具体被管理设备14将一些探测器12置于洪泛防止模式的处理。以这种方式,整合服务器IOa受到保护而免于错误事件18洪泛整合服务器10a,因此防止了整合服务器IOa无法正常工作。
[0081]有所改进的网络管理系统能够采用完全硬件的实施例、完全软件的实施例或者包含硬件和软件单元的实施例。在优选实施例中,该网络管理系统以软件实施,其包括但并不局限于固件、驻留软件、微代码等。该网络管理系统能够采取可从提供程序代码以便由计算机或任何指令执行系统使用或者结合其使用的计算机可用或计算机可读介质进行访问的计算机程序产品的形式。
[0082]出于本文的目的,计算机可用或计算机可读介质可以是能够包含、存储、通信、传播或传输程序以便由指令执行系统、装置或设备使用或者结合其使用的任意装置。介质可以是电子、磁性、光学、电磁、红外或半导体系统(或装置或设备)或者传播介质。计算机可读介质的示例包括半导体或固态存储器、磁带、可移动计算机卡带、随机存储存储器(RAM)、只读存储器(ROM)、硬质磁盘和光盘。当前光盘的示例包括紧致盘只读存储器(CD-ROM)、紧致盘读 / 写(CD-R/W)和 DVD。
【权利要求】
1.一种对网络管理系统进行操作的方法,该系统包括连接至多个探测器的服务器,每个探测器连接至一个或多个被管理设备,所述方法包括以下步骤: 在所述探测器处接收所述被管理设备的错误事件, 检测到所接收的错误事件的速率已经达到或接近所述服务器的过载水平, 识别对所达到或接近的过载水平有所贡献的被管理设备, 针对所识别的所述被管理设备将所述探测器切换至洪泛防止模式,以及以所述洪泛防止模式对经切换的所述探测器进行操作由此将所识别的所述被管理设备的多个错误事件合并为单个错误事件以便传输至所述服务器。
2.根据权利要求1所述的方法,其中识别对所达到或接近的过载水平有所贡献的被管理设备的步骤由每个个体探测器来执行。
3.根据权利要求1所述的方法,其中识别对所达到或接近的过载水平有所贡献的被管理设备的步骤由所述服务器执行,并且针对所识别的所述被管理设备将所述探测器切换至所述洪泛防止模式的步骤包括指示所述探测器切换至所述洪泛防止模式。
4.根据权利要求3所述的方法,其中识别对所达到或接近的过载水平有所贡献的被管理设备的步骤包括创建每个被管理设备的错误事件速率的列表并且选择具有最大错误事件速率的被管理设备。
5.根据权利要求3或4所述的方法,并且进一步包括在检测到所接收错误事件的速率已经达到或接近所述服务器的过载水平之后,识别对所达到或接近的过载水平有所贡献的一个或多个另外的被管理设备并且针对该另外识别的被管理设备将所述探测器切换至所述洪泛防止模式。
6.一种网络管理系统,包括连接至多个探测器的服务器,每个探测器连接至一个或多个被管理设备,所述系统包括:` 接收装置,用于在所述探测器处接收所述被管理设备的错误事件, 检测装置,用于检测到所接收的错误事件的速率已经达到或接近所述服务器的过载水平, 识别装置,用于识别对所达到或接近的过载水平有所贡献的被管理设备, 切换装置,用于针对所识别的所述被管理设备将所述探测器切换至洪泛防止模式,以及 操作装置,用于以所述洪泛防止模式对经切换的所述探测器进行操作由此将所识别的所述被管理设备的多个错误事件合并为单个错误事件以便传输至所述服务器。
7.根据权利要求6所述的系统,其中每个个体探测器可进行操作以便识别对所达到或接近的过载水平有所贡献的被管理设备。
8.根据权利要求6所述的系统,其中所述服务器可进行操作以便识别对所达到或接近的过载水平有所贡献的被管理设备并且通过指示所述探测器切换至所述洪泛防止模式而针对所识别的所述被管理设备将所述探测器切换至所述洪泛防止模式。
9.根据权利要求8所述的系统,其中所述服务器可操作以便在识别对所达到或接近的过载水平有所贡献的被管理设备时,创建每个被管理设备的错误事件速率的列表并且选择具有最大错误事件速率的被管理设备。
10.根据权利要求8或9所述的系统,其中所述服务器进一步可操作以便在检测到所接收错误事件的速率已经达到或接近所述服务器的过载水平之后,识别对所达到或接近的过载水平有所贡献的一个或多个另外的被管理设备并且针对该另外识别的被管理设备将所述探测器切换至所述洪泛防止模式。
11.一种用于对网络管理系统进行操作的计算机程序产品,所述计算机程序产品包括: 计算机可读存储介质,其可由处理电路进行读取并且存储有指令,所述指令由所述处理电路执行以便执行根据权利要求1至5中任一项所述的方法。
12.—种存储在计算机可读介质并且可加载到数字计算机的内部存储器中的计算机程序,其包括当所述程序在计算机上运行时用于执行根据权利要求1至5中任一项所述的方法的软件代码 部分。
【文档编号】H04L12/24GK103733567SQ201280038786
【公开日】2014年4月16日 申请日期:2012年8月1日 优先权日:2011年8月10日
【发明者】D·R·弗兰克林, S·F·库克 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1