veth pair
只能实现两个 namespace
通信,
bridge
是实现多个 namespace
通信的,其实就是作为veth pair
中转站
- 安装
yum --enablerepo=nux-misc install bridge-utils
注:指令命令是brctl
- 创建
bridge
brctl addbr br1 - 添加
tap
到bridge
brctl addif br1 tap1_peer
- 将
tap
和bridge
设为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
,ip
为192.168.0.203
,物理网卡
是enp3s0
,没有ip
br0
上有 ip
,物理网卡
上,但实际上发到外界的数据包方向是 br0
-> enp3s0
->外界
,也就是说,数据包还是从物理网卡出去的,也就是说物理网卡没有ip
也能转发包,只要其他设备有ip
,物理网卡就可以转发包。
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
的设备