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框架下,可以实现路由器、防火墙、交换机的功能