Network Working Group                                        A. Bogdanov
Request for Comments: 3018                                     NKO "ORS"
Category: Experimental                                     December 2000
        
Network Working Group                                        A. Bogdanov
Request for Comments: 3018                                     NKO "ORS"
Category: Experimental                                     December 2000
        

Unified Memory Space Protocol Specification

统一内存空间协议规范

Status of this Memo

本备忘录的状况

This memo defines an Experimental Protocol for the Internet community. It does not specify an Internet standard of any kind. Discussion and suggestions for improvement are requested. Distribution of this memo is unlimited.

这份备忘录为互联网社区定义了一个实验性协议。它没有规定任何类型的互联网标准。要求进行讨论并提出改进建议。本备忘录的分发不受限制。

Copyright Notice

版权公告

Copyright (C) The Internet Society (2000). All Rights Reserved.

版权所有(C)互联网协会(2000年)。版权所有。

Abstract

摘要

This document specifies Unified Memory Space Protocol (UMSP), which gives a capability of immediate access to memory of the remote nodes.

本文档指定了统一内存空间协议(UMSP),该协议提供了立即访问远程节点内存的能力。

Conventions used in this document

本文件中使用的公约

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC-2119 [2].

本文件中的关键词“必须”、“不得”、“要求”、“应”、“不应”、“应”、“不应”、“建议”、“可”和“可选”应按照RFC-2119[2]中所述进行解释。

The following syntax specification uses the augmented Backus-Naur Form (ABNF) as described in RFC-2234 [3].

以下语法规范使用RFC-2234[3]中所述的增广巴科斯诺尔形式(ABNF)。

Table of Contents

目录

   1.  Introduction...................................................4
   2.  The UMSP Model.................................................5
     2.1  128-bit Address Space.......................................5
     2.2  Computing Model.............................................7
     2.3  System Architecture.........................................9
   3.  Instruction Format............................................11
     3.1  Instruction Header.........................................12
     3.2  Extension Headers..........................................15
     3.3  Instruction Operands.......................................17
     3.4  Address Formats............................................17
   4.  Response of the Instructions..................................19
     4.1  RSP, RSP_P.................................................20
     4.2  SND_CANCEL.................................................20
   5.  Jobs Management...............................................21
        
   1.  Introduction...................................................4
   2.  The UMSP Model.................................................5
     2.1  128-bit Address Space.......................................5
     2.2  Computing Model.............................................7
     2.3  System Architecture.........................................9
   3.  Instruction Format............................................11
     3.1  Instruction Header.........................................12
     3.2  Extension Headers..........................................15
     3.3  Instruction Operands.......................................17
     3.4  Address Formats............................................17
   4.  Response of the Instructions..................................19
     4.1  RSP, RSP_P.................................................20
     4.2  SND_CANCEL.................................................20
   5.  Jobs Management...............................................21
        
     5.1  Job Initiate...............................................23
       5.1.1  CONTROL_REQ............................................24
       5.1.2  CONTROL_CONFIRM........................................25
       5.1.3  CONTROL_REJECT.........................................26
     5.2  Task Initiate..............................................26
       5.2.1  TASK_REG...............................................26
       5.2.2  TASK_CONFIRM...........................................27
       5.2.3  TASK_REJECT............................................28
       5.2.4  TASK_CHK...............................................28
     5.3  Establishment of session connection........................29
       5.3.1  SESSION_OPEN...........................................29
       5.3.2  SESSION_ACCEPT.........................................31
       5.3.3  SESSION_REJECT.........................................31
       5.3.4  Connection Profile.....................................32
     5.4  Session Closing............................................33
       5.4.1  SESSION_CLOSE..........................................34
       5.4.2  SESSION_ABEND..........................................35
     5.5  Task Termination...........................................35
       5.5.1  TASK_TERMINATE.........................................36
       5.5.2  TASK_TERMINATE_INFO....................................36
     5.6  Job Completion.............................................37
       5.6.1  JOB_COMPLETED..........................................37
       5.6.2  JOB_COMPLETED_INFO.....................................38
     5.7  Activity Control of Nodes..................................38
       5.7.1  _INACTION_TIME.........................................39
       5.7.2  STATE_REQ..............................................40
       5.7.3  TASK_STATE.............................................41
       5.7.4  NODE_RELOAD............................................42
     5.8  Work without session connection............................42
   6.  Instructions of Exchange between VM...........................44
     6.1  Data Reading/Writing Instructions..........................45
       6.1.1  REQ_DATA...............................................45
       6.1.2  DATA...................................................46
       6.1.3  WRITE..................................................46
       6.1.4  WRITE_EXT..............................................47
     6.2  Comparison Instructions....................................47
       6.2.1  CMP....................................................47
       6.2.2  CMP_EXT................................................48
       6.2.3  Response to Comparison Instructions....................48
     6.3  Control Transfer Instructions..............................48
       6.3.1  JUMP, CALL.............................................48
       6.3.2  RETURN.................................................49
     6.4  Memory Control Instructions................................50
       6.4.1  MEM_ALLOC..............................................50
       6.4.2  MVCODE.................................................50
       6.4.3  ADDRESS................................................51
       6.4.4  FREE...................................................51
       6.4.5  MVRUN..................................................51
        
     5.1  Job Initiate...............................................23
       5.1.1  CONTROL_REQ............................................24
       5.1.2  CONTROL_CONFIRM........................................25
       5.1.3  CONTROL_REJECT.........................................26
     5.2  Task Initiate..............................................26
       5.2.1  TASK_REG...............................................26
       5.2.2  TASK_CONFIRM...........................................27
       5.2.3  TASK_REJECT............................................28
       5.2.4  TASK_CHK...............................................28
     5.3  Establishment of session connection........................29
       5.3.1  SESSION_OPEN...........................................29
       5.3.2  SESSION_ACCEPT.........................................31
       5.3.3  SESSION_REJECT.........................................31
       5.3.4  Connection Profile.....................................32
     5.4  Session Closing............................................33
       5.4.1  SESSION_CLOSE..........................................34
       5.4.2  SESSION_ABEND..........................................35
     5.5  Task Termination...........................................35
       5.5.1  TASK_TERMINATE.........................................36
       5.5.2  TASK_TERMINATE_INFO....................................36
     5.6  Job Completion.............................................37
       5.6.1  JOB_COMPLETED..........................................37
       5.6.2  JOB_COMPLETED_INFO.....................................38
     5.7  Activity Control of Nodes..................................38
       5.7.1  _INACTION_TIME.........................................39
       5.7.2  STATE_REQ..............................................40
       5.7.3  TASK_STATE.............................................41
       5.7.4  NODE_RELOAD............................................42
     5.8  Work without session connection............................42
   6.  Instructions of Exchange between VM...........................44
     6.1  Data Reading/Writing Instructions..........................45
       6.1.1  REQ_DATA...............................................45
       6.1.2  DATA...................................................46
       6.1.3  WRITE..................................................46
       6.1.4  WRITE_EXT..............................................47
     6.2  Comparison Instructions....................................47
       6.2.1  CMP....................................................47
       6.2.2  CMP_EXT................................................48
       6.2.3  Response to Comparison Instructions....................48
     6.3  Control Transfer Instructions..............................48
       6.3.1  JUMP, CALL.............................................48
       6.3.2  RETURN.................................................49
     6.4  Memory Control Instructions................................50
       6.4.1  MEM_ALLOC..............................................50
       6.4.2  MVCODE.................................................50
       6.4.3  ADDRESS................................................51
       6.4.4  FREE...................................................51
       6.4.5  MVRUN..................................................51
        
     6.5  Other Instructions.........................................52
       6.5.1  SYN....................................................52
       6.5.2  NOP....................................................53
     6.6  Work with Objects..........................................53
       6.6.1  Reading/Writing of the Objects Data....................54
         6.6.1.1  OBJ_REQ_DATA.......................................54
         6.6.1.2  OBJ_WRITE..........................................55
         6.6.1.3  OBJ_WRITE_EXT......................................56
       6.6.2  Comparison Instructions of the Objects Data............56
         6.6.2.1  OBJ_DATA_CMP.......................................56
         6.6.2.2  OBJ_DATA_CMP_EXT...................................57
       6.6.3  Execution of the Objects Procedures....................57
         6.6.3.1  CALL_BNUM..........................................57
         6.6.3.2  CALL_BNAME.........................................58
         6.6.3.3  GET_NUM_PROC.......................................59
         6.6.3.4  PROC_NUM...........................................59
       6.6.4  The Objects Creation...................................59
         6.6.4.1  NEW, SYS_NEW.......................................60
         6.6.4.2  OBJECT.............................................61
         6.6.4.3  DELETE.............................................61
       6.6.5  The Objects Identification.............................61
         6.6.5.1  OBJ_SEEK...........................................62
         6.6.5.2  OBJ_GET_NAME.......................................62
   7.  Chains........................................................62
     7.1  Sequence...................................................63
     7.2  Transaction................................................64
       7.2.1  _BEGIN_TR..............................................64
       7.2.2  EXEC_TR................................................65
       7.2.3  CANCEL_TR..............................................66
     7.3  Fragmented instruction.....................................66
     7.4  Buffering..................................................67
     7.5  Acknowledgement of chains..................................69
     7.6  Base-displacement Addressing...............................70
   8.  Extension Headers.............................................71
     8.1  _ALIGNMENT.................................................71
     8.2  _MSG.......................................................71
     8.3  _NAME......................................................72
     8.4  _DATA......................................................72
     8.5  _LIFE_TIME.................................................72
   9.  Search of resources...........................................73
     9.1  VM_REQ.....................................................75
     9.2  VM_NOTIF...................................................75
   10.  Security Consideration.......................................77
   11.  Used Abbreviations...........................................78
   12.  References...................................................79
   13.  Author's Address.............................................80
   14.  Full Copyright Statement.....................................81
        
     6.5  Other Instructions.........................................52
       6.5.1  SYN....................................................52
       6.5.2  NOP....................................................53
     6.6  Work with Objects..........................................53
       6.6.1  Reading/Writing of the Objects Data....................54
         6.6.1.1  OBJ_REQ_DATA.......................................54
         6.6.1.2  OBJ_WRITE..........................................55
         6.6.1.3  OBJ_WRITE_EXT......................................56
       6.6.2  Comparison Instructions of the Objects Data............56
         6.6.2.1  OBJ_DATA_CMP.......................................56
         6.6.2.2  OBJ_DATA_CMP_EXT...................................57
       6.6.3  Execution of the Objects Procedures....................57
         6.6.3.1  CALL_BNUM..........................................57
         6.6.3.2  CALL_BNAME.........................................58
         6.6.3.3  GET_NUM_PROC.......................................59
         6.6.3.4  PROC_NUM...........................................59
       6.6.4  The Objects Creation...................................59
         6.6.4.1  NEW, SYS_NEW.......................................60
         6.6.4.2  OBJECT.............................................61
         6.6.4.3  DELETE.............................................61
       6.6.5  The Objects Identification.............................61
         6.6.5.1  OBJ_SEEK...........................................62
         6.6.5.2  OBJ_GET_NAME.......................................62
   7.  Chains........................................................62
     7.1  Sequence...................................................63
     7.2  Transaction................................................64
       7.2.1  _BEGIN_TR..............................................64
       7.2.2  EXEC_TR................................................65
       7.2.3  CANCEL_TR..............................................66
     7.3  Fragmented instruction.....................................66
     7.4  Buffering..................................................67
     7.5  Acknowledgement of chains..................................69
     7.6  Base-displacement Addressing...............................70
   8.  Extension Headers.............................................71
     8.1  _ALIGNMENT.................................................71
     8.2  _MSG.......................................................71
     8.3  _NAME......................................................72
     8.4  _DATA......................................................72
     8.5  _LIFE_TIME.................................................72
   9.  Search of resources...........................................73
     9.1  VM_REQ.....................................................75
     9.2  VM_NOTIF...................................................75
   10.  Security Consideration.......................................77
   11.  Used Abbreviations...........................................78
   12.  References...................................................79
   13.  Author's Address.............................................80
   14.  Full Copyright Statement.....................................81
        

1 Introduction

1导言

UMSP is the network connection-oriented protocol. It corresponds to session and presentation layers of model OSI. The protocol is designed for implementation in a wide class of systems, from simple devices based on the dedicated processors, up to universal computers and clusters.

UMSP是面向网络连接的协议。它对应于OSI模型的会话层和表示层。该协议设计用于广泛的系统实现,从基于专用处理器的简单设备到通用计算机和集群。

For the data exchange, the protocol uses transport layer service with reliable delivery. It is possible to use not providing reliable delivery protocol for the transmission of not requiring acknowledgement data. This document describes use TCP and UDP.

对于数据交换,该协议使用传输层服务,传输可靠。可以使用不提供可靠传递协议来传输不需要确认数据。本文档介绍如何使用TCP和UDP。

The creation of network environment for the organization 128-bit address space of memory distributed between Internet nodes is the basic purpose of the protocol UMSP. The protocol defines algorithm of the connections management and format of network primitives. It doesn't control local memory on the node.

为组织分布在Internet节点之间的128位内存地址空间创建网络环境是协议UMSP的基本目的。该协议定义了连接管理的算法和网络原语的格式。它不控制节点上的本地内存。

As against the traditional network protocols, the user applications on different nodes interact not by the network primitives exchanging or working with the dataflows, but by immediate data reading/write or control transfers to the code in virtual memory of the remote node. The user's application can know nothing about existence of the protocol and network, and simply use the instructions with 128-bit addresses.

与传统的网络协议不同,不同节点上的用户应用程序不是通过交换数据流或与数据流一起工作的网络原语进行交互,而是通过对远程节点虚拟内存中的代码进行即时数据读/写或控制传输进行交互。用户的应用程序对协议和网络的存在一无所知,只需使用128位地址的指令即可。

Firstly, it is supposed to use UMSP in systems based on the virtual machines (VM), executing the pseudo-code. However, the protocol may be used in systems executing a processor code, for example, in clusters or in universal operational systems, for the organization of the distributed virtual address space. Besides, the minimal profile of the protocol may be used in simple devices, which do not have the operational system.

首先,在基于虚拟机(VM)的系统中使用UMSP,执行伪代码。然而,该协议可用于执行处理器代码的系统中,例如,在集群中或在通用操作系统中,用于组织分布式虚拟地址空间。此外,协议的最小配置文件可用于没有操作系统的简单设备中。

The protocol gives various means for set the connection parameters and allows building systems with a high protection level without restriction applications functionalities.

该协议提供了设置连接参数的各种方法,并允许在不限制应用功能的情况下构建具有高保护级别的系统。

UMSP can essentially simplify the distributed systems development process. It gives an opportunity to unite not only information, but also calculating resources of the large number of polytypic computers without significant expenses for the programs standardization and development.

UMSP可以从本质上简化分布式系统开发过程。它不仅提供了一个统一信息的机会,而且还提供了大量多型计算机的计算资源,而无需为程序的标准化和开发花费大量费用。

2 The UMSP Model

2 UMSP模型

2.1 128-bit Address Space
2.1 128位地址空间

UMSP is based on the 128-bit distributed address memory space model. The 128-bit address contains the information about the network type, network node address and local memory address. It has the following format:

UMSP基于128位分布式地址内存空间模型。128位地址包含有关网络类型、网络节点地址和本地内存地址的信息。其格式如下:

   Octets
    0      1                                                    16
   +------+--------------+--------------------+----------------+
   |Header|     FREE     |     NODE_ADDR      |    MEM_ADDR    |
   +------+--------------+--------------------+----------------+
        
   Octets
    0      1                                                    16
   +------+--------------+--------------------+----------------+
   |Header|     FREE     |     NODE_ADDR      |    MEM_ADDR    |
   +------+--------------+--------------------+----------------+
        

Complete address length is fixed and is equal to 16 octets.

完整地址长度是固定的,等于16个八位字节。

Header

标题

1 octet. Address header field completely defines the address format. The header has the following format:

1个八位组。地址头字段完全定义了地址格式。标题具有以下格式:

      Bits
       0     1     2     3     4     5     6     7
      +-----+-----+-----+-----+-----+-----+-----+-----+
      |      ADDR_LENGTH      |  NET_TYPE | ADDR_CODE |
      +-----+-----+-----+-----+-----+-----+-----+-----+
        
      Bits
       0     1     2     3     4     5     6     7
      +-----+-----+-----+-----+-----+-----+-----+-----+
      |      ADDR_LENGTH      |  NET_TYPE | ADDR_CODE |
      +-----+-----+-----+-----+-----+-----+-----+-----+
        

ADDR_LENGTH

地址长度

4 bits. The length of the network address. This field contains the number of octets in the NODE_ADDR field. The value 0 is not allowed.

4位。网络地址的长度。此字段包含NODE_ADDR字段中的八位字节数。不允许使用值0。

NET_TYPE

网络型

2 bits. The network type. This field specifies a type of network, in which the node is.

2位。网络类型。此字段指定节点所在的网络类型。

ADDR_CODE

地址码

2 bits. The length code of the local memory address. The value of this field specifies the length of the local memory address. The following values of the field and appropriated to them length of the field MEM_ADDR are defined:

2位。本地内存地址的长度代码。此字段的值指定本地内存地址的长度。定义了以下字段值以及字段MEM_ADDR的长度:

%b00 - 16 bit %b01 - 24 bit %b10 - 32 bit %b11 - 64 bit

%b00-16位%b01-24位%b10-32位%b11-64位

The values combination of the three fields of heading is named address format number. These fields unequivocally define a network, in which the node is located. Format number writes as follows:

标题的三个字段的值组合称为地址格式编号。这些字段明确定义了节点所在的网络。格式编号如下所示:

         N <ADDR_LENGTH> - <NET_TYPE> - <ADDR_CODE>
        
         N <ADDR_LENGTH> - <NET_TYPE> - <ADDR_CODE>
        

For example, N 4-0-2 defines the address with length of the node network address 4 octets and memory address with the length 32 bits. The network type 0 for such address format is defined for the network IPv4 in the presented document. If the network type is equal to zero, it may be missed during the writing of the address format number. For example, format N 4-0-2 and 4-2 are equivalent. If both fields NET_TYPE and ADDR_CODE are set to zero, they may be omitted. Thus, a format number writes as one figure.

例如,n4-0-2定义了长度为节点网络地址4个八位字节的地址和长度为32位的内存地址。此地址格式的网络类型0是在提供的文档中为网络IPv4定义的。如果网络类型等于零,则在写入地址格式编号时可能会遗漏该类型。例如,格式n4-0-2和4-2是等效的。如果NET_TYPE和ADDR_CODE两个字段都设置为零,则可以忽略它们。因此,格式编号写为一个数字。

One or several address format numbers must be assigned for each global network, included in unified system.

必须为每个全球网络分配一个或多个地址格式编号,包括在统一系统中。

FREE

自由的

0 - 12 octets. This field is unused by the protocol. It may contain any additional information, which is necessary for the control system of the node memory. If this field is not used, the zero value must be set in all octets. Using of this field results that the network instructions must contain only complete 16 - octet address and the short address of local memory cannot be used.

0-12个八位组。协议未使用此字段。它可以包含节点存储器的控制系统所必需的任何附加信息。如果未使用此字段,则必须在所有八位字节中设置零值。使用此字段会导致网络指令只能包含完整的16位八位组地址,并且不能使用本地内存的短地址。

NODE_ADDR

节点地址

1 - 13 octets. The node address. The format of this field is defined separately for each address format number. The field of the node address should not necessary precisely correspond to the real network address. If the real network address is longer than this field, it is necessary to organize in the network a subset of supporting the protocol UMSP addresses.

1-13个八位组。节点地址。此字段的格式为每个地址格式编号分别定义。节点地址字段不必与实际网络地址精确对应。如果实际网络地址长于此字段,则需要在网络中组织支持协议UMSP地址的子集。

MEM_ADDR

MEM_地址

16/24/32/64 bits. The address of local memory. This field is the memory address in system, which is set by a field NODE_ADDR. The node completely responds for its memory control. The protocol does not define the order of using and format of this field.

16/24/32/64位。本地内存的地址。此字段是系统中的内存地址,由字段节点\u ADDR设置。节点完全响应其内存控制。协议未定义此字段的使用顺序和格式。

128-bit address for the user applications is one field. The user code cannot know about a physical arrangement of addressed memory.

用户应用程序的128位地址是一个字段。用户代码无法知道寻址内存的物理排列。

The 128-bit memory address may be transmits between nodes, as the data, for example, in the buffer of function parameters, or in the instruction of copying the data. Therefore, it must identify the given node from any other nodes unequivocal.

128位存储器地址可以作为数据在节点之间传输,例如,在功能参数的缓冲器中,或者在复制数据的指令中。因此,它必须明确地从任何其他节点识别给定节点。

Any certain algorithm, connecting real network and 128-bit address, does not exist. All used address formats must be known beforehand.

连接实际网络和128位地址的任何特定算法都不存在。所有使用的地址格式必须事先知道。

As UMSP has its own address space, it can unite several global networks. The nodes can have internal local networks or subordinated addressable devices connected with the node by the not-network communications. Any node by address format number must have an opportunity to define the gateway respond for routing of this address.

由于UMSP有自己的地址空间,它可以将多个全球网络联合起来。节点可以具有内部本地网络或通过not网络通信与节点连接的从属可寻址设备。任何按地址格式编号的节点都必须有机会定义网关响应以路由此地址。

2.2 Computing Model
2.2 计算模型

Computing model is three-layer:

计算模型分为三层:

(1) Job (2) Task (3) Thread of control

(1) 作业(2)任务(3)控制线程

The job corresponds to the user application. The job is distributed and can simultaneously be executed on many nodes. The job control is carried out centralize, from the node named as Job Control Point (JCP). One JCP can control the some jobs. JCP can be located on the same node, on which the job is created, or on any other addressed net point.

作业对应于用户应用程序。作业是分布式的,可以在多个节点上同时执行。作业控制从名为作业控制点(JCP)的节点集中执行。一个JCP可以控制某些作业。JCP可以位于创建作业的同一节点上,也可以位于任何其他寻址的网络点上。

The task is the job presentation on the separate node. The task includes one or several computing threads of control. The job has only one task on each node.

任务是单独节点上的作业演示。该任务包括一个或多个控制计算线程。作业在每个节点上只有一个任务。

The job is finished, when the appropriate user application is finished. At the end of the job all tasks of this job on all nodes are finished.

当相应的用户应用程序完成时,作业完成。作业结束时,此作业在所有节点上的所有任务都将完成。

The job has its isolated 128-bit address space. The address space is segmented. A segment is the local memory of one node. Besides, the protocol allows working with objects. The objects are separate associative memory of the node.

作业有其独立的128位地址空间。地址空间是分段的。段是一个节点的本地内存。此外,该协议允许处理对象。这些对象是节点的独立关联内存。

The task thread represents the concrete control thread, which are executed by VM in the certain node. The thread can read and write to any address of 128-bit address space of the job. The control transfer to the address from other (remote) node, results to the creation of the new thread on the remote node. The continuous code segment cannot be distributed on several nodes. In addition, it is impossible to receive continuous memory area distributed on several nodes.

任务线程表示具体的控制线程,由VM在特定节点中执行。线程可以读写作业的任何128位地址空间的地址。从其他(远程)节点到地址的控制传输导致在远程节点上创建新线程。连续代码段不能分布在多个节点上。此外,不可能接收分布在多个节点上的连续内存区域。

The protocol does not demand to support the different tasks of not-crossed memory space from the separate VM node. The supporting of multi-thread is not also the obligatory requirement.

该协议不要求支持独立VM节点的不同任务,即不跨越内存空间。支持多线程也不是强制性要求。

The 128-bit Global Job Identifier (GJID) is defined by protocol. It is assigned on JCP, which will control the job. All active GJID have the unique values in the unified system at each moment of time.

128位全局作业标识符(GJID)由协议定义。它在JCP上分配,JCP将控制作业。所有活动GJID在统一系统中的每个时刻都具有唯一的值。

The job can contain VM code of different types. Different types VM can be situated on one or different nodes. The mechanism of association of different VM types in groups on one node is stipulated, so to the non-uniform code can be executed on one node in a context of one job. The groups are described in details in section 9. VM, incorporated in groups, must work in common memory space (to have a common subsystem of memory control).

作业可以包含不同类型的VM代码。不同类型的VM可以位于一个或不同的节点上。规定了一个节点上不同VM类型的组关联机制,以便在一个作业上下文中的一个节点上执行非统一代码。第9节详细描述了这些组。合并在组中的VM必须在公共内存空间中工作(以便有一个公共的内存控制子系统)。

2.3 System Architecture
2.3 系统架构

System structure, based on using Virtual Machines, is given in the following figure:

下图给出了基于使用虚拟机的系统结构:

              Node 1                              Node 2
             --------                            --------
        
              Node 1                              Node 2
             --------                            --------
        
      +--------------------+              +--------------------+
      | User Application 1 |              | User Application 1 |
      +-----------------------+           +-----------------------+
         | User Application N |              | User Application N |
         +--------------------+              +--------------------+
        
      +--------------------+              +--------------------+
      | User Application 1 |              | User Application 1 |
      +-----------------------+           +-----------------------+
         | User Application N |              | User Application N |
         +--------------------+              +--------------------+
        
   +-----+  +-----+       +-----+      +-----+  +-----+       +-----+
   | VM1 |  | VM2 | . . . | VMn |      | VM1 |  | VM2 | . . . | VMn |
   +--+--+  +--+--+       +--+--+      +--+--+  +--+--+       +--+--+
      |        |             |            |        |             |
    +--------------------------+        +--------------------------+
    |                          |        |                          |
    | +-----+  U M S P         |        |          U M S P         |
    | | JCP |                  |        |                          |
    | +-----+                  |        +-------------+------------+
    +-------------+------------+                      |
                  |                             +-----+-----+
            +-----+-----+                       |    TCP    |
            |    TCP    |                       +-----+-----+
            +-----+-----+                             |
                  |                                   |
                  +-----------------/                 |
                                   /------------------+
                                  /
                                  |
                            +-----+-----+
                Node N      |    TCP    |
               --------     +-----+-----+
                                  |
                     +------------+------------+
                     | +-----+                 |
                     | | JCP | U M S P         |
                     | +-----+                 |
                     +-------------------------+
        
   +-----+  +-----+       +-----+      +-----+  +-----+       +-----+
   | VM1 |  | VM2 | . . . | VMn |      | VM1 |  | VM2 | . . . | VMn |
   +--+--+  +--+--+       +--+--+      +--+--+  +--+--+       +--+--+
      |        |             |            |        |             |
    +--------------------------+        +--------------------------+
    |                          |        |                          |
    | +-----+  U M S P         |        |          U M S P         |
    | | JCP |                  |        |                          |
    | +-----+                  |        +-------------+------------+
    +-------------+------------+                      |
                  |                             +-----+-----+
            +-----+-----+                       |    TCP    |
            |    TCP    |                       +-----+-----+
            +-----+-----+                             |
                  |                                   |
                  +-----------------/                 |
                                   /------------------+
                                  /
                                  |
                            +-----+-----+
                Node N      |    TCP    |
               --------     +-----+-----+
                                  |
                     +------------+------------+
                     | +-----+                 |
                     | | JCP | U M S P         |
                     | +-----+                 |
                     +-------------------------+
        

Figure 1. Structure of the system based on use VM.

图1。基于虚拟机的系统结构。

One or several VM are working on upper level for UMSP. The VM layer is not network level. Last network level is UMSP. Therefore, VM layer has no its own network primitives and uses together with UMSP the same field of operation code.

一个或多个VM正在UMSP的上层工作。VM层不是网络级别的。最后一个网络级别是UMSP。因此,VM层没有自己的网络原语,并且与UMSP一起使用相同的操作代码字段。

The end services user of the protocol is the user code, which is executed by the virtual machine. It has the instructions with the 128-bit address. VM translates these instructions to network commands, which are transmitted through the UMSP protocol for the executing by the remote machine. Internal organization VM, command system and API can be anyone. The protocol defines only format of primitives, which the virtual machines exchange through a network.

协议的最终服务用户是由虚拟机执行的用户代码。它有128位地址的指令。VM将这些指令转换为网络命令,这些命令通过UMSP协议传输,以供远程机器执行。内部组织VM、命令系统和API可以是任何人。该协议只定义了原语的格式,虚拟机通过网络交换原语。

The protocol does not control the jobs memory. Control of memory should realize VM. If a few VM works on one node, they may have the common memory space or may be completely isolated.

该协议不控制作业内存。内存控制应实现虚拟机。如果几个虚拟机在一个节点上工作,它们可能有公共内存空间,或者可能完全隔离。

