Назад в библиотеку

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

Авторы: Мохамед Бахай, Каола Аддакири, Норэддин Гераби
Источник:Communication and migration of an embeddable mobile agent platform supporting runtime code mobility

Аннотация

В этой статье мы представляем дизайн и реализацию Mobile-C, платформы IEEE для интеллектуальных физических агентов (FIPA), совместимой с агентами для мобильных агентов C / C ++. Такое соответствие обеспечивает совместимость между агентом Mobile-C и другими агентами от гетерогенных платформ для мобильных агентов, совместимых с FIPA. Кроме того, библиотека Mobile-C была разработана для поддержки синхронизации с целью защиты общих ресурсов и обеспечения способа детерминированного определения времени выполнения мобильных агентов и потоков. Новый вклад этой работы заключается в объединении механизмов миграции агентов и их синхронизации.

Ключевые слова:

Мобильный агент; Платформа мобильного агента; Связь с агентом.

1 Введение

Мобильный агент – это проектная программа с постоянной идентификацией, которая переносится в сети и взаимодействует со своей средой и другим агентом [1]. Он применяется к множеству распределенных приложений, таких как производство [2-4], электронная коммерция [5-7], управление сетью [8, 9], здравоохранение [10] и развлечения [11]. Во время выполнения, мобильные агенты могут быть динамически созданы и отправлены в системы назначения для выполнения задач с обновленным кодом. Мобильность позволяет мобильному агенту переноситься с одного хоста на другой в сети и предоставляет несколько приложений с гибкостью и адаптируемостью, которые способны удовлетворить требования и условия в распределенной среде.

Важность технологии мобильных агентов при разработке распределенных приложений в Интернете привела к тому, что OMG (Группа управления объектами) определила спецификации MASIF (Механизм совместимости системы мобильных агентов) для взаимодействия различных систем с мобильными агентами. Еще одно усилие сделано FIPA (Фонд интеллектуальных физических агентов), чтобы указать архитектуру, а также семантику связи между мобильными агентами.

Большинство используемых мобильных платформ-агентов ориентированы на Java. Несколько мобильных агентских платформ, поддерживающих Java-код агента, включают Mole [12], Aglets [13], Concordia [14], JADE [15] и Agents [16]. Использование стандартного языка, такого как язык кода мобильного агента, который обеспечивает как высокоуровневые, так и низкоуровневые функции, является хорошим выбором для обработки большим количеством распределенных приложений. Выбор C / C ++ является подходящим для языка кода мобильного агента, поскольку он предоставляет мощные функции с точки зрения доступа к памяти. Кроме того, C - это язык, который может легко взаимодействовать с различными аппаратными устройствами низкого уровня. Ara [17, 18] и TACOMA [19] – это две платформы мобильных агентов, поддерживающие код мобильного агента C, а Ara также поддерживает C ++. Код мобильного агента скомпилирован как байтовый код [20] и машинный код [21] для исполнения как в Ara, так и в TACOMA соответственно.

Mobile-C [22-25] был первоначально разработан как автономная платформа для мобильных агентов, совместимая с IEEE FIPA, для размещения приложений, в которых задействованы аппаратные средства низкого уровня и встроенные системы [26]. Большинство систем написаны на C / C ++; Mobile-C выбрал C / C ++ в качестве языка мобильного агента, поскольку C имеет преимущество для простого взаимодействия с программами управления и базовым оборудованием. Кроме того, Mobile-C интегрировал встроенный интерпретатор C / C ++, Ch [27-29], в качестве механизма выполнения агентов (AEE) для запуска кода мобильного агента. Перенос мобильного агента в Mobile-C осуществляется посредством сообщений языка связи FIPA-агента (ACL). Использование сообщений ACL FIPA для миграции агентов в системах агентов, совместимых с FIPA, упрощает платформу агентов, уменьшает усилия разработчиков и легко обеспечивает межплатформенную миграцию благодаря хорошо продуманным коммуникационным механизмам, предоставляемым на платформе агента. Сообщения для связи и миграции агентов представлены в FIPA ACL и закодирован в XML. Кроме того, библиотека Mobile-C была разработана для поддержки синхронизации [26] для защиты общих ресурсов и обеспечения способа детерминированного определения времени выполнения мобильных агентов и потоков.

