zoukankan      html  css  js  c++  java
  • hybrid接口深入理解(未完待续)

    hybrid接口深入理解

    在各种教程当中,hybrid接口都是容易被忽略的接口类型,常常都是几段话就带过了,没有好好的讲过这种类型的接口,我对这种感觉很反感,什么感觉?就是模糊的感觉,似是而非的感觉,由于是像hybrid接口,它即可以做access接口使用,又可以做trunk接口,它到底是什么?用在什么地方?为什么要用这种类型的接口?

    在网上也看到一些人总结的hybrid接口的博客,但是没有让我感觉满意的,很少有人讲自己的理解,从句子当中一看就是书本或PPT当中的原话,博客的作者本身能不能理解还是两说,我认为这样的博客真的没啥意义。当然有些博客还是写的挺用心的,前半部分是理论,后半部分是实验记录。我认为最好的学习方式就是形成自己的理解,想要形成自己的理解,下面这个对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可以从三个方面理解:收、发、是否允许通过。

    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有两层含义,一个发送的时候将vlan10的tag拆掉,另一个是允许vlan10的数据帧通过,下面我们会验证一下;
    

    如果仅敲untag会有什么现象?

    如果在2号接口上仅敲untag 10,当pc1与pc2通信时,pc2可以收到pc1的请求包,pc2的回复数据一旦到达2接口,就会被拒绝,因为我们没敲pvid vlan 10,没有pvid 等于10的话,默认的pvid是1,会被打上vlanid为1的tag,但untag vlan 10只允许vlanid为10的帧通过,所以回复包在这里面会被拒绝,回复的数据包都无法到过通过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,但不允许vlan10的数据帧通过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也要做这样的处理,什么处理?标记帧处理,在上面我们看了untag两层含义,一个是拆tag,另一层是允许通过的含义,这里面的tag也类似。其实上面这个配置也有隐藏的配置,那就是pvid为1,下面这个配置也隐藏两个配置,那就是pvid 1和untag 1,这一点会在下面再做介绍;

    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就意味着当接口收到无标识帧的时候将打上vlan 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
    

    其它

    总结一下,如果连接是终端,重点关注untag和pvid,正在对应一发一收;如果对接的是trunk接口,重点关注对有标记帧和无标记帧的处理,对有标记帧采用tag的方式处理,同时暗含允许,对有无标记帧可以用pvid的方式对接,注意,不要忘记回包的时候;
    有了自己的一些理解和思考之后,再来看一下肖哥单独讲的hybrid接口,才有深刻的理解https://edu.51cto.com/center/course/lesson/index?id=195368
    看到这位老哥的总结的这个博客,比较认真,不错,https://blog.csdn.net/weixin_47153988/article/details/106474693
    这位写的更好,https://blog.51cto.com/u_14157628/2443392

    这两位写的与我自己的理解,是有互补的,当把这两位写的理解之后,再看一下《HICE路由交换学习指南》里面对hybrid的解释,才发现比较好理解了,泰克出版的《HCIE路由交换学习指南》知识点有点死板,如果单纯看这本书真的太无聊。

    未完待续……

  • 相关阅读:
    3、Python文件操作工具 xlwt 工具
    2、Python文件操作工具 xlrd 工具
    1、关于python第三方工具操作xls和xlsx格式的excel文档选型的吐血经历
    设置python的默认编码方式为utf-8
    Python安装第三方库 xlrd 和 xlwt 。处理Excel表格
    I/O字符流
    I/O字节流
    读写锁实现线程安全缓存
    红黑树理解
    Task异常捕获
  • 原文地址:https://www.cnblogs.com/yizhangheka/p/15318264.html
Copyright © 2011-2022 走看看