美文网首页路由协议
网桥的工作原理 - kummer话你知

网桥的工作原理 - kummer话你知

作者: kummerwu | 来源:发表于2016-12-11 23:08 被阅读103次

    网桥是什么

    我们这儿所说的网桥(Bridge),是最基本的二层交换机(不支持VLAN功能的交换机),其基本功能是转发网络中的二层报文。其工作总体流程如下:

    1. 从某个端口收到的二层报文,解析二层报文的源MAC和目的MAC
    2. 根据源MAC学习形成MAC表
    3. 根据目的MAC,原封不动的将该报文转发到适当的出端口,从而保证最终目的设备能收到这个报文。这个转发过程有两个关键:
      a. 原封不动的: 所谓原封不动,就是交换机不会修改报文内容,包括报文的源MAC,目的MAC(这一点与路由器形成区别,路由器工作在三层,在转发过程中每一跳都会修改源MAC和目的MAC)
      b. 适当的:交换机要确保报文最终能安全可靠的到达目的地,为了达到这个目的,这儿的适当的目的端口有可能不是一个。 比如:为了保证报文能最终达到这个目标,交换机在不知道目的设备在哪个端口的时候,会将一个报文复制多份,并从多个端口发送出去(除报文源端口以外的所有端口--这种行为成为泛洪-flood)。

    网桥要解决哪些问题

    网桥:不支持VLAN的二层交换机

    网桥转发报文的流程如下:

    收到一个报文后,根据报文的目的MAC,选择适当的端口进行转发。对于不同的报文,起转发流程略有差异:
    a. 已知单播 - 单播:对于单播报文,如果知道目的地址在哪个端口(MAC表中能找到该目的MAC),就从该端口转发出去
    b. 未知单播 - 泛洪:对于单播报文,如果暂时还不知道目的地址是哪个端口,则从所有非源端口泛洪出去
    c. 组播广播 - 泛洪:对于广播和组播,也需要泛洪。

    *注:网桥这样工作方式,总的来说,就是为了尽量达到一个目的:以尽可能小的代价保证报文能最终到达它的目的地 *

    为了网桥上面转发行为能正常实施,网桥还需要考虑下面的问题:

    1. 维护MAC表:需要维护一张MAC地址-接口 映射表,并保证这张表的正确性。
    2. 报文转发环路的问题:防止报文环路的一个基本思路就是通过STP等控制面协议,将网络中的环剪断(破环)。也就是说,这个网络中虽然物理上有一些环路,但可以故意让某些链路停止工作,从而将物理上的有环网络(离散数学中的图),转变为逻辑上的无环网络(离散数学中的树)。

    工作原理细节

    MAC学习:维护MAC表

    MAC学习简单示例
    mac表实际上就是一个mac地址到出接口的映射表
    S1的mac表
    mac表 出接口
    macA eth0
    macB eth1
    macC eth2
    macD eth2

    S2的mac表

    mac表 出接口
    macA eth0
    macB eth0
    macC eth1
    macD eth2
    1. **监听学习: **当交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上的;
    比如S1从eth2收到C发送的报文,这样S1网桥就会在mac表中增加一个条目 
    [macC --> eth2]  表示macC与eth2连着,以后收到目的地是macC的报文,就应该往eth2发送。
    

    但如果S1刚刚启动,还不知道macC连着哪个端口怎么办? 网桥的解决方法是将报文转发给所有网口(接收报文的那个网口除外)。虽然效率不高,但至少能保证报文最终能到达目的地

    1. 监听更新: 然而,网络拓扑不可能是永不改变的。假设我们将主机B和主机C换个位置,当主机C发出报文时(不管发给谁),交换机S1的eth1口收到报文,于是交换机 S1会更新其学习到的地址,将原来的“主机C是通过eth2网口接入的”改为“主机C是通过eth1网口接入的”。
    如果B和C换了一个位置,则S1会更新macC的出接口
    [macC --> eth1] 
    
    1. **定时老化: ** 网络拓扑变化还有一种可能性,就是直接将机器C拔掉了,这种情况下怎么保证mac表的正确性呢。很简单,如果一定时间内该端口没有收到C的任何报文,则假设该主机以及离线,将改主机对应的mac表象老化删除。 (加入该主机还在,只是这段时间没有发送报文怎么办? 想想,其实没有关系,大不了再次泛洪,重新学习,就和刚启动时一样)

    转发环路

    转发环路的问题,通常需要通过STP等信令协议进行破环。通过STP对某些链路进行剪枝操作,故意让某些链路停止工作,从而将物理上的有环网络(离散数学中的图),转变为逻辑上的无环网络(离散数学中的树)。
    具体参见后面STP工作原理

    相关文章

      网友评论

        本文标题:网桥的工作原理 - kummer话你知

        本文链接:https://www.haomeiwen.com/subject/xgwpmttx.html