首页 > 编程知识 正文

VQ是什么牌子,vxlan的vni号是多少个

时间:2023-05-06 07:09:42 阅读:175107 作者:16

与三层楼外再套三层楼的GRE不同,VX局域网是从两层楼外套一个VX局域网的头,其中包含的VX局域网ID为24位就足够了。 VX局域网头外还封装着

UDP、IP和外部MAC头

作为可扩展性协议,VXLAN也需要对VXLAN程序包进行封装解封装的地方,实现该功能这一点需要http://www.Sina.com

VTEP相当于虚拟机网络的管家。 可以在每台物理机上设置VTEP。 当每个虚拟机启动时,必须注册此VTEP house keyer,每个vtep都知道自己上注册了多少个虚拟机。 当虚拟机通过VTEP进行通信时,需要通过VTEP代理进行,VTEP进行数据包封装和封装。

与GRE端到端隧道不同,VXLAN支持通过多播而不是点对点来定位目标计算机。 这不一定意味着一个终端发出信号,另一个终端接收信号。 VTEP启动时,需要通过IGMP协议。 加入多播组后,发送到该邮件列表或发送到微信组的任何邮件都可以接收,就像加入邮件列表或微信组一样。 当每台物理机的虚拟机启动时,VTEP知道新的虚拟机已在线并由我管理。

虚拟机1、2和3是云中同一用户的虚拟机,因此必须分配相同的VXLAN ID=101。 在云的接口中,可以知道IP地址,并可以将虚拟机ping到虚拟机1。

虚拟机1发现无法发送包,因为它不知道虚拟机2的MAC地址,并发送ARP广播。

当ARP请求到达VTEP1时,VTEP1知道我这里有虚拟机。 要访问不受我管理的虚拟机,需要知道MAC地址,但我不知道啊。 这个该怎么办?

VTEP1,我想是不是我加入了微信群。 dzc@all,问问虚拟机2由谁管理。 因此,VTEP1将ARP请求封装在VXLAN中进行多播。

当然在组内,VTEP2和VTEP3都收到了消息,所以解开VXLAN数据包进行查看。 里面有ARP。

VTEP3在本地播放了半天,但没有人回来。 我说虚拟机2不在自己的管理之下。

VTEP2在本地播放,虚拟机2返回,虚拟机2说由我管理,MAC地址是这个。 通过这次的通信,也学到了VTEP2。 虚拟机1属于VTEP1,以后寻找虚拟机1,去寻找VTEP1即可。

VTEP2将ARP的回复封装在VXLAN中,这次不使用多播直接发送回VTEP1。

VTEP1解开VXLAN的包,发现是ARP的回复,发送到虚拟机1。 通过这次的通信,也学到了VTEP1。 虚拟机2属于VTEP2,以后找虚拟机2,去找VTEP2就可以了。 虚拟机1的ARP收到回复,知道虚拟机2的MAC地址,然后可以发送包。

从虚拟机1发送到虚拟机2的包到达VTEP1,那当然还记得刚才学到的东西。 要查找虚拟机2,请去VTEP2。 于是将数据包封装在VXLAN中,在外侧附上VTEP1和VTEP2的IP地址发送。 在网络分组到达VTEP2之后,VTEP2解除VXLAN封装,将分组转发到虚拟机2。

虚拟机2回复的包在到达VTEP2时,当然也记得刚才学过。 要找到虚拟机1,请去VTEP1。 因此,我们将数据包封装在VXLAN中,在外面加上VTEP1和VTEP2的IP地址并发送。 网络分组到达VTEP1后,VTEP1解除VXLAN封装,将分组传送到虚拟机1。

openv交换机的隧道功能和流量功能openv交换机支持三种类型的隧道: GRE、VXLAN和IPsec_GRE。 如果使用OpenvSwitch,则虚拟交换机相当于GRE和VXLAN封装的端点。

为了查看隧道是如何工作的,我们创建了以下网络拓扑:

三台物理机,每台有两台虚拟机,分别属于两个不同的用户。 因此,VLAN tag必须分别在不同的地方打球,以便不能相互通信。 但是,不同物理机器上的相同用户可以通过隧道相互通信,因此可以通过GRE隧道连接。

然后,所有流表规则都设置为br1,每个br1有三个网卡。 其中网卡1在内侧,网卡2和3在外侧。

让我们具体看看Flow Table的设计。

1.Table 0是所有流量的入口,进入br1的所有流量分为进入物理机的流量和从物理机出来的流量两种流量。

从端口1进入的都是传出的通信,都由Table 1处理。

ovs-ofctladd-flow br1' hard _ time out=0idle _ time out=0priority=1in _ port=1actions=resubmit (,1 ) '

从端口2、3进入的,都是

进入物理机的流量,全部由Table 3处理。

ovs-ofctl add-flow br1 "hard_timeout=0 idle_timeout=0 priority=1 in_port=2 actions=resubmit(,3)"
ovs-ofctl add-flow br1 "hard_timeout=0 idle_timeout=0 priority=1 in_port=3 actions=resubmit(,3)"

