在各种教程当中,hybrid接口都是容易被忽略的接口类型,常常都是几段话就带过了,没有好好的讲过这种类型的接口,我对这种感觉很反感,什么感觉?就是模糊的感觉,似是而非的感觉,由于是像hybrid接口,它即可以做access接口使用,又可以做trunk接口,它到底是什么?用在什么地方?为什么要用这种类型的接口?
在网上也看到一些人总结的hybrid博客,但是没有让我感觉满意的,很少有人讲自己的理解,从句子当中一看就是书本或PPT当中的原话,博客的作者本身能不能理解还是两说,我认为这样的博客真的没啥意义。当然有些博客还是写的挺用心的,前半部分是理论,后半部分是实验记录,而且用了一些花哨的东西,比如思维导图,呃~,我们现在很多人说的思维导图不能算是思维导图,顶天也就算的一个知识结构图吧,但写在结构图上的文字是那么的干瘪,事物本身比这个有趣多了!
我认为最好的学习方式就是形成自己的理解,想要形成自己的理解,要有结构化思考的意识。其实结构化也没有那么神秘,我们在看到的书在某一些概念进行阐述时,一般都是渐进的,将事物剖析成一块又一块,然后将这些块最后结合起来,并理块与块的之间联系和区别,这就是作者心中对某个事物的结构化思考,我们也可以采用类似的东西来看待我们想要理解的事物,它就是一种意识,有就是有了,有了之后再想忘掉也很难了……。有些结构化的东西是现成的,比如5w1h。下面这个对hybrid接口的理解,就是我通过一种最简单办法,就是不断逼问自己的方式而形成的理解,这样的方式的好处就是,当你不断的逼问自己时,然后自己写下自己的答案,想忘掉也很难了,另外还有一个无法拒绝的好处就是,你把一个模糊的事物搞清楚了,这种喜悦就是最好的奖赏了;坏处也很明显,那就是比较消耗时间,我认为这种消耗是非常值得的。
hybrid接入终端
为什么要把hybrid的称为混合类型的接口,这个混合指的什么跟什么混合?
hybrid,混合类型的接口,所谓的混合是指它即可以做access接口的工作、又可以做trunk接口的工作,混合了两种类型的接口。
hybrid接口与trunk的区别?
trunk在发送数据时,如果发现tag里面的vlanid与自己的PVID是一样的,会拆掉,也就是说只会拆掉vlanid与自己的PVID一样的,而hybrid也做trunk接口的时候,就比较灵活了,我们规定想拆哪个就拆哪个。
| 以上两个问题非常简单了,下面那就是我自己的理解了,不敢保证正确……,但我认为它是正确的。
应当从什么样的角度去理解hybrid
在网上看了一些文章都有讲到hybrid的,都只讲些理论然后搭配实验,但我认为这些半不是最重要的,重要的是是否能从一个更高的角度看待hybrid的,就比如当我们学了MPLS的时候,发现MPLS的标签与二层的tag有点类似。
为什么会有hybrid接口?只有trunk和access难道不够用呢?看了一些书籍里面很少有对这两个问题的描述,hybrid地实际的工作当中也是可有可无的,并不是必备配置,而trunk和access一般都是必备配置。hybrid的作用就仅仅提到了hybrid处理数据帧更加的灵活,灵活在什么地方呢?灵活在可以随意规定对数据帧是否要加tag,而access和trunk就没有那么灵活,拆tag都有严格的限制,嗯,但这不应该成为最终的理解,最终的理解肯定是hybrid就是为了某一种应用场景而产生的,在某个场景下,必须或最好使用hybrid的;还查到一个必要的理由就是想部署基于ip的vlan就必须使用hybrid接口,但是以为这几个理解并不能让我满意。
既然hybrid的接口我们从tag这个角度来切入,切入之后的方向呢?既然hybrid是混合,那咱们就通过tag的角度先看下hybrid如何代替或优化access接口,然后再看hybrid如何替代或优化trunk接口。假设有一个三层交换机,1接口接入PCA,2接口接入PCB,1接口通过access配置,2接口通过hybrid接口配置,都接入vlan10,最简单的办法让其能通信。
int g0/0/1
port link-ty access
port default vlan 10
尽管上面的配置很简单,但是含义还是不少的,access意味着这个接口下面接入很可能一个普通的终端,而划入到vlan10的含义就没有这么简单了,划入到vlan10可以从三个方面理解:v收、发、是否允许通过。
port default vlan10 在收的时候的意味着什么?
- 如果帧里面没有tag,就加上vlanid属于10的tag。
- 如果帧里面有tag
- vlanid是vlan10,通过
- vlanid不是vlan10,丢弃
port default vlan10 在发的时候的意味着什么?
- 发送的时候移除vlanid为10的tag;
port default vlan10 在是否允许通过意味着什么?
意味当上两层检查完成之后,是否允许通过,这一点与trunk的permit vlan有点类似,只不过这些的比较死板,只允许本帧vlan通过;
OK,那分析完成了,那我们来看hybrid应该如何配置?hybrid并不能将接口接入到某个vlan之下,那也就没有这三层含义,其实hybrid只不过把这三层含义,分开配置了。
port link-ty hybrid
# 先看收的
port hybrid pvid vlan 10
# 再看发的
port hybrid untag vlan 10 # 通过之意
如果仅敲untag会有什么现象?
如果在2号接口上仅敲untag 10,当pc1与pc2通信时,pc2可以收到pc1的请求包,pc2的回复数据一旦到达2接口,就会被拒绝,因为我们没敲pvid vlan 10,没有pvid 等于10的话,数据包是无法被打tag的,回复的数据包都无法到过通过2号接口进入到交换机。
如果在2号接口仅敲pvid vlan10会有什么现象发现 ?
pvid van 10的含义就仅仅当hybrid接口收到无标识的数据帧时,打上vlaid为10的tag。
pc 1到 pc2的请求根本到不了pc2,因为PC1到PC2的数据包到了2号接口要移除tag,而因为没有untag 10 所以pc1给pc2的数据包因为无法移除tag,所以无法从2号接口发送出去。
如果用pc2与pc1通信时,请求包到达2号接口之后就被拒绝了,虽然有pvid,无tag帧会被打上vlan10的tag,但是因为没有untag也不行,那这里关untag什么事呢?在《华为HNCP路由交换指南》393页当中有过这样的描述,就是untag 10有两层含义,一层含义是向外发送的数据时候拆掉tag,另一个层含义是允许有该tag的帧通过,此处因为没有untag,所以当pc2与pc1通信时,2号接口虽然为请求的数据帧打上了tag,但不允许它通过2号接口进入交换机。
hybrid做机连接口
让hybrid接口做机连接口,是有点麻烦的, 有些难以理解的,我们还是用trunk来做对比。
假设trunk是这么配置的
interface g1/0/0
port link-type trunk
port trunk allow vlan 10 20 30
对与之相边的对端应该如何配置?trunk接口在转发vlan10、20、30的数据帧时,原封不动的放行,也就是说,做了标记帧的处理,那对端的hybrid也要做这样的处理
interface g1/0/0
port link-type hybrid
port hybrid taged vlan 10 20 30
再来一个例子,假如trunk接口是这么配置的:
int g1/0/0
port link-type trunk
port trunk allow vlan 10 20 1000
port trunk pvid vlan 1000
对端如果是hybrid接口,应该如何配置呢?通过上面的理论,对端对vlan 10 20都做了标记帧处理,那hybrid也要这么做,也就是要对vlan 10 20打tag;对端对vlan 1000做了无标记帧的处理,那hybrid这一端也要这么处理,只要也将pvid改为1000即可,将pvid改为1000就意味着当接口收到无标识帧的时候将打上tag,那发的时候,也要告诉接口当发的时候针对vlan1000的数据帧要去掉tag,也就是还要有一条untag。
int g1/0/0
port link-ty hybrid
port hybrid pvid vlan 1000
potr hybrid untag vlan 1000
port hybrid taged vlan 10 20