标签:控制器 报文 h1 开源 ofp msg Ryu dp
实验6:开源控制器实践——Ryu
实验步骤
一、安装 Ryu
二、 tcpdump 验证 Ryu 控制器的 L2Switch
- 根据官方文档第一节的 L2Switch 的 python 代码创建文件并运行 Ryu
from ryu.base import app_manager
from ryu.controller import ofp_event
from ryu.controller.handler import MAIN_DISPATCHER
from ryu.controller.handler import set_ev_cls
from ryu.ofproto import ofproto_v1_0
class L2Switch(app_manager.RyuApp):
OFP_VERSIONS = [ofproto_v1_0.OFP_VERSION]
def __init__(self, *args, **kwargs):
super(L2Switch, self).__init__(*args, **kwargs)
@set_ev_cls(ofp_event.EventOFPPacketIn, MAIN_DISPATCHER)
def packet_in_handler(self, ev):
msg = ev.msg
dp = msg.datapath
ofp = dp.ofproto
ofp_parser = dp.ofproto_parser
actions = [ofp_parser.OFPActionOutput(ofp.OFPP_FLOOD)]
data = None
if msg.buffer_id == ofp.OFP_NO_BUFFER:
data = msg.data
out = ofp_parser.OFPPacketOut(
datapath=dp, buffer_id=msg.buffer_id, in_port=msg.in_port,
actions=actions, data = data)
dp.send_msg(out)
-
h1 ping h2,h2 和 h3 都接收到 h1 发送的 ICMP 报文
-
h1 ping h3,h2 和 h3 都接收到 h1 发送的 ICMP 报文
个人总结
- 本次实验与实验 5 类似,不过使用的是不同的控制器。实验中遇到的一个困惑是 POX 控制器实践时,h1 ping h2 会先发送 ARP 报文。然而 Ryu 实践时居然没看见 ARP 报文,直接发送了 ICMP 报文,刚开始时还以为是 Ryu 和 POX的不同之处,后来搜索了资料,并没有相关内容,遂使用 arp -a 命令查看,发现 h1 上已经有了 h2 和 h3的 ip/mac 缓存,可能就是这个原因。清除缓存以后重试,发现 ARP 报文。思考了一下,问题在于我在完成 POX 实践以后并没有马上退出 mininet 命令行,导致拓扑被复用,原来设置的 ip/mac 缓存映射表也被保留了下来,这才有了上述不发送 ARP 报文而直接发送ICMP报文的情况。
标签:控制器,报文,h1,开源,ofp,msg,Ryu,dp 来源: https://www.cnblogs.com/ChenYH-bolg/p/15382953.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。