sdn report finished

This commit is contained in:
2025-11-21 11:53:09 +08:00
parent 404cac344f
commit db5e2e3195
6 changed files with 32351 additions and 9796 deletions

BIN
openbox/cjy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 KiB

BIN
openbox/cjytable.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 KiB

BIN
openbox/master.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 KiB

BIN
openbox/master_reply.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 KiB

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
#import "labtemplate.typ": * #import "labtemplate.typ": *
#show: nudtlabpaper.with(title: "基于OpenFlow的SDN交换机实验", #show: nudtlabpaper.with(title: "SDN可编程网络实验",
author1: "程景愉", author1: "程景愉",
id1: "202302723005", id1: "202302723005",
advisor: " 胡罡", advisor: " 胡罡",
@ -41,13 +41,15 @@
= 实验概述 = 实验概述
== 实验内容 == 实验内容
#para[ #para[]
本次综合实验中分有三个实验: 本次综合实验中分有三个实验:
]
+ 基于 SDN 交换机源码处理openflow协议消息 + 基于 SDN 交换机源码处理openflow协议消息
+ 虚拟网络拓扑实验 + 虚拟网络拓扑实验
+ DDoS 网络攻击的 SDN 实验 + DDoS 网络攻击的 SDN 实验
#para[
本实验报告重点分析第一个实验的实现细节,并在最后补充介绍本小组的选做实验。 本实验报告重点分析第一个实验的实现细节,并在最后补充介绍本小组的选做实验。
]
== 实验要求 == 实验要求
1. 熟悉Openbox-S4的基本功能 1. 熟悉Openbox-S4的基本功能
2. 熟悉OpenFlow协议的基本消息格式 2. 熟悉OpenFlow协议的基本消息格式
@ -381,7 +383,7 @@
return HANDLE; return HANDLE;
} }
``` ```
#pagebreak()
== 实验结果 == 实验结果
#para[ #para[
在控制器与交换机之间进行抓包分析报文的交互过程。控制器发送不同类型的OpenFlow消息给交换机交换机接收并处理消息并返回相应的回复消息。通过抓包分析可以看到消息的交互过程包括消息头、消息类型、消息长度等字段的解析和处理。用这种方式来验证协议编写的正确性。 在控制器与交换机之间进行抓包分析报文的交互过程。控制器发送不同类型的OpenFlow消息给交换机交换机接收并处理消息并返回相应的回复消息。通过抓包分析可以看到消息的交互过程包括消息头、消息类型、消息长度等字段的解析和处理。用这种方式来验证协议编写的正确性。
@ -393,11 +395,11 @@
#para[ #para[
OFPT_ROLE_REPLY类型消息。此消息用于配置交换机的角色如主控制器、从控制器等。下面的@slave_request 是控制器发送的Role Request消息。 OFPT_ROLE_REPLY类型消息。此消息用于配置交换机的角色如主控制器、从控制器等。下面的@slave_request 是控制器发送的Role Request消息。
] ]
#figure(image("slave.png",fit:"stretch",format:"png"),caption:"OFPT_ROLE_REQUEST消息",)<slave_request> #figure(image("master.png",fit:"stretch",format:"png"),caption:"OFPT_ROLE_REQUEST消息",)<slave_request>
#para[ #para[
如图@slave_reply 所示交换机接收并处理后返回的Role Reply消息。 如图@slave_reply 所示交换机接收并处理后返回的Role Reply消息。
] ]
#figure(image("slave_reply.png",fit:"stretch",format:"png"),caption:"OFPT_ROLE_REPLY消息",)<slave_reply> #figure(image("master_reply.png",fit:"stretch",format:"png"),caption:"OFPT_ROLE_REPLY消息",)<slave_reply>
#para[ #para[
这说明交换机已经接收到了控制器发送的Role Request消息并返回了Role Reply消息。 这说明交换机已经接收到了控制器发送的Role Request消息并返回了Role Reply消息。
] ]
@ -405,14 +407,14 @@
#para[ #para[
OFPMP_DESC类型消息。此消息用于查询交换机的描述信息包括制造商、硬件版本、软件版本、序列号和数据路径描述等。 OFPMP_DESC类型消息。此消息用于查询交换机的描述信息包括制造商、硬件版本、软件版本、序列号和数据路径描述等。
] ]
#figure(image("lixuanwang.png",fit:"stretch",format:"png"),caption:"OFPMP_DESC消息",) #figure(image("cjy.png",fit:"stretch",format:"png"),caption:"OFPMP_DESC消息",)
#para[ #para[
可以看到图中的消息包含了制造商、硬件版本、软件版本、序列号和数据路径描述等信息(此处使用了自己的信息进行标记与区分)。 可以看到图中的消息包含了制造商、硬件版本、软件版本、序列号和数据路径描述等信息(此处使用了自己的信息进行标记与区分)。
] ]
#para[ #para[
OFPMP_TABLE类型消息。此消息用于查询交换机的流表统计信息包括匹配计数、查找计数等。 OFPMP_TABLE类型消息。此消息用于查询交换机的流表统计信息包括匹配计数、查找计数等。
] ]
#figure(image("table.png",fit:"stretch",format:"png"),caption:"OFPMP_TABLE消息",) #figure(image("cjytable.png",fit:"stretch",format:"png"),caption:"OFPMP_TABLE消息",)
#para[ #para[
可以看到图中的消息包含了匹配计数、查找计数等信息(此处修改为了自己设置的值)。 可以看到图中的消息包含了匹配计数、查找计数等信息(此处修改为了自己设置的值)。
] ]
@ -421,31 +423,32 @@
= 实验总结 = 实验总结
#para[ #para[
本次实验通过编写SDN交换机源码处理OpenFlow协议消息深入理解了OpenFlow协议的基本消息格式和处理流程。实验涵盖了从交换机特性查询到流表统计、端口统计等多种消息类型的处理成功实现了大部分OpenFlow协议的核心功能。通过实验不仅掌握了OpenFlow协议的基本工作原理还熟悉了如何通过代码实现协议消息的解析与响应。 本次实验通过编写SDN交换机源码处理OpenFlow协议消息深入理解了OpenFlow协议的基本消息格式和处理流程。实验涵盖了从交换机特性查询到流表统计、端口统计等多种消息类型的处理成功实现了大部分OpenFlow协议的核心功能。通过实验我不仅掌握了OpenFlow协议的基本工作原理还熟悉了如何通过代码实现协议消息的解析与响应。
] ]
#para[ #para[
在实验过程中,我首先熟悉了Openbox-S4的基本功能并通过编写代码实现了对OpenFlow协议消息的处理。实验代码中实现了包括Hello消息、Features Request消息、Flow Stats Request消息等在内的多种消息处理函数。每个函数都根据消息类型生成相应的回复消息并通过`send_openflow_message`函数发送给控制器。通过抓包分析,我验证了消息的交互过程,确保协议编写的正确性。 在实验过程中我首先熟悉了Openbox-S4的基本功能并通过编写代码实现了对OpenFlow协议消息的处理。实验代码中我实现了包括Hello消息、Features Request消息、Flow Stats Request消息等在内的多种消息处理函数。每个函数都根据消息类型生成相应的回复消息并通过`send_openflow_message`函数发送给控制器。通过抓包分析,我验证了消息的交互过程,确保协议编写的正确性。
] ]
#para[ #para[
实验中的难点在于如何正确处理不同类型的OpenFlow消息并确保消息的格式和内容符合协议规范。通过查阅OpenFlow协议规范和参考相关文献逐步解决了这些问题,并成功实现了协议的核心功能。此外实验还要求我们熟悉REST API接口的使用这为后续的网络功能扩展奠定了基础。 实验中的难点在于如何正确处理不同类型的OpenFlow消息并确保消息的格式和内容符合协议规范。通过查阅OpenFlow协议规范和参考相关文献我逐步解决了这些问题并成功实现了协议的核心功能。
] ]
#para[ #para[
实验结果表明,我编写的代码能够正确处理控制器发送的OpenFlow消息并返回相应的回复消息。通过抓包分析验证了消息的交互过程,确保协议编写的正确性。实验的成功不仅加深了我对OpenFlow协议的理解也提升了我的编程能力和网络协议分析能力。 实验结果表明我编写的代码能够正确处理控制器发送的OpenFlow消息并返回相应的回复消息。通过抓包分析我验证了消息的交互过程确保协议编写的正确性。实验的成功不仅加深了我对OpenFlow协议的理解也提升了我的编程能力和网络协议分析能力。
] ]
#para[ #para[
总的来说本次实验达到了预期的目标成功实现了OpenFlow协议的核心功能。通过实验不仅掌握了OpenFlow协议的基本工作原理还熟悉了如何通过代码实现协议消息的解析与响应。未来可以在此基础上进一步扩展功能如实现流表规则的动态添加和删除以更好地支持SDN网络的灵活性和可扩展性。 总的来说本次实验达到了预期的目标成功实现了OpenFlow协议的核心功能。通过实验我不仅掌握了OpenFlow协议的基本工作原理还熟悉了如何通过代码实现协议消息的解析与响应。未来我可以在此基础上进一步扩展功能如实现流表规则的动态添加和删除以更好地支持SDN网络的灵活性和可扩展性。
] ]
#pagebreak() #pagebreak()
= 选做实验介绍 = 选做实验介绍
#para[
本小组了解了虚拟网络拓扑实验和DDoS网络攻击的SDN实验的基本内容但由于时间和精力有限最终选择只完成DDoS网络攻击的SDN实验。以下是对该实验的简要介绍。 本小组了解了虚拟网络拓扑实验和DDoS网络攻击的SDN实验的基本内容但由于时间和精力有限最终选择只完成DDoS网络攻击的SDN实验。以下是对该实验的简要介绍。
]
== 实验原理 == 实验原理
#para[本实验通过搭建一个基于 SDN 的网络环境,利用 OpenBox-S4 设备启动 OVS 交换机、sFlow-RT 流量监控和 Floodlight 控制器,模拟 DDoS 攻击并实现防御。实验的核心原理是通过 SDN 控制器Floodlight动态下发流表规则检测并阻断异常流量。] #para[本实验通过搭建一个基于 SDN 的网络环境,利用 OpenBox-S4 设备启动 OVS 交换机、sFlow-RT 流量监控和 Floodlight 控制器,模拟 DDoS 攻击并实现防御。实验的核心原理是通过 SDN 控制器Floodlight动态下发流表规则检测并阻断异常流量。]
@ -498,6 +501,8 @@ class StaticFlowPusher(object):
'Content-type': 'application/json', 'Content-type': 'application/json',
'Accept': 'application/json', 'Accept': 'application/json',
} }
```
```python
body = json.dumps(data) body = json.dumps(data)
conn = httplib.HTTPConnection(self.server, 8080) conn = httplib.HTTPConnection(self.server, 8080)
conn.request(action, path, body, headers) conn.request(action, path, body, headers)
@ -536,7 +541,7 @@ pusher.set(flowbe2)
== 选做实验总结 == 选做实验总结
#para[ #para[
本次实验通过搭建基于 OpenBox-S4 设备的 SDN 网络环境,模拟 DDoS 攻击和防御过程。通过实验,我了解了 sFlow-RT 的配置和使用方法,掌握了基于 Floodlight 控制器的 DDoS 防御原理和方法。实验中,我成功模拟了 DDoS 攻击,观察了网络流量的变化,学会了使用 Floodlight 控制器下发流表规则,阻断异常流量。通过实验,我深入理解了 SDN 网络中 DDoS 攻击的特点和防御策略,提高了网络安全意识和实践能力。 本次实验通过搭建基于 OpenBox-S4 设备的 SDN 网络环境,模拟 DDoS 攻击和防御过程。通过实验,我了解了 sFlow-RT 的配置和使用方法,掌握了基于 Floodlight 控制器的 DDoS 防御原理和方法。实验中,我成功模拟了 DDoS 攻击,观察了网络流量的变化,学会了使用 Floodlight 控制器下发流表规则,阻断异常流量。通过实验,我深入理解了 SDN 网络中 DDoS 攻击的特点和防御策略,提高了网络安全意识和实践能力。
] ]
#pagebreak() #pagebreak()
#show heading: it => box(width: 100%)[ #show heading: it => box(width: 100%)[
@ -554,4 +559,4 @@ https://opennetworking.org/wp-content/uploads/2014/10/openflow-spec-v1.3.0.pdf
https://www.cnblogs.com/goldsunshine/p/7262484.html https://www.cnblogs.com/goldsunshine/p/7262484.html
https://www.jianshu.com/p/acfeae1771b3 https://www.jianshu.com/p/acfeae1771b3
https://www.jianshu.com/p/82e238eb8d14 https://www.jianshu.com/p/82e238eb8d14
*/ */