Linux网络虚拟化基础:Linux bridge / Network Namespace
简述
在网络虚拟化中,有两项技术的发展相当重要,甚至可以说是网络功能软件化、虚拟化的重要重要基础。
在linux中,对于创建的一些虚拟网卡之间实现通信,提供了linux bridge作为虚拟网桥,进行数据交换。
linux系统中,提供很多namespace用于实现内核资源相互隔离,相互隔离的资源之间互不影响,在现有资源下提供轻量级的虚拟化的服务。
本文将通过network namespace跟linux bridge介绍最为基础的网络虚拟化的基础应用。
说明
在同一台linux host上构造如下,创建两个vif放入不同的network namespace进行网络隔离,通过将vif连接到linux bridge上实现通信。
操作
[root@localhost baojx]# ifconfig -a
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 64 bytes 5408 (5.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 64 bytes 5408 (5.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
// 创建网桥br
[root@localhost baojx]# brctl addbr br
[root@localhost baojx]# brctl show
bridge name bridge id STP enabled interfaces
br 8000.000000000000 no
// 生成bridge管理口br
[root@localhost baojx]# ifconfig -a
br: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 12:3f:c2:3c:08:83 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame