Internet of Things (IoT) is a pivotal technology in application domains that require connectivity and interoperability between large numbers of devices. IoT systems predominantly use a software-defined network (SDN) architecture as their core communication backbone. This architecture offers several advantages, including the flexibility to make IoT networks self-adaptive through software programmability. In general, self-adaptation solutions need to periodically monitor, reason about, and adapt a running system. The adaptation step involves generating an adaptation strategy and applying it to the running system whenever an anomaly arises. In this paper, we argue that, rather than generating individual adaptation strategies, the goal should be to adapt the logic / code of the running system in such a way that the system itself would learn how to steer clear of future anomalies, without triggering self-adaptation too frequently. We instantiate and empirically assess this idea in the context of IoT networks. Specifically, using genetic programming (GP), we propose a self-adaptation solution that continuously learns and updates the control constructs in the data-forwarding logic of SDN-based IoT networks. Our evaluation, performed using open-source synthetic and industrial data, indicates that, compared to a baseline adaptation technique that attempts to generate individual adaptations, our GP-based approach is more effective in resolving network congestion, and further, reduces the frequency of adaptation interventions over time. In addition, we compare our approach against a standard data-forwarding algorithm from the network literature, demonstrating that our approach significantly reduces packet loss.
翻译:互联网(IoT)是应用领域的关键技术,需要大量装置之间的连通性和互操作性。 IoT系统主要使用软件定义的网络(SDN)架构,作为核心通信主干。这个架构具有若干优势,包括使IoT网络通过软件编程能够自我适应的灵活性。一般来说,自我适应解决方案需要定期监测、解释和调整运行系统。适应步骤包括制定适应战略,并在出现异常时将其应用于运行系统。在本文件中,我们主张,目标不是制定个人适应战略,而是调整运行系统的逻辑/代码,使系统本身学会如何通过软件编程使IoT网络能够自我适应。一般来说,自我适应解决方案需要定期监测、解释和调整运行系统。具体地说,使用基因编程(GP),我们提出一个自适应解决方案,不断学习并更新基于SDN的IoT网络的数据更新逻辑,我们通过大量比较运行系统的逻辑,对系统运行系统的逻辑进行大幅降低运行系统的逻辑。我们进行的评估,通过对系统进行公开数据调整,我们利用合成数据升级的网络进行更精确的修改,我们用数据升级的方法来进行数据调整。