概述

二层交换机解决了同一个子网内的通信,当数据交换跨子网之后就需要借助路由器来完成,路由器的本质就是用来指导ip报文(并非mac报文)转发的设备。不同于交换机,路由器的每一个接口都包含了对应子网的ip(就是网关),并且各接口对应了不同的子网(ip不同),并且路由器包含了arp表项、mac地址表(不确定,三层交换机应该是有的,路由器应该也有),本地路由表,更一般的,我们的个人pc其实就可以制作成一个路由器(虽然性能扛不住)。

数据报请求流程

最后说明一下在有交换机、路由器同时存在的网络上进行数据包的转发的流程:

  • 当主机发送一个报文到指定的地址的时候,该主机会首先判断destip和sourceip是不是处于同一个网段(判断是否处于同一个子网可以简单的通过掩码和各自的ip按位进行与操作,如果得到的结果一致,那么就处于同一个子网,反之不处于同一个子网)
  • 同一个子网
    • 同一个子网则发送arp广播报文获取目标ip的mac地址,中间的设备起到广播的作用
  • 不同子网
    • 当源设备和目标设备处于不同的子网的时候就会请求网关的帮助,发送arp的广播报文获取网关mac
    • 填充网关mac然后单播过去,网关收到数据之后去掉二层头,获取对应的destip,然后查询路由信息表,从路由器中的本地路由表中获取出接口以及下一跳
    • 继续获取下一跳的mac地址并转发,如果达到目标网络(如何判断到达目标网络?判断nexthop的ip和目标ip同一个网段即可),则直接arp报文广播获取对应设备的mac,进而单播过去,二层直接找交换机要mac
    • 接下来将会填充出接口的mac地址作为源地址,并填充下一跳接口的mac地址作为目标地址,上述流程持续进行至下一跳(nexthop)对应的ip地址和请求报文中的destip处于同一个子网为止,这样就会继续根据上面同一个子网的规则进行处理

当然上面过程中的设备都是包含了mac地址表,因此在获取到了对应的mac地址后是都会缓存到对应的设备上,这样后续就可以不再通过arp获取对应的mac地址了。

上面我们接触到了网关的概念,这是设备上配置的,不过更一般的相连的路由器之间可以认为是互为网关的,路由其中的路由表保存了彼此的信息,这也说明了路由的双向的特点。

路由表项的建立

  • 直连路由:直连路由要求设备连线连好,并且要求ip配置好即可

  • 静态路由:

    • 配置方法:ip route-static ip(目标网络ip)mask(目标掩码,指定全255可以精确匹配ip) nexthopip(ip)(preference 100优先级指定可选),可以自动匹配出口。
    • display ip routing-table protocol static 查看全部的静态路由配置项(有些低优先级的路由如果不加上protocol static是不会出现的)

    通常情况下是在路由器上配置缺省路由的,这样可以保证总会找到下一跳(在局域网中通常会使用nat出口作为网关,这样配置了缺省路由之后能保证大多数情况下局域网可以访问外网)只需要对应的ip和mask全部为0即可

  • 动态路由:OSPF算法,TODO待补充

路由表项建立之后,对应的路由表中就包含了最优的路由表,路由在选择的时候,在去往相同的目的地址的路由条目中prefer、cost采用二次比较(越小越好)的方式来优选路由,如果两者相同,则会形成等价路由。另外一般路由表中也会存在一个缺省路由,缺省路由是目标网段和对应的掩码全0的特殊路由条目。

使用场景

在讲解使用场景之前,需要特别强调路由器不处理vlan信息,因此到达路由器的数据都是去除了tag的信息,但是路由器的子接口是可以处理vlan信息的(子接口更像是二层交换机上的A口,因为其会剥掉对应的vlan tag;同样三层交换机的vlan也更多的像是二层交换机的A口。在其后就是路由寻址转发的过程了,当然转发的过程)

一个三层设备连接不同的子网

多臂路由

  • 场景:交换机连接了不同的子网,交换机之上存在一个三层交换机或者路由器(不确定是什么),需要保证下面的不同vlan的子网互通
  • 解决方案:配置二层交换机的用户侧和交换机侧都为A口即可,在配置A口的时候配置其对应的vlan即可

优点:简单 缺点:vlan不共享物理连接,浪费资源

单臂路由

eth-trunk也是可以子接口的!!!! 基于上述多臂路由的缺点,路由器提供了子接口的功能,并且子接口绑定了vlan,这样一个物理接口通过虚拟多个子接口,进而可以实现类似于多臂路由的功能。

  • 场景:同多臂路由,不过要求路由器只有一个接口供外部使用

  • 解决方案:在一个接口上创建多个子接口,并单独配置子接口即可

    • 主机侧: 配置ip、掩码、网关(网关用下面创建的子接口的地址

    • 交换机:

      • 创建vlan
      • 用户侧,配置A口
      • 路由器侧配置T口,并允许A口对应的vlan可以通过

      需要强调一点,创建A、T口都需要预先在交换机上创建vlan

    • 路由器侧配置多个子接口

      • interface ethernet 0/1.xxx(xxx为子接口编号,和用户vlan无关,另外这条命令在执行的时候,如果已经有了该接口则会直接进入,如果该接口不存在,则会创建并进入接口,总之接下来就可以配置子接口了)
      • vlan-type dot1q yyy,这一步是配置该子接口的vlan为yyy,路由器才有子接口,交换机是不存在子接口的,因为接口需要ip这样配置路由器的作用是当该子接口接收到对应vlan的报文的时候会去掉对应的tag,不过子接口的vlan只可以配置一个,不可以是多个
      • ip address 用户侧网关地址(192.168.0.1) 用户侧掩码(255.255.255.0)
      • 退出当前接口并继续创建和配置其他子接口(有多少个子网,就创建多少个子接口,因为子接口是作为子网的网关存在的)

      路由器上配置好之后,就可以通过display ip routing-table来查看对应的路由信息了,这个时候应该就可以看到该路由器上的路由表增加了子接口的路由信息。(????TODO不确定是不是需要在子接口的创建过程中先创建vlan?????)

三层交换机做网关

上述单臂路由中我们通过路由器子接口完成了不同子网的数据的转发,不过现实中还存在具备三层功能的交换机,这种交换机同时具备二层和三层的功能,因此通常情况下也是可以用作网关设备的(既然都提到网关了,那肯定是有ip的,既然有了ip了那肯定是实现的路由功能了)。

  • 解决方案:
    • 主机侧:配置ip、掩码、网关(就是下面路由功能配置的ip地址)
    • 交换机:
      • 交换机功能配置:
        • vlan batch x y 创建交换机vlan
        • 进入端口配置A、T口(通常用户侧就是A口)
      • 路由器功能配置
        • interface vlanif x(这里的x是前面配置交换机创建的vlan,接收去tag,发送加tag)
        • ip address ip地址 掩码(这里的掩码和前面主机的网关是对应起来的)

新加的交换机都需要配置vlan,并且新增的接口也都需要进行配置才可以使用

IDC网络配置

这里仅提供数据中心网络配置的思路:

  • 将主机和网关打通
  • 打通路由器

小结

三层交换机暂时先总结到这里,后面有时间再详细补充。强调一下二层交换、三层路由都是可以聚合端口的,并且三层路由聚合后是可以再进行子接口的拆分的