计算机网络自顶向下方法4.4 通用转发和SDN
目录
4.4 通用转发和SDN
因特网路由器的转发决定传统上仅仅基于分组的目的地址。执行许多第三层功能的中间盒有了大量发展。NAT盒重写首部IP地址和端口号。防火墙基于首部字段值阻拦流量或重定向分组。负载均衡器将请求某种给定服务的分组转发到提供该服务的服务器集合中的一个。
第二层交换机和第三层路由器等中间盒剧增,每一种都有自己的硬件,软件和管理界面,给网络操作员带来了麻烦。所以就有了软件定义网络SDN,统一提供多种网络层功能以及链路层功能。此时的转发设备准确地描述为分组交换机,而不是第三层的路由器或者第二层的交换机,每台分组交换机中有一张匹配加动作表,由远程控制器计算,安装和更新。
OpenFlow是匹配加动作转发抽象,控制器以及更为一般的SDN革命等概念的先驱。匹配加动作转发表再OpenFlow中称为流表(flow table)。每个表项包括:首部字段值得集合,计算器集合,动作集合。
4.4.1 匹配
OpenFlow流表的分组匹配字段有有11个分组首部字段和入端口ID,OpenFlow的匹配抽象允许对来自三个层次的协议首部所选择的字段进行匹配(违反了分层原则)。流表项也有通配符。如果一个分组匹配多个流表项,选定的匹配和对应的动作将是其中有最高优先级的那个。OpenFlow很好地选择了抽象技术。
Butler Lampson著名论述:在一个时刻做一件事,将它做好。一个接口应当俘获一个抽象的最低限度的要件。不要进行一般化,一般化通常是错误的。
4.4.2 动作
每个流表项有零个或者多个动作列表,决定了应用于与流表项匹配的分组的处理。
最重要的动作:
- 转发
- 丢弃
- 修改字段
4.4.3 匹配加动作操作中的OpenFlow例子
书中举了三个例子,分别是简单转发,负载均衡,充当防火墙,通用转的多样性和优势显而易见。详细内容见书中。