В этой статье мы представляем библиотеку Mobile-C, которая может вставлять Mobile-C в любые программы на C / C ++, чтобы облегчить разработку приложений на основе мобильных агентов, а также возможность комбинировать миграцию мобильного агента по сети и синхронизацию механизм, существующий в Mobile-C. Мобильные агенты – это приложение, которое может управлять платформой агента, его модулями и другими мобильными агентами, а также плавно взаимодействовать с различными низкоуровневыми аппаратными устройствами. Использование сообщений ACL FIPA для миграции агентов в системах-агентах, совместимых с FIPA, упрощает платформу агентов, так как связь и миграция агентов могут быть достигнуты благодаря тому же механизму связи, который предоставляется на платформе агента. Для выполнения и взаимодействия нескольких мобильных агентов были добавлены гибкие механизмы синхронизации. В этом документе предлагается новый подход путем объединения двух концепций миграции миграции и синхронизации в Mobile-C.

Остальная часть статьи структурирована следующим образом. В разделе 2 мы представляем концепцию и свойства мобильного агента. В разделе 3 представлена архитектура Mobile-C. В разделе 3 представлен перенос мобильного агента по сети с нескольких хостов. Раздел 4 описывает структуру программы и реализацию компонента агентства. В разделе 5 приведен пример мобильного агента, который переносится с хостов через сообщения мобильного агента и иллюстрирует поддержку синхронизации в Mobile-C.

2 Мобильные агенты

Агент определяется как «лицо, действующее от имени других людей» [30]. В контексте информатики мобильный агент рассматривается как объект, который перемещается с одной машины на другую в сети для выполнения определенных задач от имени пользователя [31].

Мобильные агенты обладают следующими свойствами, которые отличают их от других программ [32]:

  1. Адаптивность – мобильность агента, необходимая для изучения поведения пользователя и адаптации его к пользователю. Действительно, чтобы адекватно развиваться различия между гетерогенными системами, агент должен иметь возможность принимать изменения во время исполнения.
  2. Автономия – мобильный агент должен иметь возможность принимать собственное решение для выполнения задач пользователя, также он должен иметь возможность переходить с одного компьютера на другой в сети и выполнять задачи пользователя.
  3. Связь – мобильный агент должен иметь возможность общаться с другими агентами системы, чтобы обмениваться информацией и получать выгоду от знаний и опыта других агентов.
  4. Мобильность – мобильный агент имеет возможность перемещаться с одного узла на другой, перемещая код агента или путем сериализации кода и состояния, чтобы позволить агенту продолжить выполнение в новом контексте.
  5. Стойкость – постоянный агент, который сможет сохранить знания и состояние в течение длительного периода времени, чтобы получить доступ позднее. Как только мобильный агент настроен, он не зависит от системы, которая была инициирована, и она автоматически восстанавливается, когда агент завершается или когда он покраснет из памяти в базу данных.

3 Архитектура Mobile-C

Система Mobile-C представлена на рисунке 1. Агентства являются основными строительными блоками системы и размещаются в каждом узле сетевой системы для поддержки стационарных агентов (SA) и мобильных агентов (MA) во время выполнения. Они служат для размещения агентов и агентов обмена сообщениями, перемещения мобильных агентов, сбора знаний о других агентах и предоставления нескольких мест, в которых может быть запущен агент. Ядро агентства предоставляет местную услугу агентам и доверенным лицам удаленных агентств. Принцип агентства и их функциональные возможности можно резюмировать следующим образом [33]:

  1. Система управления агентом (AMS): AMS управляет жизненным циклом агентов в системе. Он связывает создание, аутентификацию, регистрацию, удаление, выполнение, миграцию и постоянство агентов. AMS также отвечает за прием и отправку агента мобильного агента. Каждый агент должен зарегистрироваться в AMS для получения действительной AID.
  2. Канал связи агента (ACC): ACC передает сообщения между локальными и удаленными объектами. Взаимодействие и координация мобильных агентов и хост-систем может выполняться через язык связи агента (ACL).
  3. Агент Security Manager (ASM): ASM отвечает за защиту доступа для платформы и инфраструктуры.
  4. Справочник посредника: DF обслуживает желтые страницы. Агенты в системе могут регистрировать свои услуги с DF для предоставления сообществу. Они также могут искать необходимые услуги с DF.
  5. Агент Execution Engine (AEE): AEE служит рабочей лошадкой для мобильных агентов. Мобильные агенты должны находиться внутри движка для выполнения. AEE должен быть независимым от платформы для поддержки мобильного агента, выполняющего гетерогенную сеть.
Системная архитектура агентств в Mobile-C.

Рисунок 1 – Системная архитектура агентств в Mobile-C.

4 Миграция мобильных агентов