UMSP uses the transport layer with reliable delivery for the data exchange. This document defines of using TCP. For the transfer of not requiring acknowledgement data may be used UDP. Thus, the connection through TCP is obligatory. Use of multiple connections TCP with multiplexing is supposed. The control of transport connections is not the part of the UMSP protocol.

UMSP使用具有可靠传输的传输层进行数据交换。本文档定义了如何使用TCP。对于不需要确认数据的传输,可以使用UDP。因此,通过TCP的连接是必须的。假设使用多连接TCP和多路复用。传输连接的控制不是UMSP协议的一部分。

The UMSP instructions do not contain network addresses of the receiver and sender. The protocol requires that one address UMSP must correspond to the one transport layer address. Accordingly, it is necessary to define unequivocal the node address on transport layer by the 128-bit address of memory.

UMSP指令不包含接收方和发送方的网络地址。协议要求一个地址UMSP必须对应于一个传输层地址。因此,有必要通过存储器的128位地址来明确定义传输层上的节点地址。

Except the TCP, it is possible to use other transport protocols or not network communications. The following requirements are showed to them:

除了TCP,可以使用其他传输协议,也可以不使用网络通信。向他们展示了以下要求:

o Reliable delivery. The transport layer must inform about delivery or its impossibility; o The violation of a sequence of transmitted segments is allowed; o The duplication of segments is not allowed; o At emergency reload of nodes it is necessary to guarantee identification of segments concerning session connections, assigned up to reload; o Use connectionless-mode is possible.

o 可靠的交付。传输层必须告知交付或无法交付;o允许违反传输段序列;o不允许重复段;o在紧急重新加载节点时,必须确保识别与会话连接相关的段,分配给重新加载;o可以使用无连接模式。

VM is the independent program and the interaction with the protocol is necessary for it only when it executes the instructions with the 128-bit address, concerning to other node. VM can execute several

VM是独立的程序,只有当它执行与其他节点有关的128位地址的指令时,才需要与协议进行交互。虚拟机可以执行多个

user tasks. Each task can contain several threads of control. VM must be able to interpret the application instructions with the 128- bit address to one or several instructions of the UMSP protocol.

用户任务。每个任务可以包含多个控制线程。VM必须能够将128位地址的应用程序指令解释为UMSP协议的一条或多条指令。

The session connection opens between nodes for the data exchange. One connection is relational only with one job. There may be several session connections for the different jobs simultaneously between two nodes. Besides, the protocol provides the connectionless data exchange.

在节点之间打开会话连接以进行数据交换。一个连接仅与一个作业相关。两个节点之间可能同时存在多个不同作业的会话连接。此外,该协议还提供了无连接的数据交换。

The exchange between UMSP nodes can include the instructions of the following type:

UMSP节点之间的交换可以包括以下类型的指令:

o Immediate reading/write in memory; o Requests of allocation/free memory; o Comparison instructions; o Call-subroutine and unconditional jump instructions; o Synchronization instructions; o Work with objects instructions - reading / writing in memory of objects and execution of objects procedures.

o 即时读/写存储器;o分配/释放内存的请求;o比较说明;o调用子程序和无条件跳转指令;o同步指令;o使用对象指令-读取/写入对象内存和执行对象程序。

UMSP does not trace the user control threads. VM must provide itself the necessary order of performance of the instructions.

UMSP不跟踪用户控制线程。VM必须为自己提供必要的指令执行顺序。

The length of UMSP instructions does not depend on segment length of the transport layer. The segmentation is provided for transfer of the long instructions. The packing of the short instructions in one segment with a possibility of compression of headings is used for its transfer. The minimal size of necessary for work segment is 6 octets. For realization of all functions, it is necessary 54 octets.

UMSP指令的长度不取决于传输层的段长度。分段是为了传输长指令而提供的。将简短指令打包在一个段中,并可能压缩标题,用于其传输。工作段所需的最小大小为6个八位字节。为了实现所有功能,需要54个八位字节。

3 Instruction Format

3指令格式

The UMSP instruction includes the basic header, extension headers and operands. All fields have variable length.

UMSP指令包括基本标头、扩展标头和操作数。所有字段都具有可变长度。

   +----------------+----------------------+------------------------+
   |     Header     |   Extension headers  |       Operands         |
   +----------------+----------------------+------------------------+
        
   +----------------+----------------------+------------------------+
   |     Header     |   Extension headers  |       Operands         |
   +----------------+----------------------+------------------------+
        

The header contains operation code and the information necessary for the instruction interpretation.

标题包含操作代码和指令解释所需的信息。

The optional extension headers contain the additional information, not defined in basic header.

可选扩展标题包含附加信息,这些信息未在基本标题中定义。

The operands contain instructions data.

操作数包含数据指令。

The instruction format allows calculating common instruction length, without knowing definition of separate operation code.

指令格式允许计算公共指令长度,而不知道单独操作代码的定义。

The instructions headers provide for the short and extended format for maintenance of the effective protocol work in wide range of network speeds. Besides, there is a simple algorithm of the headers compression.

说明标题提供了简短和扩展格式,用于在各种网络速度下维护有效的协议工作。此外,还有一个简单的报头压缩算法。

The all instructions and extension headers the identifiers are given which enter the name by upper case symbols. The identifiers of the instructions begin with the letter. The identifiers of the extension headers begin with underlining symbol.

所有指令和扩展标题以及标识符都是通过大写符号输入名称的。指令的标识符以字母开头。扩展标题的标识符以下划线符号开头。

3.1 Instruction Header
3.1 指令头

The header has the following format:

标题具有以下格式:

    Octets:
       +0                              +1
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   0: |            OPCODE             |ASK|  PCK  |CHN|EXT| OPR_LENGTH|
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   2: |                        OPR_LENGTH_EXT                         |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   4: |                         CHAIN_NUMBER                          |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   6: |                         INSTR_NUMBER                          |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   8: |                                                               |
      +                          SESSION_ID                           +
      |                                                               |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   12:|                                                               |
      +                            REQ_ID                             +
      |                                                               |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
        
    Octets:
       +0                              +1
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   0: |            OPCODE             |ASK|  PCK  |CHN|EXT| OPR_LENGTH|
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   2: |                        OPR_LENGTH_EXT                         |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   4: |                         CHAIN_NUMBER                          |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   6: |                         INSTR_NUMBER                          |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   8: |                                                               |
      +                          SESSION_ID                           +
      |                                                               |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   12:|                                                               |
      +                            REQ_ID                             +
      |                                                               |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
        

OPCODE

操作码

1 octet. The operation code. Value of this field is identified by the instruction. Values of operation codes are divided into the following intervals:

1个八位组。操作代码。此字段的值由指令标识。操作代码的值分为以下间隔:

1 - 112 management instructions 113 - 127 reserved 128 - 223 instructions of exchange between VM 0, 224, 255 reserved

1-112管理指令113-127保留128-223 VM 0、224、255之间的交换指令保留

ASK

1 bit. The flag of response necessity. This flag defines presence of field REQ_ID in header. If ASK = 1, there is field REQ_ID in the instruction. If EXT = 0, the field REQ_ID in the instruction are absent.

1位。响应必要性的标志。此标志定义标头中是否存在字段REQ_ID。如果ASK=1,则指令中有字段REQ_ID。如果EXT=0,则指令中的字段REQ_ID不存在。

PCK

PCK

2 bits. The Header compression attribute. These bits are used for packing instructions headers transmitted on one connection TCP or for sending of the several instructions in one package UDP. Use of these bits is based on the assumption that two following in succession instructions concern to one session connection, or one chain, with a high probability. The PCK bits have one of the following values:

2位。标题压缩属性。这些位用于打包在一个连接TCP上传输的指令头,或用于在一个UDP包中发送多条指令。这些位的使用基于以下假设:两个后续连续指令以高概率涉及一个会话连接或一个链。PCK位具有以下值之一:

%b00 - The instruction does not belong to the definite session. The fields CHAIN_NUMBER, INSTR_NUMBER and SESSION_ID are absent in header of such instruction. %b01 - The given instruction concerns to the same session connection, as previous. The field SESSION_ID in the instruction header is absent. %b10 - The given instruction belongs to the same connection and same chain, as previous. The fields CHAIN_NUMBER, INSTR_NUMBER and SESSION_ID in header of such instruction are absent. The INSTR_NUMBER value of the current instruction calculates by addition of one to INSTR_NUMBER value of the previous instruction. %b11 - The given instruction may does not concern to the same session, as previous. The field SESSION_ID is present at it. The presence of fields CHAIN_NUMBER and INSTR_NUMBER is defined by CHN flag.

%b00-指令不属于确定会话。该指令的标头中缺少链号、指令号和会话ID字段。%b01-给定的指令与前一个指令一样,与同一会话连接有关。指令头中的字段会话ID不存在。%b10-给定的指令与前面的指令属于同一连接和同一链。该指令标头中缺少链号、指令号和会话ID字段。当前指令的INSTR_数值通过将一与前一条指令的INSTR_数值相加来计算。%b11-给出的指令可能与之前的会话无关。现场会话_ID出现在现场。链号和仪表号字段的存在由CHN标志定义。

CHN

中国

1 bit. The flag of chain. Transmitted on one session connection and concerning one job instructions, may be unified in a chain. Chains are considered in details by section 7. If SEQ = 1, the instruction is connected with chain and there are fields CHAIN_NUMBER and INSTR_NUMBER (if PCK is not set to %b10) at it. If bit CHN = 0, the instruction is not connected with chains and there are no fields CHAIN_NUMBER and INSTR_NUMBER in it.

1位。锁链的旗帜。在一个会话连接上传输并涉及一个作业指令,可以在链中统一。第7节详细介绍了链条。如果SEQ=1,则该指令与chain相连,并且在其上有chain_NUMBER和INSTR_NUMBER字段(如果PCK未设置为%b10)。如果位CHN=0,则该指令不与链连接,并且其中没有链号和指令号字段。

EXT

额外的

1 bit. The flag of extension headers presence in the instruction. If EXT = 1, there is one or more extension headers in the instruction. If EXT = 0, the extension headers in the instruction are absent.

1位。指令中存在扩展标头的标志。如果EXT=1,则指令中有一个或多个扩展标题。如果EXT=0,则指令中不存在扩展标头。

OPR_LENGTH

OPR_长度

3 bits. The number of 32 bit words in the operands field. The value 0 defines absence of operands field. The value %b111 specifies use of the extended header format. In the extended format, the length of operands is defined by the field OPR_LENGTH_EXT, and the field OPR_LENGTH is not used.

3位。操作数字段中的32位字数。值0定义缺少操作数字段。值%b111指定使用扩展标头格式。在扩展格式中,操作数的长度由字段OPR_length_EXT定义,不使用字段OPR_length。

OPR_LENGTH_EXT

OPR_长度_外接

2 octets. The number of 32 bit words in the operands field. The field OPR_LENGTH_EXT is present in header, only if OPR_LENGTH = %b111. If OPR_LENGTH < > %b111, the field OPR_LENGTH_EXT is absent. If OPR_LENGTH_EXT = 0, the field of operands is absent. There are following reasons, on which it is necessary to use field OPR_LENGTH_EXT instead of OPR_LENGTH:

2个八位组。操作数字段中的32位字数。仅当OPR_长度=%b111时,字段OPR_长度_EXT才会出现在标头中。如果OPR_LENGTH<>%b111,则字段OPR_LENGTH_EXT不存在。如果OPR_LENGTH_EXT=0,则不存在操作数字段。有以下原因,需要使用字段OPR_LENGTH_EXT代替OPR_LENGTH:

(1) If operands length must be more than 24 octets (2) If making the fields alignment of 4 octets is more effective, than compression of header of 2 octets.

(1) 如果操作数长度必须大于24个八位字节(2),则使4个八位字节的字段对齐比压缩2个八位字节的标头更有效。

CHAIN_NUMBER

链号

2 octets. The number of chain. This field contains number of chain, to which the given instruction concerns. The values %x0000 and %xFFFF are reserved.

2个八位组。链的数量。此字段包含给定指令所涉及的链数。保留值%x0000和%xfff。

INSTR_NUMBER

仪表编号

2 octets. The instruction number. This field contains the serial number of instruction in a chain. The numbering begins with zero. Value %xFFFF is reserved.

2个八位组。指令号。此字段包含链中指令的序列号。编号以零开始。保留值%xfff。

SESSION_ID

会话号

4 octets. It is the identifier of the session connection assigned by the instruction receiver. During the session connection opening, each side sets its own identifier to connection and informs it to other side. The zero value of this field specifies that the instruction does not concern to the definite session. The value %xFFFFFFFF is reserved.

4个八位组。它是由指令接收器分配的会话连接的标识符。在会话连接打开期间,每一方将自己的标识符设置为连接,并通知另一方。此字段的零值指定指令与特定会话无关。值%xfffffff是保留的。

REQ_ID

请求ID

4 octets. The request identifier. It is uses for establishment of correspondence between requests and responds to it.

4个八位组。请求标识符。它用于在请求和响应之间建立通信。

   Further, the identifier OPR_LENGTH is used at the description of the
   instructions format.  It means using of OPR_LENGTH_EXT field, if
   OPR_LENGTH = %b111.  The instruction with length of operands, which
   are not exceeding 24 octets, may be transmitted with header in the
   short format (OPR_LENGTH < > %b111) or in the extended format
   (OPR_LENGTH = %b111).  Both forms are equivalent.
        
   Further, the identifier OPR_LENGTH is used at the description of the
   instructions format.  It means using of OPR_LENGTH_EXT field, if
   OPR_LENGTH = %b111.  The instruction with length of operands, which
   are not exceeding 24 octets, may be transmitted with header in the
   short format (OPR_LENGTH < > %b111) or in the extended format
   (OPR_LENGTH = %b111).  Both forms are equivalent.
        

Minimal header length in the short format is 2 octets, in the extended format - 4 octets. Maximal header length is 16 octets.

短格式的最小标头长度为2个八位字节,扩展格式的最小标头长度为4个八位字节。最大报头长度为16个八位字节。

3.2 Extension Headers
3.2 扩展头

If the EXT flag in the instruction header set to 1, the instruction contains from one up to thirty extension headers. The extension headers are used for the following purposes:

如果指令头中的EXT标志设置为1,则指令包含1到30个扩展头。扩展标题用于以下目的:

o For sending of the service information which were not provided in the basic header. o For sending of the data of length more than 262240 octets in one instruction.

o 用于发送基本标头中未提供的服务信息。o用于在一条指令中发送长度超过262240个八位字节的数据。

The extension headers have the following common format:

扩展标题具有以下通用格式:

   Octets:
       +0                              +1
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   0: |HXT|       HEAD_LENGTH         |       HEAD_LENGTH_EXT         |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   2: |                   continued HEAD_LENGTH_EXT                   |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   4: |HSL|HOB|HRZ|     HEAD_CODE     |         HEAD_CODE_EXT         |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   6: |                           RESERVED                            |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   8: |                                                               |
      /                             DATA                              /
      /                                                               /
      |                                                               |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
        
   Octets:
       +0                              +1
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   0: |HXT|       HEAD_LENGTH         |       HEAD_LENGTH_EXT         |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   2: |                   continued HEAD_LENGTH_EXT                   |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   4: |HSL|HOB|HRZ|     HEAD_CODE     |         HEAD_CODE_EXT         |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   6: |                           RESERVED                            |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
   8: |                                                               |
      /                             DATA                              /
      /                                                               /
      |                                                               |
      +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
        

HXT

HXT

1 bit. Specify length of the field of data length. If HXT = 0, length of the extension header is defined by a field HEAD_LENGTH. The field HEAD_LENGTH_EXT in this case is absent. If HXT = 1, length of header is defined by unification of fields HEAD_LENGTH and HEAD_LENGTH_EXT.

1位。指定数据长度字段的长度。如果HXT=0,则扩展头的长度由字段头长度定义。在这种情况下,字段头长度EXT不存在。如果HXT=1,则标头的长度由字段HEAD_length和HEAD_length_EXT的统一定义。

HEAD_LENGTH

头长

7 bit. The number of 16 bit words in DATA field. If HXT = 0, this is independent field. If HXT = 1, it is the senior bits of complete length field.

7位。数据字段中16位字的数目。如果HXT=0,则这是独立字段。如果HXT=1,则为完整长度字段的高级位。

HEAD_LENGTH_EXT

头部长度外部

3 octets. The number of 16 bit words in DATA field. If HXT = 0, this field is absent. If HXT = 1, it is the younger bits of complete length field.

3个八位组。数据字段中16位字的数目。如果HXT=0,则此字段不存在。如果HXT=1,则为完整长度字段的较年轻位。

HSL

HSL

1 bit. The flag of last header. It is set to 1 for last extension header in the instruction. In other extension headers, this flag is set to 0.

1位。最后一个标题的标志。对于指令中的最后一个扩展标头,它被设置为1。在其他扩展标题中,此标志设置为0。

HOB

滚刀

1 bit. The flag of obligatory processing. It defines the order of the instruction processing, if the receiving node does not know purpose of the extension header or cannot process it by any reason. If HOB = 1, instruction must not be carried out. If HOB = 0, it does not influence on the instruction processing. The protocol must process all extension headers, irrespective of errors presence.

1位。强制处理的标志。如果接收节点不知道扩展头的用途或由于任何原因无法处理扩展头,它定义了指令处理的顺序。如果HOB=1,则不得执行指令。如果HOB=0,则不会影响指令处理。无论是否存在错误,协议都必须处理所有扩展头。

HRZ

HRZ

1 bit. The field is reserved for the future expansions. This field must not be analyzed by the protocol on receiving. It must be set to 0 at sending.

1位。该字段是为将来的扩展保留的。接收时协议不得分析此字段。发送时必须将其设置为0。

HEAD_CODE

首字母代码

5 bits. If HXT = 0, the field contains the extension header code. If HXT = 1, this field joins the field HEAD_CODE_EXT. It is the senior bits of the header code.

5位。如果HXT=0,则该字段包含扩展标题代码。如果HXT=1,则此字段加入字段头代码。它是头代码的高级位。

HEAD_CODE_EXT

标题\代码\分机

1 octet. If HXT = 0, this field is absent. If HXT = 1, it is the younger bits of the header code.

1个八位组。如果HXT=0,则此字段不存在。如果HXT=1,则为头代码的较年轻位。

RESERVED

含蓄的

2 octets. If HXT = 0, this field is absent. If HXT = 1, this field is reserved for further use. The field RESERVED must not be analyzed by the protocol during the receiving in the current realization of the protocol. It must be set to 0 at sending.

2个八位组。如果HXT=0,则此字段不存在。如果HXT=1,则保留此字段以供进一步使用。在协议的当前实现中,协议在接收期间不得分析保留的字段。发送时必须将其设置为0。

DATA

数据

The data field of the extension header. If HXT = 0, the length of field is 0 - 254 octets, if HXT = 1, the length is 0 - 4 * 10^9 octets. The format of this field is defined separately for each value of the header code.

扩展标题的数据字段。如果HXT=0,字段长度为0-254个八位字节;如果HXT=1,字段长度为0-4*10^9个八位字节。该字段的格式为标题代码的每个值分别定义。

On the receiving side, the extension headers must be processed in that order, in what they follow in the instruction. If the instruction contains more than 30 extension headers, it is considered erroneous. It is necessary to break off the session connection, on which it was transmitted, after the reception of such instruction.

在接收端,扩展头必须按照指令中的顺序进行处理。如果指令包含超过30个扩展头,则认为它是错误的。在接收到此类指令后,有必要断开发送该指令的会话连接。

The identifiers HEAD_LENGTH and HEAD_CODE are used further in the text at the description of the extended headers format. It assumes using of fields HEAD_LENGTH + HEAD_LENGTH_EXT and HEAD_CODE + HEAD_CODE_EXT, if HXT = 1. The headers with the code 0 - 30 can be sent in short (HXT = 0) and in extended (HXT = 1) format.

标识符HEAD_LENGTH和HEAD_CODE在扩展标题格式描述的文本中进一步使用。如果HXT=1,则假定使用字段HEAD\u LENGTH+HEAD\u LENGTH\u EXT和HEAD\u CODE+HEAD\u CODE\u EXT。代码为0-30的标头可以短格式(HXT=0)和扩展格式(HXT=1)发送。

3.3 Instruction Operands
3.3 指令操作数

The operands field contains the instruction data. The length of operands field is showed in OPR_LENGTH or OPR_LENGTH_EXT and it is multiple to four octets. If necessary, 1 - 3 zero-value octets are padded in the end of a field. Maximal length of operands is 262140 octets. The extension headers are used, if the instruction must contain longer data.

操作数字段包含指令数据。操作数字段的长度以OPR_length或OPR_length_EXT显示,它是四个八位字节的倍数。如有必要,在字段末尾填充1-3个零值八位字节。操作数的最大长度为262140个八位字节。如果指令必须包含更长的数据,则使用扩展标题。

The format of the operands field is defined separately for each instruction.

操作数字段的格式为每条指令分别定义。

3.4 Address Formats
3.4 地址格式

The following address format numbers are definite for nodes, immediately connected to the global IPv4 network:

对于直接连接到全局IPv4网络的节点,以下地址格式编号是确定的:

N 4-0-0 (4) N 4-0-1 (4-1) N 4-0-2 (4-2)

n4-0-0(4)n4-0-1(4-1)n4-0-2(4-2)

The appropriate formats of 128-bit addresses:

128位地址的适当格式:

   Octets:
      +0              +1              +2              +3
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   0: |0 1 0 0|0 0|0 0|                   Free                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   4: |                              Free                             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   8: |            Free               |           IP address          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   12:|           IP address          |      Local memory address     |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        
   Octets:
      +0              +1              +2              +3
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   0: |0 1 0 0|0 0|0 0|                   Free                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   4: |                              Free                             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   8: |            Free               |           IP address          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   12:|           IP address          |      Local memory address     |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   0: |0 1 0 0|0 0|0 1|                   Free                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   4: |                              Free                             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   8: |     Free      |                  IP address                   |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   12:|   IP address  |             Local memory address              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   0: |0 1 0 0|0 0|0 1|                   Free                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   4: |                              Free                             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   8: |     Free      |                  IP address                   |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   12:|   IP address  |             Local memory address              |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   0: |0 1 0 0|0 0|1 0|                   Free                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   4: |                            Free                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   8: |                         IP address                            |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   12:|                     Local memory address                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   0: |0 1 0 0|0 0|1 0|                   Free                        |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   4: |                            Free                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   8: |                         IP address                            |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   12:|                     Local memory address                      |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        

Free

自由的

It is not used by the protocol.

协议没有使用它。

IP address

IP地址

It sets the node address in the global IPv4 network.

它设置全局IPv4网络中的节点地址。

Local memory address

本地存储器地址

It is described in section 2.1.

第2.1节对此进行了描述。

IP-address defines the nodes of the given type unequivocally. The TCP is used for the interaction with such nodes. For sending of not requiring response instructions, using UDP is allowed. IANA has assigned ports TCP and UDP 2110. This port must be open for the listening (receiving). TCP node, initialing the connection opening, or the UDP node, carrying out the package sending, can use any port. Using several TCP connections with multiplexing is supposed.

IP地址明确定义了给定类型的节点。TCP用于与此类节点的交互。对于不需要响应指令的发送,允许使用UDP。IANA已分配端口TCP和UDP 2110。此端口必须为侦听(接收)打开。初始化连接打开的TCP节点或执行包发送的UDP节点可以使用任何端口。假设使用多路复用的多个TCP连接。

4 Response of the Instructions

4对指示的答复

The protocol instructions are divided into two types:

协议指令分为两种类型:

(1) The management instructions transmitted on UMSP layer (OPCODE = 1 - 112). (2) The instructions of the exchange between VM (OPCODE = 128 - 223).

(1) 在UMSP层上传输的管理指令(操作码=1-112)。(2) VM之间的交换指令(操作码=128-223)。

The processing of two types of the instructions differs as follows:

两类指令的处理方式不同,如下所示:

o The field of the identifier of request REQ_ID is formed by the protocol in the instructions of the first type, and it is formed by VM for the instructions of the second type. o The protocol must analyze the field REQ_ID and compare it with the instructions, transmitted earlier, after receiving of the response instruction of the first type. o The protocol must not analyze the field REQ_ID after receiving of the response instruction of the second type. This instruction is simply sent to VM.

o request REQ_ID的标识符字段由第一类指令中的协议形成,第二类指令由VM形成。o协议必须在收到第一种类型的响应指令后,分析字段REQ_ID,并将其与先前发送的指令进行比较。o协议在收到第二种类型的响应指令后不得分析字段REQ_ID。此指令只发送到VM。

The response instructions have the field ASK equal to 1. It means, that the header have the field REQ_ID. The value taken from the confirmed instruction is written into the field REQ_ID. The response instruction does not require response.

响应指令的字段ASK等于1。这意味着标头具有字段REQ_ID。从确认指令中获取的值写入字段REQ_ID。响应指令不需要响应。

A few VM can be connected to the protocol on the node. Everyone VM can work in its own address space. The identifiers of requests for different VM can coincide. Therefore, instruction is identified by two fields:

一些VM可以连接到节点上的协议。每个虚拟机都可以在自己的地址空间中工作。不同VM请求的标识符可以一致。因此,指令由两个字段标识:

o The session identifier SESSION_ID, which is connected with definite VM. o The request identifier REQ_ID.

o 会话标识符session_ID,与特定VM连接。o请求标识符REQ_ID。

4.1 RSP, RSP_P
4.1 可吸入悬浮粒子,可吸入悬浮粒子

"Response" (RSP) and "Response of the protocol" (RSP_P) instructions have the identical format. The difference is only in the operation code:

“响应”(RSP)和“协议响应”(RSP_P)指令的格式相同。区别仅在于操作代码:

      OPCODE = 129/1  ; correspondingly to RSP/RSP_P
      ASK = 1
      PCK = %b01/11
      EXT = 0/1
      CHN = 0
      OPR_LENGTH = 0/1
      SESSION_ID and REQ_ID - The values is taken from the confirmed
                              instruction.
      Operands:
         2 octets: The basic return code.
         2 octets: The additional return code.
      The optional extension header:
         _MSG - contains the arbitrary error description.
        
      OPCODE = 129/1  ; correspondingly to RSP/RSP_P
      ASK = 1
      PCK = %b01/11
      EXT = 0/1
      CHN = 0
      OPR_LENGTH = 0/1
      SESSION_ID and REQ_ID - The values is taken from the confirmed
                              instruction.
      Operands:
         2 octets: The basic return code.
         2 octets: The additional return code.
      The optional extension header:
         _MSG - contains the arbitrary error description.
        

The instruction without operands is used for the positive response. It is equivalent to zero values of the field of the basic and additional return codes.

不带操作数的指令用于正响应。它相当于基本返回码和附加返回码字段的零值。

The zero basic return code is used for positive response. The additional return code may have non-zero value.

零基本返回码用于肯定响应。附加返回码可能具有非零值。

The instruction with non-zero basic return code is used for negative response. The basic return code defines the error category. The additional return code identifies an error.

具有非零基本返回码的指令用于否定响应。基本返回代码定义错误类别。附加的返回代码标识错误。

The instruction RSP is formed upon the VM request. The return codes must be received from VM. If the protocol cannot deliver the requiring response instruction to VM, it forms negative response RSP independently.

指令RSP是根据VM请求形成的。必须从VM接收返回代码。如果协议不能向VM发送所需的响应指令,则会单独形成负响应RSP。

The instruction RSP_P is always formed at the UMSP layer. If the protocol cannot define on what instruction the RSP_P is transmitted, nothing actions is executed.

指令RSP_P始终在UMSP层形成。如果协议无法定义发送RSP_P的指令,则不会执行任何操作。

4.2 SND_CANCEL
4.2 取消

There can be a necessity to cancel sending after the part of the data have been already transmitted and have occupied the buffer on the reception side, by sending of the long fragmented instructions or transactions. The protocol provides the instruction "The sending is canceled" (SND_CANCEL) for this purpose. This instruction has the following fields value:

在部分数据已经传输并且已经占用了接收侧的缓冲区之后,可能需要通过发送长片段指令或事务来取消发送。协议为此提供了“发送被取消”(SND_CANCEL)指令。此指令具有以下字段值:

      OPCODE = 2
      ASK = 0
      PCK = %b01/10/11
      EXT = 0/1
      CHN = 1
      OPR_LENGTH = 1
      SESSION_ID - The value is taken from the cancelled chain.
      CHAIN_NUMBER - Number of the chain, which sending is cancelled.
      INSTR_NUMBER - Always has zero-value.
      Operands:
         2 octets: The basic return code.
         2 octets: The additional return code.
      The optional extension header:
         _MSG - contains the arbitrary error description.
        
      OPCODE = 2
      ASK = 0
      PCK = %b01/10/11
      EXT = 0/1
      CHN = 1
      OPR_LENGTH = 1
      SESSION_ID - The value is taken from the cancelled chain.
      CHAIN_NUMBER - Number of the chain, which sending is cancelled.
      INSTR_NUMBER - Always has zero-value.
      Operands:
         2 octets: The basic return code.
         2 octets: The additional return code.
      The optional extension header:
         _MSG - contains the arbitrary error description.
        

