美文网首页
交换机access vlan和trunk vlan

交换机access vlan和trunk vlan

作者: robot_test_boy | 来源:发表于2020-09-27 21:49 被阅读0次

    背景:以openstack云上虚机通信为例,两个计算节点上虚机间如何通信,以及虚机网络如何访问互联网。

    组网图来取自刘世民的世民谈云计算

    组网图

    说明:HOST是物理主机,vm1是该HOST上的虚拟机,eth0是该HOST上物理网卡且作为OpenSatck计算节点作为网桥的网卡,switch是物理交换机。

    OpenStack一个网络对应一个vlanid,2个HOST上vm都在同一网络下,那么发出的报文都带有同一vlan标签100。发出报文vm所在host的eth0,eth0均连接到switch一个端口。

    两个vm间要通信的过程如下:

    1) 打了vlanid标签的报文发送到交换机网口上,交换机网口上判断报文中vlanid标签100在某个范围内(100-200),则允许报文通过,交换机的这个网口是trunk口。

    2) 报文在交换机内部怎么转发才能到达另外一个host上的vm呢?只有网口上的vlanid和报文的vlanid一样,才允许此报文通过。该交换机网口判断报文中vlanid标签100在某个范围内(100-200),则允许报文通过,交换机的这个网口也是trunk口。

    3) 报文出了与另外一个host上eth0相连的交换机网口,就到了另外一个host上的虚机。

    以上过程均省掉了vm与br-int/br-eth0间的过程,实际上出了交换机网口后还有很大处理过程的。

    vm要访问外部互联网:

    从2)直接说起,报文到了交换机里边然后怎么走?肯定有一个网口连接到外部互联网上,这样一个网口仅限一个vlanid的报文通过,且报文出去后要去掉此vlanid标签,比如120。

    咱们假设到外部互联网中间还有另外一个switch,连接到该交换机的网口,报文进入该网口前没有标签,进入后要做交换机内部转发,必须要有一个vlanid,否则无法转发。报文进来后先打上vlanid 160,这样的网口是access口。在交换机里边找到和自己vlanid标签一样的网口,将报文发过去。

    总结下

    对于trunk vlan的交换机网口:

            数据包进入该网口(收到报文):在vlanid范围内的或不打标签的则打上pvid或native vlanid通过,不在vlanid范围内的则丢弃。

            数据包出该网口(发出报文):在vlanid范围内的且vlanid和该网口的pvid一样则去掉标签后发出,否则直接通过。

    两个交换机,交换机1的网口1和交换机2的网口2相连,前者是trunk vlan 2-5,后者是trunk 3-4,交换机1的网口1能发出去vlan2的报文到交换机2的网口2但会被丢弃,反过来发送vlan 3的可以进入交换机1。

    对于access vlan的交换机网口:

            数据包进入该网口(收到报文):不打标签的则打上标签后通过,打标签的直接丢弃。

            数据包出该网口(发出报文):标签相同去掉vlanid后发出,标签不同的包不可能发到此网口。

    两个交换机,交换机3的网口1和交换机4的网口2相连,二者是access vlan 5,交换机3的网口1能发出去的无标签报文到交换机4的网口2,打上标签5,然后在交换机内部转发,如果交换机4上的3口trunk vlan范围包括5则通过。交换机3内部非标签5的报文不可能通过网口1发出,同样交换机4内部非标签5的报文不可能通过网口2发出。

    下面是之前错误的理解(哭死)

    trunk口:发过来和发出去的报文中vlanid在设置的trunk口范围内。

    access口:发过来的报文,进入交换机网口上,该报文无vlanid,打上该网口上设置的vlanid。当出了交换机网口2时去掉此vlanid标签。

    相关文章

      网友评论

          本文标题:交换机access vlan和trunk vlan

          本文链接:https://www.haomeiwen.com/subject/cmbluktx.html