RFB Extensions

RFB extensions are custom messages that Intel has added to the standard RFB protocol to support additional features. Extensions use the RFB 3.8 standard (RFC 6143) CutText messages that can be sent from the client (the remote management console) to the server (Intel AMT) and vice versa.

RFB CutText message format and flow:

1. The client sends a ClientCutText message to the server (in accordance with section 7.5.6 of the RFB 3.8 standard (RFC 6143).

2. The server sends a ServerCutText message to the client (in accordance with section 7.6.4 of the RFB 3.8 standard (RFC 6143).

Both messages have the same format, with the exception of the message type value:

Number of Bytes

Type

Description

1

UINT8

Message type:
6: ClientCutText message (Client to Server)
3: ServerCutText message (Server to Client)

3

UINT8[3]

0: padding

4

UINT32

Length of text

length

UINT8[length]

Message text

The extensions were defined by using a specific format in the text field.

Controlling Intel AMT KVM Decimation When a KVM Session Is Active

Decimation enhances Intel AMT KVM performance by reducing the number of pixels in the captured frame, and is available on platforms with Intel Iris® Xe Graphics Architecture (see the Infographic). Decimation can be used to speed up the performance of Intel AMT KVM and improve user experience when capturing from high-resolution screens or when the network connection between the console and the managed platform is slow. Note: If the resolution of the captured screen is relatively low, decimation may cause some distortion in the captured frame.

More information on decimation

Two RFB extensions support decimation:

   An extension that allows the KVM viewer to retrieve the decimation state. For details see Get Decimation State.

   An extension that allows the KVM viewer to enable or disable decimation. For details see Set Decimation State.

The extensions allow a remote user to retrieve and change the decimation state while the KVM session is active. For example, they can be used to activate decimation to improve performance on a slow network.

Decimation modes supported by KVM

   Disabled mode: Decimation always disabled.

   Automatic mode: KVM activates decimation automatically when capturing from a screen whose resolution is 4K or above.

   Enabled mode: Decimation always activated.

Get Decimation State

Use the following format as the text in the RFB CutText:

ClientCutText: KVM Viewer -> AMT-KVM: Get Current Decimation Mode Request:

Number of Bytes

Type

Description

1

U8

0: padding

9

U8[9]

“KvmExtCmd”: hard-coded string

1

U8

0: padding

1

U8

1: Get Current Decimation Mode Request

ServerCutText: AMT-KVM -> KVM Viewer: Get Current Decimation Mode Response:

Number of Bytes

Type

Description

1

U8

0: padding

9

U8[9]

“KvmExtCmd”: hard-coded string

1

U8

0: padding

1

U8

1: Get Current Decimation Mode Response

1

U8

Current Decimation Mode:

KVM uses the decimation mode to determine whether to use decimation:

     0: Decimation is not supported by the platform

     1: Decimation mode is disabled

     2: Decimation mode is automatic

     3: Decimation mode is enabled

1

U8

Current Decimation State:

Indicates whether decimation is currently being used

     0: Decimation currently not active

     1: Decimation mode currently active

Set Decimation State

Use the following format as the text in the RFB CutText:

ClientCutText: KVM Viewer -> AMT-KVM: Set Decimation Mode Request:

Number of Bytes

Type

Description

1

U8

0: padding

9

U8[9]

“KvmExtCmd”: hard-coded string

1

U8

0: padding

1

U8

2: Set Decimation Requested Mode

1

U8

New Decimation Requested Mode:

     1: Decimation mode disabled

     2: Decimation mode automatic

     3: Decimation mode enabled

ServerCutText: AMT-KVM -> KVM Viewer: Set Decimation Mode Response:

Number of Bytes

Type

Description

1

U8

0: padding

9

U8[9]

“KvmExtCmd”: hard-coded string

1

U8

0: padding

1

U8

2: Set Decimation Mode Response

1

U8

Status of the Set Decimation Mode Request:

     0: Succeeded

     1: Failed

Controlling KVM ZLIB During a KVM Session

Information on Zlib

Checking whether Intel AMT supports allowing the KVM viewer to turn Zlib on or off

Two RFB extensions enable controlling Zlib from the remote management console:

   An extension that allows the KVM viewer to retrieve the current Zlib state. For details see Get Current ZLIB State.

   An extension that allows the KVM viewer to enable or disable Zlib. For details see Set ZLIB State.

Get Current ZLIB State

Use the following format as the text in the RFB CutText:

ClientCutText: KVM Viewer -> AMT-KVM: Get Current ZLIB State Request

Number of Bytes

Type

Description

1

U8

0: padding

9

U8[9]

“KvmExtCmd”: hard-coded string

1

U8

0: padding

1

U8

3: Get Current ZLIB State Request

ServerCutText: AMT-KVM -> KVM Viewer: Get Current ZLIB State Response:

Number of Bytes

Type

Description

1

U8

0: padding

9

U8[9]

“KvmExtCmd”: hard-coded string

1

U8

0: padding

1

U8

3: Get Current ZLIB State Response

1

U8

Current ZLIB State:

     0: Zlib disabled

     1: Zlib enabled

Set Zlib State

Use the following format as the text in the RFB CutText:

ClientCutText: KVM Viewer -> AMT-KVM: Set ZLIB State Request:

Number of Bytes

Type

Description

1

U8

0: padding

9

U8[9]

“KvmExtCmd”: hard-coded string

1

U8

0: padding

1

U8

4: Set Zlib state request

1

U8

New ZLIB Requested State:

     0: Disabled

     1: Enabled

ServerCutText: AMT-KVM -> KVM Viewer: Set ZLIB State Response:

Number of Bytes

Type

Description

1

U8

0: padding

9

U8[9]

“KvmExtCmd”: hard-coded string

1

U8

0: padding

1

U8

4: Set Zlib state response

1

U8

Status of the Set ZLIB State Request:

     0: Succeeded

     1: Failed

Intel AMT KVM Data Channel

The KVM Data Channel solution allows combining out-of-band Intel AMT KVM with in-band KVM, using a single KVM viewer. This provides the advantages of both types of KVM: out-of-band Intel AMT KVM enables seeing BIOS menus and working remotely with the managed system when it does not boot or has network issues; in-band KVM provides features available only with an OS agent operating on the managed system. The Intel AMT KVM Data Channel solution allows the KVM viewer to seamlessly switch between out-of-band Intel AMT KVM and in-band KVM.

Out-of-band KVM alone:

Out-of-band KVM with the data channel solution:

Solution Overview

The data channel allows the KVM viewer application running on the remote management console to send and receive data from a software KVM server running on the OS of the managed computer.

The data channel works as follows:

KVM viewer to software KVM server data channel path:

1. The KVM viewer sends data to Intel AMT KVM by using RFB’s ClientCutText message – see the message format in Data Channel Message Format: From KVM Viewer to AMT.

2. Intel AMT KVM appends the remote Intel AMT username and its realms to the data that the software KVM server will receive, separated by colons. This allows the software KVM server to identify the user and its realms and to allow or not allow features in the in-band KVM accordingly.

   The data that the software KVM server receives has the following format:
amtusername:12345:ABC
where
12345 represents the realm bit map.

3.  The Local Management Service (LMS) running on the OS publishes a COM (Component Object Model) event when data is waiting in Intel AMT KVM for the software KVM server (interface is IUNSAlert, method is RiseAlert, message category 7, message ID 76).

4. The software KVM server to which this event is subscribed receives the event and calls the IPS_KVMRedirectionSettingData.DataChannelRead WS-MAN command to retrieve the data from KVM.

   Note: The software KVM server must use the Intel AMT OS local administrator’s username ($$OSAdmin) and password to invoke this WS-MAN command. This is required to keep the data channel secure.

   For more details see the IPS_KVMRedirectionSettingData.DataChannelRead WS-MAN Method.

Software KVM server to KVM viewer data channel path

1. The software KVM server calls the IPS_KVMRedirectionSettingData.DataChannelWrite WS-MAN command to pass data to Intel AMT KVM.

   Note: The software KVM server must use the Intel AMT OS local administrator’s username ($$OSAdmin) and password to invoke this WS-MAN command. This is required to keep the data channel secure.

   Note: For more details see section IPS_KVMRedirectionSettingData.DataChannelWrite WSMAN Method.

2. Intel AMT KVM transmits the data to the KVM viewer by using RFB’s ServerCutText message – see the message format in Data Channel Message Format: From AMT to KVM Viewer.

Note: The data channel is relevant only if an out-of-band KVM session is active (this means, for example, that if user consent is required to open the out-of-band KVM session, it needs to be provided before the data channel is available) and the platform is in the S0 power state.

Activating the Data Channel

When the KVM viewer opens a KVM session, the data channel is by default not active. The KVM viewer can activate the data channel in the current KVM session by sending encoding type 0x444 in the list of supported encodings that it sends to Intel AMT KVM in the RFB message SetEncodings. This encoding type is an Intel specific value that indicates to KVM that it should activate the data channel.

Data Channel Keep-Alive

KVM has an idle timer that can be configured via the IPS_KVMRedirectionSettingData.PUT.SessionTimeout WS-MAN command. When the value of SessionTimeout is not 0, KVM uses it to terminate the Intel AMT KVM session if the time specified by SessionTimeout has passed with no activity.

When the KVM viewer works with the software KVM server, Intel AMT KVM does not generate or report any operations (i.e, there are no requests for next frame buffer update or reports on keyboard presses and mouse movements). To keep the Intel AMT KVM session open and to reset the idle timer when needed, the KVM viewer can send Data Channel Keep Alive messages to Intel AMT KVM - this is a data channel message with zero size data. Intel AMT KVM does not forward this message to the software KVM server.

Switching Between In-Band and Out-Of-Band KVM

When the KVM viewer detects that the software KVM server is not responding, or is notified by the software KVM server to switch to out-of-band KVM, the viewer can use the RFB protocol to ask Intel AMT KVM for the next frame buffer updates, push keyboard presses and mouse movements etc., thereby switching to out-of-band KVM.

When the software KVM server is again active, the KVM viewer can stop using the RFB protocol for out-of-band KVM and can continue interacting with the in-band KVM.

Note: The interaction between the KVM viewer and the software KVM server does not need to be solely via the data channel; the two can also interact directly. The advantage of using the data channel is that it is available also when the operating system on the managed system does not have a network connection.

User Privacy

When opening an Intel AMT KVM session, the KVM displays the blinking privacy icon to indicate to the user that an Intel AMT redirection session is active. In addition, a colored screen border indicates to the user which screen is being captured.

In-band KVM can capture from multiple screens simultaneously and/or from non-Intel graphics. For the user’s privacy, it is suggested that the in-band KVM application should indicate to the user that it is running and the displays it is capturing.

Data Channel Message Format: From KVM Viewer to Intel AMT

Use the following format as the text in the RFB CutText:

ClientCutText: KVM Viewer -> AMT-KVM: Data Channel Message from the KVM viewer to AMT-KVM or to the software KVM server:

Number of Bytes

Type

Description

1

U8

0: padding

14

U8[9]

“KvmDataChannel”: hard-coded string

1

U8

0: padding

Length2 (*)

U8[Length2]

Data to pass to the software KVM server (Intel AMT KVM does not parse the data)

(*) Length 2 = Length-16

Data Channel Message Format: From Intel AMT to KVM Viewer

Use the following format as the text in the RFB CutText:

ServerCutText: AMT-KVM -> KVM Viewer: Data Channel Message from the software KVM server to the KVM viewer:

Number of Bytes

Type

Description

1

U8

0: padding

14

U8[14]

“KvmDataChannel”: hard-coded string

1

U8

Ack:

     1: Intel AMT sets to 1 after receiving a message from the KVM viewer and the software KVM server has read it. This allows the KVM viewer to know that the message was read by the software KVM server

     0: Otherwise

Length2 (*)

U8[Length2]

Data from the software KVM server

(*) Length 2 = Length-16

Copyright © 2006-2022, Intel Corporation. All rights reserved.