sdn report finished
This commit is contained in:
BIN
openbox/cjy.png
Normal file
BIN
openbox/cjy.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 534 KiB |
BIN
openbox/cjytable.png
Normal file
BIN
openbox/cjytable.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 466 KiB |
BIN
openbox/master.png
Normal file
BIN
openbox/master.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 428 KiB |
BIN
openbox/master_reply.png
Normal file
BIN
openbox/master_reply.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 428 KiB |
42110
openbox/openbox_1.pdf
42110
openbox/openbox_1.pdf
File diff suppressed because it is too large
Load Diff
@ -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
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user