The instruction SND_CANCEL is used for the cancel of the partially transmitted transaction or fragmented instruction. At the receiving the SND_CANCEL instruction, all the earlier received data in the chain are rejected.

指令SND_CANCEL用于取消部分传输的事务或分段指令。在接收SND_CANCEL指令时,拒绝链中所有先前接收的数据。

5 Jobs Management

5工作管理

The jobs management includes the following functions:

作业管理包括以下功能:

o Initiation and completion of jobs; o Initiation and completion of tasks; o Opening and closing of session connections; o Activity control of nodes.

o 启动和完成工作;o启动和完成任务;o打开和关闭会话连接;o节点的活动控制。

The instructions with OPCODE = 1 - 112 are used for jobs management. These instructions must be sent through TCP. Use UDP is not allowed, even if the instructions do not demand response.

操作码为1-112的指令用于作业管理。这些指令必须通过TCP发送。即使指令不要求响应,也不允许使用UDP。

UMSP bases on model with the centralized control of the separate job. The reason is that the pointers control is not obviously possible in the decentralized system. Any task can be finished at any moment or the node can be reloaded. There is no way guaranteeing the notification about in the decentralized system all other nodes, on which the job works. As the job continues to exist - the task concerning the job can be initiated on the same node again. This task can allocate new dynamic resources. The addresses for the again allocated resources can be crossed with addresses of resources, which existed on the node before the task restart. The old pointers can be kept on other nodes. It may be the formally correct pointers, but they will actually specify other objects. The uncontrollable work of the application can be consequence of such situation.

UMSP基于对单独作业进行集中控制的模型。这是因为在分散系统中,指针控制显然是不可能的。任何任务都可以随时完成,也可以重新加载节点。无法保证在分散系统中通知作业所在的所有其他节点。随着作业继续存在,与作业相关的任务可以再次在同一节点上启动。此任务可以分配新的动态资源。重新分配的资源的地址可以与资源的地址交叉,资源的地址在任务重新启动之前存在于节点上。旧指针可以保留在其他节点上。它可能是形式上正确的指针,但实际上它们将指定其他对象。应用程序无法控制的工作可能是这种情况的后果。

UMSP solves this task as follows:

UMSP解决此任务的方法如下:

o It allows defining the node, on which the task was completed, precisely. o If the task on the node is finished before end of the job, all nodes, on which the job is executed, are notified of it. o The repeated task initialization on the node is allowed, while all nodes will receive the message about the first task end.

o 它允许精确地定义完成任务的节点。o如果节点上的任务在作业结束之前完成,则会通知在其上执行作业的所有节点。o允许在节点上重复任务初始化,同时所有节点将收到关于第一个任务结束的消息。

The protocol does not control the pointers. VM supervises the pointers correctness. VM must have architecture, in which 128 - bit pointers are stored in special memory areas, for this purpose. The protocol informs VM about the nodes, on which task have finished the work. VM must make all pointers concerning such tasks, invalid. It results in exclusive situations at the access under these pointers. If the application provides processing exceptions, it keeps the capacity for work, or it is finished emergency. Such decision allows excluding unguided applications working.

协议不控制指针。VM监督指针的正确性。虚拟机必须有一个体系结构,在这个体系结构中,128位指针存储在特殊的内存区域中。该协议将通知VM任务已完成工作的节点。VM必须使所有关于此类任务的指针无效。它会导致这些指针下的访问出现独占情况。如果应用程序提供处理异常,它将保持工作能力,或者它是紧急完成的。这样的决定允许排除工作的非引导应用程序。

For the decision of the specified questions at UMSP level, the control job node is defined for each job. It names Job Control Point (JCP). It may be the same node, on which the job is initiated, or it can be another dedicated node. The basic JCP function is to trace the initialization and the end of the job tasks. Besides, the dedicated JCP node may be used for the centralized users identification and the attack protection.

为了在UMSP级别决定指定的问题,为每个作业定义了控制作业节点。它命名为作业控制点(JCP)。它可以是启动作业的同一节点,也可以是另一个专用节点。JCP的基本功能是跟踪作业任务的初始化和结束。此外,专用JCP节点还可用于集中用户识别和攻击防护。

The following identifiers are definite for the jobs and tasks control:

对于作业和任务控件,以下标识符是确定的:

o Locally Task Identifier (LTID) is assigned to each active task on the node. LTID length is equal to the length of local memory address defined for the node. All LTID on the node must give unique values at each moment of time. It is allowed to establish LTID, used earlier in the already completed tasks, for the again initiated tasks. o JCP assigned the Control Task Identifier (CTID) to each task of the job. Its length is equal to length of the local address memory on the node JCP. All CTID on the JCP must give unique values at each moment of time. As against LTID, the CTID value is chosen with some restrictions. o Globally Task Identifier (GTID) is assigned to each task. GTID has the same format, as the 128 - bit address of node memory has. The address of local memory is replaced on LTID in it. o Globally Job Identifier (GJID) is assigned to the each job. GJID is defined on the JCP node. It has the same format, as the 128 - bit address of node JCP memory has. The address of local memory

o 本地任务标识符(LTID)分配给节点上的每个活动任务。LTID长度等于为节点定义的本地内存地址的长度。节点上的所有LTID必须在每个时刻提供唯一的值。允许为再次启动的任务建立LTID,该ID在已完成任务的前面使用。o JCP将控制任务标识符(CTID)分配给作业的每个任务。其长度等于节点JCP上本地地址内存的长度。JCP上的所有CTID必须在每个时刻提供唯一的值。与LTID相比,选择CTID值时有一些限制。o全局任务标识符(GTID)分配给每个任务。GTID的格式与节点内存的128位地址相同。本地内存的地址在其中的LTID上被替换。o为每个作业分配全局作业标识符(GJID)。GJID是在JCP节点上定义的。它的格式与节点JCP内存的128位地址相同。本地存储器的地址

is replaced on CTID of the first (initial) task of the job in it. GJID is used in the procedure of session connection opening for the definition JCP, which controls the job.

在其中作业的第一个(初始)任务的CTID上替换。GJID在会话连接打开过程中用于定义JCP,JCP控制作业。

LTID and CTID are written at the instructions in the field of length 2/4/8 octets. If the allocated for identifier field in the instruction is longer than identifier, LTID (CTID) writes in the last octets. In the initial octets, the value 0 must be written. If received LTID (CTID) is shorter than the local memory address, it is necessary to pad it with the zero octets in the beginning.

LTID和CTID在长度为2/4/8八位字节的字段中的指令处写入。如果指令中为标识符分配的字段长于标识符,则LTID(CTID)写入最后的八位字节。在初始八位字节中,必须写入值0。如果接收到的LTID(CTID)比本地内存地址短,则需要在开始时用零个八位字节填充它。

GTID and GJID are written at the instructions in the field of length 4-16 octets. The field FREE is not present at these identifiers (see section 2.1). It is considered, that it contains the zero-value octets. Length of the identifier is defined in header of the address.

GTID和GJID按照长度为4-16个八位字节的字段中的说明编写。这些标识符上不存在无字段(见第2.1节)。据认为,它包含零值八位组。标识符的长度在地址的标头中定义。

By sending of instructions CONTROL_REQ, TASK_REG and SESSION_OPEN, the protocol uses timeout. The value of timeout is assigned by node and must be more than three intervals of the maximal time of delivery at the transport layer. The timeout is not influenced the waiting period in queue to the transport layer.

通过发送指令CONTROL_REQ、TASK_REG和SESSION_OPEN,协议使用超时。超时值由节点分配,并且必须超过传输层的最大传递时间的三个间隔。超时不受传输层队列中等待时间的影响。

5.1 Job Initiate
5.1 工作启动

The job concerns to the user application executed on VM. The UMSP job initialization can be made simultaneously with the application user start or during its working.

该作业与在VM上执行的用户应用程序有关。UMSP作业初始化可以与应用程序用户启动同时进行,也可以在其工作期间进行。

The task, appropriated to its job, is initialized on the node together with the job. LTID is binding to this task.

分配给其作业的任务与作业一起在节点上初始化。LTID绑定到此任务。

If the node, on which the user application was loaded, is chosen for JCP, the question of the job initialization lays beyond the scope of the network protocol.

如果为JCP选择了加载用户应用程序的节点,则作业初始化问题超出了网络协议的范围。

Other node can be chosen as JCP for the following reasons:

出于以下原因,可以选择其他节点作为JCP:

o The job initialization node is connected to network by slow-speed or overloaded channel. It is undesirable to send the managing traffic. o The node has no computing possibilities for conducting the managing tables. o The authentication on the detailed node is necessary.

o 作业初始化节点通过低速或过载通道连接到网络。发送管理流量是不可取的。o节点没有执行管理表的计算可能性。o详细节点上的身份验证是必要的。

If the other node is chosen for JCP, the node, that initiates the job, must register the job at JCP.

如果为JCP选择了另一个节点,则发起作业的节点必须在JCP注册作业。

5.1.1 CONTROL_REQ
5.1.1 控制请求

The instruction "To request a control" (CONTROL_REQ) is sending from the node, initial the job, to JCP of other node. The instruction has the following values of fields:

指令“请求控制”(control_REQ)从初始化作业的节点发送到其他节点的JCP。该指令具有以下字段值:

      OPCODE = 3
      PCK = %b00
      CHN = 0
      ASK = 1
      EXT = 0/1
      OPR_LENGTH = 2/3  ; Depends on LTID length.
      REQ_ID - The value is assigned by the sender node protocol and
               then will be sent in the response.
      Operands:
         4 octets: The control parameters profile.  This field has the
                   following format:
        
      OPCODE = 3
      PCK = %b00
      CHN = 0
      ASK = 1
      EXT = 0/1
      OPR_LENGTH = 2/3  ; Depends on LTID length.
      REQ_ID - The value is assigned by the sender node protocol and
               then will be sent in the response.
      Operands:
         4 octets: The control parameters profile.  This field has the
                   following format:
        
            bits
             0     1     2     3     4     5     6     7
            +-----+-----+-----+-----+-----+-----+-----+-----+
            |                                               |
            +                 JOB_LIFE_TIME                 +
            |                                               |
            +-----+-----+-----+-----+-----+-----+-----+-----+
            | CMT |    Reserved     |        VERSION        |
            +-----+-----+-----+-----+-----+-----+-----+-----+
            |                   Reserved                    |
            +-----+-----+-----+-----+-----+-----+-----+-----+
        
            bits
             0     1     2     3     4     5     6     7
            +-----+-----+-----+-----+-----+-----+-----+-----+
            |                                               |
            +                 JOB_LIFE_TIME                 +
            |                                               |
            +-----+-----+-----+-----+-----+-----+-----+-----+
            | CMT |    Reserved     |        VERSION        |
            +-----+-----+-----+-----+-----+-----+-----+-----+
            |                   Reserved                    |
            +-----+-----+-----+-----+-----+-----+-----+-----+
        

JOB_LIFE_TIME

工作、生活、时间

2 octets. The job lifetime in seconds. The zero-value signifies that the restriction of the job lifetime is unused.

2个八位组。作业生存期(以秒为单位)。零值表示未使用作业生存期的限制。

CMT

CMT

1 bit. The flag of several JCP using. This field is reserved for the future expansion of the protocol.

1位。使用的多个JCP的标志。此字段保留用于协议的未来扩展。

VERSION

版本

1 octet. The number of the UMSP version. It must contain the value 1.

1个八位组。UMSP版本的编号。它必须包含值1。

Reserved

含蓄的

3 + 8 bits. All bits must be set to 0.

3+8位。所有位必须设置为0。

4/8 octet: LTID of task of the job, assigned on the node, which initiate the job (by the sender of this instruction). The optional extension headers: _JOB_NAME - This header contains the name of the Job. Is assigned once and must not change further. _INACT_TIME - This header contains the inaction time (see section 5.7).

4/8八位字节:作业任务的LTID,分配在节点上,用于启动作业(由本指令的发送方)。可选扩展标题:\作业\名称-此标题包含作业的名称。分配一次,不得进一步更改_INACT_时间-此标题包含不活动时间(见第5.7节)。

At reception of the CONTROL_REQ instruction JCP checks the LTID value from the received instruction and makes the following:

接收到CONTROL_REQ指令时,JCP检查接收指令的LTID值,并执行以下操作:

(1) If the node, which has sent CONTROL_REQ, already has registered on JCP the active job with such LTID, the notification about abnormality end of the registered job is sent, as is described in section 5.5.2 (it is considered, that the node was reloaded). After that, the sanction to an initiation of the new job is sent. (2) If the node has no registered job with received LTID, it allows the new job initiation at once.

(1) 如果发送了CONTROL_REQ的节点已经在JCP上使用此类LTID注册了活动作业,则会发送关于注册作业异常结束的通知,如第5.5.2节所述(认为节点已重新加载)。之后,将发送启动新作业的批准。(2) 如果节点没有接收到LTID的注册作业,则允许立即启动新作业。

If JCP confirms the control, it will send the instruction CONTROL_CONFIRM, or else CONTROL_REJECT.

如果JCP确认控制,它将发送指令control_确认,否则control_拒绝。

5.1.2 CONTROL_CONFIRM
5.1.2 控制/确认

The instruction "To confirm the control" (CONTROL_CONFIRM) is sent from JCP as the positive response to CONTROL_REQ instruction. CONTROL_CONFIRM has the following values of fields:

指令“确认控制”(control_confirm)作为对control_REQ指令的肯定响应从JCP发送。控件\u CONFIRM具有以下字段值:

      OPCODE = 4
      PCK = %b00
      CHN = 0
      ASK = 1 ; The instruction does not need to be responded.  This flag
                specifies presence of the REQ_ID field.
      EXT = 0/1
      OPR_LENGTH = 1-4 ; Depends of length of the GJID.
      REQ_ID - The value is taken from the instruction CONTROL_REQ
      Operands:
         4-16 octets: The GJID assigned to the job on the JCP.
        
      OPCODE = 4
      PCK = %b00
      CHN = 0
      ASK = 1 ; The instruction does not need to be responded.  This flag
                specifies presence of the REQ_ID field.
      EXT = 0/1
      OPR_LENGTH = 1-4 ; Depends of length of the GJID.
      REQ_ID - The value is taken from the instruction CONTROL_REQ
      Operands:
         4-16 octets: The GJID assigned to the job on the JCP.
        

The sending of the instruction CONTROL_REQ means request of control and request of task initiation. Assigned to the task CTID is part GJID (field of the local memory address).

指令控制请求的发送意味着控制请求和任务启动请求。分配给任务CTID的是GJID部分(本地内存地址字段)。

5.1.3 CONTROL_REJECT
5.1.3 控制单元拒绝

The instruction "To reject the control" (CONTROL_REJECT) is sent from JCP as the negative response to CONTROL_REQ instruction. CONTROL_REJECT has the following values of fields:

指令“拒绝控制”(control_reject)作为对control_REQ指令的否定响应从JCP发送。CONTROL_REJECT具有以下字段值:

      OPCODE = 4
      PCK = %b00
      CHN = 0
      ASK = 1.  The instruction does not need to be responded.  This flag
                specifies presence of the REQ_ID field.
      EXT = 0/1
      OPR_LENGTH = 1/2 ; Depends on presence of the control parameters
                         profile field.
      REQ_ID - The value is taken from the instruction CONTROL_REQ
      Operands:
         2 octets: The basic error code.  The zero-value is not
                   available.
         2 octets: The additional error code.
         4 octets: The control parameters profile (see section 5.1.1),
                   that is allowed by JCP.  This is optional field.
      The optional extension headers:
         _INACT_TIME - This header contains the inaction time (see
                       section 5.7).
         _MSG - contains the arbitrary error description.
        
      OPCODE = 4
      PCK = %b00
      CHN = 0
      ASK = 1.  The instruction does not need to be responded.  This flag
                specifies presence of the REQ_ID field.
      EXT = 0/1
      OPR_LENGTH = 1/2 ; Depends on presence of the control parameters
                         profile field.
      REQ_ID - The value is taken from the instruction CONTROL_REQ
      Operands:
         2 octets: The basic error code.  The zero-value is not
                   available.
         2 octets: The additional error code.
         4 octets: The control parameters profile (see section 5.1.1),
                   that is allowed by JCP.  This is optional field.
      The optional extension headers:
         _INACT_TIME - This header contains the inaction time (see
                       section 5.7).
         _MSG - contains the arbitrary error description.
        
5.2 Task Initiate
5.2 任务启动

The job is executed on several nodes simultaneously. The task, appropriate to it, must be initialized on each node. There is corresponding only one task to one job on the node. Each task must be connected only with one job.

作业同时在多个节点上执行。与之相应的任务必须在每个节点上初始化。节点上只有一个任务对应一个作业。每个任务只能与一个作业连接。

The task is initiated together with the job on the node, which had created the job. On the other nodes, the task is initiated during the receiving of the first request on the opening of the session connection, which is appropriate to the job. The request about openings of session connection contains GJID. GJID contains the JCP address. It is necessary to receive the sanction from JCP for the task start. If the request about the opening of session has been received from JCP node, it is not necessary to request the sanction.

该任务与创建作业的节点上的作业一起启动。在其他节点上,任务在会话连接打开时接收到第一个请求的过程中启动,这适合于作业。关于会话连接打开的请求包含GJID。GJID包含JCP地址。任务启动需要获得JCP的批准。如果已从JCP节点接收到关于打开会话的请求,则无需请求批准。

5.2.1 TASK_REG
5.2.1 任务注册

The instruction "To register a task" (TASK_REG) is sent from the node, which initials the task, to JCP of the remote node. The instruction has the following values of fields:

指令“注册任务”(task_REG)从初始化任务的节点发送到远程节点的JCP。该指令具有以下字段值:

      OPCODE = 6/7/8 ; For length CTID of 2/4/8 octets.
      PCK = %b00
      CHN = 0
      ASK = 1
      EXT = 0/1
      OPR_LENGTH = 2-8  ; Depends on length of the GTID and LTID.
      REQ_ID - The value is assigned by the sender node protocol and
               then will be sent in the response.
      Operands:
         2/4/8 octets: CTID of the task initiated the job.  It CTID is a
                       part GJID from the instruction SESSION_OPEN.
         4-16 octets: GTID, assigned on the node, initialed session
                      connection.  GTID is formed of sender addresses (at
                      transport layer) and field LTID of the instruction
                      SESSION_OPEN.
         2/4/8 octets:  LTID, assigned on the node, initialed the task
                        (by the sender of this instruction).
      The optional extension headers:
         _INACT_TIME - This header contains the inaction time (see
                       section 5.7).
        
      OPCODE = 6/7/8 ; For length CTID of 2/4/8 octets.
      PCK = %b00
      CHN = 0
      ASK = 1
      EXT = 0/1
      OPR_LENGTH = 2-8  ; Depends on length of the GTID and LTID.
      REQ_ID - The value is assigned by the sender node protocol and
               then will be sent in the response.
      Operands:
         2/4/8 octets: CTID of the task initiated the job.  It CTID is a
                       part GJID from the instruction SESSION_OPEN.
         4-16 octets: GTID, assigned on the node, initialed session
                      connection.  GTID is formed of sender addresses (at
                      transport layer) and field LTID of the instruction
                      SESSION_OPEN.
         2/4/8 octets:  LTID, assigned on the node, initialed the task
                        (by the sender of this instruction).
      The optional extension headers:
         _INACT_TIME - This header contains the inaction time (see
                       section 5.7).
        

The instruction TASK_REG must be sent only if the task with given GJID was not initiated on the node.

只有在节点上未启动具有给定GJID的任务时,才能发送指令任务_REG。

JCP confirms initiation of a task at observance of the following conditions:

JCP确认在遵守以下条件时启动任务:

(1) Task with received GTID already has registered on JCP. (2) Task with LTID for the node requesting for initiation has not registered.

(1) 接收到GTID的任务已在JCP上注册。(2) 请求启动的节点的LTID为的任务尚未注册。

In all other cases, JCP will not confirm a task.

在所有其他情况下,JCP都不会确认任务。

If JCP confirms the task, it will send the instruction TASK_CONFIRM, differently TASK_REJECT.

如果JCP确认任务,它将发送指令task\u CONFIRM,而不是task\u REJECT。

5.2.2 TASK_CONFIRM
5.2.2 任务确认

The instruction "To confirm the task" (TASK_CONFIRM) is sent from JCP as the positive response to TASK_REG. TASK_CONFIRM has the following values of fields:

JCP发送指令“确认任务”(task_confirm),作为对task_REG的肯定响应。TASK_CONFIRM具有以下字段值:

      OPCODE = 9
      PCK = %b00
      CHN = 0
      ASK = 1.  The instruction does not need to be responded.  This flag
                specifies the field REQ_ID presence.
      EXT = 0/1
        
      OPCODE = 9
      PCK = %b00
      CHN = 0
      ASK = 1.  The instruction does not need to be responded.  This flag
                specifies the field REQ_ID presence.
      EXT = 0/1
        

OPR_LENGTH = 1/2 ; Depends on length of the CTID. REQ_ID - The value is taken from the instruction TASK_REG. Operands: 4/8 octets: The CTID assigned to the task on the JCP. The optional extension headers: _JOB_NAME - This header contains the name of the Job.

OPR_长度=1/2;取决于CTID的长度。REQ_ID-该值取自指令任务_REG。操作数:4/8八位字节:分配给JCP上任务的CTID。可选扩展标题:\作业\名称-此标题包含作业的名称。

5.2.3 TASK_REJECT
5.2.3 任务拒绝

The instruction "To reject the task" (TASK_REJECT) is sent from JCP as the negative response to TASK_REG instruction. TASK_REJECT has the following values of fields:

指令“拒绝任务”(task_reject)作为对task_REG指令的否定响应从JCP发送。TASK_REJECT具有以下字段值:

      OPCODE = 10
      PCK = %b00
      CHN = 0
      ASK = 1.  The instruction does not need to be responded.  This flag
                specifies presence of the REQ_ID field.
      EXT = 0/1
      OPR_LENGTH = 1
      REQ_ID - The value is taken from the instruction CONTROL_REQ
      Operands:
         2 octets: The basic error code.  The zero-value is not
                   available.
         2 octets: The additional error code.
      The optional extension headers:
         _INACT_TIME - This header contains the inaction time (see
                       section 5.7).
         _MSG - contains the arbitrary error description.
        
      OPCODE = 10
      PCK = %b00
      CHN = 0
      ASK = 1.  The instruction does not need to be responded.  This flag
                specifies presence of the REQ_ID field.
      EXT = 0/1
      OPR_LENGTH = 1
      REQ_ID - The value is taken from the instruction CONTROL_REQ
      Operands:
         2 octets: The basic error code.  The zero-value is not
                   available.
         2 octets: The additional error code.
      The optional extension headers:
         _INACT_TIME - This header contains the inaction time (see
                       section 5.7).
         _MSG - contains the arbitrary error description.
        
5.2.4 TASK_CHK
5.2.4 工作坊

With the purposes of a safety the node, which have received request about the opening of session connection, may check up at JCP the node, which has initialed connection, even if the task was already initiated.

出于安全目的,已收到会话连接打开请求的节点可以在JCP检查已初始化连接的节点,即使任务已启动。

The instruction "To check up the task" (TASK_CHK) is sent from the node, which has received the instruction of the establishment of session connection SESSION_OPEN, to JCP. The task with given GJID, must have existed on the node already. The instruction TASK_CHK format coincides with TASK_REG. OPCODE = 11. The response to the instruction TASK_CHK JCP forms instructions TASK_REG similarly.

“检查任务”(task_CHK)指令从接收到建立会话连接session_OPEN指令的节点发送到JCP。具有给定GJID的任务必须已存在于节点上。指令任务\u CHK格式与任务\u REG一致。操作码=11。对指令任务的响应类似地形成指令任务。

JCP confirms the instruction TASK_CHK if a task with received GTID and LTID already has registered on JCP.

如果具有接收到的GTID和LTID的任务已在JCP上注册,则JCP确认指令TASK_CHK。

The sending of the TASK_CHK is optional.

发送任务_CHK是可选的。

5.3 Establishment of session connection
5.3 建立会话连接

The session connection is established between two tasks of one job. The connection is established under the VM initiative and it is used for the exchange of the instructions between VM.

在一个作业的两个任务之间建立会话连接。该连接是在VM倡议下建立的,用于在VM之间交换指令。

One session connection must be connected only with one task on the node. The task may have several connections with different nodes. Between two nodes must be only one session connection with one GJID.

一个会话连接只能与节点上的一个任务连接。任务可能与不同节点有多个连接。两个节点之间必须只有一个会话连接和一个GJID。

The request about the establishment of session connection contains the global identifier of the job GJID. If the node receives the request about the establishment of connection with GJID, which is not presented on the given node, VM must create a new task. If the task has been already initialized, the new task is not created.

关于建立会话连接的请求包含作业GJID的全局标识符。如果节点接收到关于与GJID建立连接的请求,而该请求在给定节点上没有显示,则VM必须创建一个新任务。如果任务已初始化,则不会创建新任务。

The session connection needs to be established over TCP. After the connection is established, the sending of the instructions, which are not require of execution response, is possible through UDP. One TCP connection may be used by several session connections. One session connection may use several TCP connections.

会话连接需要通过TCP建立。建立连接后,可以通过UDP发送不需要执行响应的指令。一个TCP连接可由多个会话连接使用。一个会话连接可以使用多个TCP连接。

The protocol allows working without the establishment of session connection. The node must have VM by default, which must execute the instructions without the establishment of connection.

该协议允许在不建立会话连接的情况下工作。默认情况下,节点必须有VM,VM必须在不建立连接的情况下执行指令。

At the establishment of session connection, the sides agree about the used VM type and the subset of the protocol functions. The session connection UMSP may be asymmetrical. It means, that two sides of one connection can be connected with VM of the different type and provide the different subset of the protocol functions.

在建立会话连接时,双方就使用的VM类型和协议功能子集达成一致。会话连接UMSP可能是不对称的。这意味着,一个连接的两侧可以与不同类型的VM连接,并提供不同的协议功能子集。

If at an establishment of session connection the zero-type VM is used, it specifies group VM (see section 9). The zero-value of realization VM is not allowed.

如果在建立会话连接时使用零类型VM,则指定组VM(参见第9节)。不允许实现VM的零值。

The procedure of the establishment of session connection may contain from 2-way up to 8-way handshakes.

建立会话连接的过程可能包含从2路到8路的握手。

5.3.1 SESSION_OPEN
5.3.1 会议开幕

The instruction "To open a session" (SESSION_OPEN) is used for the initiation of session connection and for the specification of connection parameters during handshake. It has the following values of fields:

指令“打开会话”(session_open)用于启动会话连接和在握手期间指定连接参数。它具有以下字段值:

      OPCODE = 12
      PCK = %b00/11.  In the first instruction (initial) the value of
                       this field is set to %b00.  In all subsequent -
                       %b11.
      CHN = 0
      ASK = 1
      EXT = 0/1
      OPR_LENGTH = 6 - 10 ; Depends on length GJID and LTID.
      SESSION_ID - In the first instruction this field is absent.  In all
                   subsequent, it contains the identifier of sessions,
                   assigned by the instruction receiver.
      REQ_ID - This field contains the session connection identifier,
               assigned by the instruction sender.
      Operands:
         2 octets: The VM type required from the addressee.
         2 octets: The VM version required from the addressee.
         4 octets: The profile of connection required from the
                   instruction addressee.
         2 octets: The VM type of the sender.
         2 octets: The VM version of the sender.
         4 octets: The profile of connection given by the instruction
                   sender.
         2 octets: The number of 256 octet blocks in the buffer,
                   allocated for session ("window"), on the side of the
                   sender of this instruction (see section 7.4).  The
                   zero-value specifies absence of the buffer.
         4-16 octets: GJID.
         4/8 octets: LTID of the sender task, assigned on the node -
                     sender of the instruction.  It is used in the
                     instruction TASK_REG (as a part of the field GTID).
        
      OPCODE = 12
      PCK = %b00/11.  In the first instruction (initial) the value of
                       this field is set to %b00.  In all subsequent -
                       %b11.
      CHN = 0
      ASK = 1
      EXT = 0/1
      OPR_LENGTH = 6 - 10 ; Depends on length GJID and LTID.
      SESSION_ID - In the first instruction this field is absent.  In all
                   subsequent, it contains the identifier of sessions,
                   assigned by the instruction receiver.
      REQ_ID - This field contains the session connection identifier,
               assigned by the instruction sender.
      Operands:
         2 octets: The VM type required from the addressee.
         2 octets: The VM version required from the addressee.
         4 octets: The profile of connection required from the
                   instruction addressee.
         2 octets: The VM type of the sender.
         2 octets: The VM version of the sender.
         4 octets: The profile of connection given by the instruction
                   sender.
         2 octets: The number of 256 octet blocks in the buffer,
                   allocated for session ("window"), on the side of the
                   sender of this instruction (see section 7.4).  The
                   zero-value specifies absence of the buffer.
         4-16 octets: GJID.
         4/8 octets: LTID of the sender task, assigned on the node -
                     sender of the instruction.  It is used in the
                     instruction TASK_REG (as a part of the field GTID).
        

