Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025)

Материал из 0x1.tv

Докладчик
Александр Певзнер.jpg
Александр Певзнер

Представлен поведенчески точный симулятор МФУ (принтеров и сканеров), который позволяет воспроизводить работу этих устройств с высокой степенью достоверности, включая присущие им отклонения от стандартов, особенности и ошибки встроенного программного обеспечения

Видео[править вики-текст]

Презентация[править вики-текст]

Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025).pdf

Thesis[править | править вики-текст]

Ключевые слова: система печати, сканирование, разработка, симуляция, IPP, eSCL, WSD.

Устройства для сканирования и печати документов представляют собой технически сложные системы. Хотя их поведение регламентируется стандартами и спецификациями, реальные аппаратные реализации часто обладают уникальными особенностями и могут существенно отклоняться от установленных норм, что негативно сказывается на работе подсистемы сканирования и печати в операционной системе.

Многолетний опыт развития и поддержки данной подсистемы (накопленный в рамках проекта OpenPrinting) показывает, что многие проблемы возникают вследствие несоответствия реального поведения оборудования заявленным стандартам и спецификациям.

Дополнительную сложность создаёт тот факт, что принтеры и сканеры являются дорогостоящими, громоздкими и тяжёлыми устройствами, что затрудняет формирование и поддержание репрезентативной коллекции подобной аппаратуры.

В качестве решения представлен реалистичный симулятор МФУ, способный воспроизводить не только стандартное поведение, соответствующее протоколам, но и специфические особенности реализации этих протоколов различными производителями, включая ограничения и ошибки.

На текущем этапе задача состоит в воспроизведении основных протоколов, описанных открытыми стандартами:

  1. Протокол IPP для печати ([1], [2], [3]).
  2. Протоколы eSCL[4] и WS-Scan[5] для сканирования.
  3. Протоколы DNS-SD[6] и WS-Discovery[7] для поиска сетевых устройств.
  4. Протокол IPP over USB[8] для «бездрайверного» сканирования и печати на USB-устройствах.
  5. Протокол USB Printer Class[9] для эмуляции «традиционных» USB-принтеров.

Поддержка проприетарных протоколов в настоящий момент не рассматривается.

Симулятор состоит из ядра и набора моделей аппаратуры. Модель может быть сложной, определяющей особенности поведения устройства с высокой степенью детализации, или простой, предназначенной для воспроизведения конкретной проблемы.

Каждая модель включает описание конфигурации устройства (в виде набора параметров, таких как поддерживаемые форматы бумаги, разрешения, цветовые модели, наличие двустороннего сканирования и печати и т. п.), а также необязательные скрипты на языке Python, позволяющие задать особенности поведения эмулируемого устройства.

Ядро симулятора автоматически интерпретирует конфигурацию устройства и обеспечивает идеализированное поведение, основанное на стандартах. Скрипты (перехватчики событий, hooks), вызываемые на различных этапах обработки запросов, могут вмешиваться в процесс и модифицировать поведение симулируемого устройства.

Такой подход позволяет создавать относительно простые и понятные модели, избегая необходимости детального описания каждого аспекта работы эмулируемого устройства.

Мы уделяем особое внимание упрощению процесса создания моделей и надеемся, что во многих случаях эта задача будет посильна квалифицированным пользователям и системным администраторам, а не только разработчикам. Это позволит работать над устранением проблем удалённо, без физического доступа к устройству, одновременно предоставляя возможность воспроизвести проблему и проверить эффективность решения.

Ядро симулятора написано на Go, в то время как для описания моделей выбран Python благодаря его широкой распространённости среди ИТ-специалистов.

Об авторе[править | править вики-текст]

Автор является профессиональным разработчиком с более чем 30-летним опытом в области создания системного программного обеспечения (C и Go). Известен в сообществе свободного программного обеспечения как создатель пакетов ipp-usb[10] и sane-airscan[11], которые включены во все основные дистрибутивы Linux и *BSD. Sane-airscan также является частью системы сканирования Google ChromeOS.

Список литературы[править | править вики-текст]

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]


Симулятор, точно воспроизводящий поведение МФУ (Александр Певзнер, OSSDEVCONF-2025)!.jpg

Примечания и ссылки[править вики-текст]

  1. 1,0 1,1 M. Sweet, I. McDonald, Internet Printing Protocol/1.1: Encoding and Transport, RFC-8010, 2017
  2. 2,0 2,1 M. Sweet, I. McDonald, Internet Printing Protocol/1.1: Model and Semantics, RFC-8011, 2017
  3. 3,0 3,1 PWG 5100.x: Internet Printing Protocol, https://www.pwg.org/standards.html
  4. 4,0 4,1 Mopria eSCL Specification, https://mopria.org/spec-download
  5. 5,0 5,1 Scan Service (WS-Scan), https://learn.microsoft.com/en-us/windows-hardware/drivers/image/scan-service--ws-scan
  6. 6,0 6,1 S. Cheshire, M. Krochmal, DNS-Based Service Discovery, RFC-6763, 2013
  7. 7,0 7,1 Web Services Dynamic Discovery (WS-Discovery) Version 1.1, 2009, http://docs.oasis-open.org/ws-dd/discovery/1.1/wsdd-discovery-1.1-spec.html
  8. 8,0 8,1 USB Print Interface Class IPP Protocol Specification, https://www.usb.org/document-library/ipp-protocol-10
  9. 9,0 9,1 Universal Serial Bus Device Class Definition fot Printing Devices, https://www.usb.org/sites/default/files/usbprint11a021811.pdf
  10. 10,0 10,1 Проект ipp-usb, https://github.com/OpenPrinting/ipp-usb
  11. 11,0 11,1 Проект sane-airscan, https://github.com/alexpevzner/sane-airscan