分享

linux上做vlan,access trunk的理解???

 just_person 2019-08-15
 有点问题。

任何加入bridge的port,如果是vconfig生成的虚拟port,那么它只能收取带tag的报文,发送的报文也必定带着tag,这是8021q这个模块决定的。

对于vlan100,eth0和eth1都只能收取tag=100的报文,不能收取不带tag或者是带其它tag的报文。
从这个意义上来说,它不是access口(如果把access定义为只接受不带tag的报文的话)。

不考虑硬件的vlan加速(由硬件剥离tag),报文在vlan100的处理流程为:
1)eth0接收报文(假设目的mac不是本机);
2)eth0口不是bridge的port,所以进入正常的本地layer 2分发;
3)如果报文不带tag,则是普通IP报文,进入本地IP协议栈处理,已经跟vlan无关了;
4)带tag的报文是8021q报文,所以进入8021q的处理函数;
5)剥离tag,检查入口(eth0)上有没有对应的虚接口;
6)如果tag不是100或200,则不存在虚接口,报文被丢弃;
7)找到eth0.100或者eth0.200,以此为新的接收口,重新执行接收逻辑(模拟虚接口的rx);
8)在虚口eth0.100上收到了剥离tag后的IP报文;
9)eth0.100是bridge的port,所以进入vlan100的处理流程,不再进行layer 2的分发。

只要是把虚接口加入到bridge里面,就只能接受带特定tag的报文了。

如果只创建了vlan100而没有创建vlan200,eth0,eth1还是trunk口,只是这个trunk只能允许一个tag而已。

楼主的“在linux上如果某个网卡只属于一个vlan,那么这个网卡就是access口”这句话,我理解成把port本身加入vlan,于是说是正确的;
但楼主想表达的是把port的一个虚口加入vlan(相对于多个虚口而言),不好意思,没真正理解楼主的意图。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多