Мобильный агент – это программный агент, который может перемещаться с одного хоста на другой по сети и возобновлять выполнение в новом хосте. Миграция и выполнение мобильных агентов поддерживаются системой мобильных агентов. В предыдущих исследованиях, Чен и другие разработали систему мобильных агентов под названием Mobile-C. Mobile-C поддерживает слабую миграцию. Задача мобильного агента можно разделить на несколько подзадач, которые могут выполняться на разных хостах и перечислены в списке задач, как показано на рисунке 2. Список задач можно изменить, добавив новые подзадачи и новые условия. Динамическое изменение списка задач повышает гибкость мобильного агента. Таким образом, как только мы запускаем выполнение подзадачи в хосте, мобильный агент не может двигаться до конца выполнения.

Миграция агента на основе списка задач и указателя прогресса задачи.

Рисунок 2 – Миграция агента на основе списка задач и указателя прогресса задачи.

Перемещение мобильных агентов осуществляется посредством сообщений мобильного агента ACL, закодированных в XML, которые передают мобильные агенты в качестве содержимого сообщения. Сообщение мобильного агента содержит состояние данных и код агента. Состояние данных мобильного агента включает общую информацию о мобильном агенте как имя агента, владельца агента и дома агента, а также задачи, которые мобильный агент будет выполнять на хостах назначения. Состояние и код данных будут обертываться в сообщение ACL и передаваться на удаленный хост через Канал связи агента. Перемещение мобильного агента на основе сообщений ACL прост и эффективен для миграции агентов в системах, совместимых с FIPA, поскольку эти системы имеют обязательные механизмы для обмена сообщениями, передачи и обработки.

5 Структура программы и осуществление компонента агентства

Агентство является основной программой, работающей в каждом узле сети [23]. Когда запускается агентство, система инициализируется, и потоки создаются для всех компонентов платформы агента.

После инициализации системы агентство ожидает определенных событий. Когда агент получает запрос на запуск мобильного агента, он создает новый поток и встраивает Embeddable C / C ++ Interpreter-Ch в поток для выполнения кода мобильного агента. После переноса мобильного агента на другие хосты этот поток автоматически завершается (рисунок 3). Если агент получит запрос на завершение системы, выполнение платформы агента и самой системы будет завершено. В текущей реализации каждый мобильный агент запускается в встраиваемом Ch внутри собственного потока.

Структура программы агентства.

Рисунок 3 – Структура программы агентства.

Согласно спецификациям FIPA, каждое агентство должно предоставлять механизмы для приема и отправки сообщений. Это требование удовлетворяется тремя компонентами: нить прослушивания, соединительная нить и поток обработки ACC, как показано на рисунке 4. Поток прослушивания служит для прослушивания клиентских подключений. Когда новый клиент подключения будет принят, он будет добавлен в список соединений. Кроме того, соединительная нить отвечает за соединение с другими хостами. Поток обработки ACC обрабатывает списки клиентских подключений и запросы на подключение удаленных хостов. ACC облегчает удаленный агент для связи агента и платформы удаленного агента с коммуникацией платформы агента через сообщения ACL. Удаленная горизонтальная связь в Mobile-C реализована поверх TCP / IP, а в транспортном протоколе используется протокол HTTP (протокол передачи гипертекста).

Многопоточная реализация платформы агента.

Рисунок 4 – Многопоточная реализация платформы агента.

6 Поддержка синхронизации в Mobile-C

Среди свойств мобильных агентов – способность иммигрировать для выполнения задач, существующих на удаленном хосте. Цель этого примера – использовать встроенную систему мобильных агентов для защиты общих ресурсов, используя синхронизацию и объединяющую ее с переносом мобильных агентов с хостов.

Библиотека Mobile-C позволяет синхронизировать через мьютекс. Мьютекс – это программа, которая позволяет нескольким потокам совместно использовать один и тот же ресурс, но не одновременно.

В приведенном ниже примере демонстрируется возможность мьютекса MobileC для защиты ресурса, который может быть разделен между двумя или более агентами на нескольких хостах. Как показано в программе 1, мобильный агент передается агентством в хосте fsts1, посещает удаленный хост fsts2, а затем host fsts3. Сообщение мобильного агента представлено в Extensible Markup Language (XML), оно содержит информацию о мобильном агенте и задачи, которые будет выполняться на хостах назначения. Общая информация мобильного агента содержит: имя агента, владельца агента и дом агента. Информация о задаче, например, оператор <TASK task = "2" num = "0"> показывает, что этот мобильный агент выполняет две задачи для выполнения, и еще не выполнена задача. Элемент DATA содержит общую информацию о количестве элементов, имя возвращаемой переменной задачи, полноту задачи и хост для выполнения задачи. Подэлемент DATA ELEMENT содержит данные возврата из задачи выполнения, а подэлемент AGENT_CODE содержит программу C, которая будет выполнена в удаленном режиме хоста.

