在openwrt官网上有所有使用同一个方案的路由器,可以看到很多详细信息
1、MAC地址存储
mt7621: lan mac is at factory 0xe000 and wan mac at factory 0xe006. This is the default location for mt7621 boards in MTK’s SDK.
In OpenWRT, all kernel module package filenames begin with kmod-.
2、switch
参考链接: https://blog.csdn.net/weixin_38387929/article/details/115303786
mtk7621A这款双核mips指令集芯片,内部集成 mt7530 硬交换芯片,0~5 端口都是mt7530口输出,该芯片自带PHY口,芯片MAC层管理是通过内部MDIO接口管理 mt7530 ,mt7530驱动中提供 vlan 的管理功能。
------------------
| CPU /mtk7621 |
| ----------- |
| | MAC/ephy |
|___|__||_____|__|
||
RGMII/ || RXP/TXP
MII ||
||
------------------------------------------------||---------
| Switch MT7530 || |
| || |
| || |
| |-----| |-----| |-----| |-----| |-----| |
____|_____|___|_____|___|_____|___|_____|____|_____|______|
PHY1 PHY2 PHY3 PHY4 PHY/MAC
也就是说eth0可以接外部phy,也可以接内部switch带的phy
在设备树配置中有一个参数mediatek,portmap将决定哪个口是WAN,哪个口是LAN
mediatek,portmap = "llllw";
Switch Documentation
如果你的设备含有不少于1个的LAN接口,那这个设备在不同的接口之间可能有一个被称为交换(switch)的特殊连接。大多数的内部构造如下图所示:
如果你想要更改这些端口如何互相连接的,你需要配置你的switch设备。
转载未结束,请参考文档:https://oldwiki.archive.openwrt.org/zh-cn/doc/uci/network/switch
3、Linux Network Interfaces
主要分为两种:
- 物理网络接口
eth0, eth8, radio0,wlan9这些通常都是实际的网络硬件设备,任何物理网络接口都是操作系统对用户的命名软件表示,使用户能够配置硬件网络设备,并将其集成到程序和脚本中。 - 虚拟网络接口
lo, eth0:1, eth0.1, vlan2, br0, pppoe-dsl, gre0, sit0 tun0, imq0, teql0这些都是虚拟的网路接口,不代表一个实际存在的硬件设备。
发明虚拟网络接口是为了在配置基于linux的操作系统时为系统管理员提供最大的灵活性。虚拟网络接口通常与一个物理网络接口(eth6)或另一个虚拟接口(eth6.9)相关联,或单独存在,如loopback接口- bridges: br0, br-lan
- aliases: eth4:5, eth4:6, …
- VLANs: eth4.0, eth4.1, eth4.3, vlan0, …
- tunnel interfaces: pppoe-dsl, pppoa-dsl, tun0, vpn1
- special purpose: imq0, teql3
- wireless operating mode virtual interfaces: wlan0, wlan0_1, ath3, ath_monitor, …
Two network interfaces can also be bonded together。参考:Documentation/networking/bonding.txt
/etc/config/network is the network configuration file.
/etc/config/wireless is the wireless configuration file.
在OpenWrt软件包存储库中,网络工具可以作为单独的opkg-packages使用,而核心工具如ifconfig、route、netstat和vconfig也作为applet包含在busybox中:busybox-ifconfig、busybox-route等。
4、PPP
PPP(Point-to-Point,点到点协议),在串行链路上传输IP数据报的方法,从低速的拨号调制器到高速的光链路。
PPP不是单一的协议,而是协议集合,支持LCP——建立链接,以及一系列NCP协议,LCP为各种协议(IPv4,IPv6和非IP协议)建立网络层链路
5、uci
openwrt使用uci(统一配置接口)来配置它自己核心的services,
To set some system defaults the first time the device boots, create a script in the directory /etc/uci-defaults.
6、ubus(OpenWrt 微总线架构)
为了在 OpenWrt 中提供各种守护进程和app之间的进程间通信,openWrt开发了一个名为ubus的项目。它由守护进程、库和一些额外的helper组成。
这个项目的核心是ubusd守护进程。它为其他守护进程提供用来注册自己和发送消息的接口,这个接口是使用 Unix 套接字实现的,它使用TLV(类型-长度-值)消息。
为了方便调用ubus的app开发,我们又建立了libubus库。
每个守护进程在特定的命名空间下注册一组路径。每个路径都可以提供具有任意数量参数的多个过程。程序可以用消息回复。
ubus命令行工具能够与ubusd服务器交互(与所有注册的服务进行交互)。它对于调查/调试注册的namespace以及编写 shell 脚本很有用。