If the VM type and version, required from the addressee, have the value 0, the receiving node independently chooses the VM type and reports it in the response. The establishment of connection without binding to VM or VM group is not allowed.

如果收件人要求的VM类型和版本的值为0,则接收节点独立选择VM类型并在响应中报告它。不允许在未绑定到VM或VM组的情况下建立连接。

Totally, it can be transmitted up to 7 instructions SESSION_OPEN at the establishment of connection. The instruction SESSION_ACCEPT is used for the response of the establishment of connection. For the refusal of connection the instruction, SESSION_REJECT is used.

总的来说,在建立连接时,它最多可以传输7条指令SESSION_OPEN。指令会话_ACCEPT用于响应建立连接。对于指令的拒绝连接,使用SESSION_REJECT。

It is possible to refuse connection on any step. It is necessary either to confirm connections, or to refuse it on the eighth step.

可以拒绝任何步骤上的连接。必须确认连接,或在第八步拒绝连接。

During the establishment of connection the following parameters may be changed:

在连接建立过程中,可能会更改以下参数:

o VM type and VM version; o profiles of connection.

o 虚拟机类型和虚拟机版本;o连接的配置文件。

If the repeated request about opening of session connection is received from the definite node, while one connection with received GJID have been already established, the following variants are possible:

如果从确定的节点接收到关于打开会话连接的重复请求,而已经建立了一个具有接收到的GJID的连接,则可以使用以下变体:

(1) If the request has arrived from the node JCP, it is necessary: o To finish the existing task emergency and to deallocate all dynamic resources belong to it. o To initiates a task without request of the JCP sanction again. o To confirm the establishment of connection. (2) If the request arrived not from the JCP node, it is necessary to refuse the establishment of new session connection. The existing task does not need to be changed.

(1) 如果请求已从节点JCP到达,则有必要:o完成现有的任务紧急情况并取消分配属于它的所有动态资源。o在没有JCP再次批准的情况下启动任务。o确认连接的建立。(2) 如果请求不是来自JCP节点,则需要拒绝建立新的会话连接。现有任务不需要更改。

5.3.2 SESSION_ACCEPT
5.3.2 会话(u)接受

The instruction "To accept the session" (SESSION_ACCEPT) is used for positive response to the establishment of session connection. It has the following values of fields:

“接受会话”(session_accept)指令用于对会话连接的建立做出积极响应。它具有以下字段值:

      OPCODE = 13
      ASK = 1
      PCK = %11
      EXT = 0/1
      CHN = 0
      OPR_LENGTH = 0
      SESSION_ID - This field contains the session connection identifier
                   of assigned by the node of the addressee of the
                   instruction.
      REQ_ID - This field contains the session connection identifier,
               assigned by the instruction sender.
        
      OPCODE = 13
      ASK = 1
      PCK = %11
      EXT = 0/1
      CHN = 0
      OPR_LENGTH = 0
      SESSION_ID - This field contains the session connection identifier
                   of assigned by the node of the addressee of the
                   instruction.
      REQ_ID - This field contains the session connection identifier,
               assigned by the instruction sender.
        
5.3.3 SESSION_REJECT
5.3.3 会话(u)拒绝

The instruction "To reject the session" (SESSION_ACCEPT) is used for negative response to the establishment of session connection. It has the following values of fields:

指令“拒绝会话”(会话_接受)用于对会话连接的建立作出否定响应。它具有以下字段值:

      OPCODE = 14
      ASK = 0
      PCK = %b11
      EXT = 0/1
      CHN = 0
      OPR_LENGTH = 1
        
      OPCODE = 14
      ASK = 0
      PCK = %b11
      EXT = 0/1
      CHN = 0
      OPR_LENGTH = 1
        

SESSION_ID - This field contains the session connection identifier of assigned by the node of the addressee of the instruction. Operands: 2 octets: The basic error code. The zero-value is not available. 2 octets: The additional error code. The optional extension headers: _MSG - contains the arbitrary error description.

SESSION_ID-此字段包含指令收件人节点分配的会话连接标识符。操作数:2个八位字节:基本错误代码。零值不可用。2个八位字节:附加错误代码。可选扩展标题:_MSG-包含任意错误描述。

5.3.4 Connection Profile
5.3.4 连接配置文件

The profile of connection is defined in 4-octet field of flags. The flags have identifiers S0 - S31. The number in the identifier is defining the serial number of bit. If the flag is set to 1, the function, connected with it, is provided. If the flag is set to 0, the function, connected with it, is not provided (not required). The list of functions, determined at the establishment of session connection, are described further.

连接配置文件在标志的4个八位字节字段中定义。这些标志具有标识符S0-S31。标识符中的数字定义位的序列号。如果标志设置为1,则提供与其相连的功能。如果该标志设置为0,则不提供与其连接的函数(非必需)。进一步描述在建立会话连接时确定的功能列表。

Work with chains:

使用链条:

S0 - Use of fragmented instructions. S1 - Use of sequences. S2 - Use of transactions.

S0-碎片指令的使用。S1-序列的使用。S2-交易的使用。

Establishment of connection:

建立联系:

S3 - Use the exchange of the data without the establishment of connection. S4 - Use the exchange of the data with the establishment of connection.

S3-在不建立连接的情况下使用数据交换。S4-使用数据交换建立连接。

The instructions format:

说明格式:

      S5  - Reserved.  Must have set to 0.
      S6  - Use of 16-octet address in the exchange instructions.
      S7  - Use of the compressed form of header of the instruction
            (OPR_LENGTH < > %b111) is allowed
      S8  - Use of the extension form of header of the instruction
            (OPR_LENGTH = %b111) is allowed
      S9  - Use of the extension headers with the data field up to 254
            octets of length.
      S10 - Use of the extension headers with the data field up to 4 *
            10^9 octets of length.
      S11-S15  Maximal length of the data field in operands in the 4
               octet words.  These bits are the common field.  Maximal
               length in octets is computed under the formula:
        
      S5  - Reserved.  Must have set to 0.
      S6  - Use of 16-octet address in the exchange instructions.
      S7  - Use of the compressed form of header of the instruction
            (OPR_LENGTH < > %b111) is allowed
      S8  - Use of the extension form of header of the instruction
            (OPR_LENGTH = %b111) is allowed
      S9  - Use of the extension headers with the data field up to 254
            octets of length.
      S10 - Use of the extension headers with the data field up to 4 *
            10^9 octets of length.
      S11-S15  Maximal length of the data field in operands in the 4
               octet words.  These bits are the common field.  Maximal
               length in octets is computed under the formula:
        
                  <max length> = (<value of this field> + 1) * 4.
               If the value is equal %b1111, maximal length of the data
               is defined by the instruction format.
      S16-S19  These bits are the common field.  In the profile required
               from the addressee of the instruction, this field
               contains the version of the UMSP.  It must is set to the
               value %b0001.  In the profile given sender of the
               instruction, this field contains priority of the job.  The
               more is value of this field, the more priority.  The
               priority of the job is used:
               o In queues on sending to the transport layer for the
                 instructions of the job.
               o For set of sending priority of the transport layer.
               o For set of computing priority of the task.
      S20 - making the border multiple of 4 octets.  If S16 = 1:
         (1)  OPR_LENGTH = %b111
         (2)  Each extension header and the field of operands begin with
               the border multiple of four octets.
         (3)  The necessary number of zero octets is added in the end of
              each header.
      S21 - Use of the procedures name of objects.
      S22 - Use of the objects name.
        
                  <max length> = (<value of this field> + 1) * 4.
               If the value is equal %b1111, maximal length of the data
               is defined by the instruction format.
      S16-S19  These bits are the common field.  In the profile required
               from the addressee of the instruction, this field
               contains the version of the UMSP.  It must is set to the
               value %b0001.  In the profile given sender of the
               instruction, this field contains priority of the job.  The
               more is value of this field, the more priority.  The
               priority of the job is used:
               o In queues on sending to the transport layer for the
                 instructions of the job.
               o For set of sending priority of the transport layer.
               o For set of computing priority of the task.
      S20 - making the border multiple of 4 octets.  If S16 = 1:
         (1)  OPR_LENGTH = %b111
         (2)  Each extension header and the field of operands begin with
               the border multiple of four octets.
         (3)  The necessary number of zero octets is added in the end of
              each header.
      S21 - Use of the procedures name of objects.
      S22 - Use of the objects name.
        

The permissible instructions:

允许的说明:

S23 - The response of the execution on VM (instruction RSP) is provided. S24 - Use of data reading and comparison instructions. S25 - Use of data writing instructions. S26 - Use of control transfer instructions. S27 - Use of synchronize instruction. S28 - Use of instructions of work witch objects. S29 - Use of the immediate access to memory of object. If this flag is set to 0, the access to object is solved only through its procedures. If S28=0, this flag must be set to 0. S30 - Use of instruction MVRUN in zero-session. S31 - Reserved. Must have set to 0.

S23-提供对VM(指令RSP)执行的响应。S24-数据读取和比较说明的使用。S25-数据写入指令的使用。S26-控制转移指令的使用。S27-同步指令的使用。S28-工作对象说明的使用。S29-使用对对象内存的即时访问。如果此标志设置为0,则仅通过其过程解决对对象的访问。如果S28=0,则该标志必须设置为0。S30-指令MVRUN在零会话中的使用。S31-保留。必须已设置为0。

5.4 Session Closing
5.4 会议闭幕

Initiate closing session connection the node must only, which has initiated its establishment. It uses the SESSION_CLOSE instruction for this purpose. The procedure of break of connection is 3-way handshake. The procedure of unconditional emergency end of connection is stipulated. It can be transmitted by any node.

Initiate closing session connection节点必须仅为已启动建立的节点。为此,它使用SESSION_CLOSE指令。断开连接的过程是三次握手。规定了无条件紧急终止连接的程序。它可以由任何节点传输。

Let node A is the initiator of the establishment of a session, and the node B is the second side of connection. The node A must send the instruction SESSION_CLOSE for closing session. The node A may recommence sending of the instructions after sending of this instruction. It means that it has refused closing connection. The instructions of response (see section 6) does not influence on the closing of connection. The node, which has sent SESSION_CLOSE, does not use the timeout and can be waiting for the response beyond all bounds long.

假设节点A是建立会话的发起方,节点B是连接的第二方。节点A必须发送指令会话_CLOSE以关闭会话。节点A可以在发送该指令之后重新开始发送该指令。这意味着它拒绝关闭连接。响应说明(见第6节)不影响连接的关闭。已发送会话_CLOSE的节点不使用超时,可以等待超出所有界限的响应。

The node B, after reception of the instruction SESSION_CLOSE, sends in the answer the instruction RSP_P. The zero basic return code responds closing session. The non-zero basic return code cancels closing session. After sending of positive response, the node must not use connection during 30-second timeout. If the instruction SESSION_ABEND or any other instruction, except response instruction, has not been received from the node A after the expiration of this time, the node send the instruction SESSION_ABEND and considers the session connection closed.

节点B在接收到指令SESSION\u CLOSE后,在应答中发送指令RSP\u P。零基本返回码响应关闭会话。非零基本返回代码取消关闭会话。发送肯定响应后,节点在30秒超时期间不得使用连接。如果在该时间到期后未从节点A接收到指令会话异常终止或任何其他指令(响应指令除外),则节点发送指令会话异常终止,并认为会话连接已关闭。

The node A sends the instruction SESSION_ABEND after reception of positive response on the instruction SESSION_CLOSE. After that, the connection is considered closed. The node A may refuse closing of connection. For this purpose, any instruction is sent, including NOP. In this case, the procedure of end interrupts, and the session connection is translated in the working state.

节点A在指令会话_CLOSE上接收到肯定响应之后发送指令会话_ABEND。之后,连接被视为关闭。节点A可以拒绝关闭连接。为此,发送任何指令,包括NOP。在这种情况下,结束过程中断,会话连接在工作状态下转换。

5.4.1 SESSION_CLOSE
5.4.1 会议结束

The instruction "To close the session" (SESSION_CLOSE) initiates the end of session connection. It has the following values of fields:

指令“关闭会话”(session_close)启动会话结束连接。它具有以下字段值:

      OPCODE = 15
      PCK = %b01/11
      CHN = 0
      ASK = 0
      EXT = 0/1
      OPR_LENGTH = 0/1
      SESSION_ID - Contains the session identifier assigned by the
                   addressee.
      Operands:
         2 octets: The basic termination code.
         2 octets: The additional termination code.
      The optional extension header:
         _MSG - contains the arbitrary message.
        
      OPCODE = 15
      PCK = %b01/11
      CHN = 0
      ASK = 0
      EXT = 0/1
      OPR_LENGTH = 0/1
      SESSION_ID - Contains the session identifier assigned by the
                   addressee.
      Operands:
         2 octets: The basic termination code.
         2 octets: The additional termination code.
      The optional extension header:
         _MSG - contains the arbitrary message.
        

The operands may be absent. It is equivalent to the zero exit code.

操作数可能不存在。它相当于零出口代码。

5.4.2 SESSION_ABEND
5.4.2 会话结束

The instruction "Abend of session" SESSION_ABEND is applied to unconditional end of session. The node, which has sent this instruction, finishes the exchange of the data on connection at both sides, not waiting responses from other node. The instruction has the following values of fields:

指令“会话异常结束”会话\u异常结束应用于会话的无条件结束。发送此指令的节点在连接两侧完成数据交换,而不等待其他节点的响应。该指令具有以下字段值:

      OPCODE = 16
      PCK = %b01/11
      CHN = 0
      ASK = 0
      EXT = 0/1
      OPR_LENGTH = 0/1
      SESSION_ID - Contains the session identifier assigned by the
                   addressee.
      Operands:
         2 octets: The basic termination code.
         2 octets: The additional termination code.
      The optional extension header:
         _MSG - contains the arbitrary message.
        
      OPCODE = 16
      PCK = %b01/11
      CHN = 0
      ASK = 0
      EXT = 0/1
      OPR_LENGTH = 0/1
      SESSION_ID - Contains the session identifier assigned by the
                   addressee.
      Operands:
         2 octets: The basic termination code.
         2 octets: The additional termination code.
      The optional extension header:
         _MSG - contains the arbitrary message.
        

The operands may be absent. It is equivalent to the zero termination codes.

操作数可能不存在。它相当于零终止码。

5.5 Task Termination
5.5 任务终止

The task is finished during the process of the job finishing at the normal end of the user application working. This procedure is described in the following item. The following situations require finishing the task irrespective of the job:

在用户应用程序正常工作结束时,任务在作业完成过程中完成。以下项目中描述了该程序。以下情况需要完成任务,而与工作无关:

o There are not enough of computing resources for maintenance of the task on the node; o The node finishes the work; o If VM has accepted such decision for the internal reasons.

o 没有足够的计算资源来维护节点上的任务;o节点完成工作;o如果VM出于内部原因接受了该决定。

The references to the resources allocated by the task can be on any node, on which the job is carried out. Therefore, all nodes must be notified of the end of the task.

对任务分配的资源的引用可以位于执行作业的任何节点上。因此,任务结束时必须通知所有节点。

Node, finishing the task, must abnormally close all session connections joining the finished task (to send the instruction SESSION_ABEND).

完成任务的节点必须异常关闭加入已完成任务的所有会话连接(以发送指令会话\u ABEND)。

5.5.1 TASK_TERMINATE
5.5.1 任务终止

The instruction "To terminate the task" (TASK_TERMINATE) is sent from the node, on which the task is finished, to JCP. The instruction has the following values of fields:

指令“终止任务”(task_terminate)从完成任务的节点发送到JCP。该指令具有以下字段值:

      OPCODE = 17
      PCK = %b00
      CHN = 0
      ASK = 0
      EXT = 0/1
      OPR_LENGTH = 2/3  ; Depends on the length of CTID.
      Operands:
         2 octets: The basic termination code.
         2 octets: The additional termination code.
         4/8 octets: CTID.
      The optional extension header:
         _MSG - contains the arbitrary message.
        
      OPCODE = 17
      PCK = %b00
      CHN = 0
      ASK = 0
      EXT = 0/1
      OPR_LENGTH = 2/3  ; Depends on the length of CTID.
      Operands:
         2 octets: The basic termination code.
         2 octets: The additional termination code.
         4/8 octets: CTID.
      The optional extension header:
         _MSG - contains the arbitrary message.
        

After sending of the instruction TASK_TERMINATE to JCP, the node sends the instruction of unconditional end of connection ABEND_SESSION on all session connections connected with a task. After that, the task is considered completed.

在向JCP发送指令TASK_TERMINATE之后,节点在与任务连接的所有会话连接上发送无条件结束连接ABEND_会话的指令。之后,任务被视为已完成。

If the basic return code in the instruction TASK_TERMINATE is equal to 0, it is not required to notify other nodes about the end of the task. Such situation arises, if the task did not allocate dynamic resources. If the basic return code is unequal to 0, JCP must notify about the task end the other nodes, on which the job is carried out, after reception of the instruction TASK_TERMINATE. JCP responds for the notification of all nodes of the job about the task end.

如果指令任务_TERMINATE中的基本返回码等于0,则不需要通知其他节点任务结束。如果任务没有分配动态资源,就会出现这种情况。如果基本返回码不等于0,JCP必须在接收到指令task_TERMINATE后,将任务结束通知执行作业的其他节点。JCP响应作业所有节点关于任务结束的通知。

5.5.2 TASK_TERMINATE_INFO
5.5.2 任务\u终止\u信息

The instruction "The information on terminating of the task" (TASK_TERMINATE_INFO) is used for the notification about the task end. It is sent from JCP to other nodes, on which the job is carried out. The instruction has the following values of fields:

指令“任务终止信息”(task_TERMINATE_INFO)用于通知任务结束。它从JCP发送到执行作业的其他节点。该指令具有以下字段值:

      OPCODE = 18
      PCK = %b00
      CHN = 0
      ASK = 0
      EXT = 0/1
      OPR_LENGTH = 2-5 ; Depends on the length of GTID.
      Operands:
         2 octets: The basic termination code.
         2 octets: The additional termination code.
        
      OPCODE = 18
      PCK = %b00
      CHN = 0
      ASK = 0
      EXT = 0/1
      OPR_LENGTH = 2-5 ; Depends on the length of GTID.
      Operands:
         2 octets: The basic termination code.
         2 octets: The additional termination code.
        

4-16 octets: GTID of the terminated task. JCP forms GTID from LTID (from the instruction TASK_REG) and address of transport layer of the task. The optional extension header: _MSG - contains the arbitrary message.

4-16个八位字节:终止任务的GTID。JCP根据LTID(来自指令任务_REG)和任务传输层的地址形成GTID。可选扩展标题:_MSG-包含任意消息。

The fields of termination codes are taken from the instruction TASK_TERMINATE. The job must delete (to make invalid) all references to resources concerning the node, on which the completed task worked, at reception of the instruction TASK_TERMINATE_INFO.

终止代码字段取自指令任务_TERMINATE。在接收到指令任务\终止\信息时,作业必须删除(使其无效)与已完成任务所在节点相关的所有资源引用。

5.6 Job Completion
5.6 工作完成

The job is finished, when the appropriated to it the user application on the node, on which it was initiated, is finished. The end of the job occurs under the initiative of VM. Besides, it can be completed under the JCP initiative at ending the lifetime of the job or at end of the JCP node working.

当启动作业的节点上的相应用户应用程序完成时,作业完成。作业的结束是在VM的倡议下发生的。此外,它可以在作业生命周期结束时或JCP节点工作结束时在JCP计划下完成。

5.6.1 JOB_COMPLETED
5.6.1 工作完成

The instruction "The task is completed" (JOB_COMPLETED) is sent from the node, which initiated the job, in the JCP side. It has the following values of fields:

指令“任务已完成”(JOB_completed)从JCP端启动作业的节点发送。它具有以下字段值:

      OPCODE = 19
      PCK = %b00
      CHN = 0
      ASK = 0
      EXT = 0/1
      OPR_LENGTH = 2/3 ; Depends on the CTID length.
      Operands:
         2 octets: The basic completion code.
         2 octets: The additional completion code.
         4/8 octets: CTID of the completed task of the job.  CTID is a
                     part GJID of the job.
      The optional extension header:
         _MSG - contains the arbitrary message.
        
      OPCODE = 19
      PCK = %b00
      CHN = 0
      ASK = 0
      EXT = 0/1
      OPR_LENGTH = 2/3 ; Depends on the CTID length.
      Operands:
         2 octets: The basic completion code.
         2 octets: The additional completion code.
         4/8 octets: CTID of the completed task of the job.  CTID is a
                     part GJID of the job.
      The optional extension header:
         _MSG - contains the arbitrary message.
        

After sending of the instruction JOB_COMPLETED to JCP, the node sends on all connected with the session connections of the job the instruction of unconditional end of connection ABEND_SESSION. After that, the job is considered completed.

将指令JOB_COMPLETED发送到JCP后,节点在与该作业的会话连接连接连接的所有节点上发送无条件结束连接ABEND_会话的指令。在此之后,作业被视为已完成。

JCP must notify of the end of the job the nodes, on which the job is carried out, after reception of the instruction JOB_COMPLETED. JCP responds for the notification of all nodes of the job about end of the job.

JCP必须在接收到指令job_COMPLETED后,将作业结束通知执行作业的节点。JCP响应作业所有节点关于作业结束的通知。

The instruction TASK_TERMINATE_INFO may be transferred under the initiative JCP, if node of the task has abnormal terminated work.

如果任务的节点有异常终止工作,指令任务\终止\信息可以在主动JCP下传输。

5.6.2 JOB_COMPLETED_INFO
5.6.2 作业\u已完成\u信息

The instruction "The information on completion of the job" (JOB_COMPLETED_INFO) is used for the notification about end of the job. It is sent from JCP to other nodes, on which the job is carried out. The instruction has the following values of fields:

“作业完成信息”(作业完成信息)用于通知作业结束。它从JCP发送到执行作业的其他节点。该指令具有以下字段值:

      OPCODE = 20
      PCK = %b00
      CHN = 0
      ASK = 0
      EXT = 0/1 ;
      OPR_LENGTH = 2-5 ; Depends on the GJID length and presence of
                         fields completion code.
      Operands:
         2 octets: The basic completion code.
         2 octets: The additional completion code.
         4-16 octets: GJID of the completed job.
      The optional extension header:
         _MSG - contains the arbitrary message.
        
      OPCODE = 20
      PCK = %b00
      CHN = 0
      ASK = 0
      EXT = 0/1 ;
      OPR_LENGTH = 2-5 ; Depends on the GJID length and presence of
                         fields completion code.
      Operands:
         2 octets: The basic completion code.
         2 octets: The additional completion code.
         4-16 octets: GJID of the completed job.
      The optional extension header:
         _MSG - contains the arbitrary message.
        

The fields of completion codes are optional.

完成代码字段是可选的。

The fields of completion codes are taken from the instruction JOB_COMPLETED. At reception of the instruction, JOB_COMPLETED_INFO the node must make the following:

完成代码字段取自已完成的指令作业。在接收到指令、作业完成信息时,节点必须执行以下操作:

(1) To remove all session connections, connected to the task. At that, it is not necessary to send network primitives. (2) To abnormally finish the task of the job and to deallocate all dynamic resources of the task.

(1) 要删除所有会话连接,请连接到任务。此时,不需要发送网络原语。(2) 异常完成作业的任务并取消分配任务的所有动态资源。

The instruction JOB_COMPLETED_INFO is used for the end of the job under the JCP initiative at the end of lifetime or at end of the JCP node working. In these cases, the node initiated the job is the first addressee of the instruction.

指令JOB_COMPLETED_INFO用于生命周期结束时或JCP节点工作结束时JCP计划下的作业结束。在这些情况下,启动作业的节点是指令的第一个收件人。

JCP considers the job completed after sending of all instructions JOB_COMPLETED_INFO.

JCP在发送所有指令job_completed_信息后认为作业已完成。

5.7 Activity Control of Nodes
5.7 节点的活动控制

UMSP unites nodes, which have any arrangement in the network and which are not having uniform controls. Each of nodes can be disconnected or reloaded at any moment of time. However, other nodes

UMSP将在网络中有任何安排且没有统一控制的节点联合起来。可以随时断开或重新加载每个节点。但是,其他节点

can be not notified about it. The fact of breaking or repeated establishment of transport connection cannot be the indicator of disconnect or restart of the node. The control of transport connections is not the part of the UMSP protocol and the presence of transport connection is not obligatory.

无法通知您。中断或重复建立传输连接的事实不能作为断开或重新启动节点的指示。传输连接的控制不是UMSP协议的一部分,传输连接的存在不是强制性的。

Besides the separate task on the node can be finished emergency. Procedure described in section 5.5.1 in this case must be executed. If this procedure cannot be executed, must is abnormally finished work of the node.

此外,节点上的单独任务可以在紧急情况下完成。在这种情况下,必须执行第5.5.1节所述的程序。如果无法执行此过程,则必须异常完成节点的工作。

The JCP executes the functions of the control of nodes activity. The instruction of request of the status TASK_REQ is sent periodically between tasks on nodes and JCP for this purpose.

JCP执行控制节点活动的功能。为此,在节点上的任务和JCP之间定期发送状态任务_REQ的请求指令。

The following actions JCP are possible at detection of deactivating of the node:

在检测到节点停用时,JCP可以执行以下操作:

(1) If the task initiated the job was finished, it is considered, that the job is completed. JCP sends the instruction JOB_COMPLETED_INFO to all other nodes, on which the job was executed. (2) JCP sends the instruction TASK_TERMINATE_INFO to all other nodes of the job, if the task, which has not initiated the job, is finished.

(1) 如果启动作业的任务已完成,则认为作业已完成。JCP将指令JOB_COMPLETED_INFO发送到执行作业的所有其他节点。(2) 如果尚未启动作业的任务完成,JCP会将指令TASK_TERMINATE_INFO发送到作业的所有其他节点。

The deactivating of the JCP node imposes the restriction on GJID appropriated by it after reloading. The following variants are probable:

JCP节点的停用对其在重新加载后占用的GJID施加了限制。可能存在以下变体:

(1) The disconnection of the JCP node passed normally. It transferred to all nodes, which it has controlled, instruction JOB_COMPLETED_INFO. In this case, it can appropriate anyone GJID after reloading. (2) There is the emergency disconnect of the JCP node. It has not informed all nodes about the deactivating. In this case, it must guarantee after reloading, that new GJID will not concur witch the GJID, existing up to the reload, during two maximal intervals of inactivity time (which sets this JCP).

(1) JCP节点的断开连接正常通过。它传输到它控制的所有节点,指令作业完成信息。在这种情况下,它可以在重新加载后调用任何GJID。(2) 存在JCP节点的紧急断开连接。它没有将停用通知所有节点。在这种情况下,必须保证在重新加载后,新的GJID不会在两个最大的非活动时间间隔(设置此JCP)内与重新加载之前存在的GJID一致。

The reload of nodes, which are not being JCP, does not impose restrictions on LTID established on these nodes.

重新加载不是JCP的节点不会对这些节点上建立的LTID施加限制。

5.7.1 _INACTION_TIME
5.7.1 _不作为时间

The extension header "The time of inaction" (_INACTION_TIME) allows setting the inaction time of the node (non JCP). It has the following values of fields:

扩展头“不活动时间”(_inaction_time)允许设置节点的不活动时间(非JCP)。它具有以下字段值:

HEAD_CODE = 2 HEAD_LENGTH = 1; HOB = 1 DATA contains: 2 octets: The inaction period. The number of 0,5 second intervals, through which the activity of the node - sender of the instruction from the side JCP - will be checked.

头部编码=2头部长度=1;HOB=1数据包含:2个八位字节:不活动期。0,5秒的间隔数,通过该间隔,将检查节点(JCP端指令的发送方)的活动。

The inaction period must be more than three intervals of the maximal time of delivery at the transport layer. The waiting period in queue to the transport layer does not influence on timeout.

不活动期必须超过传输层最大交付时间的三个间隔。传输层队列中的等待时间不影响超时。

The header _INACTION_TIME may be attached to the following instructions:

