当前位置: 首页 > news >正文

计算机网络自顶向下方法38——网络层 泛化转发与SDN

网络层深度解析(七):泛化转发与SDN

传统IP转发是基于目的地址的“最长前缀匹配”。而SDN和OpenFlow引入的泛化转发,则极大地扩展了转发的决策维度,使网络变得可编程。

一、从传统转发到泛化转发

1. 传统转发(基于目的地转发)

  • 匹配字段单一:主要依赖目的IP地址

  • 动作单一:只能将数据包从某个输出端口转发出去。

  • 决策逻辑固定:路由器根据路由协议计算出的转发表工作,管理员无法自定义转发逻辑。

2. 泛化转发

  • 核心思想:将转发抽象为一个 “匹配+动作” 的规则表。

  • 匹配字段泛化:可以基于IP数据报、TCP/UDP报文段,甚至链路层帧的多达几十个首部字段进行匹配。

  • 动作泛化:动作不再局限于“从某个端口转发”,而是一组丰富的操作集合

二、OpenFlow:泛化转发的具体实现

OpenFlow是SDN架构中最为流行的南向接口协议。它规定了SDN控制器如何与交换机通信,以及交换机内部的流表应如何构建。

1. OpenFlow交换机的关键组件

  • 流表:OpenFlow交换机的“大脑”,包含一系列的流表项。每个流表项就是一个“匹配+动作”规则。

  • 安全通道:连接交换机与远程SDN控制器的接口,所有交互信息都通过此通道传输。

  • OpenFlow协议:在安全通道上运行,用于控制器与交换机之间通信(如控制器下发流表项、交换机向控制器发送事件)。

2. 流表项的结构:匹配+动作

a) 匹配字段
OpenFlow 1.0版本定义了10多个可匹配的首部字段,后续版本不断增加。主要包括:

  • 链路层:入端口、源MAC地址、目的MAC地址、以太网类型。

  • 网络层:源IP地址、目的IP地址、IP协议类型、IP服务类型。

  • 传输层:源TCP/UDP端口、目的TCP/UDP端口。

关键特性:可以使用通配符,只匹配部分字段。

b) 动作集合
每个流表项都关联一个动作列表,指示交换机如何处理匹配的数据包。

  • 转发:将数据包发送到指定的物理端口、或通过安全通道发送给控制器(OUTPUT, ALL)。

  • 丢弃:没有显式允许的流量默认丢弃(DROP)。这是重要的安全特性。

  • 修改字段:在转发前,可以修改数据包的某些首部字段(SET_FIELD),如修改VLAN ID、IP地址(实现NAT)、TCP端口等。

三、运行中的OpenFlow示例

让我们通过几个具体的例子,来看OpenFlow如何实现复杂的网络功能。

场景设定

  • 一个OpenFlow交换机,端口1连接10.0.0.0/24网络,端口2连接互联网。

  • SDN控制器已下发如下流表项:

优先级匹配字段计数器动作
10IP源=10.0.0.0/24IP协议=TCPTCP目的端口=80包数: 152OUTPUT: 2
5IP源=10.0.0.0/24IP协议=TCP包数: 23OUTPUT: 2
1IP协议=TCPTCP目的端口=22包数: 0DROP
0-包数: 10234CONTROLLER

工作流程详解:

示例1:内部主机访问外部Web服务器

  1. 数据包到达{源IP: 10.0.0.2, 协议: TCP, 目的端口: 80, ...} 从端口1进入。

  2. 匹配过程

    • 与流表项1匹配成功(源IP在10.0.0.0/24,协议TCP,目的端口80)。

  3. 执行动作:交换机执行动作 OUTPUT: 2,将数据包从端口2转发出去。

  4. 更新计数器:流表项1的计数器“包数”增加。

示例2:内部主机SSH访问外部服务器

  1. 数据包到达{源IP: 10.0.0.2, 协议: TCP, 目的端口: 22, ...} 从端口1进入。

  2. 匹配过程

    • 不匹配流表项1(目的端口不是80)。

    • 不匹配流表项2(目的端口是22,不是任意端口)。

    • 匹配流表项3(协议TCP,目的端口22)。

  3. 执行动作:交换机执行动作 DROP丢弃该数据包。这实现了一条防火墙规则:“禁止所有SSH连接”。