Содержимое сообщения мобильного агента от хоста fsts1 до fsts2 и для размещения fsts3.

Программа 1 – Содержимое сообщения мобильного агента от хоста fsts1 до fsts2 и для размещения fsts3.

Как показано в программе 2, мобильный агент 1 «MA1» инициализирует мьютекс с идентификатором 55 через функцию mc_SyncInit () и определяет две функции: SetN1 () и GetN1 () в хосте fsts2. После посещения этого хоста мобильный агент 1 «MA1» посещает хост fsts3 и определяет также две функции SetN2 () и GetN2 (). Результат, полученный от хоста fsts2, отправляется на хост fsts3, и данные возврата будут включены в подэлементе DATA_ELEMENT.

Мобильный агент, который содержит глобальную переменную и определяет функцию для доступа к глобальным переменным.

Программа 2 – Мобильный агент, который содержит глобальную переменную и определяет функцию для доступа к глобальным переменным.

Как показано в программе 3, задача мобильного агента 2 «MA2» заключается в выполнении операции, задающей переменную. Операция включает блокировку мьютекса через функцию mc_MutexLock (), установку глобальной переменной путем вызова SetN1 () из хоста fsts2 и SetN2 () из хоста fsts3via в функцию mc_CallAgentFunc () и разблокирование мьютекса с помощью функции mc_MutexUnlock ().

Мобильный агент, который устанавливает переменную.

Программа 3 – Мобильный агент, который устанавливает переменную.

Аналогично, как показано в программе 4, задача мобильного агента 3 «MA3» блокирует мьютекс, получает глобальную переменную и разблокирует мьютекс как с хоста fsts2, так и с fsts3.

Мобильный агент, который получает переменную от другого агента.

Программа 4 – Мобильный агент, который получает переменную от другого агента.

Результаты мобильного агента 1 "MA1", мобильного агента 2 "MA2" и мобильного агента3 "Ma3", полученные как из хоста fsts2, так и fts3, отправляются обратно в агентство fsts.

7 Выводы

В этой работе мы представляем дизайн и реализацию платформы IEEE FIPA-совместимого агента Mobile-C. Mobile-C интегрирует встраиваемый интерпретатор C / C ++-Ch-в платформу в качестве механизма выполнения мобильного агента для поддержки мобильного агента. Перенос мобильного агента осуществляется посредством сообщений ACL. Мобильные агенты, включая как состояние данных, так и код, переносятся на платформу удаленного агента через сообщения ACL, которые кодируются в XML, а выполнение мобильных агентов возобновляется указателем прогресса задачи. Библиотека Mobile-C поддерживает синхронизацию между мобильными агентами и потоками, поскольку функции синхронизации защищают общие ресурсы и обеспечивают способ детерминированного определения времени выполнения мобильных агентов и перехода на удаленный хост.

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

