1. 数据平面和控制平面

  • 网络层服务:
    • 在发送主机和接收主机之间发送段(segment)
    • 在发送端将段封装到数据报中
    • 在接收端将段上交给传输层实体
    • 网络层协议存在于每一个主机和路由器
    • 路由器检查每一个经过它的IP数据报的头部
  • 网络层功能
    • 转发(局部):将数据从路由器的输入接口转发到合适的输出接口
    • 路由(全局):使用路由算法来决定分组从发送主机到目标接收主机的路径
      • 路由选择算法
      • 路由选择协议
  • 数据平面(局部)
    • 本地,每个路由器的功能
    • 决定从路由器输入端口到达的分组如何转发到输出端口
    • 转发功能:
      • 传统方式:基于目标地址+转发表
      • SDN方式(软件定义网络):基于多个字段+流表
  • 控制平面(全局)
    • 网络范围内的逻辑
    • 决定数据报如何在路由器之间路由,决定数据报从源到目标主机之间的端到端路径
    • 2个控制平面方法
      • 传统的路由算法:在路由器中被实现
      • SDN:在远程的服务器中实现

1.1 传统方式

传统方式的路由转发是垂直集成的方式:每一个路由器既实现了数据平面的功能,又实现了控制平面的功能,它们是紧耦合的关系。路由器通过路由选择算法计算出端到端的路径(控制平面),路由器再根据IP协议和转发表进行局部的转发(数据平面)

1.2 SDN方式

软件定义网络 Software-Defined Networking 是通过远程的控制器与本地控制代理(CA)交互,这种方式控制平面在云端,是集中式的控制器,相对于分布在所有路由器中的控制器它更方便修改协议,用软件定义逻辑

2 路由器组成

  • 路由:运行路由选择算法/协议 (RIP, OSPF, BGP)-生成 路由表
  • 转发:从输入到输出链路交换数据报-根据路由表进行分组的转发
  • 传统方式下:路由器根据分组头部的目标地址,查路由表然后进行转发
  • SDN的分组交换机:查分组头部多个层面的信息,匹配流表相应的字段,找到匹配的流表,按照流表的动作去做相应的动作(改字段、泛洪等等,该流表由同一的控制平面服务器下发)
  • 输入输出端口的缓冲区
    • 不同端口进入的数据都需要从红色端口转发出去,导致输入速率和输出速率不匹配,输入和输出都需要缓冲队列应对速率不匹配
  • 交换结构
    • N个输入端口,交换机的交换速度是输入线路速度的N倍比较理想,才不会成为瓶颈
    • 三种典型的交换机结构如下
      • 通过总线-内存-总线的方式转发,内存本身就是瓶颈
      • 通过总线交换,速度更优,但存在总线竞争
      • 通过交叉的网络实现更快的转发速度
  • 调度机制
    • FIFO:按照分组到来的次序发送
    • 优先权:根据优先权高低发送
    • 轮转:每个数据报都有一个数据类型,每个类型轮转的发送

3 IP协议

每一个数据包最大1500字节,超出的部分需要进行分片处理,通过多个组发送到目标端。

  • IP分片和重组
    • 16-bit-identifier:相同的编码来表示这是一组完整的数据,只是被分片处理分别到达目标端
    • fragment offset:以8个字节为单位计算,例如A分组携带1480B字节位置,则偏移量为185,B分组携带2960B字节位置,则偏移量为370
    • fragflag:为1表示后面还有数据,0表示这是最后一组数据

3.1 IP编制

  • IP地址:32位标识,对主机或者路由器的接口编址
  • 接口:主机/路由器和物理链路的连接处
    • 路由器有多个接口(只有一个接口就没办法做转发的工作了)
    • 主机有一个或多个接口
    • IP地址和每一个接口关联
  • 一个IP地址和一个接口相关联
  • 子网:前缀一样,设备间数据转发无需借助路由器,直接使用交换机即可转发数据
  • 内网专用地址
    • 10.0.0.0 - 10.255.255.255 MASK 255.0.0.0
    • 172.16.0.0 - 172.31.255.255 MASK 255.255.0.0
    • 192.168.0.0 - 192.168.255.255.255 MASK 255.255.255.0
  • 无类域间路由(Classless Inter Domain Routing,CIDR)
    • 子网掩码:通过子网掩码来表示谁是网络号,谁是主机号
    • a.b.c.d/x:200.23.16.0/23:前23位为网络号,之后的为主机号
    • 对于路由器来说,只需要把IP和掩码进行与操作就可以知道应该送到哪个网络
  • 动态主机配置协议(DHCP,Dynamic Host Configuration Protocol)
    • 允许主机在加入网络的时候,动态地从服务器那里获得IP地址
    • 主机发送 DHCP request 报文请求地址
    • DHCP服务器返回 DHCP ack 报文

3.2 路由聚集

  通过层次编码实现路由聚集,子网通过路由通告告诉上层的ISP路由器哪些地址需要转发给我,上层ISP路由器经过路由聚集后再告诉上层互联网路由器哪些地址转发给我

  ISP供应商收到数据后通过比对下面4个组织的路由表决定具体谁是它的下一条

3.3 网络地址转换NAT

NAT,Network Address Translation:大内网的设备在离开内网时统一转换为外网的地址,使得外网可以进行传输,在返回时再转换回内网地址(需要特殊处理)

  • 多个局域网IP可以共享同一个IP地址
  • 可以在局域网设备改变地址的情况下不通告外界
  • 改变ISP地址不需要改变内网地址
  • 局域网内部设备没有明确的地址,对外部可见,相对更加安全
  • NAT的实现方法
    • 外出数据包:将内网IP和端口替换为路由器一个没有使用的源IP和端口
    • 记录内网IP和端口与替换IP和端口的对应关系
    • 进入数据包:替换目标IP地址和端口为内网,转发到对应的局域网主机
  • NAT穿透问题
    • 数据包主动向外网进行连接容易,但外网设备主动和内网设备进行连接存在穿越问题
    • 可以静态配置路由器端口对应的内网设备和端口
    • 通过中继的方式进行连接,内网连接到中继,外网也连接到中继,通过中继告诉局域网内设备有人想要建立连接

4 通用转发和SDN

  • 通过水平集成控制平面的开放实现,创造出更好的产业生态
  • 集中式实现控制逻辑,网络管理更容易
  • 基于流表匹配+行动的工作方式允许“可编程的”分组交换机
  • 可以实现不同线路流量控制这种复杂的功能
  • SDN框架下,可以实现路由器、防火墙、交换机的功能