linux.network.bridge

veth pair 只能实现两个 namespace通信,
bridge 是实现多个 namespace 通信的,其实就是作为veth pair中转站

  1. 安装
    yum --enablerepo=nux-misc install bridge-utils
    image.png

    注:指令命令是 brctl
  2. 创建 bridge
    brctl addbr br1
  3. 添加 tapbridge
    brctl addif br1 tap1_peer
  4. tapbridge 设为 up
    ip link set br1 up
    ip link set tap1_peer up

STP:http://blog.csdn.net/simple_jd/article/details/73916725


  • 桥(bridge)和物理网卡(enp、eth ...)

注:br0,ip192.168.0.203,物理网卡enp3s0,没有ip
br0上有 ip,物理网卡上,但实际上发到外界的数据包方向是 br0-> enp3s0->外界,也就是说,数据包还是从物理网卡出去的,也就是说物理网卡没有ip也能转发包,只要其他设备有ip,物理网卡就可以转发包。

image.png

VLAN网络设备,它需要依赖于一个宿主设备,若宿主设备没了,它是不能工作的;Bridge网络设备,它也是虚拟的,它依赖于从设备。

bridge一般单播,但可以广播

  • bridge添加端口

首先判断dev从设备必须不是loopback,不是bridge,不是其他bridge的port,且要是ethernet设备,才能继续;
从设备被设置成全接收模式,其IP和MAC都没有了;
Linux下的bridge设备,对下层而言是一个桥设备,进行数据的转发(实际上对下也有接收能力,下一节讲)。
而对上层而言,它就像普通的ethernet设备一样,有自己的IP和MAC地址,那么上层当然可以把它加入路由系统,并利用它发送数据啦。

引用:https://blog.csdn.net/jianchaolv/article/details/25777249
http://www.cnblogs.com/zmkeil/archive/2013/04/18/3029339.htmlw


因为bridge实现8021d协议的二层设备链路,它上面的所有端口的ip都是无效的。
将设备加入bridge后就变成了bridge的一个端口,所以设备的ip就无效了。
可以在bridge本身配置ip

网桥有如下特点:
(1) 在混杂模式下工作。
(2) 有一个将全局唯一地址映射到网桥端口的地址表。
(3) 根据所接收帧的目的地址作出转发决定。
(4) 根据所接收帧的源地址建立和更新地址表。
(5) 当遇到未知的目的地址时,向每个端口(除接收此帧的端口外)转发该帧

因为bridge是二层链路层设备,本来数据包只能从bridge的一个端口广播到其他端口
但是bridge加上ip后就具有3层网络层的性质,就可以通过route直接从bridge到其他任何一个有ip的设备


你可能感兴趣的:(linux.network.bridge)