标题“不活动时间”可附加到以下说明:

(1) To the instruction TASK_REG. In this case must be satisfied condition - on node there must not be other active tasks, which are controlled the JCP of addressee. The zero-value specifies that the activity checking is unused. The absence of the header specifies that the inaction period must be set on the JCP. (2) To the instruction TASK_REJECT, if the time from the instruction TASK_REG does not fit for JCP. (3) To the instruction TASK_CONFIRM, if instruction TASK_REG had no this header.

(1) 到指令任务\u REG。在这种情况下,必须满足条件-在节点上不得有其他活动任务,这些任务由收件人的JCP控制。零值指定活动检查未使用。缺少标头指定必须在JCP上设置非活动期间。(2) 如果指令任务_REG的时间不适合JCP,则返回指令任务_REJECT。(3) 如果指令任务\u REG没有此标头,请确认指令任务\u。

If JCP receives the instruction TASK_REG with the attached heading _INACTION_TIME, it must check up presence of active tasks with sender node (as it can mean, that the node was reloaded). If such tasks exist, for each of them it is necessary to execute procedure of end of the task described in section 5.6.2. The instruction TASK_CONFIRM must be sent only after that.

如果JCP接收到带有附加标题“不活动时间”的指令TASK_REG,它必须检查发送方节点是否存在活动任务(这可能意味着节点已重新加载)。如果存在此类任务,则有必要对每个任务执行第5.6.2节所述的任务结束程序。指令任务_CONFIRM必须在此之后发送。

5.7.2 STATE_REQ
5.7.2 州要求

The instruction "State Request" (STATE_REQ) is sent from JCP to the definite task of other node. The instruction has the following values of fields:

指令“State Request”(State_REQ)从JCP发送到其他节点的确定任务。该指令具有以下字段值:

      OPCODE = 21
      PCK = %b00
      CHN = 0
      ASK = 0
      EXT = 0
      OPR_LENGTH = 1/2 ; Depends on the LTID length.
      Operand:
         4/8 octets: LTID, established on the node of the instruction
                     addressee.
        
      OPCODE = 21
      PCK = %b00
      CHN = 0
      ASK = 0
      EXT = 0
      OPR_LENGTH = 1/2 ; Depends on the LTID length.
      Operand:
         4/8 octets: LTID, established on the node of the instruction
                     addressee.
        

The instruction STATE_REQ will be sent in the defined task but it has concern with node. It is sent, if between the node and JCP was not sending of the instruction during inactive time. The task activated after sending of last instruction STATE_REQ does not influence the control of activity.

指令状态_REQ将在定义的任务中发送,但它与节点有关。如果节点和JCP之间在非活动时间内未发送指令,则发送该指令。发送最后一条指令状态_REQ后激活的任务不影响对活动的控制。

The instruction TASK_STATE is sent in reply to STATE_REQ. At expectation of the response, the timeout equal to one inaction period is used. After the expiration of the timeout the node is considered switched - off.

指令任务_状态被发送以响应状态_请求。在预期响应时,使用等于一个不活动周期的超时。超时过期后,节点被视为关闭。

If the node not receives of any instructions from JCP during two intervals of inaction time, it is considered, that JCP has finished the work. The actions of the node in this case are described in section 5.6.2 at receiving the instruction JOB_COMPLETED_INFO. The check of this condition is optional for the node.

如果节点在两个非活动时间间隔内未收到来自JCP的任何指令,则认为JCP已完成工作。在这种情况下,节点在接收指令作业完成信息时的动作如第5.6.2节所述。此条件的检查对于节点是可选的。

If at JCP there are no active tasks connected with the defined node, the control of activity of this node will not be carried out.

如果在JCP没有与定义的节点连接的活动任务,则不会执行此节点的活动控制。

5.7.3 TASK_STATE
5.7.3 任务状态

The instruction "Task State" (TASK_STATE) is sent from the definite task to JCP. It serves for the response of the instruction STATE_REQ. The instruction has the following values of fields:

指令“任务状态”(Task_State)从确定任务发送到JCP。它用于响应指令状态_REQ。该指令具有以下字段值:

      OPCODE = 22
      PCK = %b00
      CHN = 0
      ASK = 0
      EXT = 0
      OPR_LENGTH = 1/2/3 ; Depends on the CTID length.
      Operands:
         1 octet:  The state code of task.  The following values are
                   defined for this field:
            %x01 - The task is active and has active session
                   connections.
            %x02 - The task is active and have no session connections.
            %x03 - The task is active, have no session connections and
                   have no resources, allocated on the node.
            %x04 - The task is completed.
         1/3 octets: Reserved.  If OPR_LENGTH = 1, then this field has
                     length 1 octet, else 3 octets. JCP must not check
                     the value of this field.  It is established in zero
                     value by sending.
         2/4/8 octets: CTID connected with LTID from the instruction
                       STATE_REQ.
        
      OPCODE = 22
      PCK = %b00
      CHN = 0
      ASK = 0
      EXT = 0
      OPR_LENGTH = 1/2/3 ; Depends on the CTID length.
      Operands:
         1 octet:  The state code of task.  The following values are
                   defined for this field:
            %x01 - The task is active and has active session
                   connections.
            %x02 - The task is active and have no session connections.
            %x03 - The task is active, have no session connections and
                   have no resources, allocated on the node.
            %x04 - The task is completed.
         1/3 octets: Reserved.  If OPR_LENGTH = 1, then this field has
                     length 1 octet, else 3 octets. JCP must not check
                     the value of this field.  It is established in zero
                     value by sending.
         2/4/8 octets: CTID connected with LTID from the instruction
                       STATE_REQ.
        

If OPR_LENGTH = 1 that length of the reserved field is equal to one octet and length CTID makes two octets. In all other cases, length of the reserved field is equal 3 octets and length CTID - not less than 4 octets.

如果OPR_LENGTH=1,则保留字段的长度等于一个八位字节,长度CTID等于两个八位字节。在所有其他情况下,保留字段的长度等于3个八位字节,长度CTID-不小于4个八位字节。

5.7.4 NODE_RELOAD
5.7.4 节点重新加载

The instruction "The node was reloaded" (NODE_RELOAD) is sent to JCP as the negative response to STATE_REQ instruction. NODE_RELOAD has the following values of fields:

指令“节点已重新加载”(node_RELOAD)作为对STATE_REQ指令的否定响应发送给JCP。节点_RELOAD具有以下字段值:

      OPCODE = 23
      PCK = %b00
      CHN = 0
      ASK = 0
      EXT = 0
      OPR_LENGTH = 1/2 ; Depends on the LTID length.
      Operands:
         4/8 octets: LTID.  The value is taken from the instruction
                     STATE_REQ.
        
      OPCODE = 23
      PCK = %b00
      CHN = 0
      ASK = 0
      EXT = 0
      OPR_LENGTH = 1/2 ; Depends on the LTID length.
      Operands:
         4/8 octets: LTID.  The value is taken from the instruction
                     STATE_REQ.
        

The instruction RELOAD_NODE indicates, that the task with given LTID for given JCP on the node is absent. At reception of this instruction, JCP must make the following:

指令RELOAD_NODE指示节点上给定JCP的具有给定LTID的任务不存在。在收到本指令时,JCP必须做出以下决定:

(1) To send the instruction STATE_REQ to all tasks of the node, which were initiated before a sending of the penultimate instruction STATE_REQ. (2) To wait for ending of one inaction interval after sending of the last instruction STATE_REQ (on which the negative response is received). (3) To send the instructions STATE_REQ to all tasks of the node, which were initiated between last and penultimate instructions STATE_REQ (not including instructions from item 1).

(1) 将指令状态_REQ发送到节点的所有任务,这些任务在发送倒数第二个指令状态_REQ之前启动。(2) 在发送最后一个指令状态_REQ(接收到否定响应)后,等待一个不活动间隔的结束。(3) 将指令状态_REQ发送到节点的所有任务,这些任务在最后一个指令状态_REQ和倒数第二个指令状态_REQ之间启动(不包括第1项中的指令)。

For all instructions STATE_REQ the positive response (TASK_STATE) or negative response (RELOAD_NODE) must be transmitted.

对于所有指令STATE_REQ,必须传输肯定响应(TASK_STATE)或否定响应(RELOAD_NODE)。

5.8 Work without session connection
5.8 在没有会话连接的情况下工作

The protocol provides the data exchange between nodes without an establishment of session connection. In this case, initialization of the job and tasks is not made and JCP is not used.

该协议在不建立会话连接的情况下提供节点之间的数据交换。在这种情况下,不会初始化作业和任务,也不会使用JCP。

   The format of the instructions, transmitted without the establishment
   of connection, is completely correspond to the instructions
   transmitted by session connections.  The difference is that the field
   SESSION_ID has zero value or PCK = %b00.
        
   The format of the instructions, transmitted without the establishment
   of connection, is completely correspond to the instructions
   transmitted by session connections.  The difference is that the field
   SESSION_ID has zero value or PCK = %b00.
        

The node, supporting work without the establishment of session connection, must have VM, which executes by default the instructions transmitted without the establishment of connection. In fact, these instructions are executed within the framework of a so-called zero-session (or zero-task) of this VM. The memory address space of this VM is accessible without a connection establishment.

支持在不建立会话连接的情况下工作的节点必须有VM,VM默认执行在不建立连接的情况下传输的指令。事实上,这些指令是在这个VM的所谓零会话(或零任务)框架内执行的。无需建立连接即可访问此VM的内存地址空间。

The instruction SESSION_INIT with SESSION_ID = 0 and REQ_ID = 0 allows to specify parameters of its zero-session and to request the zero-session parameters of the addressee node. If the node, which has received such instruction, provides the requiring profile, it sends the instruction SESSION_ACCEPT. If the profile is not provided, the answerback instruction SESSION_INIT will send, in which the field SESSION_ID and REQ_ID also have the value 0. Actually, such instructions of session initialization do not establish connection, but have the information meaning. The exchange of the data by zero-session can occur irrespective of its.

SESSION_ID=0和REQ_ID=0的指令SESSION_INIT允许指定其零会话的参数,并请求收件人节点的零会话参数。如果接收到此类指令的节点提供了所需的配置文件,则它将发送指令会话_ACCEPT。如果未提供配置文件,应答指令SESSION_INIT将发送,其中SESSION_ID和REQ_ID字段的值也为0。实际上,这样的会话初始化指令并不建立连接,而是具有信息意义。零会话的数据交换可以发生,而不考虑其本身。

There are the following restrictions at working without connection:

无连接工作时有以下限制:

o The chain must be sent, only if it is completely located in one segment of the transport layer. o It is impossible to request an allocation of memory and to create objects (except instruction MVRUN). This objects is not adhered to the definite job and is not automatically release the resources at the end of the job, which has created them. o Parameters of functions and the returned values must not contain the pointers, because the node can be reloaded at any moment. It will result that the pointers will become invalid or will address other objects.

o 只有当链完全位于传输层的一段时,才必须发送链。o不可能请求内存分配和创建对象(指令MVRUN除外)。此对象不符合特定作业,也不会在作业结束时自动释放资源,因为作业已经创建了这些资源。o函数的参数和返回值不能包含指针,因为节点可以随时重新加载。这将导致指针无效或将寻址其他对象。

The protocol cannot check those conditions. Their realization lays on VM wholly.

协议无法检查这些条件。它们的实现完全依赖于虚拟机。

The work without establishment of session connection may be used in the following systems:

未建立会话连接的工作可用于以下系统:

o In simple devices, which do not have the operational system; o On servers which are executed a plenty of requests (for work without connection of resources is used less); o In systems requiring the fast response to rare requests (if keeping of connection is inexpedient).

o 在没有操作系统的简单设备中;o在执行大量请求的服务器上(对于不连接资源的工作,使用较少);o在需要快速响应罕见请求的系统中(如果保持连接不方便)。

6 Instructions of Exchange between VM

6虚拟机之间的交换说明

The instructions intended for an exchange between VM uses values OPCODE in range 128 - 223. Depending on length of the operands field, several formats of the instruction may be defined for one OPCODE. The complete instruction format is defined by aggregate of the values of fields OPCODE and OPR_LENGTH.

用于VM之间交换的指令使用范围为128-223的值操作码。根据操作数字段的长度,可以为一个操作码定义多种指令格式。完整的指令格式由OPCODE和OPR_长度字段值的总和定义。

The instruction has the field REQ_ID, if in the instruction header flag ASK = 1. REQ_ID is used for the response identification. The value of this field is specifies by VM. The response is formed by VM, too. The protocol does not check the response and does not analyze the value of the field REQ_ID for the instructions of exchange between VM. One of the instructions RSP, DATA, RETURN, ADDRESS, OBJECT or PROC_NUM is used for sending of the response. The instructions of response have ASK = 1 and the value taken from the confirmed instruction is record in REQ_ID. The instructions of response do not require the response.

如果指令头标志ASK=1,则指令具有字段REQ_ID。REQ_ID用于响应标识。此字段的值由VM指定。响应也是由VM形成的。协议不检查响应,也不分析VM之间交换指令的字段REQ_ID值。RSP、DATA、RETURN、ADDRESS、OBJECT或PROC_NUM指令之一用于发送响应。响应指令的ASK=1,从确认指令中获取的值记录在REQ_ID中。响应指令不需要响应。

The instructions of exchange between VM may be sent through UDP at observance of the following conditions:

在遵守以下条件的情况下,VM之间的交换指令可以通过UDP发送:

o ASK = 0; o The instruction is located in one segment UDP;

o ASK=0;o指令位于一段UDP中;

The timeouts and the repeated sending are not used at UMSP layer for instructions of exchange between VM. It is explained to, that the time of sending instructions with low priority may be very large because of the output queues. Therefore, the VM must make a decision on timeout, as only VM has the complete information on type of the transmitted data. Besides, the transport layer protocol must use the timeouts.

在UMSP层,超时和重复发送不用于VM之间的交换指令。要说明的是,由于输出队列的原因,发送低优先级指令的时间可能非常长。所以,虚拟机必须对超时做出决定,因为只有虚拟机拥有关于传输数据类型的完整信息。此外,传输层协议必须使用超时。

A few VM may be connected to the protocol on the node. VM may simultaneously execute several jobs. Each job may work in its address space. The protocol determines VM and job, which the received instruction must transfer to, on field SESSION_ID value.

一些VM可能连接到节点上的协议。VM可以同时执行多个作业。每个作业都可以在其地址空间中工作。该协议确定接收到的指令必须传输到的VM和作业的现场会话ID值。

The local memory address is located in the instruction in field of length 2/4/8 octets. If memory address length in the instruction is not equal to memory address length defined for the node, the following variants are possible:

本地内存地址位于长度为2/4/8八位字节的指令输入字段中。如果指令中的内存地址长度不等于为节点定义的内存地址长度,则可能出现以下变体:

o If memory address length is set in 24 bits for the node, the address is writes in the end of 4 - octets field. The 0 value sets in an initial (zero) octet.

o 如果节点的内存地址长度设置为24位,则地址写入4位字节字段的末尾。0值设置为初始(零)八位字节。

o If the instruction format assumes the memory address length not less than 4 octets, 2-octet address is located in the last octets. The first 2 octets must set to zero. o If instruction is the member of a chain and it has the less length of the memory address, than it is defined for the node - it is considered, that the base-displacement addressing is used. If the value of the memory base is not assigned for the chain - instruction is erroneous. o If the instruction is not the member of a chain and has the length of memory address less, than it is defined for the node, it is considered, that the abbreviated address is used. The complete address length must be received by padding in front of it the necessary number of zero-value octets. o In all other cases, the instruction is erroneous.

o 如果指令格式假定内存地址长度不小于4个八位字节,则2个八位字节地址位于最后一个八位字节中。前两个八位字节必须设置为零。o如果指令是链的成员,并且它的内存地址长度小于为节点定义的长度,则认为使用基址置换寻址。如果没有为链式指令分配内存基的值,则该指令是错误的。o如果指令不是链的成员,并且内存地址的长度小于为节点定义的长度,则认为使用缩写地址。完整的地址长度必须通过在其前面填充必要数量的零值八位字节来接收。o在所有其他情况下,说明是错误的。

Complete 128-bit memory address writes in operands in the 16-octets field. The reason of using of the complete address is that the additional information, using by the memory control subsystem in the node, may contain in its field FREE (see section 2.1). If the FREE of the complete address is set to zero, it is recommended to use local address in operands.

在16个八位字节字段的操作数中完成128位内存地址写入。使用完整地址的原因是,节点中的内存控制子系统使用的附加信息可能包含在其自由字段中(参见第2.1节)。如果完整地址的空闲地址设置为零,建议在操作数中使用本地地址。

Operands field has a length, which is an integral number of 32 bits. The alignment is making by padding, if necessary, of the zero-value octets at the end of the field.

操作数字段的长度为32位整数。如有必要,对齐是通过填充字段末尾的零值八位字节来实现的。

Header fields of the instructions not defined in the formats description are used according to the description from section 3.

格式说明中未定义的指令标题字段根据第3节的说明使用。

The instruction of the transfer control JUMP, CALL, CALL_BNUM and CALL_BNAME may contain the information about VM of the sender. If VM type and VM version of the sender are contains in the instruction, the call parameters are formed in a format VM of the sender. Else, the call parameters have format defined by VM of the addressee. The code is always connected with of specific VM.

传输控制跳转、调用、调用\u BNUM和调用\u BNAME的指令可能包含发送方VM的相关信息。如果指令中包含发送方的VM类型和VM版本,则调用参数的格式为发送方的VM。否则,调用参数的格式由收件人的VM定义。代码始终与特定VM的类型相连接。

All instructions of the protocol work with binary data and do not provide operations of formats transformation.

协议的所有指令都使用二进制数据,不提供格式转换操作。

6.1 Data Reading/Writing Instructions
6.1 数据读/写指令
6.1.1 REQ_DATA
6.1.1 请求数据

The instruction "To request a data" (REQ_DATA) is used for the data request from the remote node. Two instructions REQ_DATA with length of the length field 2 and 4 octets are defined. These instructions have the following values of fields:

指令“请求数据”(REQ_data)用于远程节点的数据请求。定义了长度字段为2和4个八位字节的两条指令REQ_数据。这些说明具有以下字段值:

OPCODE = 130/131 ; For length of the length field of 2/4 octets. OPR_LENGTH = 1/2/3/5 ; Depends on address length. Operands: 2/4 octets: The length field. The number of the required data in octets. 2/4/8/16 octets: The memory address of the required data.

操作码=130/131;用于2/4八位字节长度字段的长度。OPR_长度=1/2/3/5;取决于地址长度。操作数:2/4八位字节:长度字段。所需数据的数量(以八位字节为单位)。2/4/8/16八位字节:所需数据的内存地址。

The instruction DATA, containing required data, is sent in reply to it. If the data cannot be sent, the instruction RSP with the non-zero basic return code, comes back.

包含所需数据的指令数据将作为响应发送。如果无法发送数据,则返回带有非零基本返回码的指令RSP。

6.1.2 DATA
6.1.2 数据

The instruction "The data" (DATA) is sent in reply to the instruction REQ_DATA and OBJ_REQ_DATA. The instruction has the following values of fields:

发送指令“数据”(data)以响应指令REQ_数据和OBJ_REQ_数据。该指令具有以下字段值:

OPCODE = 132 OPR_LENGTH = 0 - 65535 ; Depends on the immediate data length of the operand. Operands: 0 - 262140 octets: Immediate data. If OPR_LENGTH = 0, this field are absent. Extension headers: _DATA - Contains immediate data. If OPR_LENGTH <> 0, this header are absent.

操作码=132操作单元长度=0-65535;取决于操作数的立即数数据长度。操作数:0-262140个八位字节:立即数。如果OPR_LENGTH=0,则此字段不存在。扩展标题:\ u数据-包含即时数据。如果OPR_长度<>0,则不存在此标题。

The extension header is used, if the data are more then an maximum operands field size. The data must not be sent simultaneously in operands and in the extension header. To make the length of data multiple of 4 octets, 1 - 3 zero-value octets are padded in the end of a field.

如果数据大于最大操作数字段大小,则使用扩展标头。数据不能在操作数和扩展标头中同时发送。为了使数据长度为4个八位字节的倍数,在字段末尾填充1-3个零值八位字节。

6.1.3 WRITE
6.1.3 写

The instruction "To write the data" (WRITE) is used for data writing on the remote node. The instruction has the following values of fields:

“写入数据”(write)指令用于远程节点上的数据写入。该指令具有以下字段值:

OPCODE = 133/134/135/136 ; For memory address length of 2/4/8/16 octets. OPR_LENGTH = 1 - 65535 ; Depends on length of the immediate data. Operands: 2/4/8/16 octets: The memory address for writing the data. 0 - 262136 octets: Immediate data for write.

操作码=133/134/135/136;内存地址长度为2/4/8/16八位字节。OPR_长度=1-65535;取决于即时数据的长度。操作数:2/4/8/16八位字节:用于写入数据的内存地址。0-262136个八位字节:用于写入的即时数据。

Extension headers: _DATA - Contains immediate data. This header is present only, if the data does not contain in operands.

扩展标题:\ u数据-包含即时数据。仅当数据不包含在操作数中时,此标头才存在。

At address length of 2 octets the data length must be 2 octets. In all other cases, address length must be not less than 4 octets and data length must be multiple of 4 octets. The data must not be sent simultaneously in operands and in the extension header.

地址长度为2个八位字节时,数据长度必须为2个八位字节。在所有其他情况下,地址长度必须不小于4个八位字节,数据长度必须是4个八位字节的倍数。数据不能在操作数和扩展标头中同时发送。

The instruction RSP is sent in reply to the instruction WRITE. The zero basic return code defines normal executing.

指令RSP被发送以响应指令写入。零基本返回码定义正常执行。

6.1.4 WRITE_EXT
6.1.4 写下

The instruction "The extension writing of data" (WRITE_EXT) is used for the data writing on the remote node. Length of the data may be 1 - 262132 octets with a step 1 octet. The instruction has the following values of fields:

指令“数据扩展写入”(WRITE_EXT)用于远程节点上的数据写入。数据的长度可以是1-262132个八位字节,其中一个是步长1八位字节。该指令具有以下字段值:

OPCODE = 137 OPR_LENGTH = 3 - 65535 ; Depends on length of the immediate data. Operands: 1 octets: Always set to zero. 3 octets: The number of the write data in octets. The zero-value is not available. 4 - 262132 octets: Immediate data for write. The data length must be multiple of 4 octets. 4/8/16 octets: The memory address for writing the data.

操作码=137操作单元长度=3-65535;取决于即时数据的长度。操作数:1个八位字节:始终设置为零。3个八位字节:写入数据的八位字节数。零值不可用。4-262132个八位字节:用于写入的即时数据。数据长度必须是4个八位字节的倍数。4/8/16八位字节:用于写入数据的内存地址。

To make the immediate data multiple of four octets, the data is padded with 1 - 3 zero-value octets at the end of a field.

为了使即时数据乘以四个八位字节,在字段的末尾用1-3个零值八位字节填充数据。

The instruction RSP is sent in reply to the instruction WRITE_EXT. The zero basic return code defines normal executing.

指令RSP被发送以响应指令WRITE_EXT。零基本返回码定义正常执行。

6.2 Comparison Instructions
6.2 比较说明
6.2.1 CMP
6.2.1 化学机械抛光

The instruction "To compare" (CMP) is used for binary data comparison. It has the following values of fields:

指令“比较”(CMP)用于二进制数据比较。它具有以下字段值:

OPCODE = 138/139/140/141 ; For the address length of 2/4/8/16 octets. OPR_LENGTH = 1 - 65535 ; Depends on length of the immediate data.

操作码=138/139/140/141;地址长度为2/4/8/16八位字节。OPR_长度=1-65535;取决于即时数据的长度。

Operands: 2/4/8/16 octets: The memory address for compared data. 2 - 262136 octets: The immediate data for the comparison.

操作数:2/4/8/16八位字节:比较数据的内存地址。2-262136个八位字节:用于比较的即时数据。

At the address length of 2 octets the data length must be 2 octets. In all other cases length of the address must not be less than 4 octets and the data length is multiple to four octets.

地址长度为2个八位字节时,数据长度必须为2个八位字节。在所有其他情况下,地址长度不得小于4个八位字节,数据长度为4个八位字节的倍数。

6.2.2 CMP_EXT
6.2.2 CMP_分机

The instruction "The extension compare" (CMP_EXT) is used for binary data comparison. Length of the data may be 1 - 262132 octets with a step 1 octet. The instruction has the following values of fields:

指令“扩展比较”(CMP_EXT)用于二进制数据比较。数据的长度可以是1-262132个八位字节,其中一个是步长1八位字节。该指令具有以下字段值:

OPCODE = 142 OPR_LENGTH = 3 - 65535 ; Depends on length of the immediate data and the address. Operands: 1 octet: Always set to 0. 3 octets: The length of compared data in octets. The zero-value is not available. 4 - 262132 octets: The immediate data for the comparison. The length of field is multiple of 4 octets. 4/8/16 octets: The memory address of compared data.

操作码=142操作单元长度=3-65535;取决于即时数据的长度和地址。操作数:1个八位字节:始终设置为0。3个八位字节:以八位字节为单位的比较数据长度。零值不可用。4-262132个八位字节:用于比较的即时数据。字段长度是4个八位字节的倍数。4/8/16八位字节:比较数据的内存地址。

To make the immediate data multiple of four octets, the data is padded with 1 - 3 zero-value octets at the end of a field.

为了使即时数据乘以四个八位字节,在字段的末尾用1-3个零值八位字节填充数据。

6.2.3 Response to Comparison Instructions
6.2.3 对比较说明的答复

The instruction RSP is sent in reply to the instruction CMP, CMP_EXT and OBJ_CMP (see below). If the comparison was executed, the basic return code is equal to zero. The additional return code is equal to -1, if the data at the address memories are less then the data from the operand; 0, if they are equal; and 1, if they are more. If the comparison cannot be executed, the basic return code of the instruction RSP must be non-zero.

发送指令RSP是为了响应指令CMP、CMP_EXT和OBJ_CMP(见下文)。如果执行了比较,则基本返回代码等于零。如果地址存储器中的数据小于操作数中的数据,则附加返回码等于-1;0,如果它们相等;1,如果他们更多。如果无法执行比较,则指令RSP的基本返回码必须为非零。

6.3 Control Transfer Instructions
6.3 控制转移指令
6.3.1 JUMP, CALL
6.3.1 跳,呼叫

The "Unconditional jump" (JUMP) and "To Call-subroutine" (CALL)_ instructions have an equal format and differ only by OPCODE. These instructions have the following values of fields:

“无条件跳转”(jump)和“调用子例程”(Call)指令的格式相同,仅因操作码不同而不同。这些说明具有以下字段值:

OPCODE = 143/144 ; Correspondingly for the JUMP not containing and containing the information about VM.

操作码=143/144;对应的跳转不包含和包含关于VM的信息。

145/146 ; Correspondingly the CALL not containing and containing the information about VM. OPR_LENGTH = 2 - 65535 ; Depends on inclusion of the information about VM, address length and parameters length. Operands: 2 octets: The VM type of the sender. If OPCODE=143/145 this field is absent. 2 octets: The VM version of the sender. If OPCODE=143/145 this field is absent. 4/8/16 octets: The address of memory, where is necessary to transfer control. 2 octets: The number of 32 bit words in the call parameters field. 4 - 262134 octets: The immediate data are the parameters of a call.

145/146 ; 相应地,调用不包含和包含关于VM的信息。OPR_长度=2-65535;取决于是否包含有关VM、地址长度和参数长度的信息。操作数:2个八位字节:发送方的VM类型。如果操作码=143/145,则此字段不存在。2个八位字节:发送方的VM版本。如果操作码=143/145,则此字段不存在。4/8/16八位字节:存储器的地址,其中需要传输控制。2个八位字节:调用参数字段中的32位字数。4-262134个八位字节:即时数据是调用的参数。

On the reception side the processing of the instructions of a control transfer occurs as follows:

在接收侧,控制传输指令的处理如下:

o The memory address is checked. If it has erroneous value, the negative response RSP is sent. At this stage, the correctness of parameters of a call may be also checked up. o If the memory address and the parameters of a call have correct value, the positive response RSP is sent for the instruction JUMP. The transmitting side considers the instruction JUMP executed after receiving response. o For response of an execution of the instruction CALL the instruction RETURN is sent. The instruction RETURN may contain the returned values. If there is an exception condition in a thread of control created by the CALL instruction, the instruction RSP with a non-zero basic return code is sent instead of RETURN.

