本文主要内容来自 SpriCoder的博客,更换了更清晰的图片并对原文的疏漏做了补充和修正。
交换机
网桥和路由器一般是通过软件来完成的,基于操作系统的。交换机是基于硬件的。
交换机基本功能
- 根据 MAC 地址建立和维护交换表(类似于网桥表)
- 将帧切换出接口到目标
对称交换
对称交换(Symmetric Switching)可在具有相同带宽(10/10 Mbps 或 100/100 Mbps)的端口之间提供交换连接。用户尝试访问其他网段上的服务器时,可能会导致瓶颈,因为对称交换可能会导致带宽不足。
多个客户端向服务器访问的话,服务器端口流量会比较阻塞(在对称切换中,双端的带宽是完全对称的),这是一个瓶颈。
非对称交换
非对称交换(Asymmetric Switching)通过将带有服务器的网段连接到更高带宽的端口(100 Mbps),减少了服务器上潜在瓶颈的可能性。
非对称交换需要在交换器中进行内存缓冲。非对称交换端口解决对称交换端口中的对称阻塞问题,进一步保证了服务器的稳定实现。
内存缓冲:交换机中存储目标和传输数据的内存区域,直到可以将其切换出正确的端口为止。
- 基于端口(Port)的内存缓冲:
- 每个端口都有一个 buffer
- 数据包存储在每个端口的队列中
- 由于目标端口繁忙,一个数据包可能会延迟其他数据包的传输
- 其他端口可能会空闲,存在不均衡的问题。
- 共享(Shared)内存缓冲
- 所有端口共享的公用内存缓冲
- 允许将数据包在一个端口上接收并在另一个端口上发送出去,而无需将其更改为其他队列
- 需要自己记录端口的信息
- 发生阻塞的时候,根据情况按照端口或者内存将包缓存下来
交换方式
储存转发
储存转发(Store-and-Forward):网桥、路由器等通过软件转发的设备使用。
交换机接收整个帧,最后校验其 CRC,然后再将其发送到目的地。
直通
直通(Cut-through)
上述存储转发会增加延迟,通过使用直通切换方法可以减少延迟。
快速转发切换:仅在立即转发帧之前检查目标 MAC,即只要看到帧的目的地址就转发,而不看帧的后面的部分
无碎片转发
无碎片转发(Segment-free Switching)
碎片释放(Fragment Free):在转发帧之前读取前 64 个字节以减少错误:避免碰撞和帧碎片
三种不同的转发方式的比较
第二层交换机
大规模集成电路,保证链路效率,低时延,低成本。有一个 MAC 地址。
第三层交换机
- 基于硬件的帧转发机制,较高的帧转发性能,低时延(路由器是针对路由表进行转发)
- 较高速的计算
- 每一个端口的代价低
- 流控制
- 安全性更高
- 对数据流进行路由,生成 MAC 和 IP 的映射(消除了路由器对路由转发而导致的延时)
- MAC 地址过来的时候直接根据表从二层进行通过
第四层交换机
- 数据段在数据报里面,数据报在数据帧里面
- 只要交换机可以看到数据帧的数据部分的首部
- 可以根据端口主机的应用特点进行一定的流量控制
- 和 Net OS 是不一样的,没有那么智能
- 识别到前 80 个字节的数据报长度,对指定应用进行管理
多层交换机总结
- 一般我们只是用二层交换机
- 交换机可以简单识别第三层和第四层信息
生成树协议
生成树协议(STP, The Spanning-Tree Protocol)
桥回路
出于各种原因,网络中可能会出现环路。
- 通常,网络中的环路是故意(deliberate)提供冗余的结果。
- 也可能由于配置错误而发生:在桥接网络中,环路可能是绝对灾难性的两个主要原因:
- 广播回路(广播风暴),第二层的帧结构中没有 TTL
- 路由表的错误
往往是第二层交换机的冗余导致的桥回路。
接入层到核心层的接入往往要有冗余,这个区域是主干网(backbone)
冗余造成了路由回路
- 设备通过 backbone 和远端设备进行链接
第二层路由回路
广播和第二层循环可能是危险的组合。
以太网帧没有 TTL 字段,因此以太网帧开始循环后,它可能会继续下去,直到有人关闭其中一台交换机或断开链路为止(外部条件)。
交换机将抖动(flip flop)主机 A 的桥接表条目(创建极高的 CPU 利用率),消耗 CPU 和内存
第二层路由回路-泛洪单播帧
过一段时间 CAT-1 和 CAT-2 没有收到 Host-B 的信息,删除表中的对应记录。
在这之后,Host-A 发送给 Host-B 信息,然后在 CAT-1 和 CAT-2 之间进行循环。
生成树协议综述
生成树协议的元素:
- 主要功能:在交换机/桥接网络中允许冗余路径,而不会因环路的影响而引起延迟。
- STP 通过计算稳定的生成树网络拓扑来防止环路
- 生成树帧(称为桥协议数据单元,bridge protocol data unit,BPDU)用于确定生成树拓扑
在正常情况下禁用一些端口来防止出现冗余。
STP 决策顺序
生成树始终使用相同的四步决策序列:
- 在拓扑里面最低的 root BID(Bridge Identification,网桥标识)
- 找到 Root bridge 的最低路径成本
- 每个路径都会选择一个最低 BID 的 sender 这个是针对一个链路的,详见例子
- 每个路径再指定一个最低的 ID 端口
这些信息的得取都是靠的 BPDU 帧的交换
桥协议数据单元
- BPDU 是交换机之间的流量;它们不承载最终用户(end-user)流量。
- STP 建立一个称为根网桥的根节点,生成的树源自根桥。
- 不属于最短路径树的冗余连接将被阻止(block 端口,不转发,但是接收)
- 在阻塞的链接上收到的数据帧将被丢弃。
- 交换机发送的允许形成无环逻辑拓扑的消息是 BPDU
BPDU 的结构:
- BPDU 里面包含几个字段标识协议、版本、数据类型、标志等,记录它认可的 Root BID(类似 OSPF)、到 BID 最小的代价、发送的交换机的 ID、从哪个端口发送
- 和 OSPF 不一样的:不一定以自己为根
- 这样在选举之后,不在最短生成树中的冗余链路就被屏蔽掉了
STP 的 BPDU 帧
注意前四个是很有意义的。
默认交换机每 2s 发送一次 BPDU,主要是维护最短的路径。
接收到 BPDU 帧的时候,会比较根 ID 并计算,如果更优则接受,反之则不接受。经过一段时间的传递后会全局稳定。
网桥标识
- 网桥 ID(BID):8 个字节(2 + 6)
- 高阶子字段(2 个字节):网桥优先级,值域:0-65535(默认值:32,768),通常以十进制格式表示
- 低阶子字段(6 个字节):分配给交换机的 MAC 地址,以十六进制格式表示
- STP 成本值:成本越低越好。
选举根交换机
- 交换机通过查找具有最低 BID的交换机(通常称为根战争)来选择单个根交换机。
- 如果所有交换机都使用默认的网桥优先级 32768,则最低的 MAC 地址将作为根交换机。
- 可以通过配置优先级来调整根网桥
路径代价
网桥使用成本的概念来评估它们与其他桥梁的距离。
和 OSPF 算法相同,这个标准是比较合适的,比之前 OSPF 要新,用固定的数值除以带宽来获得代价。
五个 STP 状态
通过根策略配置每个端口来建立状态。只有在交换机做 STP 时,交换机才会出现这五个状态。
然后,STP 根据流量模式(traffic Patterns)和潜在环路(Protential Loops)修改状态。
STP 状态的默认顺序为:
- 阻塞:没有转发帧,听到了 BPDU
- 监听:不转发任何帧,监听数据帧(确定自己可以参加的交换),也会发送一些数据帧表示自己状态变了
- 学习:不转发帧,学习地址
- 转发:转发帧,学习地址
- 禁用:没有转发帧,没有听到 BPDU
STP 过程:Blocking -> 20s Listening -> 15s Learning -> 15s Fowarding 或者 Disabled
2s 可以调整
老化时间:保存的时间
初始 STP 收敛
当网络首次启动时,所有网桥都会混合使用 BPDU 信息来泛洪网络(开始泛洪 BPDU 信息)。立即,他们应用决策序列,允许他们 BPDU 进行 PK,然后选择出来 ROOT,从而形成整个网络的单个生成树。
- 根交换机决定:选择一个根桥作为该网络的中心点
- 选择根端口:所有剩余的网桥都会计算出一组根端口
- 选择指定端口:其余所有网桥计算一组指定端口(Designated Ports)
Root switch 针对一个特定的交换机,根端口针对一个交换机,指定端口对应链路。
步骤 1:根交换机决定
- 宣布自己为根
- 检查端口上收到的所有 BPDU 以及将在该端口上发送的 BPDU
- 对于每个到达的 BPDU,如果其值小于为端口保存的现有 BPDU,则旧值被替换,并且 BPDU 的发送者被接受为新的根
- BC 收到后将根修改为 A
- 比如在 BC 链路中,B 的 MAC 地址比较小,作为链路的 Sender BID,这个 port 是指定端口。
步骤 2:选择根端口
每个非根桥必须选择一个根端口。
- 桥的根端口是最接近根桥的端口。
- 根路径成本是到根网桥的所有链接的累积(cumulative)成本。
STP 成本随着在端口上接收到 BPDU 而增加,而不是随着它们从端口发送出去而增加。
B 会把上面一个端口做为 Root Port,虽然两个可达,但是上面一个更快,C 也是同样
步骤 3:选择网段的指定端口
每个网段都有一个指定端口(Designated Port):充当单个网桥/交换机端口,该端口既向该网段又向根网桥发送流量,也从该网段和根网桥接收流量。
包含给定网段的指定端口的网桥/交换机称为该网段的指定网桥。
所有网桥/交换机将 block 它们的未指定的端口,根网桥上的每个活动端口都将成为指定端口
每个链路只有一个指定端口,一旦选定其他就 block 了。
BC 之间的链路,两个端口优先级相同,左边是 BID 小所以将其选择为指定端口。
根端口是 B 和 C 上面的端口。
AB 和 AC 之间的链路的指定端口是 A 上面的端口。
虚拟局域网
虚拟局域网(Virtual Local Area Network,VLAN)
为什么引入 VLAN?
VLAN 可以不通过路由器就隔离广播域吗?
VLAN 简介
现有的共享局域网配置
在典型的共享局域网中:
- 根据用户所插入(plug)的集线器对用户进行物理分组
- 路由器分割局域网并提供广播防火墙
在 VLAN 中:
- 您可以按使用的功能,部门或应用程序对用户进行逻辑分组
- 通过专有软件进行配置
LAN 和 VLAN 之间的差异
VLAN:
- 在第 2 层和第 3 层工作
- 控制网络广播
- 允许用户由网络管理员分配
- 提供更严格的网络安全性
左边是基于地理位置划分成子网(传统局域网),VLAN 是是通过逻辑位置进行划分。
VLAN1 的报文不会发送给 VLAN2(虽然连接在一个交换机上)
特点
VLANs(IEEE 802.1q)
- 不限于物理交换机网段的网络设备或用户的逻辑分组。
- VLAN 中的设备或用户可以按功能,部门,应用程序等进行分组,而不管其物理网段的位置如何。
- VLAN 创建一个不限于物理网段的单个广播域,并且将其视为子网。
- VLAN 设置是由网络管理员使用供应商的软件在交换机中完成的。
优点
- 限制广播包,提高带宽的利用率。
- 增强通信的安全性:其他 VLAN 用户网络收不到非本 VLAN 的报文,避免被监听
- 创建虚拟工作组:可以一个部门工作的人划分为一个 VLAN,这样子即使他移动了办公位置,仍然能够正常办公
- 增强网络的健壮性:将一些网络故障限制在一个 VLAN 中
分组用户
VLAN 可以从逻辑上将用户划分为不同的子网(广播域),广播帧仅在具有相同 VLAN ID 的一个或多个交换机的端口之间切换(VLAN ID 属于端口)。
可以通过基于以下内容的软件对用户进行逻辑分组:
- 端口号
- MAC 地址
- 使用的协议
- 使用的应用
没有 VLAN 时的网络广播
大家在一个交换机上不可以进行划分
划分了 VLAN 的网络广播
各自角色之间单独进行通信,虽然连接的是同一个交换机,如果不在同一个 VLAN 上,相互之间也不能通信
VLAN 间通信
- 首先 172.17.10.21 询问网关地址(ARQ)
- 路由器帮忙转发(VLAN 的交换需要路由器的支持)
- 交换机 S2 的不同端口在不同的 VLAN,S1 和 S2、S1 和 S3 之间是 VLAN 骨干(backbone,VLAN 中继)
VLAN 和第三层转发来控制广播域
第三层交换机:为每一个网段设置一个 SVI(switch virtual interface,虚拟交换机结构,也可以理解为子接口),通过这个来进行不同网段之间的通信
VLAN 的结构
VLAN 通过骨干网
骨干网(BackBone)
- VLAN 配置需要支持互连的路由器和交换机之间的骨干数据传输。
- 骨干网是用于 VLAN 间通信的区域,可以跑多个 VLAN
- 骨干网应该是高速链路,通常为 100Mbps 或更高
- BackBone 可以跑多个 VLAN,是骨干网
在 VLAN 中的路由器的作用
路由器提供不同 VLAN 之间的连接。
例如,您有 VLAN1 和 VLAN2。在交换机内,位于不同 VLAN 上的用户无法相互通信(VLAN 的好处);但是 VLAN1 上的用户可以向 VLAN2 上的用户发送电子邮件,但他们需要路由器的支持才能执行此操作。
在 VLAN 中的帧的使用
交换机根据帧中的数据做出过滤和转发决策。注意 trunk 链路要用交叉线来连接。
使用了两种技术:
- 帧过滤:检查有关每个帧的特定信息(MAC 地址或第三层协议类型),特定的 VLAN 记录或者映射
- 帧标记:在整个网络骨干网中转发时,在每个帧的标题中放置一个唯一的标识符
帧过滤
帧过滤(Frame Filiter):
- 收到帧转发后,发现都不在一个 VLAN 上,然后通过 Backbone 转发
- Frame Table 在交换机上传输:在 Frame Table 上面建立起 MAC 地址和 VLAN 的对应关系
帧标记
帧标记(Frame Tagging)实施过程:
- 在整个网络骨干网中转发时,在每个帧的标题中放置一个 VLAN 标识符。
- 每个交换机都可以理解和检查标识符
- 当帧离开网络骨干网时,交换机会在帧发送到目标终端站之前删除标识符。只和端口绑定,而不影响主机
帧标记在第二层起作用,并且几乎不需要处理或管理开销。
从主机到了交换机端口,交换机端口进行标记,然后进行转发。
IEEE802.1Q 和 ISL
IEEE802.1Q:IEEE 标准,在标头中插入 VLAN 的标签以标识所属的 VLAN(帧标记)
ISL(Inter-Switch Link):思科专有。ISL 在数据帧的前面添加一个 26 字节的标头,并在末尾附加一个 CRC(4 字节)。
标记一般在 BackBone 上
Name | Encapsulation | Label | Media |
---|---|---|---|
802.1Q | No | Yes | Ethernet |
ISL | Yes | No | Ethernet |
VLAN 的实现
端口、VLAN 和广播
实现 VLAN 的两种方法
- 静态的
- 动态的
每一个端口绑定给一个 VLAN
- 确保不共享同一 VLAN 的端口不共享广播。
- 确保共享相同 VLAN 的端口将共享广播。
- VLAN 标签的添加与删除都是需要依靠交换机或者路由器的
实现途径:
- 基于端口的 VLAN
- 基于 MAC 地址的 VLAN
- 基于 IP 地址的 VLAN
- 基于上层协议的 VLAN
静态 VLAN
定义:静态 VLAN 是指交换机上的端口以管理方式分配给 VLAN
优点:
- 安全,易于配置和监控
- 在控制移动的网络中效果很好
端口是写死在交换机的端口上的。
动态 VLAN
一个服务器来配置 VLAN 的信息。
交换机通过 MAC 地址或者哪一个协议,指定是哪一个 VLAN。
当工作站最初连接到未分配的端口时,交换机会检查表中的条目,并使用正确的 VLAN 动态配置端口。
优点:
- 添加或移动用户时减少管理(更多前期工作)
- 集中通知未授权用户
以端口为中心的 VLAN
实际的网络是有层次的:static 的物理的接入层(physical Layer)
不同电脑在一个房间内,不同房间的不同电脑组成一个 VLAN。
路由器网关来处理。
以端口为中心的 VLAN 的优点
同一 VLAN 中的所有节点都连接到同一路由器接口,使管理更容易,因为:
- 通过路由器端口分配用户
- VLAN 易于管理
- 提供更高的安全性
- 数据包不会“泄漏”到其他域
接入和骨干连接
分为两类:
- 接入链路:通过一个 VLAN 报文
- 骨干链路:通过多个 VLAN 报文
访问连接
访问连接是仅作为一个 VLAN 成员的交换机上的连接。
此 VLAN 被称为端口的本机 VLAN,连接到端口的任何设备都完全不知道 VLAN 存在。
主干链路
- 主干链路能够支持多个 VLAN
- 主干链路通常用于将交换机连接到其他交换机或路由器。
- 交换机在快速以太网和千兆位以太网端口上都支持骨干链路。
- 也存在访问和骨干链接
一般 Trunk 就是 BackBone。
- Sa 和 Sb 上面连接使用单独的线,浪费
- 底下使用串行的线,不浪费端口
- 骨干是支持多个 VLAN 的点对点链接
- 骨干用于在两个实现 VLAN 的设备之间创建链接时节省端口
- 骨干链路不属于特定的 VLAN:充当交换机和路由器之间 VLAN 的通道。
- 可以将骨干链路配置为传输所有 VLAN 或有限数量的 VLAN。
- 但是,骨干链路可能具有本地 VLAN。
- 如果骨干线链路由于任何原因失败,则骨干线的本地 VLAN 是该骨干线使用的 VLAN。
- native VLAN 是不发送无标记的信息。
交换机 29xx 中的配置
- 在 Cisco 29xx 交换机上配置 VLAN 时,必须遵循以下准则:
- VLAN 的最大数量取决于交换机本身。
- VLAN 1 是出厂默认 VLAN 之一。(native VLAN 往往是 VLAN1,以及广播也是)
- VLAN 1 是默认的以太网 VLAN。
- 思科发现协议(CDP)和 VLAN 骨干协议(VTP)通告在 VLAN 1 上发送。
- 默认情况下,Catalyst 29xx IP 地址在 VLAN 1 广播域中。
VLAN 配置
步骤 1:创建 VLAN 所需的步骤。 如果需要,还可以配置 VLAN 名称。
1 |
|
步骤 2:将 VLAN 分配给一个或多个接口:
1 |
|
添加 VLAN 示例
1 |
|
配置 VLAN
Switch# show vlan [vlanid]
1 |
|
剩下的是默认 VLAN
删除 VLAN
- 删除 VLAN 后,分配给该 VLAN 的所有端口都将变为非活动状态。 但是,端口将一直与删除的 VLAN 关联,直到分配给新的 VLAN。
switch(vlan)# no vlan vlanid [name /vlan-name]
1 |
|
在局域网之间的路由
- 每个端口连接一个 VLAN,每个 IP 和一个 VLAN 连接
- 如下图,我们使用串口线,物理上是一个一个接口,划分成多个 IP 和子接口
对比如下:接入方式不同
子接口
- 物理上一个,划分成 Fa0/0.1、Fa0/0.2 和 Fa0/0.3
- 涉及到的是单臂路由
配置 VLAN 间路由
1 |
|
配置 VLAN 间路由
1 |
|
- 如果是 Trunk Link:应该使用交叉线,而不是直通线
- 如果是 Access Link:直通线
VLAN 题目备注
- 同一 VLAN 中的两台主机可以跨越多台交换机
- 必须是第三层及以上的交换机才能用来构建 VLAN