Openwrt 整体功能组件介绍

1. OpenWrt简介

OpenWrt是一个嵌入式设备的Linux发行版,以GPL许可协议发行,拥有强大的网络组件和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中,可以非常容易地从零开始构建出全功能的智能路由或服务器设备。

OpenWrt项目始于2004年1月,其第一个版本采用了LinkSys的源码。在LinkSys的代码收费后,2005年改为采用正式发布的Linux内核(2.4.30)来集成,并将OpenWrt完全模块化,不断推出补丁和网络驱动。

OpenWrt的主要特点在于其高扩展性,并且文件系统可写,开发者无需在每一次修改后完全重新编译,只要编译自己的软件包即可,这样就加快了开发的进度,令它更像一个小型的Linux 电脑系统,到目前为止已经提供了100多个已编译好的软件,而且数量还在不断增加。另外OpenWrt提供了SDK,每个运行软件均能够以SDK来进行编译,以软件包形式进行安装和卸载。

1.1 主要特点

  1. 代码里不含第三方开源包,只包含开源包地址链接。
  2. 编译时自动下载源代码、打补丁来满足指定平台要求,并编译。还可以修改Makefile来下载最新的软件包。
  3. 使用LuCI作为最终用户管理界面。LuCI以Apache许可协议发布Web管理功能代码。
  4. UCI通用配置管理方法。
  5. 通过脚本来调用iptables来实现防火墙功能,配置保存在UCI文件中。
  6. 开放和可扩展的OPKG格式安装升级包。

1.2 开源嵌入式操作系统

1.2.1 嵌入式系统概念

嵌入式系统,是指嵌入到硬件系统内部,为特定应用功能而设计的专用软件系统。与个 人计算机的通用操作系统不同,嵌入式系统通常只针对特殊的用途。因此可以对它进行优化, 并裁剪到最小。现在通用的硬件系统发展非常迅速,因此出现了在通用硬件系统上的嵌入式操作系统。目前在嵌入式领域广泛使用的操作系统有:Linux、Windows Embedded和VxWorks 等。

1.2.2 嵌入式系统分类

根据用途,操作系统又可以分为:

  • 针对防火墙的操作系统:IPFire;
  • 针对智能路由器领域的嵌入式操作系统:Tomato、OpenWrt等;
  • 针对个人桌面领域操作系统:Ubuntu、Fedora 等;
  • 针对智能终端如手机:Android 、Firefox OS等。

它们均是基于 Linux 内核的操作系统。

1.2.3 嵌入式系统——安卓

安卓系统和我们生活紧密联系,也为大家所熟知,下面介绍下安卓系统,用于与Openwrt进行对比:

  1. Android 是谷歌研发的一款智能终端操作系统,是一种基于 Linux 的开放源代码的操 作系统,主要使用于移动设备,如智能手机、平板计算机、智能电视等。它由谷歌公司和开放手机联盟领导开发。
  2. Android 操作系统最初由安迪·鲁宾开发,最初目的是用于数码相机的操作系统。
  3. 2005年8月谷歌全资收购了Android 操作系统。
  4. 2007年11月,谷歌与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟,共同研发改良Android 系统。随后谷歌以Apache开源许可协议的授权方式发布了Android的源代码,Android以 JAVA 层封装了系统层提供给应用开发者统一的API接口。
  5. 第一部 Android 智能手机发布于 2008年10月。
  6. 目前,Android已逐渐扩展到平板计算机及其他领域,如电视、智能手表、数码相机和游戏机等。
  7. 2015年,Android以85%的市场占有率占据移动操作系统市场之首。
  8. Android 操作系统已经演化为一个移动设备开发平台,其软件层次大体上分为 4 层, 即操作系统内核、中间层、应用程序框架层和应用程序。应用程序框架层为应用程序开发者提供了功能强大的 API,包括图形显示的各种组件,如视图、列表、文本框、按钮以及嵌入式的Web浏览器等。
Android OpenWrt
内核 Linux 内核 Linux 内核
许可协议 Apache2.0 GNU License
使用场景 面向终端用户,手持设备。用户接口采用JAVA 提供图形用户界面GUI 服务器、家庭路由器等,用户接口默认为 UCI 命令行提供,也支持通过 Web 方式来管理
开发主导模式 由谷歌公司主导开发 由 OpenWrt.org 社区主导,社区由个人组成,更开放

1.2.4 嵌入式系统的对比

下表为开源路由器各种发行版本的对比:

在这里插入图片描述

2 OpenWrt整体功能组件

