《深入理解OpenStack Neutron》—2.4 Bridge
2.4 Bridge
在Linux的语境里,Bridge(网桥)与Switch(交换机)是一个概念,所以本文也不对两者进行区分。
Linux实现Bridge功能的是brctl模块。在命令行里敲一下brctl,如果能显示相关内容,则表示有此模块,否则还需要安装。安装命令是:
yum install bridge-utils
执行命令brctl,显示的是brctl的帮助,如下:
brctl
Usage: brctl [commands]
commands:
addbr <bridge> add bridge
delbr <bridge> delete bridge
addif <bridge> <device> add interface to bridge
delif <bridge> <device> delete interface from bridge
hairpin <bridge> <port> {on|off} turn hairpin on/off
setageing <bridge> <time> set ageing time
setbridgeprio <bridge> <prio> set bridge priority
setfd <bridge> <time> set bridge forward delay
sethello <bridge> <time> set hello time
setmaxage <bridge> <time> set max message age
setpathcost <bridge> <port> <cost> set path cost
setportprio <bridge> <port> <prio> set port priority
show [ <bridge> ] show a list of bridges
showmacs <bridge> show a list of mac addrs
showstp <bridge> show bridge stp info
stp <bridge> {on|off} turn stp on/off
Bridge本身的概念,本文不再啰唆。下面笔者通过一个综合测试用例来讲述Bridge的基本用法,同时也涵盖前面所述的几个概念:tap、namesapce、veth pair,如图2-4所示。
图2-4中,有4个namespace,每个namespace都有一个tap与交换机上一个tap口组成veth pair。这样4个namespace就通过veth pair及Bridge互联起来。
实现这个用例的命令行如下:
# 1)创建 veth pair
ip link add tap1 type veth peer name tap1_peer
ip link add tap2 type veth peer name tap2_peer
ip link add tap3 type veth peer name tap3_peer
ip link add tap4 type veth peer name tap4_peer
# 2)创建 namespace
ip netns add ns1
ip netns add ns2
ip netns add ns3
ip netns add ns4
# 3)把 tap 迁移到相应 namespace 中
ip link set tap1 netns ns1
ip link set tap2 netns ns2
ip link set tap3 netns ns3
ip link set tap4 netns ns4
# 4)创建 Bridge
brctl addbr br1
# 5)把相应 tap 添加到 Bridge 中
brctl addif br1 tap1_peer
brctl addif br1 tap2_peer
brctl addif br1 tap3_peer
brctl addif br1 tap4_peer
# 6)配置相应 tap 的 IP 地址
ip netns exec ns1 ip addr add local 192.168.50.1/24 dev tap1
ip netns exec ns2 ip addr add local 192.168.50.2/24 dev tap2
ip netns exec ns3 ip addr add local 192.168.50.3/24 dev tap3
ip netns exec ns4 ip addr add local 192.168.50.4/24 dev tap4
# 7)将 Bridge 及所有 tap 状态设置为 up
ip link set br1 up
ip link set tap1_peer up
ip link set tap2_peer up
ip link set tap3_peer up
ip link set tap4_peer up
ip netns exec ns1 ip link set tap1 up
ip netns exec ns2 ip link set tap2 up
ip netns exec ns3 ip link set tap3 up
ip netns exec ns4 ip link set tap4 up
# 8)现在就可以互相 ping 通了
ip netns exec ns1 ping 192.168.50.2
......
ip netns exec ns4 ping 192.168.50.1
- 点赞
- 收藏
- 关注作者
评论(0)