如果都没匹配上,就默认丢弃。

ovs-ofctl add-flow br1 "hard_timeout=0 idle_timeout=0 priority=0 actions=drop"

2.Table 1用于处理所有出去的网络包,分为两种情况,一种是单播,一种是多播。

对于单播,由Table 20处理。

ovs-ofctl add-flow br1 "hard_timeout=0 idle_timeout=0 priority=1 table=1 dl_dst=00:00:00:00:00:00/01:00:00:00:00:00 actions=resubmit(,20)"

对于多播,由Table 21处理。

ovs-ofctl add-flow br1 "hard_timeout=0 idle_timeout=0 priority=1 table=1 dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=resubmit(,21)"

3.Table 2是紧接着Table1的,如果既不是单播,也不是多播,就默认丢弃。

ovs-ofctl add-flow br1 "hard_timeout=0 idle_timeout=0 priority=0 table=2 actions=drop"

4.Table 3用于处理所有进来的网络包,需要将隧道Tunnel ID转换为VLAN ID。

如果匹配不上Tunnel ID,就默认丢弃。

ovs-ofctl add-flow br1 "hard_timeout=0 idle_timeout=0 priority=0 table=3 actions=drop"

如果匹配上了Tunnel ID,就转换为相应的VLAN ID,然后跳到Table 10

ovs-ofctl add-flow br1 "hard_timeout=0 idle_timeout=0 priority=1 table=3 tun_id=0x1 actions=mod_vlan_vid:1,resubmit(,10)"
ovs-ofctl add-flow br1 "hard_timeout=0 idle_timeout=0 priority=1 table=3 tun_id=0x2 actions=mod_vlan_vid:2,resubmit(,10)"

5.对于进来的包,Table 10会进行MAC地址学习。这是一个二层交换机应该做的事情,学习完了之后,再从port 1发出去

ovs-ofctl add-flow br1 "hard_timeout=0 idle_timeout=0 priority=1 table=10
actions=learn(table=20,priority=1,hard_timeout=300,NXM_OF_VLAN_TCI[0..11],NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],load:0->NXM_OF_VLAN_TCI[],load:NXM_NX_TUN_ID[]-
>NXM_NX_TUN_ID[],output:NXM_OF_IN_PORT[]),output:1"

Table 10是用来学习MAC地址的,学习的结果放在Table 20里面。Table20被称为MAC learning table。

NXM_OF_VLAN_TCI是VLAN tag。在MAC learning table中,每一个entry都仅仅是针对某一个VLAN来说的,不同VLAN的learning table是分开的。在学习结果的entry中,会标出这个entry
是针对哪个VLAN的。

NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[]表示,当前包里面的MAC Source Address会被放在学习结果的entry里的dl_dst里。这是因为每个交换机都是通过进入的网络包来学习的。某个
MAC从某个port进来,交换机就应该记住,以后发往这个MAC的包都要从这个port出去,因而源MAC地址就被放在了目标MAC地址里面,因为这是为了发送才这么做的。

load:0->NXM_OF_VLAN_TCI[]是说,在Table20中,将包从物理机发送出去的时候,VLAN tag设为0,所以学习完了之后,Table 20中会有actions=strip_vlan。

load:NXM_NX_TUN_ID[]->NXM_NX_TUN_ID[]的意思是,在Table 20中,将包从物理机发出去的时候,设置Tunnel ID,进来的时候是多少,发送的时候就是多少,所以学习完了之后,Table
20中会有set_tunnel。

output:NXM_OF_IN_PORT[]是发送给哪个port。例如是从port 2进来的,那学习完了之后,Table 20中会有output:2。

6.Table 20是MAC Address Learning Table。如果不为空,就按照规则处理;如果为空,就说明没有进行过MAC地址学习,只好进行广播了,因而要交给Table 21处理。

ovs-ofctl add-flow br1 "hard_timeout=0 idle_timeout=0 priority=0 table=20 actions=resubmit(,21)"

7.Table 21用于处理多播的包。

如果匹配不上VLAN ID,就默认丢弃。

ovs-ofctl add-flow br1 "hard_timeout=0 idle_timeout=0 priority=0 table=21 actions=drop"

如果匹配上了VLAN ID,就将VLAN ID转换为Tunnel ID,从两个网卡port 2和port 3都发出去,进行多播。

ovs-ofctl add-flow br1 "hard_timeout=0 idle_timeout=0 priority=1table=21dl_vlan=1 actions=strip_vlan,set_tunnel:0x1,output:2,output:3"
ovs-ofctl add-flow br1 "hard_timeout=0 idle_timeout=0 priority=1table=21dl_vlan=2 actions=strip_vlan,set_tunnel:0x2,output:2,output:3"

转载于:https://www.cnblogs.com/menkeyi/p/11335468.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。