2.1 整体架构

路由器的典型架构划分为:管理平面、控制平面、数据转发平面。
在这里插入图片描述

  1. 管理平面
    管理平面是提供网络管理人员使用UCI、Web、SNMP和TR069等方式来管理路由器,以及执行这些管理功能所需的配置命令等,管理平面提供了控制平面正常运行所需的配置参数。
  2. 控制平面
    控制平面用于控制和管理所有网络协议的运行,例如 ARP、DHCP、DNS 及组播协议的管理和控制。
  3. 转发平面
    转发平面用于处理和转发不同网络接口上各种类型的数据,例如进行网络地址转换、路由、ACL等。典型路由器在数据转发平面占用最多的系统资源。转发平面使用控制平面提供的路由信息进行数据报文的接收、网络地址转换、查找路由表、以及从接口发出报文等工作。如果找不到路由,则发送ICMP不可达消息,我们可以使用route命令查看路由信息。

路由器的3个平面划分仅仅是逻辑意义上的功能划分,在实际的功能模块并没有完全区分。

2.2 功能组件

OpenWrt 是一个基于 Linux 的智能路由器操作系统。它提供各种功能插件,使用户可以自定义安装各种应用软件来管理路由器;默认内置了一些基础功能。其主要功能可以分为3个部分:网络功能、系统管理功能、状态监控功能。

2.2.1 网络功能

网络功能是路由器的核心功能。主要包含以下几项:

  • 网络接口设置和管理;
  • DHCP和DNS协议支持,家庭网内作为 DHCP 服务器,在广域网作为 DHCP 客户端;加快DNS 响应和减少广域网DNS流量;
  • 主机名设置;
  • 静态路由及组播路由功能;
  • 防火墙功能(IPv4网络地址转换、DMZ、报文过滤、端口过滤、mac过滤及防洪水攻击等);
  • 便捷的网络问题诊断工具ping、traceroute和nslookup等;
  • IP带宽控制(QoS);
  • 设备即插即用(UPnP);

下图是MTK750模块openwrt系统原生的Webui网络管理界面,基本涵盖了我们上面刚说的功能配置:
在这里插入图片描述

2.2.2 系统管理

系统管理是路由器除了网络管理之外的其他管理功能:

  • 主机名称设置、日志服务器设置、NTP(网络时间)、语言设置等;
  • 账户密码设置、远程安全登录设置(SSH);
  • 软件管理、配置备份等;
  • 进程启动管理及定时任务管理;
  • 文件系统管理;
  • LED配置;
  • 系统的备份和升级;
  • 重启设置和日志管理。

下图是MTK750模块openwrt系统原生的Webui系统管理界面,基本涵盖了我们上面刚说的功能配置:
在这里插入图片描述

2.2.3 状态监控

状态监控主要用于监控路由器的当前状态,并且只能查看当前的路由器状态。主要包含以下几个功能:

  • 查看系统固件版本、运行时间、平均负载及内存占用等;
  • 网络状态、DHCP用户租赁信息、DNS信息及无线用户等;
  • 防火墙状态统计、路由转发表及 ARP表;
  • 系统日志和内核启动日志;
  • 系统进程负载状态,包括 CPU 使用率及内存使用率;

下图是MTK750模块openwrt系统原生的Webui状态监控界面,基本涵盖了我们上面刚说的功能配置:
在这里插入图片描述

相关推荐

  1. OpenWrt项目UCI配置介绍

    2023-12-05 22:36:04       11 阅读
  2. 32-Openwrt nand flash坏块管理nmbm功能支持

    2023-12-05 22:36:04       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-05 22:36:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-05 22:36:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-05 22:36:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-05 22:36:04       20 阅读

热门阅读

  1. Python学习杂记

    2023-12-05 22:36:04       36 阅读
  2. 实用攻略——SD-WAN网络配置步骤详解

    2023-12-05 22:36:04       46 阅读
  3. Spring Boot项目打包指定包名

    2023-12-05 22:36:04       43 阅读
  4. PTA 7-236 验证哥德巴赫猜想

    2023-12-05 22:36:04       40 阅读
  5. convert_from_pinhole_camera_parameters 失败

    2023-12-05 22:36:04       45 阅读
  6. redis中使用lua脚本处理业务逻辑

    2023-12-05 22:36:04       32 阅读
  7. WPF-本地保存登录账号密码

    2023-12-05 22:36:04       41 阅读
  8. k8s(一):基本概念

    2023-12-05 22:36:04       37 阅读