虚拟网络设备和端口概念:Bridge(桥)和Tap

Bridge(桥)和Tap是网络通信中,特别是在Linux环境下,常见的虚拟网络设备或端口概念。下面将分别介绍这两个概念及其在网络中的作用。

Bridge(桥)

定义与功能

  • Bridge是一种虚拟网络设备,其功能类似于物理交换机,可以在TCP/IP二层协议上实现数据包的交换。它能够将多个网络接口连接在一起,实现不同网络之间的通信。
  • 在Linux系统中,Bridge设备可以配置IP地址和MAC地址,类似于普通的网络设备。然而,与物理网卡不同,Bridge具有多个端口,可以接收来自任何端口的数据包,并根据目标MAC地址进行转发或丢弃。
  • Bridge设备主要用于实现虚拟机之间的通信,或者将虚拟机连接到物理网络。通过Bridge,虚拟机可以像物理机一样,在网络中发送和接收数据包。

工作原理

  • 当一个从设备(如Tap设备或物理网卡)被attach到Bridge上时,Bridge会学习该设备的MAC地址,并将其存储在内部的MAC地址-端口映射表(CAM表)中。
  • 当Bridge接收到数据包时,它会检查数据包的目标MAC地址,并在CAM表中查找对应的端口。如果找到匹配的端口,Bridge会将数据包转发到该端口;如果没有找到匹配的端口,Bridge可能会将数据包广播到所有端口,或者根据网络配置进行其他处理。

比如真实的系统里ifconfig命令后显示这样:

bridge1: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
    description: vmx0
    options=0
    ether 58:9c:fc:10:ff:84
    id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
    maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
    root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
    member: tap2 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
            ifmaxaddr 0 port 7 priority 128 path cost 2000000
    member: tap1 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
            ifmaxaddr 0 port 5 priority 128 path cost 2000000
    member: vmx0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
            ifmaxaddr 0 port 1 priority 128 path cost 2000
    groups: bridge
    nd6 options=9<PERFORMNUD,IFDISABLED>
bridge2: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
    description: vmx0
    options=0
    ether 58:9c:fc:10:67:6a
    id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
    maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
    root id 00:00:00:00:00:00 priority 0 ifcost 0 port 0
    groups: bridge
    nd6 options=9<PERFORMNUD,IFDISABLED>
 

Tap(TAP设备)

定义与功能

  • Tap是一种虚拟网络设备,用于模拟物理网络接口。它通常与虚拟机的网络接口相连,实现虚拟机与主机或其他虚拟机之间的网络通信。
  • 通过Tap设备,虚拟机可以发送和接收网络数据包,就像它们拥有独立的物理网络接口一样。这使得虚拟机能够在网络上表现得像真实的物理机一样。

工作原理

  • 当虚拟机发送数据包时,数据包会通过Tap设备传递给主机网络堆栈。然后,主机网络堆栈会根据网络配置(如路由表、防火墙规则等)将数据包发送到目标地址。
  • 当主机接收到发往虚拟机的数据包时,数据包会被传递给Tap设备。Tap设备再将数据包转发给虚拟机网络接口,从而实现虚拟机与网络的通信。

比如使用ifconfig命令显示:

tap1: flags=8903<UP,BROADCAST,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
    description: CBSDSYSTEM0
    options=80000<LINKSTATE>
    ether 58:9c:fc:10:ff:89
    groups: tap
    media: Ethernet 1000baseT <full-duplex>
    status: no carrier
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
tap2: flags=1008943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
    description: ub12-nic0
    options=80000<LINKSTATE>
    ether 58:9c:fc:10:ff:d9
    groups: tap vm-port
    media: Ethernet 1000baseT <full-duplex>
    status: active
    nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
    Opened by PID 90163
 

总结

Bridge和Tap是Linux网络虚拟化中两个重要的概念。Bridge设备作为虚拟交换机,连接多个网络接口并实现数据包的交换和转发;Tap设备作为虚拟网络接口,模拟物理网络接口并与虚拟机网络通信。这两个概念的结合使用,为虚拟机提供了高效、灵活的网络通信能力。

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值