Литература

  1. D.Chess,C.Harrison, A.Kershenbaum,“Mobile Agentes: Are They a Good Idea?”, IBM ResearchReport, 1998 [Online] Available : http://www.research.ibm.com/iagentes/paps/mobile -idea.ps.
  2. W. Shen, D. Xue, D.H. Norrie, An agent-based manufacturing enterprise infrastructure for distributed integrated intelligent manufacturing systems, in: Proceedings of the 3rd International Conference on the Practical Applications of Agents and Multi-Agent Systems (PAAM-98), London, UK, 1998, pp. 533–548.
  3. H. Wada, S. Okada, An autonomous agent approach for manufacturing execution control systems, Integrated Computer-Aided Engineering 9 (3) (2002) 251–262.
  4. H.V.D. Parunak, A.D. Baker, S.J. Clark, The AARIA agent architecture: from manufacturing requirements to agent-based system design, Integrated Computer-Aided Engineering 8 (1) (2001) 45–58.
  5. M. Yokoo, S. Fujita, Trends of internet auctions and agent-mediated web commerce, New Generation Computing 19 (4) (2001) 369–388.
  6. T. Sandholm, eMediator: a next generation electronic commerce server, Computational Intelligence 18 (4) (2002) 656–676.
  7. S.P.M. Choi, J. Liu, S. Chan, A genetic agent-based negotiation system, Computer Networks: The International Journal of Computer and Telecommunications Networking 37 (2) (2001) 195–204.
  8. W.E. Chen, C. Hu, A mobile agent-based active network architecture for intelligent network control, Information Sciences 141 (1–2) (2002) 3–35.
  9. L. Chou, K. Shen, K. Tang, C. Kao, Implementation of mobile-agentbased network management systems for national broadband experimental networks in Taiwan, Holonic and Multi-Agent Systems for Manufacturing (Lecture Notes in Computer Science) 2744 (2003) 280– 289.
  10. J. Huang, N.R. Jennings, J. Fox, Agent-based approach to health care management, Applied Artificial Intelligence 9 (4) (1995) 401–420.
  11. I. Noda, P. Stone, The RoboCup soccer server and CMUnited clients: implemented infrastructure for MAS research, Autonomous Agents and Multi-Agent Systems 7 (1–2) (2003) 101–120.
  12. K.Straber, J.Baumann and F.Hohl.. Mole - A Java Based Mobile Agent System. Institute for Parallel and Distributed Computer Systems, University of Stuttgart,1997.
  13. D. Lange, M.Oshima. Programming and Deploying Java Mobile Agents with Aglets. Addison-Wesley: MA, 1998.
  14. D.Wong, N.Paciorek, T.Walsh, J.DiCelie, M.Young, B.Peet. Concordia: An infrastructure for collaborating mobile agents. Proceedings of the First International Workshop on Mobile Agents (MA’97) (Lecture Notes in Computer Science, vol. 1219). Springer: Berlin, 1997; 86–97.
  15. F.Bellifemine, G.Caire, A.Poggi, G.Rimassa.JADE: A software framework for developing multi-agent applications.Lessons learned. Information and Software Technology 2008; 50(1–2):10–21.
  16. R.Gray, G.Cybenko, D.Kotz,R.Peterson, D.Rus. D’Agents: Applications and performance of a mobile-agent system. Software—Practice and Experience 2002; 32(6):543–573.
  17. H.Peine. Run-time support for mobile code. PhD Dissertation, Department of Computer Science, University of Kaiserslautern, Germany, 2002.
  18. H.Peine .Application and programming experience with the Ara mobile agent system. Software—Practice and Experience 2002; 32(6):515–541.
  19. D.ohnansen, K.Lauvset, R.V.Renesse, F.B. Schneider, N.P. Sudmann, K. Jacobsen. A TACOMA retrospective.Software—Practice and Experience 2002; 32(6):605–619.
  20. MACE—Mobile agent code environment. Available at: http://wwwagss.informatik.uni-kl.de/Projekte/Ara/mace.html [last modified 10 August 2004].
  21. N.P.Sudmann,D.Johansen. Adding mobility to non-mobile web robots. Proceedings of the IEEE ICDCS00 Workshop on Knowledge Discovery and Data Mining in the World-wide Web, Taipei, Taiwan, 2000; 73–79.
  22. B.Chen, H.H.Cheng. A run-time support environment for mobile agents. Proceedings of ASME/IEEE International Conference on Mechatronic and Embedded Systems and Applications, No. DETC2005-85389, Long Beach, CA, September 2005.
  23. B.Chen,H.H.Cheng,J.Palen. Mobile-C: A mobile agent platform for mobile C/C++ agents. Software—Practice and Experience 2006; 36(15):1711–1733.
  24. B.Chen, D.Linz, H.H.Cheng. XML-based agent communication, migration and computation in mobile agent systems. Journal of Systems and Software 2008; 81(8):1364–1376.
  25. Mobile-C: A multi-agent platform for mobile C/C++ code. Available at: http://www.mobilec.org.
  26. Y.C. Chou, D. Ko, H. H. Cheng, An embeddable mobile agent platform supporting runtime code mobility,interaction and coordination of mobile agents and host systems, Information and Software Technology 52 (2010) 185–196 .
  27. H.H.Cheng. Scientific computing in the Ch programming language. Scientific Programming 1993; 2(3):49–75 .
  28. H.H.Cheng.Ch: A C/C++ interpreter for script computing. C/C++ User’s Journal 2006; 24(1):6–12.
  29. Ch—An embeddable C/C++ interpreter. Available at: http://www.softintegration.com .
  30. P.M .Reddy, Mobile Agents Intelligent Assistants on the Internet, July 2002
  31. A. Kaur , S.Kaur, Role of Mobile Agents In Mobile Computing, Proceedings of National Conference on Challenges & Opportunities in Information Technology (COIT-2007) RIMT-IET.
  32. M. L. Griss, Software Agents as Next Generation Software Components, Chapter 36 in Component-Based Software Engineering: Putting the Pieces Together, Edited by George T. Heineman, Ph.D. & William Councill, M.S., J.D., May 2001,Addison-Wesley.
  33. B. Chen, H. H. Cheng, J.Palen, Integrating mobile agent technology with multi-agent systems for distributed traffic detection and management systems, Transportation Research Part C 17 (2009) 1–10.