o 检查内存地址。如果其值错误,则发送否定响应RSP。在此阶段,还可以检查调用参数的正确性。o如果内存地址和调用参数的值正确,则为指令跳转发送肯定响应RSP。发送端考虑在接收到响应后执行的指令跳转。o对于指令调用执行的响应,发送指令返回。指令返回可能包含返回的值。如果由CALL指令创建的控制线程中存在异常情况,则发送具有非零基本返回码的指令RSP,而不是返回。

6.3.2 RETURN
6.3.2 回来

The instruction "Return of control" (RETURN) is used at return of control from the instructions CALL, MVRUN, CALL_BNUM and CALL_BNAME (see below). Those instructions have the following values of fields:

指令“返回控制”(Return)用于从指令CALL、MVRUN、callbnum和callbname(见下文)返回控制。这些指令具有以下字段值:

OPCODE = 147 OPR_LENGTH = 0 - 65535 ; Depends on length of the immediate data. Operands: 0 - 262140 octets: Immediate data returned from the subroutine.

操作码=147操作单元长度=0-65535;取决于即时数据的长度。操作数:0-262140个八位字节:从子例程返回的即时数据。

If it is not required to send returned value, the instruction RETURN does not contain operands. The data format coincides with the instruction, for which the response (format VM of the sender or addressee) will be sent.

如果不需要发送返回值,则指令返回不包含操作数。数据格式与指令一致,响应(发送方或收件人的VM格式)将被发送。

6.4 Memory Control Instructions
6.4 内存控制指令

UMSP gives means for division of memory for a code and for the data. The protocol does not make checks of correctness of operations with memory. The code and the data use common address space. The control of memory is completely realized by VM.

UMSP提供了代码和数据的内存划分方法。该协议不使用内存检查操作的正确性。代码和数据使用公共地址空间。内存控制完全由虚拟机实现。

6.4.1 MEM_ALLOC
6.4.1 MEM_ALLOC

The instruction "To allocate a memory for the data" (MEM_ALLOC) is used for request of the allocation of memory under the data. The instruction has the following values of fields:

指令“为数据分配内存”(MEM_ALLOC)用于请求分配数据下的内存。该指令具有以下字段值:

OPCODE = 148 OPR_LENGTH = 1 Operands: 4 octets: The size of required memory in bytes.

操作码=148 OPR_长度=1个操作数:4个八位字节:所需内存的大小(以字节为单位)。

For the positive response on the instruction MEM_ALLOC, the instruction ADDRESS, for negative - RSP with the non-zero basic return code is sent. The received address can be used by the protocol in the instructions of reading/writing, comparison and synchronization.

对于指令MEM_ALLOC上的肯定响应,发送带有非零基本返回码的否定RSP的指令地址。协议可以在读/写、比较和同步指令中使用接收到的地址。

6.4.2 MVCODE
6.4.2 MVCODE

The instruction "To move the code" (MVCODE) is used for moving of the executable code from one node on another. The instruction has the following values of fields:

指令“移动代码”(MVCODE)用于将可执行代码从一个节点移动到另一个节点。该指令具有以下字段值:

OPCODE = 149 OPR_LENGTH = 1 - 65535 ; Depends on length of the code field. Operands: 2 octets: The VM type of addressee. 2 octets: The VM version of addressee. 0-262136 octets: contains the executable code. The extension headers: _DATA - contains the executable code. This header is present only, if the code does not contain in operands.

操作码=149操作单元长度=1-65535;取决于代码字段的长度。操作数:2个八位字节:收件人的VM类型。2个八位组:收件人的虚拟机版本。0-262136八位字节:包含可执行代码。扩展标题:\ u DATA-包含可执行代码。仅当代码不包含在操作数中时,此标头才存在。

The code is always connected with VM of the definite type. The code field is always transparent for the protocol. It is formed by the VM of sender and must contain all the information necessary VM of the receiver. The code must not simultaneously be sent in operands and in the extension header.

代码始终与确定类型的VM连接。代码字段对于协议始终是透明的。它由发送方的VM组成,必须包含接收方VM所需的所有信息。不能在操作数和扩展标头中同时发送代码。

For the positive response on the instruction MVCODE, the instruction ADDRESS, for negative - RSP with the non-zero basic return code is used. The code transferred on the instruction MVCODE, may be executed by the instruction JUMP or CALL.

对于指令MVCODE上的肯定响应,使用指令地址,对于带有非零基本返回码的否定RSP。指令MVCODE上传输的代码可以通过指令跳转或调用来执行。

6.4.3 ADDRESS
6.4.3 住址

The instruction "The memory address" (ADDRESS) is used for the positive response on the instruction MEM_ALLOC and MVCODE. ADDRESS has the following values of fields:

指令“内存地址”(address)用于指令MEM_ALLOC和MVCODE上的肯定响应。地址具有以下字段值:

OPCODE = 150 OPR_LENGTH = 1/2/4; Depends on length of the address. Operands: 4/8/16 octets: The address of the allocated memory.

操作码=150操作码长度=1/2/4;取决于地址的长度。操作数:4/8/16八位字节:分配内存的地址。

For the instruction, MEM_ALLOC the address specifies first byte of the allocated data area. For the instruction MVCODE the contents of the address is defined VM, by which the code is connected.

对于指令,MEM_ALLOC地址指定分配数据区域的第一个字节。对于指令MVCODE,地址的内容定义为VM,通过VM连接代码。

6.4.4 FREE
6.4.4 自由的

The memory allocated with the instructions MEM_ALLOC and MVCODE, must be explicitly release. For this purpose, the instruction "To free the memory" (FREE) is used. It has the following values of fields:

分配有指令MEM_ALLOC和MVCODE的内存必须显式释放。为此,使用指令“释放内存”(free)。它具有以下字段值:

OPCODE = 151 OPR_LENGTH = 1/2/4; Depends on length of the address Operands: 4/8/16 octets: the address of free memory.

操作码=151操作码长度=1/2/4;取决于地址操作数的长度:4/8/16八位字节:可用内存的地址。

VM must free this memory automatically at end of the task on the node.

VM必须在节点上的任务结束时自动释放此内存。

6.4.5 MVRUN
6.4.5 MVRUN

The instruction "To move and run" (MVRUN) is used for simultaneous move of a code and its execution. The instruction has the following values of fields:

指令“tomove and run”(MVRUN)用于同时移动代码及其执行。该指令具有以下字段值:

OPCODE = 152 OPR_LENGTH = 1 - 65535 ; Depends on length of the code field. Operands: 2 octets: The addressee VM type. 2 octets: The addressee VM version. 4 - 262136 octets: Contains an executable code.

操作码=152操作单元长度=1-65535;取决于代码字段的长度。操作数:2个八位字节:收件人VM类型。2个八位字节:收件人VM版本。4-262136八位字节:包含一个可执行代码。

The extension headers: _DATA - Contains an executable code. This header is present only, if the code does not contain in operands.

扩展标题:\ u DATA-包含可执行代码。仅当代码不包含在操作数中时,此标头才存在。

The executable code is the transparent buffer with the binary data for the protocol. The format of this field is defined by the VM and it must contain all the information necessary for the loader VM of the addressee, including parameters of a call.

可执行代码是协议的二进制数据的透明缓冲区。此字段的格式由VM定义,它必须包含收件人的loader VM所需的所有信息,包括调用的参数。

The code must not simultaneously be sent in operands and in the extension header.

不能在操作数和扩展标头中同时发送代码。

The answer to the instruction MVRUN is formed similarly to instruction CALL. It is not necessary to release memory allocated for a code by this instruction. The memory must deallocate the VM.

指令MVRUN的应答形式类似于指令调用。无需释放此指令为代码分配的内存。内存必须释放VM。

6.5 Other Instructions
6.5 其他指示
6.5.1 SYN
6.5.1 SYN

The instruction "To Synchronize" (SYN) is used for the single message about the data change. The instruction has the following values of fields:

指令“同步”(SYN)用于有关数据更改的单个消息。该指令具有以下字段值:

OPCODE = 153/154/155 ; For length of the address 4/8/16 octets. OPR_LENGTH = 2 - 65535; Depends on length of the data Operands: 4/8/16 octets: The memory address of the tracking data. 2 - 131068 octets: The initial data. Length of the data must be multiple of two octets. 2 - 131068 octets: A mask for comparison. Length of this field is equal to length of a field of the initial data.

操作码=153/154/155;地址长度为4/8/16八位字节。OPR_长度=2-65535;取决于数据操作数的长度:4/8/16八位字节:跟踪数据的内存地址。2-131068八位字节:初始数据。数据长度必须是两个八位字节的倍数。2-131068八位字节:用于比较的掩码。此字段的长度等于初始数据字段的长度。

The tracking data is set by the memory address in the first operand. These data are originally compared to the initial data value from the second operand. If the values do not coincide, it is considered, that the data have changed. The third operand allows setting a mask for comparison. Set to one bits of the mask specifies bits in the data, which change must be traced.

跟踪数据由第一个操作数中的内存地址设置。这些数据最初与第二个操作数的初始数据值进行比较。如果数值不一致,则认为数据已更改。第三个操作数允许设置用于比较的掩码。设置为掩码的一位指定数据中的位,必须跟踪更改。

The following variants of the answer are probable on the instruction:

说明中可能有以下答案变体:

o If the address of local memory is incorrect, the instruction RSP with the non-zero basic return code is sent for the response. o If the data do not change, in the response nothing is sent. o If the data have changed, the instruction DATA with new value of the traced data is sent.

o 如果本地内存地址不正确,则会发送带有非零基本返回码的指令RSP以进行响应。o如果数据不变,则响应中不发送任何内容。o如果数据已更改,则发送具有跟踪数据新值的指令数据。

6.5.2 NOP
6.5.2 不

The instruction "No operation" (NOP) has the following values of fields:

指令“无操作”(NOP)具有以下字段值:

OPCODE = 156 OPR_LENGTH = 0 - 65535 Operands: 0 - 262140 octets: Encapsulated data. Extension headers: Any Extension headers.

操作码=156操作长度=0-65535个操作数:0-262140个八位字节:封装数据。扩展标题:任何扩展标题。

The instruction NOP is intended for the decision of the following tasks:

说明NOP旨在决定以下任务:

o Send the control extension headers, when there are no other instructions for sending in a session o Encapsulate the fragmented instructions and transactions with the established flag of special processing (see section 7).

o 当会话中没有其他发送指令时,发送控制扩展头o使用已建立的特殊处理标志封装分段指令和事务(参见第7节)。

6.6 Work with Objects
6.6 处理对象

The protocol has a set of the instructions being expansion of the protocol RPC [6]. As against RPC, UMSP allows immediately to address memory on remote nodes and to send the pointers in parameters and returned values.

该协议有一组指令是协议RPC的扩展[6]。与RPC不同,UMSP允许立即寻址远程节点上的内存,并发送参数和返回值中的指针。

The UMSP object is identified by the 4-octet number. The values are divided into the following ranges:

UMSP对象由4个八位组编号标识。这些值分为以下范围:

        I -> %x00000000 - 1FFFFFFF   are assigned for standard objects
       II -> %x20000000 - 3FFFFFFF   are assigned for users objects
      III -> %x30000000 - 4FFFFFFF   free
       IV -> %x50000000 - DFFFFFFF   transient
        V -> %xE0000000 - FFFFFFFF   reserved
        
        I -> %x00000000 - 1FFFFFFF   are assigned for standard objects
       II -> %x20000000 - 3FFFFFFF   are assigned for users objects
      III -> %x30000000 - 4FFFFFFF   free
       IV -> %x50000000 - DFFFFFFF   transient
        V -> %xE0000000 - FFFFFFFF   reserved
        

The objects from a range I must be definite, as standard, and the specifications of their interfaces must be published. The protocol does not suppose the private or not described interfaces of standard objects.

作为标准,范围I中的对象必须是明确的,并且必须发布其接口的规范。协议不假设标准对象的私有或未描述的接口。

The objects from a range II must be registered, but the specifications of their interfaces may be optional published. These numbers are applied in cases, when it is required to exclude the probable conflict of systems of the different manufacturers.

范围II中的对象必须注册,但其接口的规范可能是可选的。这些数字适用于需要排除不同制造商系统可能冲突的情况。

The range III can be used freely. The objects accessible on these numbers may be created statically or dynamically. These objects can have any interfaces.

量程III可自由使用。这些编号上可访问的对象可以静态或动态创建。这些对象可以有任何接口。

All objects, concerning ranges I, II and III, is common for all jobs on the node, including zero-session. Their interfaces are accessible to all tasks on the node, depending on parameters of authentication.

关于范围I、II和III的所有对象对于节点上的所有作业都是通用的,包括零会话。它们的接口可供节点上的所有任务访问,具体取决于身份验证参数。

The range IV is intended for objects created dynamically within the framework of one job. These objects are the isolated associative memory of the job. The access to these objects must be granted only for one job. The zero-session has no access to these objects.

范围IV用于在一个作业的框架内动态创建的对象。这些对象是作业的独立关联内存。必须仅为一个作业授予对这些对象的访问权限。zero会话无法访问这些对象。

The protocol grants the access to the data of object, as to the continuous segment of memory. The memory of objects may be overlapping or no overlapping with flat local memory of the node. The offset field is used in the instructions of work with the data of object. The offset rules writing are similar to the local address rules writing.

该协议授予对对象数据的访问权,如对连续内存段的访问权。对象的存储器可以与节点的平坦本地存储器重叠或不重叠。偏移字段用于对象数据的工作说明中。偏移量规则写入与本地地址规则写入类似。

The address memory length of the node, definite for the UMSP protocol, limits the maximal data size of one object. The instructions definite in the given section, allow to work with associative memory with the theoretical limiting size on one node - 2^96 (7,9 * 10^28) Byte.

节点的地址内存长度(根据UMSP协议确定)限制了一个对象的最大数据大小。给定部分中明确的指令允许在一个节点上使用理论限制大小为2^96(7,9*10^28)字节的联想存储器。

In addition to the number, the object has the version, 2 octets length, and realization, 2 octets length. The protocol requires obligatory compatibility from bottom-up for all realizations of one version of object. The publication of new realization of standard object may contain only added interfaces.

除了数字之外,对象还有版本(2个八位字节长度)和实现(2个八位字节长度)。该协议要求对一个版本的对象的所有实现从下到上强制兼容。标准对象的新实现的发布可能只包含添加的接口。

If for the sender of the instruction the version and/or the realization of object do not play any role or is unknown, the instruction may contain zero fields of the version and realization of object or only zero field of realization. The zero field of the version and non-zero field of realization are not allowed.

如果对于指令的发送者而言,对象的版本和/或实现不起任何作用或未知,则指令可能包含对象的版本和实现的零字段或仅包含零实现字段。版本的零字段和实现的非零字段是不允许的。

6.6.1 Reading/Writing of the Objects Data
6.6.1 读取/写入对象数据
6.6.1.1 OBJ_REQ_DATA
6.6.1.1 对象请求数据

The instruction "To request the data of object" (OBJ_REQ_DATA) is used for request of data of the Object from the remote node. The instruction has the following values of fields:

指令“请求对象数据”(OBJ_REQ_data)用于从远程节点请求对象数据。该指令具有以下字段值:

OPCODE = 192/193 ; For length of the field of length 2/4 octets. OPR_LENGTH = 3/4/5 ; Depends on length of the offset field. Operands: 4 octets: The number of object. 2 octets: The version of object. 2 octets: The realization of object. 2/4 octets: The length of the required data in octets. 2/4/8 octets: Offset required data from the beginning of object in bytes.

操作码=192/193;用于长度为2/4八位字节的字段长度。OPR_长度=3/4/5;取决于偏移字段的长度。操作数:4个八位字节:对象的数目。2个八位组:对象的版本。2个八位字节:对象的实现。2/4八位字节:所需数据的长度(以八位字节为单位)。2/4/8八位字节:以字节为单位从对象开头偏移所需数据。

At length of the length field of 2 octets the offset length must be 2 octets. In all other cases, length of the length field and offset length must be not less than 4 octets.

在长度字段长度为2个八位字节时,偏移长度必须为2个八位字节。在所有其他情况下,长度字段的长度和偏移量长度不得小于4个八位字节。

The instruction DATA, containing the required data, is sent for reply to instruction OBJ_REQ_DATA. If the data cannot be transmitted, the instruction RSP from the non-zero basic return code comes back.

包含所需数据的指令数据被发送用于回复指令OBJ_REQ_数据。如果数据无法传输,则来自非零基本返回码的指令RSP返回。

6.6.1.2 OBJ_WRITE
6.6.1.2 OBJ_书写

The instruction "To write the data in object" (OBJ_WRITE) is used for write of the data in object. The instruction has the following values of fields:

“在对象中写入数据”指令(OBJ_write)用于在对象中写入数据。该指令具有以下字段值:

OPCODE = 194/195/196 ; For length of the offset field of 2/4/8 octets. OPR_LENGTH = 3 - 65535 ; Depends on the data length. Operands: 4 octets: The number of object. 2 octets: The version of object. 2 octets: The realization of object. 2/4/8 octets: The offset in object for the data writes. 2 - 262128 octets: The immediate data for write. The extension headers: _DATA - Contains immediate data for write. This header is present, only if the data is not present in operands.

操作码=194/195/196;用于偏移字段的长度为2/4/8八位字节。OPR_长度=3-65535;取决于数据长度。操作数:4个八位字节:对象的数目。2个八位组:对象的版本。2个八位字节:对象的实现。2/4/8八位字节:对象中用于数据写入的偏移量。2-262128个八位字节:用于写入的即时数据。扩展标题:_DATA-包含用于写入的即时数据。仅当操作数中不存在数据时,此标头才存在。

At length of the field-offset of 2 octets, length of the data must be 2 octets. In all other cases, the offset length must be not less than 4 octets and the data length is multiple to four. The data must not simultaneously be sent in operands and in the extension header.

字段偏移量长度为2个八位字节时,数据长度必须为2个八位字节。在所有其他情况下,偏移长度必须不小于4个八位字节,数据长度为4的倍数。数据不能在操作数和扩展标头中同时发送。

The instruction RSP is sent in reply to the instructions OBJ_WRITE. The zero basic return code defines the normal execution.

发送指令RSP是为了响应OBJ_WRITE指令。零基本返回代码定义正常执行。

6.6.1.3 OBJ_WRITE_EXT
6.6.1.3 OBJ_WRITE_EXT

The instruction "The extension writing of the data in object" (OBJ_WRITE_EXT) is used for write of the data in object. Length of the data may be 1 - 262132 octets with the step 1 octet. The instruction has the following values of fields:

指令“对象中数据的扩展写入”(OBJ_WRITE_EXT)用于对象中数据的写入。数据的长度可以是1-262132个八位字节,步骤1个八位字节。该指令具有以下字段值:

OPCODE = 197 OPR_LENGTH = 3 - 65535; Depends on the data length and the address length. Operands: 4 octets: The number of object. 2 octets: The version of object. 2 octets: The realization of object. 1 octet: Always set to 0. 3 octets: Length written down data in octets. The zero-value is incorrect. 4 - 262124 octets: The immediate data for write. Length of the data is multiple of 4 octets. 2/4/8 octets: Offset in object for the data write.

操作码=197操作单元长度=3-65535;取决于数据长度和地址长度。操作数:4个八位字节:对象的数目。2个八位组:对象的版本。2个八位字节:对象的实现。1八位字节:始终设置为0。3个八位字节:以八位字节为单位写下的数据长度。零值不正确。4-262124个八位字节:用于写入的即时数据。数据长度是4个八位字节的倍数。2/4/8八位字节:用于数据写入的对象中的偏移量。

If the length of the written down data is not multiple of four octets, the data is padded with 1 - 3 zero octets at the end.

如果写下的数据长度不是四个八位字节的倍数,则在数据末尾用1-3个零八位字节填充。

The instruction RSP is sent in reply to the instructions OBJ_WRITE_EXT. The zero basic return code defines the normal execution.

指令RSP被发送以响应指令OBJ_WRITE_EXT。零基本返回码定义正常执行。

6.6.2 Comparison Instructions of the Objects Data
6.6.2 对象数据的比较说明
6.6.2.1 OBJ_DATA_CMP
6.6.2.1 OBJ_数据_CMP

The instruction "To compare the data of object" (OBJ_DATA_CMP) is used for binary comparison of data of the object by the immediate data from operands. The instruction has the following values of fields:

“比较对象数据”指令(OBJ_data_CMP)用于通过操作数的立即数对对象数据进行二进制比较。该指令具有以下字段值:

OPCODE = 198/199/200 ; For length of offset field of 2/4/8 octets. OPR_LENGTH = 3 - 65535; Depends on length of the data. Operands: 4 octets: The number of object. 2 octets: The version of object. 2 octets: The realization of object. 2/4/8 octets: Offset in object for the compared data. 2 - 262128 octets: The immediate data for comparison.

操作码=198/199/200;用于偏移字段长度为2/4/8八位字节。OPR_长度=3-65535;取决于数据的长度。操作数:4个八位字节:对象的数目。2个八位组:对象的版本。2个八位字节:对象的实现。2/4/8八位字节:比较数据的对象偏移量。2-262128个八位字节:用于比较的即时数据。

At length of a field of 2 octets offset the data length must be 2 octets. In all other cases the offset length must be not less than 4 octets and the data length is multiple to 4 octets.

在偏移量为2个八位字节的字段长度处,数据长度必须为2个八位字节。在所有其他情况下,偏移长度不得小于4个八位字节,数据长度为4个八位字节的倍数。

The response to the instruction OBJ_DATA_CMP is described in section 6.2.3.

第6.2.3节描述了对指令OBJ_DATA_CMP的响应。

6.6.2.2 OBJ_DATA_CMP_EXT
6.6.2.2 OBJ_数据_CMP_EXT

The instruction "The extension compare of data of the object" (OBJ_DATA_CMP_EXT) is used for binary comparison of data of the object by the immediate data from operands. Length of the data may be 1 - 262132 octets with a step 1 octet. The instruction has following values of fields:

指令“对象数据的扩展比较”(OBJ_data_CMP_EXT)用于通过操作数的即时数据对对象数据进行二进制比较。数据的长度可以是1-262132个八位字节,其中一个是步长1八位字节。该指令具有以下字段值:

OPCODE = 201 OPR_LENGTH = 5 - 65535 ; Depends on length of the immediate data and the address length. Operands: 4 octets: The number of object. 2 octets: The version of object. 2 octets: The realization of object. 1 octet: Always set to 0. 3 octets: The length of compared data in octets. The zero-value is incorrect. 4 - 262124 octets: The immediate data for the comparison. The length of field is multiple of 4 octets. 4/8 octets: Offset in object for the compared data.

操作码=201操作单元长度=5-65535;取决于即时数据的长度和地址长度。操作数:4个八位字节:对象的数目。2个八位组:对象的版本。2个八位字节:对象的实现。1八位字节:始终设置为0。3个八位字节:以八位字节为单位的比较数据长度。零值不正确。4-262124个八位字节:用于比较的即时数据。字段长度是4个八位字节的倍数。4/8八位字节:比较数据在对象中的偏移量。

To make the immediate data multiple of four octets, the data is padded with 1 - 3 zero-value octets at the end.

为了使即时数据乘以四个八位字节,数据末尾用1-3个零值八位字节填充。

The response to the instruction OBJ_DATA_CMP_EXT is described in section 6.2.3.

第6.2.3节描述了对指令OBJ_DATA_CMP_EXT的响应。

6.6.3 Execution of the Objects Procedures
6.6.3 对象程序的执行
6.6.3.1 CALL_BNUM
6.6.3.1 给我打电话

The instruction "To call the object procedure over number" (CALL_BNUM) transfers control to the object procedure over indication of the number. The instruction has following values of fields:

指令“调用对象过程超过号码”(CALLbnum)将控制权转移到对象过程超过号码指示。该指令具有以下字段值:

OPCODE = 202/203 ; Accordingly for the instructions not containing and containing the information about VM. OPR_LENGTH = 4 - 65535 ; Depends on inclusion of the information about VM and call parameters length.

操作码=202/203;相应地,对于不包含和包含有关VM的信息的说明。OPR_长度=4-65535;取决于是否包含有关VM和调用参数长度的信息。

Operands: 2 octets: The VM type of the sender. If OPCODE=202 this field is absent. 2 octets: The VM version of the sender. If OPCODE=202 this field is absent. 4 octets: The number of object. 2 octets: The version of object. 2 octets: The realization of object. 4 octets: The number of the called procedure. 4 - 262128 octets: Parameters of the call.

操作数:2个八位字节:发送方的VM类型。如果操作码=202,则此字段不存在。2个八位字节:发送方的VM版本。如果操作码=202,则此字段不存在。4个八位字节:对象的数量。2个八位组:对象的版本。2个八位字节:对象的实现。4个八位字节:被调用过程的编号。4-262128个八位字节:调用的参数。

The processing on the reception side is made similarly instructions CALL (see section 6.3.1).

接收端的处理类似于指令调用(见第6.3.1节)。

6.6.3.2 CALL_BNAME
6.6.3.2 呼叫_BNAME

The instruction "To call the object procedure over name" (CALL_BNAME) transfers control to the object procedure over indication of the name. The instruction has following values of fields:

指令“通过名称调用对象过程”(call_BNAME)将控制权转移到对象过程,而不是名称的指示。该指令具有以下字段值:

OPCODE = 204/205 ; Accordingly for the instructions not containing and containing the information about VM. OPR_LENGTH = 3 - 65535 ; Depends on inclusion of the information about VM and call parameters length. Operands: 2 octets: The VM type of the sender. If OPCODE=204 this field is absent. 2 octets: The VM version of the sender. If OPCODE=204 this field is absent. 4 octets: The number of object. 2 octets: The version of object. 2 octets: The realization of object. 4 - 262128 octets: Parameters of the call. The extension header: _NAME - Contains the name of the called procedure.

操作码=204/205;相应地,对于不包含和包含有关VM的信息的说明。OPR_长度=3-65535;取决于是否包含有关VM和调用参数长度的信息。操作数:2个八位字节:发送方的VM类型。如果操作码=204,则此字段不存在。2个八位字节:发送方的VM版本。如果操作码=204,则此字段不存在。4个八位字节:对象的数量。2个八位组:对象的版本。2个八位字节:对象的实现。4-262128个八位字节:调用的参数。扩展标题:_NAME-包含被调用过程的名称。

The processing on the reception side is made similarly instructions CALL (see section 6.3.1).

接收端的处理类似于指令调用(见第6.3.1节)。

The names may have the procedures of the objects belonging to ranges III and IV. The procedures of the objects belonging to ranges I and II must not have a name on the UMSP layer. They must have the number only.

名称可能具有属于范围III和IV的对象的程序。属于范围I和II的对象的程序不得在UMSP层上具有名称。他们必须只有号码。

6.6.3.3 GET_NUM_PROC
6.6.3.3 获取\u NUM\u进程

The instruction "To get the name of object procedure" (GET_NUM_PROC) allows receiving number of the procedure for objects in ranges III and IV over procedure name. The instruction has following values of fields:

指令“获取对象过程的名称”(get_NUM_PROC)允许接收过程名称上方III和IV范围内对象的过程编号。该指令具有以下字段值:

OPCODE = 206 OPR_LENGTH = 2 Operands: 4 octets: The number of object. 2 octets: The version of object. 2 octets: The realization of object. The extension header: _NAME - Contains procedure name.

操作码=206 OPR_长度=2个操作数:4个八位字节:对象数。2个八位组:对象的版本。2个八位字节:对象的实现。扩展标题:\ u NAME-包含过程名称。

For the positive response on the instruction GET_NUM_PROC, the instruction PROC_NUM, for negative - RSP with the non-zero basic return code is sent.

对于指令GET_NUM_PROC上的肯定响应,将发送指令PROC_NUM,用于带有非零基本返回码的负-RSP。

6.6.3.4 PROC_NUM
6.6.3.4 过程数

The instruction "The procedure number" (PROC_NUM) is sent in reply to the instruction GET_NUM_PROC. The instruction PROC_NUM has following values of fields:

发送指令“过程编号”(PROC_NUM)以响应指令GET_NUM_PROC。指令PROC_NUM具有以下字段值:

OPCODE = 207 OPR_LENGTH = 3 Operands: 4 octets: The number of object. 2 octets: The version of object. 2 octets: The realization of object. 4 octets: The number of procedure.

操作码=207 OPR_长度=3个操作数:4个八位字节:对象的数目。2个八位组:对象的版本。2个八位字节:对象的实现。4个八位组:程序的数量。

6.6.4 The Objects Creation
6.6.4 对象创建

The objects from the ranges I and II (standard and assigned for the user) cannot be created on the remote node through the UMSP interface. These objects must be created only through API of the VM. The objects from the ranges III and IV can be created on the remote node by the protocol instructions.

无法通过UMSP接口在远程节点上创建范围I和II(标准和分配给用户)中的对象。这些对象只能通过VM的API创建。范围III和IV中的对象可以通过协议指令在远程节点上创建。

