霜星

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

基本要求(一)

1.搭建所示SDN拓扑,协议使用Open Flow 1.0,并连接Ryu控制器,通过Ryu的图形界面查看网络拓扑。

构建拓扑

连接ryu控制器

通过Ryu的图形界面查看网络拓扑,在浏览器中输入127.0.0.1:8080

2.阅读Ryu文档的The First Application一节,运行当中的L2Switch,h1 ping h2或h3,在目标主机使用 tcpdump 验证L2Switch,分析L2Switch和POX的Hub模块有何不同。

L2Switch

运行L2Switch.py

重新构建拓扑,并对h2、h3节点进行抓包

h1 ping h2

h1 ping h3

ryu下查看流表

pox下查看流表

对比可得,ryu下查不到流表,而在pox下可查看流表。

3.编程修改L2Switch.py,另存为L2xxxxxxxxx.py,使之和POX的Hub模块的变得一致?

L2212006156


运行L2212006156并查看流表

进阶要求(二)

1.阅读Ryu关于simple_switch.py和simple_switch_1x.py的实现,以simple_switch_13.py为例,完成其代码的注释工作,并回答下列问题:

simple_switch_13



a)代码当中的mac_to_port的作用是什么?

保存mac地址到交换机端口的映射

b)simple_switch和simple_switch_13在dpid的输出上有何不同?

simple_switch是直接输出dpid,而simple_switch_13是在dpid前端填充0直至满16位

c)相比simple_switch,simple_switch_13增加的switch_feature_handler实现了什么功能?

switch_feature_handler的作用是:将缺失流表项添加到流表中,当封包没有匹配到流表项时,就触发packet_in

d)simple_switch_13是如何实现流规则下发的?

在接收到packetin事件后,首先获取包学习,交换机信息,以太网信息,协议信息等。
如果以太网类型是LLDP类型,则不予处理。
如果不是,则获取源端口目的端口,以及交换机id,先学习源地址对应的交换机的入端口,再查看是否已经学习目的mac地址,如果没有则进行洪泛转发。
如果学习过该mac地址,则查看是否有buffer_id,如果有的话,则在添加流动作时加上buffer_id,向交换机发送流表。

e)switch_features_handler和_packet_in_handler两个事件在发送流规则的优先级上有何不同?

switch_features_handler下发流表的优先级比_packet_in_handler高。

2.编程实现和ODL实验的一样的硬超时功能

break



运行结果

查看流表

个人总结(三)

       鉴于拓扑建立和ryu开启顺序本次有一定的难度,途中还有各种运行问题阻挠,导致最后攻克进阶也很困难,希望下次能顺利点

posted on 2022-10-29 00:01  霜星  阅读(104)  评论(0编辑  收藏  举报