第0层:基础概念
- 什么是LAN?什么是VLAN
local area network,局的意思就是局部,局部的的规模肯定不大,就是规模比较小的网络呗,像是家庭网、企业网、网吧。
- 局域网和以太网是什么关系?
如上所说,局域网指的是规模不大的网络,而以太网指是在局域网里面比较出名的技术,出名到什么程度呢?出名到很多人认为以太网就是局域网。
- 交换机与以太网的关系
如果我们细心的话,在交换机的包装箱上面会写着“以太网”交换机,当然,还有非以太网的交换机,那交换机就是承载以太网技术的设备。
- 以太网体现在数据封装的什么地方
会体现在数据封装的的链路层那个地方,在封装二层帧头的时候,封装的是以太网的帧头,当然还有其它类型的帧头。
- OSI、TCP/IP对等体、TCP/IP标准体的关系
OSI七层
TCP/IP对等体是五层,只是把前三层合并成应用层了
TCP/IP标准体是四层、除了把前三层合并成应用层之外,还把后两层合并成网络接口层了
- MAC地址的的进制组成、通过MAC地址判断报文的类型是单、组、广播。
MAC地址是由16进制、48位组成、前24位是OUI(组织唯一标识符),通过第八个比特可以区别出报文的类型,因为组播的前25已经固定了,01005e,它的第8位是1,组播的第8位是1,那单播的第8位是0,而全F或全1指的就是广播。
- 以太网数据帧的两种封装
以太网地封装并不是就一个类型,而是有两种类型,说白了,也就是说,以太网有两种格式的封装报文:IEEE 802.3和Ethernet V2这两种格式。
- 谈一ethernet数据帧的字段
其实大概想一想就知道ethernetV2里面都有哪些字段,源目MAC、CRC差错校验、数据载荷、以及类型。
类似字段用来标识上层的协议,这个IP层也有类似的字段、包括差错校验、数据载荷、源目地址。0x0800表示上面是ipv4,0x86dd表示上层是ipv6.
- 同vlan下两台主机的通信流程(最好把IGMP SNOPING的场景也考虑上)
- 分别说一说什么情况下交换机会执行这三个动作:泛洪、转发、丢弃
第1层:vlan和接口
- 为什么要有VLAN
- 缩小广播范围,提高网络的有效利用率。
- 一个交换机想隔离不同的部门
- 划分vlan的方式
最常见的就是根据接口来划分vlan,除此之外还可以基于mac地址等;
- 说一个为什么需要有trunk接口?802.1q
在跨交换机的vlan通信时,交换机需要区别发过来的数据帧属于哪个vlan,但是以太网数据帧字段里面并没有vlanid字段,这时候就需要在帧头里面添加一个字段,通过这个字段来区分数据帧到达属于哪一个vlan,这个vlanid实际上属于一个tag,也就说vlanid实际上是这个tag里面的一个字段,这个tag里面最重要的字段就是这个vlanid字段。
- 那什么时候会添加上这一个tag呢?
有这个tag的帧称之为一个有标记帧,那什么时候是有标记的,什么时候是无标记的呢?一般PC向外发送和接收的数据帧都没有tag,发送的时候本身就没有tag,而接收的时候一般tag都被交换机给拿掉了。但这也有例外,比如在虚拟化的环境当中,我们可以在服务器的内部搞一个虚拟交换机,然后起一个trunk接口,交换机一侧也用trunk进行对接,这时候服务器向外发送的数据帧就都有有tag的。
那数据帧在交换机内部的时候有没有tag,其实也是有的,当无tag的数据帧进入交换机之后,立马就会给数据帧打上tag,vlan1也不例外,也就是说交换机内部的数据帧全都是tag的。
- 那什么时候去掉这个tag呢?
当交换机的数据帧要发往一个access接口的时候会把这个tag给去掉,还有没有别的情况?慢有的,当trunk接口发送的数据帧里面携带的vlanid是这个trunk接口的本帧vlan时,也会将tag移除。
- 说一下access、trunk、hybrid的接收和发送数据包时的处理机制
access:
收到无标记帧时,打tag,如果有标记帧时,检查如果不是本帧vlan就丢弃,反之,接收。
发送时移除所属vlan的tag;
trunk(在前提下允许通过的场景下):
发送时:
发送的tag里面的vlanid属于本帧vlan,移除后发送;
发送的tag里面的vlanid不属于本帧vlan,直接发送
接收者:
无tag的,打上本帧vlanid的tag;
有tag的,正常接收;
- 为什么hybrid叫混合接口?混合的是什么?
hybrid,混合类型的接口,所谓的混合是指它即可以做类似access接口接入pc、又可以做trunk接口,将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处理数据帧更加的灵活,灵活在什么地方呢?灵活在可以随意规定对数据帧是否要加tag,而access和trunk就没有那么灵活,拆tag都有严格的限制,嗯,但这不应该成为最终的理解,最终的理解肯定是hybrid就是为了某一种应用场景而产生的,在某个场景下,必须或最好使用hybrid的,查看其中之一个必要的理由就是想部署基于ip的vlan就必须使用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应该如何配置?hyborid并不能将接口接入到某个vlan之下,那也就没有这三层含义,其实hybrid只不过把这三层含义,分开配置了。
port link-ty hybrid
# 先看收的
port hybrid pvid vlan 10
# 再看发的
port hybrid untag vlan 10 # 通过之意
如果仅敲untag会有什么现象?
如果在2号接口上仅敲untag 10,pc2可以收到pc1的请求包,pc2的回复数据一旦到达2接口,就会被拒绝,因为我们没敲pvid vlan 10,没有pvid 等于10的话,数据包是无法被识别的,回复的数据包都无法到过通过2号接口进入到交换机。
如果在2号接口仅敲pvid vlan10会有什么现象发现 ?
pc 1到 pc2的请求根本到不了pc2,因为PC1到PC2的数据包到了2号接口要移除tag,而因为没有untag 10 所以pc1给pc2的数据包因为无法移除tag,所以无法从2号接口发送出去。
总结:untag在发送数据包时用来移除tag的,同时也拥有着permit vlan的含义。而pvid 10的含义就仅仅如同access接口一样单纯。
第2层:隐藏
- 谈一谈access的配置隐藏了什么
int g1/0/0
port link-type access
等同于
int g1/0/0
port link-ty access
port defautl vlan 1 #这一条是默认的,dis this的时候不会显示出来
- 谈一谈trunk的接口配置隐藏了什么
trunk默认的PVID是1,也允许了vlan1的通过;
int g1/0/48
port link-ty trunk
等同于
int g1/0/48
port link-ty trunk
port trunk allow vlan 1
port PVID 1
- 谈一谈hybrid的接口配置隐藏了什么
int g1/0/1 有点类似于trunk
port link-ty hybrid
等同于
int g1/0/1
port link-ty hybrid
port PVID 1 # 用于接收的时候打上pvid的tag
port untagged vlan 1 # 用于发送的时候移除tag并且还有允许通过的含义。
- 只有哪一种模式下支持基于IP划分vlanhybrid第3层:故障&vlan间一个网络工程师在面对故障的时要有清晰的故障定位思路,同时需要熟练的使用各种定位手段,例如各种display、show、tcpdump、探测、抓包等等。
- 在vlan这一小节有一个常被忽略的故障?
- 在跨交换机vlan的项目当中,经常会有这种因为没有vlan而导致无法通信。
- 遇到这种故障,排查思路是什么?
看一下MAC地址表看有没有收到源主机的MAC,如果没有收到,就说明数据包被拒绝了,如果交换机内部没有创建该vlan,那收到该vlan的数据就会采取拒绝的动作。
- 想要实现vlan间通信有哪两种办法?
单臂路由和vlanif
- 说一下单臂路由的通信流程?(重要)
当回头来看单臂路由真的非常简单,就是将路由器的三层接口划成两半,在逻辑上划分成两个三层接口,然后这两个三层接口还要有归属的vlan,并各自配置一个ip地址。
与单臂路由接口对接的交换机接口是使用什么类型呢?当然是使用trunk类型最好,允许两个vlan的流量通过。
- 既然单臂路由存在单点故障,有没有什么其它好的解决办法?
做链路聚合,然后在链路聚合接口上做单臂路由。当然最好的解决办法还是别用单臂路由的方法,而是用vlanif。
- 说一下vlanif的通信流程?(重要)
这个vlanif通信的流程的精髓是其实是各个模块之间的数据流转,vlanIf就是将在原本只有交换模块的交换机内部增加了两个模块,一个模块是arp模块、另一个模块是路由模块,只要把这三者之间的数据流通搞清楚了,那就简单 了。
当数据从access接口进入之后,打上tag之后,就会将数据帧交给arp模块进行拆封装,如果目标mac是本机mac的话就将给上层的路由模块或称之为IP模块,如果目标MAC不属于本交换机,那就忽略。接着讲,当arp模块发现目标MAC是本交换机的MAC之后,就会交由上层的路由模块进行三层的处理以解开目标IP地进行路由,假设的路由的下一跳是另一个vlan接口,那此数据帧交给另一个vlanif接口处理,这个时候交换机的内部的tag也发生了一次变化,在没交给另一个vlanif接口之前和交给另一个vlanif之后是不同的tag,在另一个vlanif接口进行二层封装时,源和MAC也会发生变化。
第四层 中庸之道
- 为什么要有mux vlan?它有什么应用场景? 说一说mux vlan的规则?
MUX VLAN 专门用来解决二层的痛点,二层是可以实现隔离,一旦通过VLAN实现了隔离之后,不同的VLAN是隔离的,如果想实现vlan之间的互访,这时候不得不借助三层设备,这样的话会增加经济成本,无论是购买一台三层交换层还是购买路由器。
MUX vlan 是一类vlan的统称,MUX vlan实际有两个大类的vlan,这一点也很好理解,比如杨树就不是一种树,而是一类树。
MUX VLAN
Principal vlan 主
Subordnate vlan 从
group vlan 互通型
separate vlan 隔离型
Principal vlan 也叫主vlan,加入这个vlan的主机权限最大,跟MUX VLAN这一类里面的所有VLAN都可以通通信。
互通型和隔离型这类从vlan不能单独存在,必须要依附于一个主人,这与LINUX当中的库文件又有些类似,本身并不能单独运行;
隔离vlan只能跟主vlan通信,同属于隔离都不行,隔离就是隔离,如果能与同vlan下的其它接口通信,就和vlan一样了,没啥意义。
加入互通型的vlan之后可以和主van通信,同一个vlan下能够通信,这又越级了vlan 一点,互通型也无法与隔离型vlan通信。
这个配置有点意思,先配置主,在主指定互通型的从和隔离型的从,其它的vlan就正常配置成access接口 并开启mux即可。
- 为什么要用vlan聚合?vlan聚合是怎么配置的(大体说一下就行)?
不确定会导致浪费,确定害怕不够,中庸办法就是vlan聚合,多个子vlan用同一个网段,比较弹性,每个子vlan是一个广播域,每个子vlan通过主vlan的vlanif接口通信。