The realization of objects from the ranges I - III (not connected with the certain job) is difficult enough. The reason is that the different jobs can have the different address spaces of memory. The pointers must be processed in the context of the job, from which they are received. Besides, these objects must trace the end of the jobs

实现范围I-III(与特定工作无关)中的对象已经足够困难了。原因是不同的作业可以有不同的内存地址空间。指针必须在接收它们的作业的上下文中处理。此外,这些对象必须跟踪作业的结束

for deallocation of dynamic resources. The specified requirements impose essential restrictions on these objects. The protocol does not impose any restrictions on objects from the range IV.

用于动态资源的释放。规定的要求对这些对象施加了必要的限制。该协议没有对IV范围内的物体施加任何限制。

Unique key identifying object on node, is number of object. To objects from the ranges, III and IV the name may be assigned. The objects from range I and II must not have names on the UMSP layer. Within the framework of one task must not be two objects having one number or one name.

标识节点上对象的唯一键,是对象的编号。对于范围III和IV中的对象,可以指定名称。范围I和II中的对象在UMSP层上不得有名称。在一个任务的框架内,不能有两个具有一个编号或一个名称的对象。

6.6.4.1 NEW, SYS_NEW
6.6.4.1 新的,新的

The format of both instructions "New object" (NEW) and "New system object" (NEW_SYS) is similar. First instruction creates object in the range IV, second - in the range III. These instructions have the following values of fields:

指令“新对象”(New)和“新系统对象”(New_SYS)的格式相似。第一条指令在范围IV中创建对象,第二条指令在范围III中创建对象。这些指令具有以下字段值:

OPCODE = 208/209; Accordingly for NEW/NEW_SYS. OPR_LENGTH = 3 Operands: 2 octets: The addressee VM type. 2 octets: The addressee VM version. 2 octets: The version of object. 2 octets: The realization of object. 4 - 262136 octets: Immediate data necessary for creation of object. The extension headers: _DATA - Contains immediate data, necessary for creation of object. This header is present, only if the data is not present in operands. _NAME - Contains the name of object. This header is optional.

操作码=208/209;相应地,适用于新/新系统。OPR_LENGTH=3个操作数:2个八位字节:收件人VM类型。2个八位字节:收件人VM版本。2个八位组:对象的版本。2个八位字节:对象的实现。4-262136八位字节:创建对象所需的即时数据。扩展标题:_DATA-包含创建对象所需的即时数据。仅当操作数中不存在数据时,此标头才存在_名称-包含对象的名称。此标题是可选的。

The instruction NEW_SYS is used for the creation of object accessible from any job, NEW - for creation of object accessible only from its job. If the object is created, the instruction OBJECT is sent for the response. If the object cannot be created, the instruction RSP with the non-zero basic return code is sent.

指令NEW_SYS用于创建可从任何作业访问的对象,NEW-用于创建仅可从其作业访问的对象。如果创建了对象,则发送指令对象以获得响应。如果无法创建对象,则发送带有非零基本返回码的指令RSP。

The immediate data field is transparent for the protocol. It is formed by the sender VM and it must contain the information, which is necessary to the addressee VM for the creation of object. Data must not simultaneously be sent in operands and in the extension header.

即时数据字段对于协议是透明的。它由发送方VM组成,必须包含收件人VM创建对象所必需的信息。数据不能在操作数和扩展标头中同时发送。

The field SESSION_ID of the instruction cannot have the zero value. The dynamic object must be created only in the context of the definite job. The object is always created on VM, with which the session is connected.

指令的字段会话ID不能为零值。必须仅在确定作业的上下文中创建动态对象。对象始终在会话连接的VM上创建。

The zero values of the version and the realizations of object means, that the object have no these values.

版本的零值和对象的实现意味着对象没有这些值。

It is possible to register the name of object simultaneously with its creation. The name contains in the _NAME extension header.

可以在创建对象的同时注册对象的名称。名称包含在_name扩展标题中。

All objects created upon the instructions NEW and NEW_SYS must be obviously deleted. VM must automatically delete all dynamic objects, created and not deleted by the task, at the end of the task.

必须删除根据“新建”和“新建系统”指令创建的所有对象。VM必须在任务结束时自动删除任务创建和未删除的所有动态对象。

6.6.4.2 OBJECT
6.6.4.2 对象

The instruction "The Object" (OBJECT) is used for the positive response on the instruction NEW and NEW_SYS. The instruction OBJECT has following values of fields:

指令“对象”(Object)用于指令NEW和NEW_SYS的肯定响应。指令对象具有以下字段值:

OPCODE = 210 OPR_LENGTH = 2 Operands: 4 octets: The number of object. 2 octets: The version of object. 2 octets: The realization of object.

操作码=210 OPR_长度=2个操作数:4个八位字节:对象的数目。2个八位组:对象的版本。2个八位字节:对象的实现。

6.6.4.3 DELETE
6.6.4.3 删去

The instruction "To delete the object" (DELETE) is used for the deleting of object created on the instruction NEW or NEW_SYS. The instruction DELETE has the following values of fields:

指令“删除对象”(delete)用于删除在指令NEW或NEW_SYS上创建的对象。指令DELETE具有以下字段值:

OPCODE = 211 OPR_LENGTH = 1 Operands: 4 octets: number of object

操作码=211 OPR_长度=1个操作数:4个八位字节:对象数

The object may be deleted only from the job, which has created it. The instruction RSP is sent in reply to this instruction.

只能从创建该对象的作业中删除该对象。发送指令RSP以响应此指令。

6.6.5 The Objects Identification
6.6.5 物体识别

At registration of object on the node, it may be identify by the name, the length of 4 - 254 octets. The name contains the symbols ASCII. The following versions of the protocol may define other types of the name.

在节点上注册对象时,可以通过名称识别,长度为4-254个八位字节。名称包含ASCII符号。以下版本的协议可能会定义其他类型的名称。

The name identifies with the number of object and is its synonym. The names of all active objects in one task on the node must be unique. Thus, all active objects from the range of number I - III

名称与对象的编号标识,是其同义词。节点上一个任务中所有活动对象的名称必须唯一。因此,所有处于活动状态的对象都在数量I-III范围内

must have the unique names for all tasks on the node. The protocol allows receiving the number of object by the name and the name of object by the number.

节点上所有任务的名称必须唯一。该协议允许通过名称接收对象的编号,并通过编号接收对象的名称。

6.6.5.1 OBJ_SEEK
6.6.5.1 OBJ_SEEK

The instruction "To seek the object" (OBJ_SEEK) is used for seek of number of the object by the name. It has the following values of fields:

指令“查找对象”(OBJ_seek)用于按名称查找对象的编号。它具有以下字段值:

OPCODE = 212 OPR_LENGTH = 0 The extension header: _NAME - contains the name of object for search.

OPCODE=212 OPR_LENGTH=0扩展标题:_NAME-包含要搜索的对象的名称。

If the object is found - the instruction OBJECT is sent in the answer. If the object is not found - the instruction RSP with the non-zero basic return code is sent for the response.

如果找到对象,则在应答中发送指令对象。如果找不到该对象,则发送带有非零基本返回码的指令RSP以进行响应。

The instruction OBJ_SEEK may be sent broadcast through UDP. In this case, it concerns to zero-session. The instruction may contain the field REQ_ID for identification of answers. The positive responses in this case must be sent only. The response may be transmitted through UDP.

OBJ_SEEK指令可以通过UDP广播发送。在本例中,它与零会话有关。指令可能包含用于识别答案的字段REQ_ID。在这种情况下,只能发送肯定响应。响应可以通过UDP传输。

6.6.5.2 OBJ_GET_NAME
6.6.5.2 OBJ_获取_名称

The instruction "To get a name of the object" (OBJ_GET_NAME) is used for get of the name of object by number. It has the following values of fields:

指令“获取对象名称”(OBJ_get_name)用于按编号获取对象名称。它具有以下字段值:

OPCODE = 213 OPR_LENGTH = 1 Operands: 4 octets: number of object for getting

操作码=213 OPR_长度=1个操作数:4个八位字节:用于获取的对象数

If the object is present - the instruction OBJECT with the extension header _NAME is sent for the response. If the object is not present - the instruction RSP with the non-zero basic return code is sent for the response.

如果对象存在-将发送带有扩展头\u名称的指令对象以获得响应。如果对象不存在,则发送带有非零基本返回码的指令RSP以响应。

7 Chains

7链

The instructions, which will be sent on one session connection, can be unified in a chain. The chain is a group of the instructions relational with each other. In one session, several chains simultaneously can be transferred. The chains can be the following types:

将在一个会话连接上发送的指令可以在一个链中统一。链是一组相互关联的指令。在一个会话中,可以同时传输多个链。链可以是以下类型:

o The sequence. o The transaction o The fragmented instruction.

o 顺序。o事务o分段指令。

If the instruction is included into a chain, the flag CHN should be equal 1. The field CHAIN_NUMBER of header contains number of a chain, INSTR_NUMBER - serial instruction number in a chain, since 0. The numbering of chains is conducted by the protocol. In one session simultaneously can be transferred up to 65533 chains. Values of numbers of chains %x0000 and %xFFFF reserved by the protocol. One chain can contain up to 65535 instructions.

如果指令包含在链中,则标志CHN应等于1。标头的“链号”字段包含链号,INSTR_号-链中的序列指令号,自0起。链的编号由协议执行。在一个会话中,可以同时传输多达65533条链。协议保留的链数%x0000和%xfff的值。一条链最多可包含65535条指令。

The instruction with a zero serial number INSTR_NUMBER should contain the extension header describing a chain. Each type of a chain has own initiating extension header.

序列号为零的指令应包含描述链的扩展头。每种类型的链都有自己的起始扩展标头。

_END_CHAIN. The extension header "End of the chain" is transferred in last instruction of chain, irrespective of type of the chain. It has the following values of fields:

_链的末端。扩展标题“链的末端”在链的最后一条指令中传输,与链的类型无关。它具有以下字段值:

HEAD_CODE = 6 HEAD_LENGTH = 0 HOB = 1

头部代码=6头部长度=0滚刀=1

Number of a finished chain contains in a field CHAIN_NUMBER of the instruction header, to which the extension header is attached.

完成链的编号包含在指令头的链号字段中,扩展头附加到该字段。

The instructions, included in chains, can be transferred through UDP only if all chain is located in one segment.

链中包含的指令只有在所有链位于一个段中时才能通过UDP传输。

7.1 Sequence
7.1 序列

The sequence is a type of a chain, which unites the instructions dependent from each other. The following instruction of a sequence can be executed on VM, only if have been executed previous. If the current instruction cannot be executed, all other instructions of the given sequence (already sent or expecting sending) simply cancel. Due to this, it is possible for one computing control thread not to wait for the current instruction positive end and to transfer following at once.

序列是一种链的类型,它将相互依赖的指令联合起来。以下序列指令只能在VM上执行,前提是之前执行过。如果当前指令无法执行,则给定序列的所有其他指令(已发送或预期发送)都将被取消。因此,一个计算控制线程可以不等待当前指令的正端,而立即传输后续指令。

_BEGIN_SQ. The extension header "To begin a sequence" is transferred in the first instruction of the sequence. It has the following values of fields:

_BEGIN_SQ。扩展头“开始序列”在序列的第一条指令中传输。它具有以下字段值:

HEAD_CODE = 3 HEAD_LENGTH = 0 HOB = 1

头部代码=3头部长度=0滚刀=1

Number of created chain is established in field CHAIN_NUMBER of the instruction header, to which the extension header is attached. The field INSTR_NUMBER must have value 0.

已创建链的编号在附加扩展标头的指令标头的“链号”字段中建立。字段INSTR_编号的值必须为0。

The initiator of creation of a sequence is VM. It is not obligatory that the sequence should have known length beforehand. It can be completed in any moment. If it is necessary to finish a sequence and there are no instructions for sending, the instruction NOP can be generated.

创建序列的启动器是VM。序列不一定要事先知道长度。它可以在任何时刻完成。如果需要完成一个序列,并且没有用于发送的指令,则可以生成指令NOP。

7.2 Transaction
7.2 交易

The transaction is a type of the chain uniting some possibly not connected with each other instructions. All transaction instructions must be executed all at once or must not be executed. It is possible to cancel or to confirm transaction execute. The transaction cancellation after execution is not stipulated. If it is necessary, such mechanism should be realized at VM level, because there can be instructions in transaction, which are impossible to cancel, for example a control transfer.

事务是一种链类型,它将一些可能互不相关的指令连接在一起。所有交易指令必须一次性执行,否则不得执行。可以取消或确认事务执行。未规定执行后的交易取消。如果有必要,这种机制应该在VM级别实现,因为事务中可能存在无法取消的指令,例如控制传输。

The initiator of transaction creation is VM. The transaction length must be known beforehand. The length will define a way of transaction transfer. It is connected with buffering described in section 7.4.

事务创建的发起方是VM。必须事先知道事务长度。长度将定义事务传输的方式。它与第7.4节所述的缓冲连接。

7.2.1 _BEGIN_TR
7.2.1 _开始

The extension header "To begin a transaction" _BEGIN_TR is transferred in the first transaction instruction. It has the following values of fields:

扩展头“To begin a transaction”\u begin\u TR在第一条事务指令中传输。它具有以下字段值:

HEAD_CODE = 4 HEAD_LENGTH = 1 HOB = 1 DATA - Has the following format:

头部编码=4头部长度=1滚刀=1数据-具有以下格式:

      +---+---+---+---+---+---+---+---+
      |TRE|TRR|TRS|      Reserve      |
      +---+---+---+---+---+---+---+---+
      |           TIME_TR             |
      +---+---+---+---+---+---+---+---+
        
      +---+---+---+---+---+---+---+---+
      |TRE|TRR|TRS|      Reserve      |
      +---+---+---+---+---+---+---+---+
      |           TIME_TR             |
      +---+---+---+---+---+---+---+---+
        

TRE

特雷

1 bit. The flag of obligatory execution. This flag relates only to completely transferred, but have not yet executed transaction. If TRE = 1, the transaction must be executed at

1位。强制执行的旗帜。此标志仅与已完全传输但尚未执行的事务相关。如果TRE=1,则必须在

the expiration of existence time, established by field TIME_TR, or at emergency session end. If TRE = 0, at end of existence time the transaction must be cancelled and the negative acknowledgement must be transferred, and at emergency session end - must be simply cancelled.

存在时间到期,由现场时间或紧急会话结束时确定。如果TRE=0,则在存在时间结束时,必须取消事务,并且必须传输否定确认,并且在紧急会话结束时,必须简单地取消事务。

TRR

TRR

1 bit. The flag of execution after sending. If TRR = 1, the transaction must be executed after sending of all instructions, of which it is consists, at once. Such transaction is executed after reception of the instruction with the extension header _END_CHAIN. If TRR = 0, it is necessary to transfer the special instruction EXEC_TR of transaction acknowledgement for its execution.

1位。发送后执行的标志。如果TRR=1,则必须在发送所有指令后立即执行事务,该指令由事务组成。该事务在接收到带有扩展头_END_链的指令后执行。如果TRR=0,则需要传输事务确认的特殊指令EXEC_TR以执行它。

TRT

TRT

1 bit. The flag of special processing. It is entered for a possibility of the further expansion of the protocol. If TRT = 1, before transaction execution it is necessary to make some additional actions above the instructions, of which it is consists, for example to decipher. These actions can be definite in the additional extension headers transmitted in the transaction instructions. The given document will not define cases of use of this flag. The value TRT must be zero.

1位。特殊处理的标志。它是为了进一步扩大议定书的可能性而加入的。如果TRT=1,则在事务执行之前,有必要在指令之上执行一些额外的操作,例如解密。这些操作可以在事务指令中传输的附加扩展头中确定。给定文档不会定义使用此标志的情况。TRT的值必须为零。

Reserve

储备

Must be set to 0.

必须设置为0。

TIME_TR

时间

1 octet. Time of transaction life in 2 - second intervals (maximal lifetime - 8 minutes). The receiving side begins readout of this time after receiving all transaction instructions. The value %x00 sets transaction without restriction of lifetime.

1个八位组。事务生命周期的时间间隔为2秒(最大生命周期为8分钟)。接收端在接收到所有事务指令后开始读取该时间。值%x00设置的事务不受生存期限制。

In the last instruction of transaction the header, _END_CHAIN is always sent.

在事务头的最后一条指令中,始终发送\u END\u CHAIN。

7.2.2 EXEC_TR
7.2.2 行政长官

This instruction "To execute the transaction" (EXEC_TR) is transferred for execution transaction early transferred. It has the following values of fields:

传输此指令“执行事务”(EXEC_TR)以执行提前传输的事务。它具有以下字段值:

      OPCODE = 158
      ASK = 1
      PCK = %b01/10/11
      CHN = 1
      EXT = 0/1
      CHAIN_NUMBER - Contains the number of chain, which is necessary to
                     execute.
      INSTR_NUMBER = 0
      OPR_LENGTH = 0
        
      OPCODE = 158
      ASK = 1
      PCK = %b01/10/11
      CHN = 1
      EXT = 0/1
      CHAIN_NUMBER - Contains the number of chain, which is necessary to
                     execute.
      INSTR_NUMBER = 0
      OPR_LENGTH = 0
        
7.2.3 CANCEL_TR
7.2.3 取消

The instruction "To cancel transaction" (CANCEL_TR) is transmitted for a cancellation of execution transaction transmitted before. It has the following values of fields:

发送指令“取消事务”(cancel_TR)以取消之前发送的执行事务。它具有以下字段值:

      OPCODE = 159
      ASK = 0
      PCK = %b01/10/11
      CHN = 1
      EXT = 0/1
      CHAIN_NUMBER - Contains the number of chain, which is necessary to
                     cancel.
      INSTR_NUMBER = 0
      OPR_LENGTH = 0
        
      OPCODE = 159
      ASK = 0
      PCK = %b01/10/11
      CHN = 1
      EXT = 0/1
      CHAIN_NUMBER - Contains the number of chain, which is necessary to
                     cancel.
      INSTR_NUMBER = 0
      OPR_LENGTH = 0
        

The instructions, of which the cancelled transaction consists, delete without a possibility of restoration.

被取消的事务所包含的指令被删除,而不可能恢复。

7.3 Fragmented instruction
7.3 分段指令

UMSP is designed for work with the transport protocol with the limited size of transmitted data segment. The fragmentation of the instructions is made in the following two cases:

UMSP设计用于传输数据段大小有限的传输协议。在以下两种情况下对指令进行分段:

(1) If the instruction is longer than the maximal segment size of transport layer or, (2) If the segment is formed of the several instructions and last instruction is not located in it completely.

(1) 如果指令长度超过传输层的最大段大小,或者,(2)如果段由多条指令组成,并且最后一条指令未完全位于其中。

The decision on fragmentation is taken to UMSP level.

有关分段的决定将在UMSP级别作出。

The fragmented instruction is encapsulated in several NOP instructions. Then all instructions NOP are transmitted, as one chain of special type. The following algorithm is used during encapsulation:

分段指令封装在几个NOP指令中。然后,所有NOP指令作为一个特殊类型的链进行传输。封装过程中使用以下算法:

(1) The fields SESSION_ID and REQ_ID from the fragmented instruction are written in the first NOP instruction. If field REQ_ID is not present in the initial instruction, it must not be in the NOP instruction. The field SESSION_ID always is present in the fragmented instructions. (2) Then these fields delete from the initial instruction. The value of all other fields of the header does not change. (3) After that, the initial instruction is divided into fragments of necessary length. Each fragment is located in a field of operands of the NOP instruction. Other data should not be entered in operand field.

(1) 分段指令中的SESSION_ID和REQ_ID字段写入第一条NOP指令。如果初始指令中不存在字段REQ_ID,则该字段不得位于NOP指令中。现场会话ID始终存在于分段指令中。(2) 然后这些字段从初始指令中删除。标题的所有其他字段的值不变。(3) 然后,初始指令被划分为必要长度的片段。每个片段位于NOP指令的操作数字段中。不应在操作数字段中输入其他数据。

_BEGIN_FRG. The extension header "The first fragment" is transmitted to the NOP instruction, which contains the first fragment. It has the following values of fields:

_开始。扩展头“第一个片段”被传输到包含第一个片段的NOP指令。它具有以下字段值:

HEAD_CODE = 5 HEAD_LENGTH = 0/2 ; Depends on subordination of the chain. HOB = 1 Data: 2 octets: Number of the parental chain. Fragmented instruction may be a part of the sequence or transaction. 2 octets: The instruction number in the parental chain.

头部编码=5头部长度=0/2;取决于链的从属关系。HOB=1数据:2个八位字节:父链的数量。分段指令可能是序列或事务的一部分。2个八位字节:父链中的指令编号。

The header _END_CHAIN is transmitted in NOP instruction, which contains last fragment.

头端链在NOP指令中传输,该指令包含最后一个片段。

7.4 Buffering
7.4 缓冲

In the given item, the buffering used by the protocol on receiving of data is described. The question of buffering on sending lies beyond the scope of the protocol.

在给定项中,描述了协议在接收数据时使用的缓冲。发送时的缓冲问题超出了协议的范围。

If the instruction is not include in a chain, it is transmitted to VM for execution at once and does not require buffering at the protocol level. The interface UMSP - VM must provide asynchronous instructions sending. It is recommended, that the productivity of UMSP systems, should allow to process the instructions accepted from network, with that speed, with what they were received. All instructions are designed so that carries out the known and limited computing loading. Exception is the instruction of control transfers, which must be processed in two stages. The instruction correctness is checked firstly and its scheduling is made. Then the instruction is executed. At that must be guaranteed that the protocol can receive such part of processor time, which would allow it to work in stationary mode. Therefore, the questions of node overload are deduced on VM layer and user applications layer, where they can be sensible controlled.

如果指令未包含在链中,则立即将其传输到VM以执行,并且不需要在协议级别进行缓冲。UMSP-VM接口必须提供异步指令发送。建议,UMSP系统的生产率应允许以该速度处理从网络接收的指令,以及接收到的指令。所有指令的设计都是为了执行已知和有限的计算负载。例外情况是控制传输指令,必须分两个阶段进行处理。首先检查指令的正确性并进行调度。然后执行指令。在这一点上,必须保证协议能够接收处理器时间的这一部分,这将允许它在静止模式下工作。因此,从虚拟机层和用户应用层两个方面推导了节点过载问题,并对其进行了合理的控制。

For chains, the protocol provides two schemes of buffering during the receiving:

对于链,协议在接收期间提供两种缓冲方案:

(1) At the session connection establishment, the sides agree about the allocated buffer ("window") size. The window always is more than the maximal segment of a transport layer. The transmitting side can expect for this buffer without the preliminary coordination with the receiving side. The window size is established single for each session connection, and cannot be changed in subsequent. UMSP is designed for using of transport layer, which informs about the data delivery. Therefore transmitting side traces the current free size of the window on the reception side for each connection without assistance. If the reception side finds out, that the data have been received, which cannot be placed in the window, the connection is broken off.

(1) 在会话连接建立时,双方就分配的缓冲区(“窗口”)大小达成一致。窗口总是大于传输层的最大段。发送端可以期望在不与接收端进行初步协调的情况下使用该缓冲器。窗口大小是为每个会话连接单独建立的,不能在后续会话中更改。UMSP设计用于使用传输层,传输层通知数据传输。因此,发送侧在没有协助的情况下跟踪接收侧的窗口的当前空闲大小。如果接收端发现数据已被接收,且无法放入窗口,则连接中断。

(2) For transactions and fragmented instructions, which size exceeds the window, it is necessary to request the reception node the sanctions to sending. The theoretical limiting size of chain transmitting so is 4 Gbytes.

(2) 对于大小超过窗口的事务和分段指令,有必要请求接收节点发送制裁。传输so的链的理论极限尺寸为4 GB。

REQ_BUF. The instruction "To request the buffer" requests at VM the buffer allocation for sending of transaction or large fragmented instruction ("Window"). It has the following values of fields:

需要。指令“请求缓冲区”在VM请求缓冲区分配,以发送事务或大型分段指令(“窗口”)。它具有以下字段值:

OPCODE = 24 ASK = 1 PCK = b01/11 CHN = 0 EXT = 0/1 OPR_LENGTH = 1 Operands: 4 octets: The buffer required size in octets. The value is equal to the total size of all instructions of the chain, including the size of the subordinated chains.

操作码=24 ASK=1 PCK=b01/11 CHN=0 EXT=0/1 OPR_LENGTH=1操作数:4个八位字节:缓冲区所需大小(以八位字节为单位)。该值等于链的所有指令的总大小,包括从属链的大小。

The instruction is formed under the initiative of the protocol and it uses the instruction RSP_P as acknowledgement. However, on the reception side the buffer is allocated at VM level, as VM has the most complete information about the task. The interface between UMSP and VM must give possibility of asynchronous request of such buffer.

指令是在协议的发起下形成的,它使用指令RSP_P作为确认。然而,在接收端,缓冲区是在VM级别分配的,因为VM拥有关于任务的最完整信息。UMSP和VM之间的接口必须提供异步请求此类缓冲区的可能性。

The instruction REQ_BUF can be used irrespective of the possibility to place the chain in the buffer, allocated for session (window). It is necessary to take into account, that the negative acknowledgement can be transmitted on this instruction, but using of a "window" guarantees sending.

指令REQ_BUF可以使用,无论是否可能将链放入分配给会话(窗口)的缓冲区中。需要考虑的是,可以在此指令上传输否定确认,但是使用“窗口”可以保证发送。

The subordinated chain on reception uses the buffer of the parental chain.

接收时的从属链使用父链的缓冲区。

The sequence sending will not require about the buffer allocation in difference of transaction or fragmented instruction. If the single connection TCP is used for sending, the sequence buffering is not necessary. If the multiple connections TCP with multiplexing are used, the sequence requires buffering for the disorder instructions. In this case, it is necessary to use the buffer, allocated for session.

序列发送不需要在不同的事务或分段指令中分配缓冲区。如果使用单连接TCP发送,则不需要序列缓冲。如果使用具有多路复用的多连接TCP,则序列需要对无序指令进行缓冲。在这种情况下,有必要使用分配给会话的缓冲区。

Transactions, at which flag TRR = 0, always must request the sanction for sending by instruction REQ_BUF, even if they can be placed in one segment of transport layer.

标记TRR=0的事务始终必须请求通过指令REQ_BUF发送的批准,即使它们可以放在传输层的一个段中。

The buffering of the fragmented instructions and transactions, at which flag TRR = 1, depends on their size:

标记TRR=1的分段指令和事务的缓冲取决于其大小:

o If the transaction is located in one segment of transport layer, it is transmitted without buffering. o If length of a chain is no more then "window", it can be transmitted without request of the buffer of window allocation. Thus, the place in the buffer must be reserved before the sending begins. The sending cannot be begun, if it is not enough places in the buffer. In this case, it is possible to wait the window deallocation or to use the request instruction of the buffer allocation at VM REQ_BUF. o If length exceeds the session window size it is necessary to use the instruction REQ_BUF.

o 如果事务位于传输层的一个段中,则在不进行缓冲的情况下进行传输。o如果链的长度不超过“窗口”,则可以在不请求窗口分配缓冲区的情况下传输。因此,在发送开始之前,必须保留缓冲区中的位置。如果缓冲区中没有足够的位置,则无法开始发送。在这种情况下,可以等待窗口解除分配或在VM REQ_BUF处使用缓冲区分配的请求指令。o如果长度超过会话窗口大小,则需要使用指令REQ_BUF。

7.5 Acknowledgement of chains
7.5 链的确认

The field REQ_ID in chains of any type is established only in the first instruction and concerns to all chain. The all following instructions, including last, do not contain REQ_ID.

任何类型的链中的字段REQU_ID仅在第一条指令中建立,并与所有链相关。以下所有指令(包括last)不包含REQ_ID。

The transport protocol used for chains sending, must inform about the end of data transfer, because it is necessary for the transmitting side to know the free size of the allocated session window on the reception side.

用于链发送的传输协议必须通知数据传输的结束,因为发送端需要知道接收端分配的会话窗口的自由大小。

If the chain uses the allocated VM buffer (the sanction to sending REQ_BUF was requested), or the chain completely locates in transport layer segment, the protocol on the transmitting side does not trace acknowledgement.

如果链使用分配的VM缓冲区(请求发送REQ_BUF的许可),或者链完全位于传输层段中,则发送端的协议不跟踪确认。

If the sequence is transmitted, the transmitting side receives the information about free place of the buffer on the reception side by acknowledgement of transport layer delivery. It can be made, as the regulated sequence instructions are transmitted VM at once after receiving and release the buffer.

如果发送序列,则发送侧通过传输层传送的确认来接收关于接收侧缓冲器的空闲位置的信息。这是可以做到的,因为在接收和释放缓冲区后,调节的序列指令立即被发送到VM。

