家用路由器内部设计

Overview

一直对路由器的内部设计存在疑惑,实际在找资料过程中也发现路由器有着不同的设计。

下面是我找到的一张路由器的参考设计:

这张图描述的路由器架构是十分清晰的。首先路由器对外接口有5个,这5个接口都接在一个可编程的交换机里面。

这些接口的数据随后会汇聚成一路,到路由器的芯片里面。

那么这5个物理接口是如何区分WAN口和LAN口的呢,这里是通过VLAN来将其引入路由器的核心模块。

因为这个交换机是可编程的,于是我认为经过稍加修改,这个路由器可以修改成为多WAN口的路由器。

外部的wifi接口通过桥接来巧妙地接到VLAN0上。

这里将WAN口单独赋予一个VLAN,可以将WAN口和LAN口区分开,因为最终要汇聚成一路来引入

到eth0里面。如果WAN口直接连接到CPU上,我想应该就不用为它单独划分一个VLAN了。

为它单独划分VLAN的好处我想是可以通过修改软件设计,将这个路由器改成一个5口的交换机。

提到改交换机这个思路,一般的做法是关闭路由器的DHCP,那么关闭DHCP后的路由器行为目前还不清楚,

我想就是将VLAN0和路由器内部一些机制的通路给关了,

后面通过学习openwrt应该可以进一步理解路由器的架构,不过不同路由器的架构设计是不一样的。

下面再看一下dlink825的设计,这里有6口的交换机,P0-P3是做LAN口,wifi直接连接到路由器芯片,

WAN口直通到eth1。这里大体的设计和上面的图是差不多的。

下面再分享一篇文章,有助于加深对路由器内部结构的理解。

http://www.diffen.com/difference/LAN_vs_WAN

下面是其中的一张表格(翻译)

LAN

WAN

代表 局域网 广域网
覆盖 本地(家庭,学校,办公室) 广大的区域(比如城市)
速度 1000Mbps 小于150Mbps
案例 一个办公室内的网络 internet
技术 Ethernet MPLS, ATM, Frame Relay 和 X.25
组成 二层的交换机和网桥 路由器、多层次的交换机,ATM,Frame-relay的交换机
产生的问题 LAN很少出问题,因为只是管理很少的机器 因为是一个大的系统,所以比较容易出问题
数据传输错误 很少的传输错误 大量的传输错误
拥有者 个人也可以拥有 WAN(像Internet) 不是属于任何人的,而是需要国际之间协作、维护的
花费 便宜 像海底电缆这样的设置肯定要花很多钱,但是使用WAN的成本是很低的
带宽 大量的带宽 带宽比较小,比如国家之间的出口带宽
拥堵 大量

因为个人用户一般是连接到ISP来上网的,带宽受限,所以设置一个WAN口来连接internet,多个LAN口来做局域网是合理的。

如果关闭DHCP,两台电脑连接到LAN口我想也可以互相通信(交换机模式),只要手动设置IP地址就可以了。

数据包分析

家用路由器不同于一般的路由器,一般教科书上所讲到的路由器是多WAN口的路由器,

而现在市面上的家用路由器只有一个WAN口,有多个LAN口。下面用数据包发送的流程来分析一下家用路由器的

工作流程。

家用路由器的和商业路由器的区别我认为有以下几点:

1.通过交换机实现多LAN口

2.单WAN口

3采用NAT来实现共享上网

4.成本低,功能少

1.通过交换机实现多LAN口

这个设计相当于一个交换机和一个路由器连接。下面仔细分析一下计算机间的通讯流程。

这里假设计算机里面已经有了指向网关(也就是路由器)的一个项路由表项。

一般用户需要使用网络,比如HTTP应用,都是在网络层之上的。而路由器和交换机工作在IP层和MAC层。

所以一般来说,用户的数据都需要加上IP头和MAC头。

DHCP

实际上DHCP就是方便计算机自动获取IP地址,这样用户就不用操心了,否则用户就需要自己配IP地址了。

LAN口之间的计算机通信

这种情况和两台电脑之间直连的情况是一样的。电脑上首先要填入自己的IP,默认的网关和子网掩码

当电脑发出去的包的目的IP是在同一个子网内的时候,会发送给同一个子网的电脑。所以说只经过交换机就行了。

当然了,802.3帧格式要求application前面要加上IP头和MAC帧头,所以需要知道对方的MAC地址。

通过广播ARP请求就可以知道对方的MAC地址,然后将帧包好发出去。

LAN口和WAN口之间的通讯

LAN口的计算机数据要过WAN口,需要通过交换机和路由器。

首先,电脑检测自己的目标IP地址不在同一个网段中,这时候就需要路由器帮忙了。

它会将这个数据发送给路由器,让路由器来处理。不过,有了IP地址不够,要在ethernet上传输

还需要有MAC地址,于是它发送一个arp请求给网关,然后就得到了网关的MAC地址。接下来就可以

将帧封装好发送给网关了。这里的网关就是家用路由器内部的路由器模块,更实际的说,是在一块CPU里面。

网关内部将这个数据包做NAT转换就可以发送到下一跳了,一般是ISP的机器。

WAN口到ISP之间的协议就不一样了,根据抓包可以看到多了一层PPPOE的协议

 VLAN的处理

这里WAN口和LAN口做在了一个交换机上面。通过VLAN的隔离(MAC层隔离),交换机上的WAN口和LAN口的数据就不会互通了。VLAN的数据需要路由模块的转发。

2.NAT

关于NAT,网上的资料很多,这里就不提了。位于NAT内的机器是不能直接被暴露到

internet的。一些运营商的做法,使得家庭用户无法暴露自己的设备(如监控摄像头)到internet,因为

他们采用了NAT。部分网友采用投诉的办法来让运营商取消对自己做的NAT。

原文地址:https://www.cnblogs.com/tanhangbo/p/4504560.html