Openflow 消息处理流程笔记
OpenFlow消息
OpenFlow消息☞Openflow消息总共分为三⼤类:1、Controller‐to‐Switch控制器⾄交换机消息此类消息由控制器主动发出 Features ⽤来获取交换机特性 Configuration ⽤来配置Openflow交换机 Modify‐State ⽤来修改交换机状态(修改流表) Read‐Stats ⽤来读取交换机状态 Send‐Packet ⽤来发送数据包 Barrier 阻塞消息 2、Asynchronous 异步消息此类消息由交换机主动发出 Packet‐in ⽤来告知控制器交换机接收到数据包 Flow‐Removed ⽤来告知控制器交换机流表被删除 Port‐Status ⽤来告知控制器交换机端⼝状态更新 Error ⽤来告知控制器交换机发⽣错误 3、Symmetric 对称消息,可以由控制器或交换机主动发起 Hello ⽤来建⽴Openflow连接 Echo ⽤来确认交换机与控制器之间的连接状态 Vendor ⼚商⾃定义消息☞Openflow消息格式 Openflow协议数据包由Openflow Header和Openflow Message两部分组成 Openflow header的结构: Openflow Message结构与具体消息类型有关: Openflow消息类型:☞Openflow Channel openFlow Channel是指交换机跟Controller之间的连接通道,可以是外带管理通道(交换机⾯板上跟Console⼝在⼀起的那个单独的Ethernet端⼝,物理上跟业务端⼝分离),也可以是带内管理⼝(复⽤业务端⼝),现在常见的都是带外管理⼝,主要原因是简单,⽤带内⼝需要配置交换芯⽚和协议栈。
openFlow Channel连既可以是TCP连接,也可以是加密的TLS连接,由设备商或者⽤户⾃⾏决定⽤哪种。
使⽤TCP/TLS连接主要是为了保证可靠性。
基于openflow的sdn工作流程
基于openflow的sdn工作流程
基于的工作流程
(软件定义网络)是通过将控制平面和数据平面分离来实现网络的软件化的一种新的网络架构。
作为的重要组成部分,实现了控制平面和数据平面之间的交互。
基于的的工作流程如下:
1. 控制器与交换机建立连接。
控制器是的大脑,负责集中控制整个网络。
交换机替代了传统的交换机,提供了由控制器编程的流表。
2. 交换机将新到达的流量封装成-消息发送给控制器。
对于流表中没有匹配的流量,交换机会主动询问控制器应该如何处理。
3. 控制器收到-后,根据自身的控制逻辑计算出该流量的转发路径,然后下发-消息给交换机。
-消息将包含流表的匹配规则和动作。
4. 交换机根据-消息更新自己的流表,对后续匹配该规则的流量进行快速转发,无需再次与控制器交互。
5. 如果流表发生变更,交换机还会主动发送-消息给控制器。
6. 控制器可以通过发送-消息直接对交换机进行流量注入。
通过控制器和交换机之间的互动,实现了对网络的集中式控制和编程。
这种工作模式极大地提升了网络的灵活性和可编程性。
【个人总结系列-11】Openflow协议的理解-学习及总结
Openflow协议的理解-学习及总结Openflow协议概述OpenFlow协议是斯坦福大学的Nick McKeown提出的,随着OpenFlow协议的提出,SDN(Software Defined Network)也逐渐得到人们以及网络设备运营商的关注。
OpenFlow协议的主要思想就是将传统网络交换机数据包转发的过程分离开来,原来由交换机一步完成的转发动作现由2种设备协作完成,分别是支持openflow协议的交换机(假设为OVS)和控制器(以下称controller)。
OVS 里面维护了一个叫做流表(flow table)的东西,用来指定转发的策略,流表是在controller的控制下生成的,并且controller随时可以维护流表(删除、添加、修改流表项)。
所以网络管理人员可以很容易自己定义网络的行为,这也是SDN的原因。
在OpenFlow网络中数据包的转发流程是这样的:OVS接收到数据以后,通过和流表项进行匹配决定这个包的走向(转发、丢弃还是传给controller等),所以流表就相当于控制的策略,定义网络的行为只要在controller端对流表进行操作即可。
这就涉及到controller和OVS之间通信和交流的问题,而Controller和OVS之间通信的消息格式、内容及种类就是OpenFlow协议的主要内容。
OVS通过secure channel和controller进行通信,而且通信内容是通过TLS加密的,从secure channel发出和接收到的信息是和交换机接收到的数据包(到达的数据包)是不一样的,他们不经过流表的处理,OVS和controller的关系如下图所示[1]:图2-1-1 OVS和控制器的关系所以OpenFlow网络中最重要的就是流表(流表的结构和匹配的过程)和controller与OVS之间的通信。
下面主要介绍一下自己理解的这两块的内容。
流表每个交换机包括许多流表和一个组表,流表从0开始进行编号。
openflow控制器和openflow交换机之间建立信道连接的基本过程
openflow控制器和openflow交换机之间建立信道连接的基本
过程
1. OpenFlow控制器通过TCP/IP协议向OpenFlow交换机发送一个特殊的HELLO消息。
2. OpenFlow交换机接收到HELLO消息后,会发送一个特殊的HELLO消息作为响应。
3. 控制器收到交换机发送的HELLO消息后,会发送FEATURES_REQUEST消息给交换机,请求交换机的基本信息,如支持的OpenFlow版本号、流表容量等。
4. 交换机接收到FEATURES_REQUEST消息后,会发送FEATURES_REPLY消息给控制器,包含交换机的基本信息。
5. 控制器接收到交换机的FEATURES_REPLY消息后,会发送一个配置消息,如设置交换机的流表规则、端口配置等。
6. 交换机根据控制器发送的配置消息,进行相应的配置操作,并确认操作完成。
7. 控制器和交换机建立了信道连接后,可以进行OpenFlow协议定义的各种控制和管理操作,如下发流表规则、查询交换机状态等。
openflow协议的工作原理与流程
openflow协议的工作原理与流程OpenFlow协议是一种应用在软件定义网络技术上的标准化协议,它将传统的网络管理任务行分配给网络控制器,允许网络控制器以更灵活、更自动化的方式来操作网络设备和流量,开发出更加灵活的网络环境。
OpenFlow协议的工作原理与流程可以分为四个步骤:1、网络控制器发起一个消息,将它的流表更新消息发给OpenFlow 交换机;2、OpenFlow交换机将收到的消息存入其内部的流表中;3、OpenFlow交换机检测网络中的流量,并根据存储的流表信息对其进行分析;4、OpenFlow交换机根据流量分析结果,执行相应的动作,将流量转发给相应的设备或端口。
OpenFlow协议的工作原理相对比较简单,但要全面地理解它,仍需了解其实现过程中的详细信息。
首先,OpenFlow协议使用一个专有消息格式,即OpenFlow消息。
这个消息封装了从网络控制器发给OpenFlow交换机的所有信息。
这个消息包括网络控制器中定义的规则,以及所有其他消息,如更新和请求。
其次,OpenFlow协议中的流表也是非常重要的组成部分,它是由网络控制器设置的一组规则,它定义了OpenFlow交换机如何根据流量分析结果执行相应的动作。
在流表中,每个表项包括源IP地址、目的IP地址、协议类型,以及网络控制器中定义的要求行为,如转发流量到特定端口、限制流量速度等。
在这里,需要注意的是,每个OpenFlow交换机的流表可以由多个控制器定义,即同一个交换机可以有多个不同的控制器对其进行控制。
Finally, OpenFlow网络可以使用一种叫做“Groups”的机制,来实现多个端口间的流量聚合,以及“Action Set”功能,来实现多个不同动作的应用,从而更加智能和灵活地管理网络流量。
通过以上介绍,我们可以得出结论:OpenFlow协议的工作原理与流程是,网络控制器将流表更新信息发给OpenFlow交换机,OpenFlow交换机将收到的信息存入流表中,进而检测网络中的流量,并根据流表中的信息进行分析,最终根据流量分析结果执行相应的动作,将流量转发给相应的设备或端口。
OpenFlow系统操作手册
目录第一节登录系统 (3)第二节按键、图标说明 (6)第三节系统操作 (7)3.1、新增 (7)3.2、插入 (7)3.3、重制 (8)3.4、删除 (8)3.5、恢复删除 (8)3.6、保存 (8)3.7、剪切 (8)3.8、复制 (9)3.9、粘贴 (9)3.10、样式 (9)3.11、分组 (9)3.12、排序 (10)3.13、查询 (10)3.14、刷新记录 (12)3.15、查找 (12)3.16、替换 (13)3.17、窗口风格 (13)3.18、最小化所有窗口与撤销 (14)3.19、添加工具 (14)3.20、自定义校验 (15)第四节系统功能 (16)4.1、切换用户 (16)4.2、修改口令 (16)4.3、刷新 (17)4.4、目录 (17)4.5、文件柜 (18)4.6、工作流 (24)4.7、装饰图 (26)4.8、批注 (27)4.9、注册 (27)4.10、添加工具 (27)4.11、F4查询 (29)4.13、继承 (42)4.14、打印格式 (42)4.15、打印预览 (43)4.16、自定义显示格式 (45)4.17、注销在线用户 (47)4.18、抛单参数 (48)第五节表单的建立 (49)第一节登录系统1、双击桌面上的“傲鹏协同管理平台”图标或“开始 / 程序 / opensoft / 傲鹏协同管理平台”启动系统(见图1),在图1中输入以下信息后,点击“Y”进入系统(见图3)第一次使用系统时,点击“Y”会出现注册窗口(见图2),在图2中正确填写本公司提供的序列号,点击“注册”后才能使用系统栏位说明(图1)帐套:在第一节中建立的套帐,本案例为“开发套帐”语言:本系统支持多种语言,各公司可根据情况选择适合自己公司的语言。
其中“中文伪繁”是指在简体操作系统中显示繁体字库openflow系统;“中文伪简”是指在繁体操作系统中显示简体字库openflow系统;“公司字体”指按公司自定义的字体显示openflow系统。
openflow协议的工作原理与流程
openflow协议的工作原理与流程OpenFlow协议是由Stanford大学交换机项目研发的一种可以实现交换机和控制器之间的通信方式,具有很好的灵活性和可扩展性。
它是一种基于TCP/IP协议来处理设备间传输控制报文的北向协议,可用于控制交换机把数据包从一个端口转发到另一个端口的过程,它的出现彻底改变了传统网络中的网络拓扑控制,使得网络管理者可以通过简单的控制,实现网络的更加高效的运行。
OpenFlow协议的工作原理和流程可以分为三部分,即控制器、交换机和用户。
控制器是OpenFlow协议的核心,它负责接收用户请求,根据用户的要求构建流表,并将流表发送给交换机;交换机是OpenFlow协议的基础平台,它负责接收控制器发送的流表,并将流表应用于数据包的转发;最后,用户是OpenFlow协议的最终使用者,它负责发送控制命令给控制器,以便控制器能够构建流表,此外,用户也可以接收到交换机的转发结果。
OpenFlow协议的工作流程如下:1. 用户发出控制命令:用户发出对交换机的控制命令,以便在控制器上构建流表,以便控制数据包的转发。
2. 控制器构建流表:控制器根据用户的控制命令,构建流表,并将流表发送给交换机。
3. 交换机应用流表:交换机接收到控制器发送的流表,然后根据流表中的指令对数据包进行转发。
4. 用户接收结果:用户接收到交换机的转发结果,以便确定网络的转发情况。
OpenFlow协议的优点:1. 灵活性:OpenFlow协议可以让网络管理者更加灵活的控制网络的拓扑,而不受传统网络限制。
2. 可扩展性:OpenFlow协议可以实现网络的无缝扩展,可以更加高效的扩展网络。
3. 安全性:OpenFlow协议可以避免ddos攻击,保护网络的安全性。
OpenFlow协议的缺点:1. 复杂性:OpenFlow协议比较复杂,需要具备一定的技术能力才能正确的控制网络拓扑。
2. 成本:OpenFlow协议需要使用支持OpenFlow协议的硬件设备,因此成本比较高。
OpenFlow网络技术原理介绍
TABLE IN_PORT ANY LOCAL
NORMAL
FLOOD
代表传统的非OpenFlow交换机管道
代表传统的非OpenFlow交换机泛洪
14
15
OpenFlow Processing Pipeline
OpenFlow管道处理流程
Packet in
Ingress port
Action OpenFlow管道 Action set Set=0
Table 0
Packet+ Ingress port+ metadata
Table 1
Table Action n set
Discovery 仅仅是理论和功能建模 Data
2
5
Ethane架构
Ethane 中央控制器 Ethane交换机
中央控制器 ?
Ethane交换机
奠定OpenFlow 技术基础
2
6
SDN架构
SDN 应用层 控制层 基础设施层 应用层
API
应用程序
API API
控制层
SDN 控制软件
提取报文的 特征信息 (mac、ip等)
下发Flow-mode 消息到交换机, 添加流表项
yes 按照匹配的 流表项转发
下发packet out 报文,动作为 out到table
25
25
报文上送控制器的处理过程
25
26
单播报文流表转发
报文从 表0开始 yes
Openflow协议入门
保 IP VL 目的IP
源IP
留服A
务N
类优
型先
级
目 源 IP 以 目 源 VL 入
的端协太的M A 端
端口议网M A N 口
口
字类A C 标
段型C
签
除源IP和目的IP以外,掩码位为0表示对应匹配项需要精确匹配,掩码为为1表示忽略 匹配项。
源IP和目的IP字段的掩码表示32bitIP地址可以忽略匹配的长度。 如果源IP的掩码为8(wildcard的8‐13bit为001000),表示源IP字段的高24bit需要精确 匹配,源IP字段的低8bit可以忽略。
dst port)
数据包处理方法: • 转发 • 修改包头
Openflow1.0对数据包匹配特征的描述方法
ofp_match1 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ‐ 31
传统网络设备工作方式
Hub • 工作原理:基于物理端口转发 • 策略:Flood
L2Switch • 工作原理:基于MAC地址表转发 • 策略:STP+MAC地址学习
Router • 工作原理:基于路由表转发 • 策略:静态路由+动态路由协议
共同点:分布式策略(策略的制定者为设备本身)
转发表的结构:
交换机:交换机不 知道任何网络信息, 只会按照控制器的 指挥工作
软件定义网络的网络设备之间不运行任何协议,网络设备 的转发表由控制器配置生成。 控制器与网络设备之间需要一种协议来互相通信
基于Openflow协议的软件定 义网络
SDN网络分为两张网 1、数据网(数据平面):Traffic 2、信令网(控制平面):Openflow Protocol
openflow_nox详细参考资料总结
这是我在学习中做的一个笔记文档,仅供大家参考目录目录 (1)第一章背景 (2)第二章理论基础 (3)2.1软件定义网络SDN (3)2.2 openflow网络架构 (4)2.2.1 openflow交换机 (4)2.2.2 openflow 控制器 (8)2.2.3 openflow 虚拟化 (8)2.3 安全通道 (9)2.3.1 OF协议 (9)2.3.2 建立连接 (10)2.3.3 连接中断 (11)2.3.4 加密 (11)2.3.5 生成树 (11)第三章实验环境搭建 (11)3.1 安装open vswitch (12)3.1.1 安装KVM (12)3.1.2 安装Openvswitch (13)3.1.3 配置网桥 (14)3.2 安装NOX网络操作系统及GUI (15)3.2.1 安装NOX (15)3.2.2 安装NOX-GUI (16)3.3 环境测试 (16)3.1.1 总体拓扑图展示 (16)3.3.2 运行controller (16)3.3.3 配置open vswitch (17)3.3.4 测试open switch 与controller 是否连通 (18)3.3.5 启动GUI监测 (19)第四章Open Flow分析 (19)4.1 重要的数据结构 (19)4.1.1 of协议头 (19)4.1.2交换机端口状态 (21)4.1.3 流匹配结构 (21)4.1.4 行为结构 (22)4.1.5流表操作 (22)4.1.6 表统计信息 (23)4.1.7 端口统计 (23)4.1.8 数据包进入 (24)4.1.9 发送数据包 (24)4.1.10 流表删除 (25)4.2 openflow设备定义以及基本操作 (25)4.3 OpenFow数据通路分析 (28)第五章NOX分析 (30)5.1 事件 (30)5.1.1 事件概念 (30)5.1.2 核心事件列表 (30)5.2 组件 (31)5.2.1 组件的概念 (31)5.2.2 基于python的组件实现原理 (31)5.2.3 流表创建实现原理 (32)5.2.4 组件的基本架构 (32)第六章python组件实例 (33)6.1 实例一解析packet_in 数据包 (33)6.2实例二数据通路重定向 (33)第七章GUI 组件实例 (36)7.1 GUI 简介 (36)7.2 NOX-GUI实现原理 (36)7.2.1 SNMP协议简介 (36)7.2.2 open vswitch SNMP实现 (36)7.2.3 NOX SNMP 实现 (39)第一章背景斯坦福大学的研究者于2008 年提出OpenFlow 技术,并逐渐推广SDN 概念。
OpenFlow系统操作手册第四篇第二十三章客户管理
目录第一节系统概述 (2)1.1、系统功能 (2)第二节基本资料 (2)第三节日常处理 (4)第四节查询 (6)第一节系统概述1.1、系统功能客户管理系统主要功能是对前期还未正式确定的客户进行电话、E-mail跟踪,样品寄送,拜访时间按排等整个过程进行跟踪并详细记录,方便后续查询进展情况,具体功能包括:λ设置客户系统单据类型,主要是手工或自动产生的单据λ设置基本代码资料如线索级别等λ对还没产生客户资料的客户进行日程安排及活动联系人相关信息的记录,审核时自动产生客户资料及商机,在商机管理录入可查到相关信息λ对客户进行日程安排及活动联系人相关信息的记录,可对商机进行审核或反线索操作第二节基本资料2.1、客户单据类型设置登录系统后,在左边的树型图中,找到“客户管理/基本资料/客户单据类型设置”后双击它,进入“客户单据类型设置”窗口(见图1),对于同一组织内部,基本单据应保持唯一栏位说明(图3)业务类型:系统设置了二项业务类型编码方式:流水号,单据号按流水的形式编码;手工编码,单据号手动进行编码单据号头:单据号以什么开头年编格式:单据号中加入年编,可以明确地看出是什么时候的单据YYMM:两位年+两位月;例:0405YYMMDD:两位年+两位月+两位日;例:040513YYYYMM:四位年+两位月;例:200405YYYYMMDD:四位年+两位月+两位日;例:20040513空:年编格式为空流水号长度:设置几位的流水号批号长度:设置几位的批号注意:单据号头+年编格式+流水号长度+批号长度<=19图12.2、客户单据类型设置登录系统后,在左边的树型图中,找到“客户管理/基本资料/基本代码维护(客户)”后双击它,进入“基本代码维护(客户)”窗口(见图2)。
栏位说明(图2)编码类别:系统设定有十六项客户基本代码,可通过下拉框选择可用标志:此项记录可用与否修改时间:最后修改记录的时间组织:系统默认值为本套帐开帐(可参考“系统功能”章节的图6)时的“组织代码”栏位的值修改用户:最后修改记录的用户代码图2第三节日常处理3.1、线索管理录入登录系统后,在左边的树型图中,找到“客户管理/日常处理/线索管理录入”后双击它,进入“线索管理录入”窗口(见图3),此文件柜建立线索记录。
openflow协议的工作原理与流程
openflow协议的工作原理与流程OpenFlow协议是一种新型的网络交换协议,它可以让管理者灵活地定义网络中的流行行为,为网络开发者提供更大的灵活性。
Openflow协议于2008年被Stanford University首次发布,经过近十年的发展,它已经成为一种流行的网络交换协议,被广泛应用于云计算和虚拟化网络中。
OpenFlow协议的核心是一种分布式控制器,该控制器可以与网络中的多个设备进行交互,包括交换机、路由器、防火墙和NAT设备等。
OpenFlow协议允许管理员灵活地控制网络中的流量,而无需重新设计网络架构,从而实现网络的自动化管理和安全性。
OpenFlow协议的工作原理是每一个网络设备(如交换机)建立一个控制连接,通过控制连接与控制器进行通信。
OpenFlow协议下的每一个网络设备都会发出报文,该报文中包含发送者、接收者、以及传输内容,以发送到控制器上。
控制器在收到报文后,会根据规则匹配和决策,并将控制指令下发到接收设备上,以实现网络中的流量控制。
OpenFlow协议的工作流程可以分为四个主要的步骤:1.网络设备发出报文:网络设备发出的报文中包括流入报文源、流出报文目的地以及传输内容。
2.控制器接受报文:控制器收到报文后,会根据规则匹配和决策,然后将控制指令下发到接收设备上。
3.接收设备收到控制指令:接收设备收到来自控制器的控制指令后,会根据控制指令重新定向流量,以实现流量控制。
4.网络流量控制:网络流量经过重新定向之后,即可实现对数据流的控制,从而提高网络的效率和安全性。
OpenFlow协议的出现标志着一种新的网络交换模式,可以让管理者灵活地定义网络的流行行为,具备更高的灵活性和更强的安全性,是网络管理技术革新的一个重要里程碑。
OpenFlow协议已经被广泛应用于虚拟化网络,云计算,SDN技术,它不仅能更好地满足企业和用户的需求,还能帮助管理者更加迅速、灵活、安全地管理网络。
SDN软件定义网络之南向协议——OpenFlow协议
SDN软件定义网络之南向协议——OpenFlow协议一、前言SDN(Software-Defined Networking)软件定义网络是一种新兴的网络架构,它将网络控制平面与数据转发平面分离,通过集中式的控制器来实现网络的灵活性和可编程性。
南向协议是SDN架构中控制器与网络设备之间的通信协议,用于控制器向网络设备下发指令,实现网络的配置和管理。
OpenFlow协议是SDN中最常用的南向协议之一,本协议旨在详细描述OpenFlow协议的标准格式和功能。
二、协议版本本协议基于OpenFlow协议的最新版本进行描述,当前版本为OpenFlow 1.5。
三、协议结构OpenFlow协议由多个消息类型组成,每个消息类型都有特定的结构和功能。
以下是OpenFlow协议的主要消息类型:1. Hello消息:用于建立控制器与网络设备之间的连接,并交换协议版本信息。
2. Echo消息:用于测试控制器与网络设备之间的连接状态。
3. Features请求/回复消息:控制器向网络设备请求设备的基本信息,包括支持的OpenFlow协议版本、端口信息等。
4. Configuration请求/回复消息:用于设置或查询网络设备的配置信息,例如流表容量、超时时间等。
5. Packet-In消息:网络设备将无法处理的数据包发送给控制器,请求控制器进行处理。
6. Flow-Removed消息:网络设备上的流表项被删除时发送给控制器,以通知流表项的删除原因。
7. Port-Status消息:网络设备上的端口状态发生变化时发送给控制器,例如端口连接或断开。
8. Barrier请求/回复消息:用于控制器与网络设备之间的同步,确保前一条消息的处理已完成。
9. Flow-Mod消息:控制器向网络设备下发流表项,用于配置数据包的转发行为。
10. Group-Mod消息:控制器向网络设备下发组表项,用于实现组播、多路径等高级功能。
11. Table-Mod消息:控制器向网络设备下发表项,用于配置流表的匹配规则和优先级。
openflow协议的工作原理与流程
openflow协议的工作原理与流程OpenFlow协议是一种用于设置面向网络流行管理的协议,它能够方便有效地控制网络流,实现仿真、电信营业厅以及数据中心的网络功能。
它被认为是改变未来互联网的一项关键技术,在数据中心网络中也有重要的作用。
OpenFlow协议的工作原理可以归结为三个部分:控制器、交换机和应用程序,即控制器对交换机实施控制,控制器同时与各种应用程序交互。
首先,控制器需要与所有的OpenFlow交换机建立连接,此时所有的交换机都需要使用OpenFlow协议连接。
然后,当这些交换机检测到数据包时,就会将该数据包发送到控制器,控制器根据它的策略或应用程序的需求,对这些数据包做出决策,然后将决策命令发送给相应的交换机,交换机按照命令完成处理,最终将数据包转发至目的地。
OpenFlow协议处理流程主要有四步:拦截数据包、分析数据包、决策转发和实施决策。
(1)拦截数据包:当交换机检测到数据包时,就会将该数据包发送到控制器,控制器就会拦截该数据包,并开始对其进行分析处理。
(2)分析数据包:控制器通过分析数据包的源IP地址、目的IP地址、端口号等关键信息,来确定数据包传输的流程,并执行相应的决策。
(3)决策转发:控制器根据分析的结果,会将决策命令发送给相应的交换机,交换机按照命令转发数据包,最终将数据包转发至目的地。
(4)实施决策:交换机将接收到的命令进行解码,根据决策指示匹配规则,然后实施决策。
OpenFlow协议的优势在于可以更灵活有效地控制网络流量,从而实现路径规划、流量控制、服务质量控制等功能。
此外,OpenFlow 还可以为大规模分布式网络带来更强大的概念性支持和实现,有效提高网络管理效率,改善网络可靠性和安全性。
OpenFlow协议的缺点在于他的使用有一定的限制,控制器处理数据包的速度还不够快,而且控制器容易因出现网络拥堵而出现故障问题。
总之,OpenFlow协议是一项关键技术,它能够更灵活有效地控制网络流量,并且改善网络的可靠性和安全性。
openflow简介与opnet处理流程
• 普通数据包格式:
9
• controller – switch 交互数据包格式:
10
节点中的Process Model:
11
下一步计划:
• • • • • 熟悉OPNET的建模方法 基于现在学习的结果再熟悉光交换知识 完善模型中相关模块的处理过程 让模型能运行起来 添加其他功能
12
5
• 第一个流表的指令可能会对数据包执行操作,或者增 加一些将来执行的操作。这些指令会将数据包与其他 流表记录进行比较,控制数据包的后续处理。 • 数据包会逐个表地进行处理,直到所有指令都处理完, 并且数据包成功转发。
6
流匹配过程:
7
算法:
相关数据结构:
• • • • • • • OF协议头 包格式 端口 队列 匹配 行动 消息
问题:
将原本完全由交换机/路由器控制的数据包转发 过程,转化为由OpenFlow交换机(OpenFlow Switch)和控制服务器(Controller)分别完成 的独立过程
1
• 控制权更迭 • 传统网络中数据包的流向是人为指定的,虽然交换机、 路由器拥有控制权,却没有数据流的概念,只进行数 据包级别的交换;而在OpenFlow网络中,统一的控 制服务器取代路由,决定了所有数据包在网络中传输 路径。 • 软件定义网络,将网络作为一个整体而不是无数的独 立设备进行管理
2
思路:
3
• OpenFlow标准定义了控制器与交换机之间的交互协 议,以及一组交换机操作。控制器向交换机发送指令, 控制数据包的转发方式,以及配置参数。交换机会在 链路中断或出现未指定转发指令的数据包时,发送消 息通知控制器。 • 转发指令基于流,这个流由所有数据包共享的通用特 性组成。控制器会在交换机上设置一组参数,用于定 义各个流,着许多流表,而每一个表又包含 多个路由记录。每一个流表项包含一个匹配域,它定 义了流、计数器和指令集。
Openflow协议通信流程解读
Openflow协议通信流程解读前言接触了这么久的SDN,Openflow协议前前后后也读过好多遍,但是一直没有时间总结一下自己的一些见解。
现在有时间了,就写一写自己对Openflow协议通信流程的一些理解。
SDN中Switch和controller在SDN中很重要的两个实体是Switch跟Controller。
Controller在网络中相当于上帝,可以知道网络中所有的消息,可以给交换机下发指令。
Switch就是一个实现Controller指令的实体,只不过这个交换机跟传统的交换机不一样,他的转发规则由流表指定,而流表由控制器发送。
switch组成与传统交换机的差异switch组成switch由一个Secure Channel和一个flow table组成,of1.3之后table变成多级流表,有256级。
而of1.0中table只在table0中。
Secure Channel是与控制器通信的模块,switch和controller之间的连接时通过socket连接实现。
Flow table里面存放这数据的转发规则,是switch的交换转发模块。
数据进入switch之后,在table中寻找对应的flow进行匹配,并执行相应的action,若无匹配的flow则产生packet_in(后面有讲)of中sw与传统交换机的差异匹配层次高达4层,可以匹配到端口,而传统交换机只是2层的设备。
运行of协议,实现许多路由器的功能,比如组播。
求补充!!(如果你知道,请告诉我,非常感谢!)openflow的switch可以从以下方式获得实体of交换机,目前市场上有一些厂商已经制造出of交换机,但是普遍反映价格较贵!性能最好。
在实体机上安装OVS,OVS可以使计算机变成一个openflow交换机。
性能相对稳定。
使用mininet模拟环境。
可以搭建许多交换机,任意拓扑,搭建拓扑具体教程本博客有一篇。
性能依赖虚拟机的性能。
浅谈OpenFlow 技术
浅谈OpenFlow 技术OpenFlow 全称是OpenFlow Switch Specification,其字面意思就是OpenFlow 交換机规则。
在SDN 网络架构中,其基础设施层的交换机主要完成数据转发的功能,而OpenFlow 技术就是为实现这一功能的OpenFlow 交换机设置结构和功能规则,同时它也定义规范了控制平面控制器对交换机进行控制管理的OpenFlow 协议。
根据它的功能可以看出其技术核心包括了OpenFlow 交换机、OpenFlow 控制器以及OpenFlow 协议,另外通过控制器下发的流表信息也是核心技术之一。
一、OpenFlow交换机和控制器1.1 OpenFlow交换机OpenFlow 网络的核心就是OpenFlow 交换机,它是一个二层交换机,主要功能是完成数据转发处理:根据网络要求将数据层的数据信息转发到相应数据网络端口。
其实现数据转发主要依赖于OpenFlow 控制器所下发的流表,即就是OpenFlow 控制器控制交换机实现数据转发,这一方式的优势就在于OpenFlow 交换机不需要存储、记忆和学习过程,提高了数据转发的准确性和效率。
而控制器下发的流表信息是在响应网络状态、拓扑变化以及应用需求时,自行下发或通过手动下发生成,生成的流表信息需要经过SDN 控制数据平面接口发送给交换机为其提供转发机制。
OpenFlow 交换机处理数据包的过程如图1.1.1 所示,当数据包从端口传输被OpenFlow 交换机上接收后,交换机首先对接收到的数据包包头进行分析,根据分析结果按照流表的优先级高低顺序从已有流表中依次进行匹配,如果匹配到流表,则使用契合程度最高的一个流表,实施与之对应的操作,完成数据包的转发传输,然后将数据信息更新到计算机上。
如果没有匹配到与之对应的流表,就将数据包通过安全通道发送给控制器,由控制器管理数据包并做进一步处理。
OpenFlow 交换机是当前在应用范围和应用空间等方面最为普遍的Open vSwitch 软件交换机,通过开源的Open vSwitch 交换机和控制器构建实验场景和拓扑。
openflow代码备忘
Openflow 代码从总体上来看可以分为controller 、secchan 、udatapath 三个部分,三者的关系如下图一.Controller1 do_switching int 返回值:返回读取的报文总数读取报文,分析header ,处理报文(how ?用2.1.1啦),维护连接1.1 lswitch_process_packed (in learning_switch.c )读报文→依类型处理→报文类型为: OFPT_ECHO_REQUEST1.1.1 调用process_echo_request→调用 queue_tx() 进行排队→调用 make_echo_reply 创建 echo_reply 消息1.1.2 OFPT_FEATURES_REPLY→process_switch_features (in learning_switch.c)了解swich 状态,包括:listening ,learning ,forwarding ,blocking ,disable这几个状态1.1.3 OFPT_PACKET_IN→process_packet_in (in learning_switch.c)依报文程度判断报文发送至C 的原因:1.流表项指定发送(max-len )★2.带有miss-send-len 字节,表示查不到流表项1.1.4 OFPT_PORT_STATUS→process_port_status 检查port 状态,可进行修改1.1.5 OFPT_STATS_REPLY (流、网包等统计信息反馈)→process_stats_reply (读s 信息,比如最后reply 时间)secchanDpctl+协议修正switch 状态Process_flow_stats (根据读取的信息,判断流表是否删除)二.Udatapath1.Dp_run →in datapath.c→netdev_recv (in netdev.c)接收报文,放入buffer★→fwd_port_input →in datapath.c接收报文,遍历流表,寻找匹配的流表项,若无则转发controller→run_flow_through_tables 遍历流表(in datapath.c)→dp_output_control (in datapath.c)1)组件ofp_packet_in 报文2)依reason,switch 的缓存能力确定发给c的数据量→remote_run :1)保持连接;2)接受remote报文,处理之→fwd_control_input:1)读报文,分析报文头;2)判断是否是来自controller的报文,并处理2.OFPT_BARRIER_REQUEST (in datapath.c)→recv_features_request先→make_burrier_reply后→send_openflow_buffer 分析接收数据判断是send back to the sender还是broadcast to all remotes3.OFPT_FEATURES_REQUEST (in datapath.c)→recv_features_request→dp_send_features_reply先→make_openflow_reply后→把sw的状态放入报文datapath_id, n_table, n_buffers, capabilities, actions, send_openflow_buffer4.OFPT_GET_CONFIG_REQUEST→recv_get_config_request先→make_openflow_reply后→flags(什么flags),miss_send_len→即找不到流表项5.OFPT_SET_CONFIG→调用recv_set_config: flags, miss_send_len 的赋值6.OFPT_PACKET_OUT→recv_packet_out→execute_actions (in dp_act.c)→do_output (目标判定) (in dp_act.c)判定→if (out_port != OFPT_CONTROLLER)dp_output_portElse:dp_output_control★7. OFPT_FLOW_MOD 对流表增删改查→recv_flow (in datapath.c)OFPFL_ADD: addflowOFPFL_MODIFY & OFPFL_MODIFY_STRICT: mod_flowOFPFC_DELETE: chain_delete ○1OFPFL_DELETE_STRICT: chain_delete ○2两者区别在于:○1flow_extract_match 后chain_delete;○2flow_extract_match 后判断priority=key.wildcards再chain_delete8.杂OFPT_PORT_MODrecv_port_mod →updata_port_flagsOFPT_STATS_REQUEST 看起来是报错recv_stats_requestOFPT_ECHO_REQUESTrecv_echo_request→sen_openflow_bufferOFPT_QUEUE_GET_CONFIG_REQUESTRecv_queue_get_config_request 是干什么的?OFPT_VENDOR→recv_vendor→1)private_vendor_icl2)openflow_vendor_icl 两种类型的vendor→1)private_recv_msg2)of_ext_recv_msg 两种msg三.Secchan1. relay_run (in secchan)→rconn_send (in /lib/rconn.c)→try_send→vconn(in /lib/vconn.c)→vconn-connect→vcs_send_hello(发HELLO)←用vcs_recv_hello收。
SDN软件定义网络之南向协议——OpenFlow协议
SDN软件定义网络之南向协议——OpenFlow协议OpenFlow协议是一种用于SDN(软件定义网络)中的南向协议,它定义了控制器与交换机之间的通信协议。
本协议旨在实现网络控制平面与数据平面的分离,允许网络管理员通过集中式控制器来管理和控制网络交换机。
一、引言1.1 目的本协议的目的是定义OpenFlow协议的标准格式,以确保不同厂商的控制器和交换机能够互相兼容,实现网络的可编程性和灵活性。
1.2 背景传统的网络架构中,网络交换机负责数据转发和流量控制,而网络管理功能则由各个交换机独立实现。
这种分布式的管理方式导致网络管理复杂、难以扩展和定制化。
SDN的出现改变了这种情况,通过将网络控制平面与数据平面分离,实现了网络的集中管理和控制。
1.3 术语和缩写在本协议中,以下术语和缩写具有特定的含义:- SDN:软件定义网络(Software-Defined Networking)- 南向协议:控制器与交换机之间的通信协议- 控制平面:网络的逻辑控制中心,负责决策和管理网络- 数据平面:网络的数据传输部分,负责实际的数据包转发二、协议规范2.1 协议版本本协议的版本为OpenFlow X.X(根据实际情况填写具体版本号)。
2.2 协议消息格式OpenFlow协议的消息格式采用二进制格式,包括消息头和消息体两部分。
2.2.1 消息头格式消息头由以下字段组成:- 版本号:标识OpenFlow协议的版本号- 消息类型:标识消息的类型,如控制器发起的请求、交换机返回的回复等- 长度:消息体的长度,以字节为单位- 事务标识符:用于标识一组相关的消息,用于匹配请求和回复消息2.2.2 消息体格式消息体的具体格式根据消息类型的不同而有所不同,包括以下几种类型:- 控制器发起的请求消息:包括控制器向交换机发送的配置请求、查询请求等- 交换机返回的回复消息:包括交换机对控制器请求的回复,如配置回复、查询回复等- 异步通知消息:包括交换机主动向控制器发送的事件通知,如链路状态变化、端口状态变化等2.3 协议操作OpenFlow协议定义了一系列操作,用于控制器与交换机之间的交互。
openflow1.0消息格式总结
OpenFlow1.0消息格式总结—NEU_张旭OpenFlow1.0消息格式总结:Controller OpenvswitchOFPT_HELLO OFPT_HELLOOFPT_ERROROFPT_ERROROFPT_ECHO_REQUEST OFPT_ECHO_REPLYOFPT_VENDOR OFPT_VENDOROFPT_FEATURES_REQUEST OFPT_FEATURES_REPLYOFPT_GET_CONFIG_REQUEST OFPT_GET_CONFIG_REPLYOFPT_SET_CONFIGOFPT_PACKET_OUTOPPT_FLOW_MODOFPT_PORT_MODOFPT_PACKET_INOFPT_FLOW_REMOVEDOFPT_PORT_STATUSOFPT_STATS_REQUEST OFPT_STATS_REPLYOFPT_QUEUE_GET_CONFIG_REQUEST OFPT_QUEUE_GET_CONFIG_REPLY OFPT_BARRIER_REQUEST OFPT_BARRIER_REPLY1、OFPT_FEATURES_REQUEST(8B)消息格式uint8_t version:OFP_VERSIONuint8_t type: One of the OFPT_ constantsuint16_t length: Length including this ofp_headeruint32_txid: Transaction id associated with this packet. Replies use the same id as was in the requestto facilitate pairing2、OFPT_FEATURES_REPLY(32B)=ofp_switch_featuresuint64_t datapath_id:Datapath unique ID.The lower 48-bits are fora MAC address, while the upper 16-bits areimplementer-defineduint32_t n_buffers:Max packets buffered at onceuint8_t n_tables:Number of tables supported by datapathuint32_t capabilities:Bitmap of support ofp_capabilitiesuint32_t actions:Bitmap of supported ofp_action_typeuint16_t port_no:标明绑定到物理接口的datapath值uint8_t hw_addr[6]:该物理接口的mac地址char name[16]:该接口的名称字符串Null-terminateduint32_t config:Bitmap of OFPPC_* flagsuint32_t state:Bitmap of OFPPS_* flagsuint32_t curr:Current featuresuint32_t advertised:Features being advertised by the port uint32_t supported:Features supported by the portuint32_t peer:Features advertised by peer3、OFPT_GET_CONFIG_REQUEST(8B)4、OFPT_SET_CONFIG(12B)=ofp_switch_configOFPT_GET_CONFIG_REPLY(12B)uint16_t flags:OFPC_* flagsuint16_t miss_send_len:Max bytes of new flow that datapath shouldsend to the controller5、OFPT_PACKET_OUT(16B)uint32_t buffer_id:ID assigned by datapath (-1 if none) uint16_t in_port:Packet's input port (OFPP_NONE if none) uint16_t actions_len:Size of action array in bytesuint16_t type:One of OFPAT_*.uint16_tlen:Length of action,including thisheader.This is the length of action,including any padding to make it64-bit aligneduint8_t data[0]:Packet data.The length is inferredfrom thelength field in the header.(Only meaningful if buffer_id == -1.)在这里总结所有类型的action ,我认为对于OFPT_PACKET_OUT 应该用ofp_action_output来替换ofp_action_headerofp_action_output(8B)uint16_t type:OFPAT_OUTPUTuint16_tlen:Length is 8uint16_t port:Output portuint16_t max_len:Max length to send to controllerofp_action_vlan_vid(8B)uint16_t type:OFPAT_SET_VLAN_VIDuint16_tlen:Length is 8uint16_t vlan_vid:VLAN idofp_action_vlan_pcp(8B)uint16_t type:OFPAT_SET_VLAN_PCPuint16_tlen:Length is 8uint8_t vlan_pcp:VLAN priorityofp_action_dl_addr(16B)uint16_t type:OFPAT_SET_DL_SRC/DST uint16_tlen:Length is 16uint8_t dl_addr[6]:Ethernet address ofp_action_nw_addr(8B)uint16_t type:OFPAT_SET_TW_SRC/DST uint16_tlen:Length is 8uint32_t nw_addr:IP addressofp_action_tp_port(8B)uint16_t type:OFPAT_SET_TP_SRC/DST uint16_tlen:Length is 8uint16_t tp_port:TCP/UDP portofp_action_nw_tos(8B)uint16_t type:OFPAT_SET_TW_SRC/DST uint16_tlen:Length is 8uint8_t nw_tos:IP ToS (DSCP field, 6 bits)ofp_action_enqueue(16B)uint16_t type:OFPAT_ENQUEUEuint16_tlen:Length is 16uint16_t port:Port that queue belongs. Shouldrefer to a valid physical port(i.e. < OFPP_MAX) or OFPP_IN_PORT uint32_t queue_id:Where to enqueue the packetsofp_action_vendor_header(8B)uint16_t type:OFPAT_VENDORuint16_tlen:Length is a multiple of 8uint32_t vendor:Vendor ID, which takes the same formas in "structofp_vendor_header"6、OFPT_PORT_MOD(32B)uint16_t port_no:标明绑定到物理接口的datapath值uint8_t hw_addr[6]:The hardware address is notconfigurable.This is used tosanity-check the request, so it mustbe the same as returned in anofp_phy_portstruct uint32_tconfig:Bitmap of OFPPC_* flagsuint32_t mask:Bitmap of OFPPC_* flags to be changeduint32_t advertise:Bitmap of "ofp_port_features"s.Zero allbits to prevent any action taking place7、OFPT_FLOW_MOD(72B)uint32_t wildcards:Wildcard fieldsuint16_t in_port:Input switch portuint8_t dl_src[6]: Ethernet source addressuint8_t dl_dst[6]: Ethernet destination addressuint16_t dl_vlan: Input VLAN iduint8_t dl_vlan_pcp: Input VLAN priorityuint16_t dl_type: Ethernet frame typeuint8_t nw_tos:IP ToS (actually DSCP field, 6 bits)uint8_t nw_proto:IP protocol or lower 8 bits ofARP opcode uint32_t nw_src:IP source addressuint32_t nw_dst:IP destination addressuint16_t tp_src: TCP/UDP source portuint16_t tp_dst: TCP/UDP destination portuint64_t cookie: Opaque controller-issued identifier uint16_t command: One of OFPFC_*uint16_t idle_timeout: Idle time before discardingseconds uint16_t hard_timeout: Max time before discarding seconds uint16_t priority: Priority level of flow entryuint32_t buffer_id: Buffered packet to apply to (or -1) Not meaningful for OFPFC_DELETE*uint16_t out_port:For OFPFC_DELETE* commands,requirematching entries to include this as anoutput port.A value of OFPP_NONEindicates no restrictionuint16_t flags:One of OFPFF_*8、OFPT_FLOW_REMOVED(88B)uint64_t cookie:Opaque controller-issued identifieruint16_t priority:Priority level of flow entryuint8_t reason:One of OFPRR_*uint32_t duration_sec:Time flow was alive in seconds uint32_t duration_nsec:Time flow was alive in nanoseconds beyondduration_secuint16_t idle_timeout:Idle timeout from original flow mod uint64_t packet_count:计数与该流表项相关的包信息uint64_t byte_count:计数与该流表项相关的流量信息9、OFPT_PORT_STATUS(64B)uint8_t reason:One of OFPPR_*10、OFPT_PACKET_IN(20B)uint32_t buffer_id:ID assigned by datapathuint16_t total_len:Full length of frameuint16_t in_port:Port on which frame was receiveduint8_t reason:Reason packet is being sent (one of OFPR_*)uint8_t data[0]:Ethernet frame,halfway through 32-bit word,so the IP header is 32-bit aligned.Theamount of data is inferred from the lengthfield in the header.Because of padding,offsetof(structofp_packet_in,data)==sizeof(structofp_packet_in) - 2.11、OFPT_QUEUE_GET_CONFIG_REQUEST(12B)uint16_t port:Port to be queried. Should referto a valid physical port (i.e. < OFPP_MAX)12、OFPT_QUEUE_GET_CONFIG_REPLY(16B)uint32_t queue_id:id for the specific queueuint16_tlen:Length in bytes of this queue descuint16_t property:One of OFPQT_uint16_tlen:Length of property, including this header 13、OFPT_BARRIER_REQUEST(8B)OFPT_BARRIER_REPLY(8B)交换机一旦收到OFPT_BARRIER_REQUEST消息,则需要先执行完该消息前到达的所有指令,然后再执行其后的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
何腾飞2017.04.25更新Openflow 消息处理源码:sptn_code中ofp/dpa/tne模块。
简介:ofp模块接收sck的flow_mod消息,处理后发送给DPA, DPA处理后在发送给TNE。
以下消息处理过程均以flow_mod消息为例,*部分为group_mod消息的处理。
*、Sck处理流程sck_create_proc()sck_receive_proc()一、Ofp处理流程简介:接收SCK消息,发送给DPA。
File:ofpmain.c1.ofp_create_proc()File:ofprecv.c一系列初始化操作;设置接收函数ofp_receive_proc() ;...2.ofp_receive_proc()in: ips消息,queue_id队列id判断queue_id:Sck : 调用ofp_rcv_sck_ips();...3.ofp_rcv_sck_ips()In: ips消息判断ips_type消息类型:Sck_register;Sck_unregister;Sck_rsp;Sck_error;Sck_data;Openflow协议数据:ofp_message_reassemble() ;ofp_check_of_msg_list();Netconf协议数据:...Sck_close;4.ofp_message_reassemble()收到ofp消息后,首先需要存入ofp消息队列,此时先要判断是否需要新建一个ofp消息块节点or使用现有的LQE队列对应的ofp消息块节点,Ofp消息队列如下:1---2---3---4---5---...---N该消息队列为一个双向循环链表;N为全局变量v_ofp_shared->ofp_msgs始终不变;初始化时N.next和N.prev均指向N自身,N自身是没有数据域的(N.self==null);有数据节点时,N.next始终指向第1个结点,N.prev始终指向最后1个结点;故只有满足以下条件才不需要新建LQE节点:1.队列为空(N.next == N时);2.队列不为空但尾结点为NULL代码实现如下,解释:A --- B---N(N为当前的全局ofp消息的LQE )ofp_alloc_sck_mssage_cb()申请分配并初始化一个OFP_SCK_MSG_CB结构类型的ofp_message,然后插入ofp消息队列(LQE类型的ofp_msgs)的前面;NBB_INSERT_BEFORE()说明:N为目前的全局ofp消息LQE;E为新分配的ofp消息的LQE;ASSERT宏只有DEBUG模式下有效,用于验证入参E的指针为null,N的指针不为null;5.ofp_check_of_msg_list()File:ofpsck2.c依次处理ofp_msg,对符合条件的msg执行以下处理:ofp_save_of_data();ofp_rcv_of_data(ofp_message);ofp_free_ofp_message(ofp_message);6.ofp_rcv_of_data()File:ofpdpa1.c提取ofp_header(openflow头);关闭Timer()定时器,其他一些处理;判断header_type类型:Hello;Echo_request;...Flow_mod:Ofp_rcv_flow_mod();Group_mod:ofp_rcv_group_mod();...Mulyipart_request;...其他自定义类型;5.1 ofp_rcv_flow_mod()赋值flow_mod header;赋值flow_mod body(行动);赋值match ,判断处理;(只有type,length ?)判断指令类型:Goto_table;...Write_actions;Ofp_fill_action_list();...构造ips;将flow_mod ,match拷贝到ips;判断各类偏移:...ofp_snd_dpa_ips(); //发送ips消息给dpa5.2 ofp_fill_action_list()一系列初始化;判断action_type(组帧action_array): Output;TTL_out;...PUSH_VLAN;...sptn_exp_action_type;...用action_array 组帧instruction_entry;*. ofp_rcv_group_mod()赋值group_mod header;赋值group_mod body(行动);ofp_fill_bucket_action();构造ips;将group_mod 拷贝到ips;ofp_snd_dpa_ips();*. ofp_fill_bucket_action()File: ofpdpa2.c一系列初始化;判断action_type(组帧action_array):Output;TTL_out;...PUSH_VLAN;...sptn_exp_action_type;...用action_array 组帧bucket_entry;7.ofp_snd_dpa_ips()File:ofpdpa.c调用N-base接口函数NBB_SEND_IPS();NBB_SEND_IPS(haf_mj_cb->partner_data_pid, USER_TO_DPA_Q, ips);二、Dpa处理流程简介:接收OFP消息,发送给TNE。
前期处理流程均类似,参考上面的ofp处理流程。
dpa_create_proc();dpa_receive_proc();Case USER_TO_DPA_Q: dpa_rcv_dpa_ips();1.dpa_rcv_dpa_ips()File: dparecv.c判断ips消息类型:Dpa_register;...Flow_mod:dpa_rcv_flow_mod();Group_mod;dpa_rcv_group_mod();...2.dpa_rcv_flow_mod()File: dpa_flow_mod_recv.cdpa_save_match();判断flow_mand 指令类型:ADD(添加新的流表项):flow_entry_cb非空判断,dpa_send_tne_flow_mod();DELETE:flow_entry_cb中command修改为del,dpa_send_tne_flow_mod();MODIFY:flow_entry_cb非空判断,dpa_send_tne_flow_mod();3. dpa_send_tne_flow_mod()通过flow_entry_cb组帧flow_mod_array[];组帧flow_mod_ips;判断send_data_ind_type 类型;发送消息dpa_snd_dpa_ips();*. dpa_rcv_group_mod()File: dpa_flow_mod_recv.c判断group_mand 指令类型:ADD(添加新的流表项):group_entry_cb非空判断,dpa_send_tne_group_mod();DELETE:group_entry_cb中command修改为del,dpa_send_tne_group_mod();MODIFY:group_entry_cb非空判断,dpa_send_tne_group_mod();*. dpa_send_tne_group_mod()通过group_entry_cb组帧group_mod_array[];组帧group_mod_ips;判断send_data_ind_type 类型;发送消息dpa_snd_dpa_ips();4. dpa_snd_dpa_ips()File: dparecv.c调用N-base接口函数NBB_SEND_IPS();三、TNE处理流程简介:接收DPA消息,发送给?。
前期处理流程均类似,参考上面的ofp处理流程。
Tne_create_proc();tne_receive_proc();判断queue_id类型:...Case DPA_TO_USER_Q : tne_rcv_dpa_ips();...Case SCK_TO_APPL_Q : tne_rcv_sck_ips();...Case USER_TO_DCI_Q : tne_rcv_dci_ips();1.tne_rcv_dpa_ips()判断ips消息类型:Dpa_register;...Flow_mod:tne_rcv_dpa_flow_mod();Group_mod:tne_rcv_dpa_group_mod();...2.tne_rcv_dpa_flow_mod()file: tnedpa1.cParms : ips判断table_id类型:9 : tne_assemble_injected_flow_table()10 (V ALN_FLOW_TABLE):tne_assemble_vlan_flow_table();//流表编码13 : tne_assemble_mpls_l2_port_flow_table()...tne_save_config();//?tne_send_set_rq();//?3. tne_assemble_vlan_flow_table()流表编码函数。
...tne_code_key_vlan_table();//Match field编码判断flow_mand指令类型:ADD / MODIFY :tne_code_goto_table();// 流表动作goto编码。
tne_code_apply_action();// 流表动作apply编码。
...3.1 tne_code_apply_action()判断actiontype行动类型:Output;Group;Pop_VLAN;...*. tne_rcv_dpa_group_mod() file: tnedpa1.cParms : ipsFunc: 对group按类型编码。
判断group_id类型:9 :Interface: tne_assemble_mpls_interface_group()L2 VPN : tne_assemble_mpls_l2_vpn_label_group()Tunnel ;SWAP;10 :L2 Tag: tne_assemble_mpls_l2_tag_group()Fast : tne_assemble_mpls_fast_failover_group()11: tne_assemble_l2_unfiltered_group()0: tne_assemble_l2_interface_group()tne_save_config();//?tne_send_set_rq(..., TNE_SET_SDN_CFG,...);//?*. tne_assemble_mpls_interface_group()File: tnegroup.cFunc: group编码...判断group_mand指令类型,设置Pcur;判断group_mand指令类型:ADD / MODIFY :基本配置pcur;bucket配置;tne_code_bucket_action(); //group动作bucket编码。