示例3:第一个ARP请求

  1. 数据包到达:一个ARP广播帧从端口1进入。

  2. 匹配过程

    • 不匹配流表项1、2、3(因为它们都匹配IP和TCP字段)。

    • 匹配流表项0(匹配所有)。

  3. 执行动作:交换机执行动作 CONTROLLER,通过安全通道将这个数据包封装在Packet-in消息中发送给SDN控制器

  4. 控制器决策:控制器收到后,根据其全局视图,计算出一条新的转发规则,并通过Flow-mod消息下发给交换机,之后类似的ARP请求就可以直接转发了。

四、SDN控制器的核心职责
  1. 管理流表

    • 通过Flow-Mod消息添加、删除、修改流表项。

  2. 处理未知流

    • 通过Packet-In消息接收交换机上报的、没有匹配项的数据包,并做出决策。

  3. 维护网络视图

    • 通过Link-Layer Discovery Protocol等发现网络拓扑。

    • 为每个流计算端到端路径。

  4. 提供北向API

    • 向上层网络应用(如负载均衡、防火墙)提供编程接口。

总结:SDN与OpenFlow的价值
方面传统网络SDN/OpenFlow网络
控制逻辑分布式,在每个设备中集中式,在控制器中
转发方式基于目的IP地址泛化转发(匹配+动作)
网络视图局部、不完整全局、统一
管理与创新配置复杂,创新缓慢可编程,快速部署新功能
典型应用传统路由器/交换机数据中心、园区网

通过泛化转发OpenFlow,SDN将网络从一个个独立的、配置复杂的“黑盒”,转变为了一个统一的、可编程的智能平台。管理员可以像编写软件一样定义网络行为,从而实现前所未有的灵活性、可控性和创新速度。

http://www.dtcms.com/a/585496.html

相关文章:

  • 243-基于Django与VUE的笔记本电脑数据可视化分析系统
  • 婚礼策划网站设计wordpress 图像大小
  • 哈尔滨网站建设1元钱wordpress rpc利用 扫描
  • Redis 缓存怎么更新?—— 四种模型与一次“迟到的删除”
  • 网站制作二维码亮点云建站
  • VS及QT开发环境搭建(保姆级)
  • 【申论】概括归纳类题解题思路
  • 前端正则表达式实战合集:表单验证与字符串处理高频场景
  • 嵌入式Linux驱动开发全流程:工具协作+核心概念拆解(从入门到理解)
  • 建设通是正规网站吗洛阳市霞光游乐设备有限公司
  • 鸿蒙(HarmonyOS)开发常见错误分析与解决方案
  • 入门git:部署到公网
  • Vue 4.0实战指南:从数据驱动到状态管理的核心突破
  • 人工智能:什么是AIGC?什么是AI4S?人工智能四大核心领域全景解析
  • Git 开发全流程规范:分支创建+关联远程+rebase同步+分支清理实战
  • 【小程序】详细比较微信小程序的 onLoad 和 onShow
  • Linux文件系统简介
  • 人工智能:卫星网络的“智慧中枢“
  • 网站底部导航菜单自己搞网站建设
  • 百度测开面经(分类版)
  • 回归、分类、聚类
  • 【Linux网络】Socket编程TCP-实现Echo Server(上)
  • 关系型数据库-PostgreSQL
  • 英文网站定制哪家好wordpress上传主题提示要ftp
  • Vue 项目实战《尚医通》,已有医院数据的 TS 类型定义,笔记12
  • UE5 C++ 进阶学习 —— 02 - 小案例
  • Linux的waitpid函数:深入解析与应用实践
  • 历史数据分析——洛阳钼业
  • MySQL EXPLAIN 详解与优化指南
  • ADB 无线调试 APP 完全攻略(2025 最新版)—— 从连接到查看日志,一文搞定!