The fragmented instructions and transactions are not transmitted VM until its will be completely accepted. If session window is use, the occupation of places in the buffer can be calculated upon acknowledgement of transport layer sending. To trace free of places it is necessary to check execution acknowledgement by VM. The following algorithm of sending is used for this purpose:

碎片指令和事务在VM完全接受之前不会被传输。如果使用会话窗口,则可以在确认传输层发送后计算缓冲区中的位置占用。要无位置跟踪,必须通过VM检查执行确认。以下发送算法用于此目的:

o The value of field REQ_ID, which has given VM for chain sending, is kept and it is enters the value established by the protocol instead of it o The new value REQ_ID is transmitted in the first instruction of chain o The chain completely collected in the session window on the reception side. After linking, it is transmitted for execution on VM. At that, the chain can continue to occupy a place in the buffer. o After execution, VM informs about it to the reception side protocol. o The protocol clears place in the allocated buffer. o Then the protocol forms and transmits on chain acknowledgement RSP_P, instead of RSP, as in other cases. o The transmitting side protocol corrects size of free place in the reception side buffer after reception of acknowledgement RSP_P. o Then the old value REQ_ID is restored and the acknowledgement is transmitted to VM.

o 保留为链发送提供VM的字段REQ_ID的值,并输入协议建立的值,而不是它。新值REQ_ID在链的第一条指令中传输。链完全收集在接收端的会话窗口中。链接后,它被传输以在VM上执行。此时,链可以继续占据缓冲区中的一个位置。o执行后,VM将其通知接收端协议。o协议清除分配的缓冲区中的位置。o然后协议形成并在链上传输确认RSP_P,而不是像在其他情况下那样的RSP。o在接收到确认RSP_P.o之后,发送端协议校正接收端缓冲器中的空闲位置大小,然后恢复旧值REQ_ID,并将确认发送到VM。

7.6 Base-displacement Addressing
7.6 基位移寻址

The memory base address for the relative addressing can be established for the instructions from one chain. Thus, it is possible to use the abbreviated address memory fields in the instructions of chain. The abbreviated addresses are used, as displacement from base.

可以为来自一条链的指令建立相对寻址的内存基址。因此,可以在链指令中使用缩写地址存储器字段。使用缩写地址,作为从基的位移。

_SET_MBASE. The extension header "To set memory base" establishes the value of base address for chain. It has the following values of fields:

_设置基础。扩展头“设置内存基”为链建立基地址的值。它具有以下字段值:

HEAD_CODE = 7 HEAD_LENGTH = 2/4/8 ; Depends on address length. HOB = 1 DATA contains:

头部编码=7头部长度=2/4/8;取决于地址长度。HOB=1数据包含:

4/8/16 octets: The base address.

4/8/16八位字节:基址。

The length of address is 3 octets, enters the name in last octets of 4-octets data field. The initial octet is set to 0. The base-displacement addressing is not used for nodes with address length 2 octets.

地址长度为3个八位字节,在4个八位字节数据字段的最后一个八位字节中输入名称。初始八位字节设置为0。基位移寻址不用于地址长度为2个八位字节的节点。

The value of memory base for a sequence may change. The base must be established once in any instruction for all transaction instructions. The repeated establishment of transaction base is a mistake, which results refusal of transaction execution.

序列的内存基值可能会更改。对于所有事务指令,必须在任何指令中建立一次基。重复建立交易基础是一个错误,导致拒绝执行交易。

8 Extension Headers

8扩展标题

This section contains the description of the extension headers, which are not connected with the definite instruction. The description of the specialized extension headers describes in the appropriate sections of this document.

本节包含扩展头的描述,扩展头与明确指令无关。专用扩展标题的说明将在本文档的相应章节中介绍。

8.1 _ALIGNMENT
8.1 _对齐

The extension header "Alignment" (_ALIGNMENT) allows to make any extension header or field of operands multiple of 4 - 16 octets with the step of two octets. The protocol does not give any rules of use given extension header. It can be used arbitrarily. The header has the following values of fields:

扩展头“对齐”(_对齐)允许任何扩展头或操作数字段乘以4-16个八位字节,步长为两个八位字节。协议没有给出给定扩展头的任何使用规则。它可以任意使用。标题包含以下字段值:

HEAD_CODE = 8 HEAD_LENGTH = 1-7 ; Depends on length of the data field. HOB = 0 DATA contains: 2 - 14 octets: All octets of the field have the zero-value.

头部编码=8头部长度=1-7;取决于数据字段的长度。HOB=0数据包含:2-14个八位字节:字段的所有八位字节都有零值。

The format of the protocol instructions provides the alignment of two octets field without any additional means.

协议指令的格式提供了两个八位字节字段的对齐,而无需任何附加手段。

8.2 _MSG
8.2 _味精

The extension header "The any message" (_MSG) allows sending the textual message in symbols ASCII. The order of this header processing at receiving can be anyone. The message can be written in a log-file, be shown on the console or be ignored. The header has the following values of fields:

扩展标题“任意消息”(_MSG)允许以ASCII符号发送文本消息。接收时此标头处理的顺序可以是任何人。消息可以写入日志文件、显示在控制台上或被忽略。标题包含以下字段值:

HEAD_CODE = 9 HEAD_LENGTH = 1 - 127 ; Depends on data length of field. HOB = 0 DATA contains:

头部编码=9头部长度=1-127;取决于字段的数据长度。HOB=0数据包含:

2 - 254 octets: The any text of the message.

2-254个八位字节:消息的任意文本。

The instruction may contain several headings _MSG.

指令可能包含多个标题。

8.3 _NAME
8.3 _名字

The extension header "The Name" (_NAME) allows specifying the job name, name of object or name of object procedure. The header has the following values of fields:

扩展标题“thename”(_Name)允许指定作业名称、对象名称或对象过程名称。标题包含以下字段值:

HEAD_CODE = 10 HEAD_LENGTH = 1 - 127 ; Depends on length of a field of data. HOB = 0 DATA contains: 2 - 254 octets: The text of the name in symbols ASCII.

头部编码=10头部长度=1-127;取决于数据字段的长度。HOB=0数据包含:2-254个八位字节:名称的文本(ASCII符号)。

8.4 _DATA
8.4 _资料

The extension header "The Data" (_DATA) is used for data transfer in the instructions of exchange between VM, if the data cannot be placed in operands. It allows transferring up to 4 Gbytes of data in one instruction. The header has the following values of fields:

如果数据不能放入操作数中,则扩展头“The Data”(_Data)用于VM之间交换指令中的数据传输。它允许在一条指令中传输多达4 GB的数据。标题包含以下字段值:

HEAD_CODE = 11 HEAD_LENGTH = 1 - 2 147 483 647 ; Depends on length of the data field. HOB = 1 DATA contains: 2 - 4 294 967 294 octets : Binary data in an any format.

头部编码=11头部长度=1-2147483647;取决于数据字段的长度。HOB=1数据包含:2-429497294个八位字节:任何格式的二进制数据。

8.5 _LIFE_TIME
8.5 _一生

The extension header "The lifetime" (_LIFE_TIME) contains value of time. It has the following values of fields:

扩展标题“生命周期”(_LIFE_TIME)包含时间值。它具有以下字段值:

HEAD_CODE = 12 HEAD_LENGTH = 1/2; Depending on length of data. HOB = 1 DATA contains: 2/4 octets: The time in 1,024 milliseconds intervals.

头部编码=12头部长度=1/2;取决于数据的长度。HOB=1数据包含:2/4个八位字节:时间间隔为1024毫秒。

The header _LIFE_TIME allows to set limiting time of sending of the instruction to VM of the addressee.

标头_LIFE_TIME允许设置向收件人VM发送指令的限制时间。

The instruction lifetime is calculated as follows:

指令生存期的计算如下:

o On the transmitting side the time of waiting in a queue to the transport layer is taken into account. The value of the lifetime decreases on the waiting time value now of the transport layer package formation. o On the reception side the lifetime is taken into account only for the fragmented instructions. The value of the lifetime decreases on time of the instruction assembly value. This header is ignored at receiving for no-fragmented instructions. Its value must be sent to VM. o The time of sending at the transport layer is not taken into account. For the fragmented instructions, only the time of sending of the first fragment is not taken into account.

o 在传输端,考虑到在传输层的队列中等待的时间。寿命值随传输层包形成的等待时间值的增加而减小。o在接收端,仅对零碎指令考虑使用寿命。生命周期值随指令汇编值的时间而减小。接收时忽略此标头,因为没有分段指令。它的值必须发送到VM。o不考虑在传输层发送的时间。对于分段指令,仅不考虑发送第一个分段的时间。

The end of lifetime at the instruction relating to sequence finishes the sequence sending. The header _LIFE_TIME must not be used at transactions sending.

与序列相关的指令的生命周期结束时,完成序列发送。发送事务时不得使用标题_LIFE_TIME。

If the instruction is fragmented, the header _LIFE_TIME is sent only in the instruction NOP, containing the first fragment. This header deletes from the initial fragmented instruction. If the time is over, when the fragmented instruction part has not been transmitted yet, the stayed part of the instruction is cleared.

如果指令是分段的,则仅在包含第一个片段的指令NOP中发送头_LIFE_TIME。此标头从初始分段指令中删除。如果时间结束,当分段指令部分尚未传输时,指令的保留部分将被清除。

The instruction lifetime is established by the sender VM and must be sent together with data to the addressee VM. If the time of life expires, the instruction is rejected and the negative response (if ASK = 1) is sent to it. If ASK = 0, the response is not sent.

指令生存期由发送方VM确定,必须与数据一起发送到收件人VM。如果生存时间到期,则拒绝该指令,并向其发送否定响应(如果ASK=1)。如果ASK=0,则不发送响应。

The header _LIFE_TIME may be used in the multimedia systems and in the real time systems. The protocol may raise the priority of sending for data with coming to the end lifetime.

报头_LIFE_TIME可用于多媒体系统和实时系统中。该协议可以在生命周期即将结束时提高发送数据的优先级。

9 Search of resources

9搜索资源

Virtual Machines are the identified resources of the protocol. The VM standardization is not function of UMSP. The protocol gives transparent environment for transportation of the code and data of any type.

虚拟机是协议的标识资源。虚拟机标准化不是UMSP的功能。该协议为任何类型的代码和数据的传输提供了透明的环境。

For VM, connected to the protocol, the following values are established:

对于连接到协议的VM,将建立以下值:

o The VM type. The range of values 1 - 65534. o The VM version. The range of values 1 - 65534.

o 虚拟机类型。值的范围为1-65534。o虚拟机版本。值的范围为1-65534。

The protocol requires obligatory compatibility from bottom-up for VM of one type and different numbers of the versions (VM with larger number of version must be able to execute the VM code with any smaller number of version).

该协议要求一种类型的VM和不同版本数的VM必须自下而上兼容(版本数较大的VM必须能够执行版本数较小的VM代码)。

Numbers of VM types are broken on the following ranges:

VM类型的数量在以下范围内断开:

1 - 1023 Assigned for standard VM 1024 - 49151 Assigned for registered VM of the users 49152 - 65534 Free (defined for dynamic and/or private VM)

1-1023分配给标准VM 1024-49151分配给注册VM的用户49152-65534免费(为动态和/或私有VM定义)

Numbers of types and versions %x0000 and %xFFFF are reserved by the protocol.

协议保留%x0000和%xfff的类型和版本数。

Several VM of different types may be united in a group. All VM, included in a group, must work in the common space of local memory and have the common subsystem of the jobs control. It means, that if the same 128-bit address is met in anyone VM code for one task, it must specify one physical cell of memory. The performance of the specified conditions allows executing multivendor user code (containing procedures for different VM) on one node. All VM, included in a group, must have the different types. The group can include no more than 65534 VM. One number of group on different nodes may identify groups with different structure VM.

多个不同类型的虚拟机可以合并在一个组中。包含在组中的所有VM必须在本地内存的公共空间中工作,并具有作业控制的公共子系统。这意味着,如果在一个任务的任何VM代码中遇到相同的128位地址,它必须指定一个物理内存单元。指定条件的性能允许在一个节点上执行多供应商用户代码(包含不同VM的过程)。组中包含的所有VM必须具有不同的类型。该组最多可包含65534个VM。不同节点上的多个组可以标识具有不同结构VM的组。

To each group VM on the node the code of group of 2 octets length is assigned. So long as the node has even one session connection, the codes of groups must not change. It is recommended to change the code of group only at reconfiguration of the node. The group VM is identified, as well as one VM. Thus, the type VM is set to 0, and the number of group is assigned to VM version.

为节点上的每个组VM分配2个八位字节长度的组代码。只要节点有一个会话连接,组的代码就不能更改。建议仅在重新配置节点时更改组代码。标识组VM以及一个VM。因此,VM类型设置为0,组的数量分配给VM版本。

The support of association VM in groups is optional requirement of the protocol. The multivendor user code can be executed, even if the association in groups is not provided. For this purpose, the procedures containing a different type of a code must be executed on different nodes.

支持分组关联VM是协议的可选要求。即使未提供组中的关联,也可以执行多供应商用户代码。为此,必须在不同节点上执行包含不同类型代码的过程。

UMSP gives the instructions of search of the VM, which allow defining, what VM and the groups VM are connected at the given moment to the protocol on the definite node.

UMSP给出了VM的搜索指令,允许定义在给定时刻VM与特定节点上的协议连接的VM和VM组。

The instructions of search of the VM can be sent upon TCP or UDP. The broadcasting dispatch can be used. The node can independently notify about VM, available on it, for example at start, or to respond on others VM requests. The answerback instructions must be sent under the same protocol, on which the request was received.

VM的搜索指令可以通过TCP或UDP发送。可以使用广播调度。节点可以独立地通知有关VM的信息(例如在启动时),或者响应其他VM请求。应答指令必须根据接收请求的相同协议发送。

VM from ranges of numbers 49152 - 65534 or any group VM may be identified on names. VM with numbers 1 - 49151 must not have names at a layer of the instructions UMSP.

可以在名称上标识数字49152-65534范围内的VM或任何组VM。编号为1-49151的VM不能在UMSP指令层上有名称。

9.1 VM_REQ
9.1 虚拟机需求

The instruction "To request the VM" (VM_REQ) allows finding out VM, connected on the remote node. The instruction has the following values of fields:

指令“请求VM”(VM_REQ)允许查找连接到远程节点的VM。该指令具有以下字段值:

      OPCODE = 25
      PCK = %b00
      CHN = 0
      ASK = 0/1
      EXT = 0/1
      OPR_LENGTH = 0 - 65534 ; Depending on quantity VM in operands.
      Operands:
         2 octets: The type required VM.  The value 0 is not allowed.
         2 octets: The version required VM.  The value 0 is not allowed.
                   The value %xFFFF requests the most senior version.
         .
         .
         .
        
      OPCODE = 25
      PCK = %b00
      CHN = 0
      ASK = 0/1
      EXT = 0/1
      OPR_LENGTH = 0 - 65534 ; Depending on quantity VM in operands.
      Operands:
         2 octets: The type required VM.  The value 0 is not allowed.
         2 octets: The version required VM.  The value 0 is not allowed.
                   The value %xFFFF requests the most senior version.
         .
         .
         .
        

2 octets: The type required VM. 2 octets: The version required VM. The optional extension header: _NAME - This header contains the name of required VM or VM group.

2个八位字节:VM所需的类型。2个八位字节:VM所需的版本。可选扩展标题:\ u NAME-此标题包含所需VM或VM组的名称。

The instruction without operands is used for request of all types VM, connected on the node. The instruction with one VM in operands requests the information on one VM. If it is contained several VM in operands, the group VM containing all specified VM is requested. The type and version in list VM must be indexed on increase.

不带操作数的指令用于节点上连接的所有类型VM的请求。操作数中有一个VM的指令请求一个VM上的信息。如果操作数中包含多个VM,则请求包含所有指定VM的组VM。列表VM中的类型和版本必须在增加时编制索引。

To request VM, used at work without session connection, the VM type and VM version must have the value %xFFFF.

要请求在没有会话连接的情况下工作时使用的VM,VM类型和VM版本必须具有值%xFFFF。

The header _NAME is not connected with value of operands. For it, the separate answer must be transmitted.

标头_名称未与操作数的值连接。为此,必须发送单独的答复。

9.2 VM_NOTIF
9.2 诺蒂夫

The instruction "To notify about VM" (VM_NOTIF) is used for the notification of one VM or one VM group attached on the node. The instruction has the following values of fields:

指令“To notify about VM”(VM_NOTIF)用于通知节点上连接的一个VM或一个VM组。该指令具有以下字段值:

      OPCODE = 26
      PCK = %b00
      CHN = 0
      ASK = 0/1
      EXT = 0/1
      OPR_LENGTH = 1 - 65534  ; Depending on quantity VM in operands.
      Operands:
         2 octets: The used transport protocol.  The following values of
                   this field are definite:
            x0100 - Single TCP connection through the port 2110.
            x0101 - Multiple TCP connection through the port 2110.
            x0102 - Single TCP connection through ports 2110 and UDP
                    through ports on receiving 2110.
            x0103 - Multiple TCP connection through ports 2110  and UDP
                    through port on receiving 2110.
            The port 2110 must be opened on the one side or both side at
            each TCP connection.
         2 octets: Reserved.  This field must not be analyzed by the
                   protocol during the receiving in the current
                   realization of the protocol.  It must be set to 0 at
                   sending.
         2 octets: The type VM.
         2 octets: The version VM.
        
      OPCODE = 26
      PCK = %b00
      CHN = 0
      ASK = 0/1
      EXT = 0/1
      OPR_LENGTH = 1 - 65534  ; Depending on quantity VM in operands.
      Operands:
         2 octets: The used transport protocol.  The following values of
                   this field are definite:
            x0100 - Single TCP connection through the port 2110.
            x0101 - Multiple TCP connection through the port 2110.
            x0102 - Single TCP connection through ports 2110 and UDP
                    through ports on receiving 2110.
            x0103 - Multiple TCP connection through ports 2110  and UDP
                    through port on receiving 2110.
            The port 2110 must be opened on the one side or both side at
            each TCP connection.
         2 octets: Reserved.  This field must not be analyzed by the
                   protocol during the receiving in the current
                   realization of the protocol.  It must be set to 0 at
                   sending.
         2 octets: The type VM.
         2 octets: The version VM.
        

. . .

. . .

2 octets: The type VM. 2 octets: The version VM.

2个八位组:VM类型。2个八位组:版本VM。

The optional extension header: _NAME - This header contains the name by separate VM or group VM from operands of the instruction.

可选扩展标头:\ u NAME-此标头包含指令操作数中单独VM或组VM的名称。

It is necessary to generate several instructions, if it is required to inform about several VM or groups. It is necessary to form the separate instructions for each protocol, if the node provides several transport protocols.

如果需要通知多个VM或组,则需要生成多条指令。如果节点提供多个传输协议,则有必要为每个协议形成单独的指令。

If the instruction is used for the response to VM_REQ request, it can contain ASK = 1 and REQ_ID, established in value from the instruction of request. If the VM group was requested, the instruction must contain several VM. First VM must have the type set to 0 and the version must contain the number of group. Others VM must define structure of group. The type and version in VM list must be indexed on increase.

如果该指令用于响应VM_REQ请求,则它可以包含ASK=1和REQ_ID,这是在请求指令的值中建立的。如果请求了VM组,则指令必须包含多个VM。第一个VM的类型必须设置为0,版本必须包含组的编号。其他VM必须定义组的结构。VM列表中的类型和版本必须在增加时编制索引。

The protocols, contained in the instruction VM_NOTIF, may differ from the protocol, through which this instruction is transferred.

指令VM_NOTIF中包含的协议可能与传输此指令的协议不同。

10 Security Considerations

10安全考虑

The present document contains the description of the functions, minimally necessary for the realization of the declared task - immediate access to memory of the remote node. To reduce initial complexity of the protocol, the decision of safety questions is not included in the document. All reasons of the given unit are the recommendations to the further expansion of the protocol.

本文档包含对功能的描述,这些功能是实现所声明的任务(立即访问远程节点的内存)所必需的最低限度。为了降低协议的初始复杂性,文件中不包括安全问题的决定。给定单元的所有原因都是对协议进一步扩展的建议。

For the description three nodes are used - node A and node B are exchanges the data. The node G is JCP.

对于说明,使用了三个节点-节点A和节点B交换数据。节点G是JCP。

Protection against sniffing, spoofing and hijacking:

防止嗅探、欺骗和劫持:

(1) The means specifies in TCP/IP can be used. (2) There is a possibility to create chains with the special processing. To create such chain, it is necessary to transfer the extension header, determining the special processing, in the first instruction of the chain. The instructions of chain can be encapsulated in the NOP instructions. The algorithms of the control of instructions sequence integrity or the encryption can be realized in such a way.

(1) 可以使用TCP/IP中指定的方法。(2) 有可能创建具有特殊处理的链。要创建这样的链,必须在链的第一条指令中传输扩展头,确定特殊处理。chain指令可以封装在NOP指令中。用这种方法可以实现指令序列完整性控制或加密算法。

Protection against the man-in-the-middle:

对中间人的保护:

The protection is based on the fact, that the routes between nodes A - B, A - G and G - B is not crossed. Such scheme allows organizing the additional managing dataflow, allowing revealing such type of attack. If the specified routes pass through one gateway, this protection is less effective.

保护基于这样一个事实,即节点A-B、A-G和G-B之间的路由没有交叉。这种方案允许组织额外的管理数据流,允许暴露这种类型的攻击。如果指定的路由通过一个网关,则此保护效果较差。

Authentication:

身份验证:

The protocol working is based on a principle of the centralized control. It allows using several schemes of authentication. The parameters of authentication are sent in the extension headers. The establishment of session connection can contain up to eight handshakes. It also raises flexibility at a choice of authentication algorithm. The realization of authentication is possible between three pairs nodes A - B, A - G and G - B. All pairs can be used in any combination. The node G can be specially allocated for realization of authentication.

该协议的工作原理是集中控制。它允许使用多种身份验证方案。身份验证的参数在扩展头中发送。会话连接的建立最多可以包含八次握手。它还提高了选择认证算法的灵活性。可以在三对节点A-B、A-G和G-B之间实现身份验证。所有对都可以以任何组合使用。可以专门分配节点G以实现认证。

Protection against denial-of-service:

针对拒绝服务的保护:

The instructions of the protocol have definite computing loading. It allows projecting the node so, that it can process the instructions with such speed, with what they are accepted from the network. A possible reason of an overload is the instructions JUMP and CALL. VM must solve this problem. It has the complete information about the user task and can make a decision on the amount of allocated resources. The decision of a problem is the failure in service for low-priority traffic.

协议指令具有一定的计算负载。它允许投影节点,以便它能够以这样的速度处理指令,并从网络接收指令。过载的一个可能原因是指令跳转和调用。虚拟机必须解决这个问题。它拥有有关用户任务的完整信息,并可以决定分配的资源量。问题的决定是低优先级流量的服务失败。

Protection at the applications architecture level:

应用程序体系结构级别的保护:

The protocol allows creating the applications of any architecture. It is possible due to an asymmetric structure of connection. It is possible to allocate three basic groups:

该协议允许创建任何体系结构的应用程序。这是可能的,因为连接结构不对称。可以分配三个基本组:

(1) The client who is carrying out terminal functions and client/server technologies. The security of such systems is completely defined by the server. Such architecture is represented most protected. (2) The client, loading an active code from the server. It is the least protected architecture, from the client point of view. On the server side, there are no special requirements upon protection. (3) The client, who is executing his code on the server. This architecture is safe for the client. It is necessary to strengthen the protection on the server. The functionalities of such architecture do not differ from architecture of loading by the client of an active code. If ones take into account, that the server is the specially allocated computer, the given architecture is optimum.

(1) 执行终端功能和客户机/服务器技术的客户机。此类系统的安全性完全由服务器定义。这样的架构是最受保护的。(2) 客户端,从服务器加载活动代码。从客户端的角度来看,它是最不受保护的体系结构。在服务器端,对保护没有特殊要求。(3) 在服务器上执行代码的客户机。这种体系结构对客户端来说是安全的。有必要加强对服务器的保护。这种架构的功能与客户端加载活动代码的架构没有区别。如果考虑到服务器是专门分配的计算机,则给定的体系结构是最佳的。

All given technologies may be used simultaneously in any combination.

所有给定的技术可以在任何组合中同时使用。

11 Used Abbreviations

11使用的缩略语

API Application Programming Interface.

API应用程序编程接口。

CTID JCP assigned the Control Task IDentifier to each task of the job. Its length is equal to length of the local address memory on the node JCP.

CTID JCP将控制任务标识符分配给作业的每个任务。其长度等于节点JCP上本地地址内存的长度。

GJID Globally Job IDentifier is assigned for the each job. GJID is defined on the JCP node. It has the same format, as the 128 - bit address of node JCP memory has. The address of local memory is replaced on CTID of the first (initial) task of the job in it.

为每个作业分配GJID全局作业标识符。GJID是在JCP节点上定义的。它的格式与节点JCP内存的128位地址相同。本地内存的地址在其中作业的第一个(初始)任务的CTID上被替换。

GTID Globally Task IDentifier is assigned to each task. GTID has the same format, as the 128 - bit address of node memory has. The address of local memory is replaced on LTID in it.

GTID全局任务标识符分配给每个任务。GTID的格式与节点内存的128位地址相同。本地内存的地址在其中的LTID上被替换。

JCP Job Control Point. This node will control the job.

JCP作业控制点。此节点将控制作业。

LTID Locally Task IDentifier is assigned to each active task on the node. LTID length is equal to the local memory address length defined for the node.

LTID本地任务标识符分配给节点上的每个活动任务。LTID长度等于为节点定义的本地内存地址长度。

VM Virtual Machine.

虚拟机虚拟机。

12 References

12参考文献

[1] Bradner, S., "The Internet Standards Process -- Revision 3", BCP 9, RFC 2026, October 1996.

[1] Bradner,S.,“互联网标准过程——第3版”,BCP 9,RFC 2026,1996年10月。

[2] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", RFC 2119, March 1997.

[2] Bradner,S.,“RFC中用于表示需求水平的关键词”,RFC 211997年3月。

[3] Crocker, D., and P. Overell. "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, November 1997.

[3] 克罗克博士和P.奥威尔博士。“语法规范的扩充BNF:ABNF”,RFC 2234,1997年11月。

[4] Postel, J., "Transmission Control Protocol - DARPA Internet Program Protocol Specification", STD 7, RFC 793, September 1981.

[4] Postel,J.,“传输控制协议-DARPA互联网程序协议规范”,STD 7,RFC 793,1981年9月。

[5] Postel, J., "User Datagram Protocol", STD 6, RFC 768, August 1980.

[5] Postel,J.,“用户数据报协议”,STD 6,RFC 768,1980年8月。

[6] Srinivasan, R., "RPC: Remote Procedure Call Protocol Specification Version 2", RFC 1831, August 1995.

[6] Srinivasan,R.,“RPC:远程过程调用协议规范版本2”,RFC 18311995年8月。

13 Author's Address

13提交人地址

Alexander Y. Bogdanov

亚历山大·博格达诺夫

NKO "ORS" 22, Smolnaya St. Moscow, Russia 125445 RU

俄罗斯莫斯科Smolnaya St.NKO“ORS”22号邮编:125445

   Phone: +7 901 732 9760
   EMail: a_bogdanov@iname.ru
        
   Phone: +7 901 732 9760
   EMail: a_bogdanov@iname.ru
        

14 Full Copyright Statement

14完整版权声明

Copyright (C) The Internet Society (2000). All Rights Reserved.

版权所有(C)互联网协会(2000年)。版权所有。

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.

本文件及其译本可复制并提供给他人,对其进行评论或解释或协助其实施的衍生作品可全部或部分编制、复制、出版和分发,不受任何限制,前提是上述版权声明和本段包含在所有此类副本和衍生作品中。但是,不得以任何方式修改本文件本身,例如删除版权通知或对互联网协会或其他互联网组织的引用,除非出于制定互联网标准的需要,在这种情况下,必须遵循互联网标准过程中定义的版权程序,或根据需要将其翻译成英语以外的其他语言。

The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.

上述授予的有限许可是永久性的,互联网协会或其继承人或受让人不会撤销。

This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

本文件和其中包含的信息是按“原样”提供的,互联网协会和互联网工程任务组否认所有明示或暗示的保证,包括但不限于任何保证,即使用本文中的信息不会侵犯任何权利,或对适销性或特定用途适用性的任何默示保证。

Acknowledgement

确认

Funding for the RFC Editor function is currently provided by the Internet Society.

RFC编辑功能的资金目前由互联网协会提供。