Get desktop application:
View/edit binary Protocol Buffers messages
message header
message body
operation status
algorithm
Used in: ,
Must come first, so default is invalid
see NIST
see NIST
see NIST. The length of the tag determined the length of the hash
7-99 are reserved. 100-inf are private algorithms.
This is included in the END_BATCH and END_BATCH_RESPONSE.
Used in:
set by the client library in END_BATCH request message. the total number of operations in the batch
set by the drive in END_BATCH_RESPONSE message. If a batch is committed successfully, all sequence Ids of those commands (PUT/DELETE) performed in the batch are added in the END_BATCH_RESPONSE message.
This field is set by the drive if a batch commit failed. The first failed operation sequence in the batch is set as value.
message body
Used in:
key/value op
range operation
set up operation
Peer to Peer operations.
GetLog
set up security
Perform Pin-based operations
batch operation This is included in the END_BATCH and END_BATCH_RESPONSE.
get log
Used in:
These capacities are in bytes.
Used in:
1-3 are reserved
Used in:
name of the vendor. Should be "Seagate"
The model of the device. "Simulator" for the simulator.
Device Serial number (SN)
Device world wide name (WWN)
This is the vendor specific version of the software on the device in dot notation if this is not set or ends with "x" this is test code.
This is the version of the protocol (.proto file) that the device uses. This is not the highest or lowest version that is supported, just the version that was compiled.
the interfaces for this device. one per interface.
these are the port numbers for the software
18, 19 are reserved.
Used in:
The Device GetLog message is to ask the device to send back the log of a certain name in the value field. The limit of each log is 1m byte. Proprietary names should be prefaced by the vendor name so that name collisions do not happen in the future. An example could be names that start with “com.WD” would be for Western Digital devices. If the name is not found, the get log returns NOT_FOUND. There can be only one Device in the list of logs that can be retrieved.!
Used in:
Used in:
These numbers start at 0 when the device starts up and never wraps or resets.
Used in:
2 and 3 are reserved, do not use
This is the sum of the data that is in the data portion. This does not include t the command description. For P2P operations, this is the amount of data moved between devices
Used in:
The name of the temperature being reported. These names can be standard and proprietary. The standard name is "HDA". If there are more items that are being reported, such as processor temperature, can have a descriptive name.
The current temperature in degrees c
Used in:
Must come first, so default is invalid
Used in:
The name of the utilization being reported. These names can be standard and proprietary. The standard names are "HDA", "EN0" and "EN1". If there are more items that are being reported, such as processor utilization, can have a descriptive name.
A number between 0.00 and 1.00. The resolution of this number is up to the device. 1 means 100% utilized.
message header
Used in:
"cluster" is the number of the cluster definition. If this is incompatible, the request is rejected. If it is missing, it is assumed to be 0. (0 allows systems not using cluster versioning to ignore this field in the header and in the setup.)
A unique number for this connection between the source and target. On the first request to the device, this should be the time of day in seconds since 1970. The device can change this number and the client must continue to use the new number and the number must remain constant during the session. (See security document).
the sequence of this request in this TCP connection. As long as this value is getting larger we have strong ordering and replay prevention within a session. This combined with the time and connectionID provides strong ordering between sessions. (See security document).
co-related sequence
operation code - put/get/delete/GetLog, etc.
Request timeout (in ms). This is the amount of time that this request should take. If this timeout is triggered, there are three possible results that can be returned. - SERVICE_BUSY meaning that the request was still on the queue waiting to be executed - EXPIRED meaning that a long running operation was stopped because the time expired. - DATA_ERROR meaning that the request was in process, but that the error recovery was not complete at the time that the time expired
If true, requests will not attempt multi revolution recoveries even if the timeout has not occurred. In this case the result will be DATA_ERROR. To have the device exhaust all possible error recovery, leave this field off or set to false, and make sure that the timeout is set to be longer than any possible queue time and error recovery time. On a disk device, the maximum error recovery time could be seconds. Once all possible data recovery operations are complete and have not succeeded, PERM_DATA_ERROR will be returned.
Priority is a simple integer that determines the priority of this request. All activity at a higher priority will execute before that of lower priority traffic. A higher number is higher priority.
A hint of how long a job should run before yielding. Specified in miliseconds. A value of 0 indicates that the operation can perform one sub operation and then check to see if there are other sub higher priority operations. An example of a sub-operation might be a single put in a P2P operation, etc.
batch id to be included in each command of a batch operation this id is generated by client library and must be unique within the same connection.
key/value entry operation
Used in:
On a put or delete, this is the next version that the data will be. The version field is opaque to the target. (See Atomic operations document)
On a put or delete, this forces the write to ignore the existing version of existing data (if it exists).
entry key
entry version in store
this is the integrity value of the data. This may or may not be in the clear, depending on the algorithm used.
The following is for the protection of the data. If the data is protected with a hash or CRC, then the algorithm will be negative. If the data protection algorithm is not a standard unkeyed algorithm then a positive number is used and the device has no idea what the key is. See the discussion of encrypted key/value store.(See security document).
for read operations, this will get all the information about the value except for the value itself. This is valuable for getting the integrity field or the version without also having to get the data. If this field is not present, it is as if it is false. For write or delete operations, if this is set, the command is rejected.
Synchronization allows the puts and deletes to determine if they are to be WRITETHROUGH: This request is made persistent before returning. This does not effect any other pending operations. WRITEBACK: They can be made persistent when the device chooses, or when a subsequent FLUSH is give to the device. FLUSH: All pending information that has not been written is pushed to the disk and the command that specifies FLUSH is written last and then returned. All WRITEBACK writes that have received ending status will be guaranteed to be written before the FLUSH operation is returned completed.
operation code
Used in: ,
Must come first, so default is invalid
get operation
put operation
13 and 14 are reserved, do not use
17, 18, 19, and 20 are reserved, do not use
peer to peer push operation
33, 34 are reserved
Pin based operations
Media scan is to check that the user data is readable, and if the end to end integrity is known to the device, if the end to end integrity field is correct.
This performs optimizations of the media. Things like defragmentation, compaction, garbage collection, compression could be things accomplished using the media optimize command.
batch operations
P2P operations allow devices to be able to send keys to other devices. this is either a standalone command or added to a put command.
Used in: ,
Describe the target machine
List of operations to be performed.
Indicates whether all operations have Status SUCCESS When false, clients should traverse Operation status codes to discover error cases. When true, no further error checking should be required.
Used in:
the key of the entry to move
the expected version number in the other machine the version number will be the version in the stored entry.
to have the moved key have a different final key used.
force the write ignoring the current key version.
returned status
an operation to add to this put operation. THis allows the formation of a pipeline client -> A ->B ->C with the status for all returning back to the client.
Used in:
Pin Operations are used for special commands that are valid when the device is locked or to be locked. These are unlock, lock and erase. This must come over the TLS connection to protect the confidentiality and integrity. This operations must be used with PinAuth.
Used in:
Used in:
The pin will unlock the device
This will lock the device. This includes all configuration and user data. This operation is secure from even given physical access and disassembly of the device.
Erase the device. This may be secure or not. The implication is that it may be faster than the secure operation.
Erase the device in a way that will physical access and disassembly of the device will not
Used in: ,
key range op
Used in:
The maximum number of keys returned
The keys are searched for and returned in a reverse order. For instance if the search is startKey="j", endKey="k", maxReturned=2, reverse=true and the keys "k0", "k1", "k2" exist the system will return "k2" and "k1" in that order.
get range response .
These are persistent options that are retained across power fail and erased on either PIN erase or PIN secure erase.
Used in:
one per identity
Set the lock and erase pins.
Used in:
the HMAC key
value that must be in the key for read, write, range requests. If none are specified then no checking occurs. If one or more is specified, one must match or the request is rejected
The maxPriority is checked against the header priority and range priority (if present) fields. The priority must be greater than or equal to this maxPriority field.
Used in:
Must come first
0 is reserved; do not use
this is the default
Used in:
place holder for backward .proto file compatibility
can read key/values
can write key/values
can do a range
can set up and a device
can do a peer to peer operation
can get log
can set up the security roles of the device
Used in:
one per role
This is only allowed over the the TLS connection
if any or all of these are fields are included, they are set. These are persistent options that are retained across power fail and erased on either PIN erase or PIN secure erase.
Used in:
The cluster version to be checked. The default if never set is 0. If this is missing, it is assumed to be unchanged; This is persistent between boots of the device.
indicates the presence of a firmware load in the data portion of this message. The firmware is itself protected on its own for integrity, authenticity, etc.
operation status
Used in: ,
status code
status message
optional information comes with status
enum of status code
Used in:
Must come first, so default is invalid
for a P2P operation, there was a reason the list was incomplete. This is for items that were not attempted.
If there are too many requests in the device at this time, requests will be rejected with this error message. The common response is to wait and retry the operation with an exponential back-off.
A long operation was started and a timeout happened mid operation. This does not imply a failure.
A data error happened and either earlyExit was set or the timeout happened.
A data error happened and all possible error recovery operations have been performed. There is no value to trying this again. If the system has the ability to determine the correct information, writing the data again can get rid
A TCP connection to the remote peer failed. This is only for the P2P Operation
When the device is full, it returns this error. The background scrubbing may free space, so this error may go away
In the set security, an HmacAlgorithm was specified as Unknown or there is a protocol version mis-match
The request is not valid. Subsequent attempts with the same request will return the same code. Examples: GET does not specify keyValue message, GETKEYRANGE operation does not specify startKey, etc
For P2P Requests, the operation was executed successfully but some nested operations did not succeed. This indicates that callers should review the status of nested operations. This status should only be used in the Command > Status, not in the Status messages of nested P2POperations
If the device is currently locked and can not validate the hmac. This is returned as an status and the connection is terminated.
The device was already unlocked. The validity of the pin was NOT checked. The connection remains open.
The connection is being terminated. Details as to why are in the message string.
During a batch operation, the only operations allowed are put " and delete. This error is put against the offending command and " the rest of the commands and the END_BATCH return NOT_ATTEMPTED."
Used in:
Must come first, so default is invalid
* kinetic extended message. This is currently used by extended transport and for evaluation only.
drive interface message
optional value
this is a local message to allow the program to read the protocol version number by building this message and then reading the value.
THe message is an authorization and command bytes.
Used in:
Every message must be one of the following types.
Normal messages
for Pin based operations. These include device unlock and device erase
the embedded message providing the request (for HMACauth) and the response (for all auth types).
The Message Type determines how the the message is to be processed.
Used in:
if the message type is unknown, close the connection
This is for normal traffic. Check the HMAC of the command and if correct, process the command.
device unlock and ISE command. These must come over the TLS connection. If they do not, close the connection. If it is over the TLS connection, execute the pin operation.
In the event that the device is going to close the connection, an unsolicited status will be returned first.
This is for normal message to the device and for responses. These are allowed once the device is unlocked. The HMAC provides for authenticity, Integrity and to enforce roles.
Used in:
The "identity" identifies the requester and the key and algorithm to be used for hmac.
Pin based authentication for Pin operations.
Used in:
The pin necessary to make the operations valid
* persisted entry value message format. <p> db persisted entry (KVValue)
metadata
entry value/data
key/value entry op metadata
Used in:
entry key
entry version in store
this is the integrity value of the data. This may or may not be in the clear, depending on the algorithm used.
The following is for the protection of the data. If the data is protected with a hash or CRC, then the algorithm will be negative. If the data protection algorithm is not a standard unkeyed algorithm then a positive number is used and the drive has no idea what the key is. See the discussion of encrypted key/value store.(See security document).