【栏目介绍:“玩转OurBMC”是OurBMC社区开创的知识分享类栏目,主要聚焦于社区和BMC全栈技术相关基础知识的分享,全方位涵盖了从理论原理到实践操作的知识传递。OurBMC社区将通过“玩转OurBMC”栏目,帮助开发者们深入了解到社区文化、理念及特色,增进开发者对BMC全栈技术的理解。

欢迎各位关注“玩转OurBMC”栏目,共同探索OurBMC社区的精彩世界。同时,我们诚挚地邀请各位开发者向“玩转OurBMC”栏目投稿,共同学习进步,将栏目打造成为汇聚智慧、激发创意的知识园地。】

iKVM(Integrated Keyboard, Video and Mouse)作为 BMC 的核心功能之一,通过集成硬件和软件,实现对服务器全程全时的远程控制。即在服务器的上电后的任意阶段,如BIOS启动、内核加载、操作系统运行或崩溃等时刻,都能通过 BMC 的iKVM功能,被远端的管理员监控管理。 因此,相比于其他的远程控制技术,iKVM 作为服务器的带外远程技术,具有 表1 所示不依赖服务器的 BIOS 固件、操作系统、应用程序,能在硬件层面实现全程全时的远程管理目标。

表1 远程控制技术的特点对比
277aabea5e6e012cbee1bbd7f23c140e.png

iKVM 功能介绍

iKVM 作为现代 IT 基础设施中不可或缺的远程管理工具,它不仅具备远程视图、远程操控、虚拟媒体这三项基础功能,能够满足管理员对服务器的基本远程管理需求;还支持屏幕录制与回放、自动截屏等扩展功能,为管理员在定位服务器运行异常时,提供了补充故障发生瞬间视频或图像资料的有力手段,极大提升了故障排查的效率和准确性。

iKVM 的基础功能在实际应用场景中极为常见,如 图1 所示的机房环境。在该场景中,即使服务器未连接本地显示器,管理员依然能够通过 iKVM 实现远程显示与操作。接下来,将详细介绍 iKVM 的各项基础功能。

9a76662a5d191dcb1b2794cb3dd8eecd.png

图1 iKVM使用场景

  1. 远程视图功能通过在远程终端的网页或客户端中,实时展示服务器的屏幕内容,呈现效果与本地操作服务器查看显示器一致。借助该功能,管理员能够即时获取服务器的运行状态、系统界面等关键信息,为远程监控和管理提供了直观且高效的途径。
  2. 远程控制功能将远程终端的鼠标点击、键盘输入等操作转换为模拟的 USB 键鼠信号,实现对服务器的实际控制。例如管理员在远程视图下,点击图标、输入文字、选择菜单等操作,会同步传输到本地服务器,并得到本地服务器的响应。
  3. 虚拟媒体功能将本地存储设备(如 U盘、ISO 镜像)映射为服务器的虚拟光驱或硬盘,实现远程系统部署。简便了远程维护和管理的工序。

实现原理

obmc-ikvm 软件包,是 OpenBMC 社区里部署 iKVM 特性的应用程序,它依赖 JPEG 编码器、模拟键鼠输入信号的 USB Gadget 设备。obmc-ikvm 调用 Linux 驱动提供的统一的命令字和接口,如 JPEG 编码器采用 Linux 系统里 V4L2 框架制定的命令字;键鼠输入使用 UDC(USB Device Controller)设备模拟成 USB Gadget HID(Human Interface Device)的标准接口。因此,适配 obmc-ikvm 应用程序,需要 BMC 芯片厂商分别遵循 V4L2、USB Gadget HID 的要求,开发 JPEG 编码器的驱动和 USB Gadget HID 驱动,才能屏蔽芯片差异。

obmc-ikvm 兼容遵循上述要求的 BMC 芯片,本章节以飞腾公司的飞腾腾珑 E2000S 芯片做示例,详细剖析 iKVM 特性的软硬件协同设计方案。如 图2 所示,iKVM 系统自左至右依次划分为 Host端、BMC SoC端、远程终端三部分:

  1. Host端把显示数据流,通过 PCIE Bus 输出到 DC(Display Controller)引擎。以及 USD Host 控制器接收来自 BMC SoC 端 USB Bus 的键鼠输入信号。
  2. BMC Soc 端的 DC 输出两路视频数据流,“ Output 1 ”输出到 BMC 卡的 VGA 显示器(如 图1 的说明,该显示器为可选组件),“ Output 2 ”输出到 JPEG Encoder 模块的 video0 设备节点。video0 设备驱动通过 V4L2 接口接收原始视频流,并调用硬件加速单元(或软件编码器)将其压缩为 JPEG 格式的静态图片,缓存至共享内存区域,供 obmc-ikvm 模块按需读取。若部署运行在 BMC 的 VNC Server 里,接收到来自远程控制的请求。在网络带宽不拥塞的场景下,ombc-ikvm 会按照设定的帧率,将 JPEG 格式的图片,发送给 VNC Server 模块。
  3. 远程终端,可通过 VNC Client 端、网页浏览器,建立与 BMC SoC 端的网络会话。其中网页视图,需要通过 websocket 与 BMC SoC 端后台进程 bmcweb 建立会话。

fb1f9fb13192479d6f25ac8b78fa0483.png

图2 飞腾腾珑E2000S的 iKVM 系统框图

运行在 图2 中 BMC SoC 端里的 obmc-ikvm,通过标准的 V4L2 命令,操作 video0 设备,可以设置 JPEG  编码器的 YUV 模式、帧率,开启或关闭 stream。此外,obmc-ikvm 接收到来自 VNC Server 模拟键鼠输入事件,会解析成字符输入(Key Event)或坐标输入(Pointer Event),分别发送到USB Gadget HID设备的 hidg0、hidg1。hidg0、hidg1 这两个USB Gadget HID 设备,与 Host 端之间的互联结构,可用 图3 以飞腾腾珑 E2000S 里 UDC 模拟的USB Gadget HID 示例说明。USB Gadget HID 设备通过绑定 Gadget g_hid 函数,注册到 UDC 驱动框架里。模拟成USB键鼠设备挂接到 Host 端的USB总线上,被 Host 端的 USB Host 控制器驱动感知并识别,进而把键鼠信号,输入到 USB Host 控制端,实现操作 Host 的目的。

782609315a7cc240bf95a41135770d7e.png

图3 飞腾腾珑 E2000S USB Gadget 通信

远端视图

obmc-ikvm 支持 vnc 客户端和网页两种视图模式。目前 OurBMC 在 VNC 客户端只支持 iKVM 的三项基础功能,而在网页端实现了 iKVM的 部分扩展功能,增强运维效率与可追溯性。如 图4 所示,在右侧边栏,增加了四个控件,其中上面的两个控件,用于截屏、录制服务器的显示界面。运维人员可通过回看截屏、回放录制的视频,定位分析故障,审计操作是否异常。

c68fcb9cd47b3f2064a2610a37072d93.png

图4 OurBMC 的 KVM 网页界面

iKVM 通过“ 实时监控-远程操作-故障复现 ”的运维闭环,构建了服务器管理的全新范式。其屏幕录制与自动截屏功能,为故障排查提供了“ 可视化证据链 ”,不仅提升了运维效率与准确性,更推动了 IT 基础设施向智能化、自动化方向演进。

欢迎大家关注OurBMC社区,了解更多BMC技术干货。

OurBMC社区官方网站:

https://www.ourbmc.cn/


OurBMC
28 声望21 粉丝

OurBMC社区是由基础软硬件企业、第三方机构、高等院校、个人开发者等各方共同参与建设的开源社区,社区基于开放、平等、协作、创新的基本原则,携手社区成员,共同构建自主、先进、软硬一体的BMC技术全栈,共同推...