ryu controller下发流表ovs跨子网转发实验(二)(基于Cloudlab)

本文介绍了一个使用Ryu控制器管理Open vSwitch (OVS) 的实验,实现跨子网的网络转发,特别是处理ICMP流量。当switch连接时,controller配置流表以处理ICMP包。实验包含switch_features_handler模块,用于在switch连接时配置流表,packet_in_handler处理未命中表的包,并调用handle_ip和handle_arp进行响应。handle_arp处理ARP请求,handle_ip专注于ICMP流量。实验强调了对于完整功能的OVS,回复ARP和ICMP请求的逻辑是必要的,控制器需要封装并发送这些回复数据包给switch。
摘要由CSDN通过智能技术生成

接上实验,拓扑为:

使用ryu框架实现一个可以控制switch完成转发icmp packet等操作的功能较为健全的controller

from ryu.base import app_manager
from ryu.controller import ofp_event
from ryu.controller.handler import CONFIG_DISPATCHER, MAIN_DISPATCHER
from ryu.controller.handler import set_ev_cls
from ryu.ofproto import ofproto_v1_3
from ryu.ofproto import ether
from ryu.ofproto import inet
from ryu.lib.packet import packet
from ryu.lib.packet import ethernet
from ryu.lib.packet import arp
from ryu.lib.packet import ipv4
from ryu.lib.packet import icmp

class ExampleSwitch13(app_manager.RyuApp):
    OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]
 
    def __init__(self, *args, **kwargs):
        super(ExampleSwitch13, self).__init__(*args, **kwargs)
        self.ip = {"h1":"10.10.1.1", "vp2":"10.10.1.2", "vp1":"10.10.2.1", "h2":"10.10.2.2"}
        self.mac = {"h1":"02:d7:85:c3:d6:81", "vp2":"46:3e:2f:98:fd:a7", "vp1":"5a:c7:06:f9:5a:e2", "h2":"02:80:83:31:22:2c"}
        # h1 -- vp2 -- vp1 --h2
        self.arp_table = {}
        #arp h2找h1, 给它vp1的mac
        self.arp_table[self.ip["h1"]] = self.mac["vp1"]
        #arp h1找h2, 给它vp2的mac
        self.arp_table[self.ip["h2"]] = self.mac["vp2"]
        #arp h1找vp2, 给它vp2的mac
        self.arp_table[self.ip["vp2"]] = self.mac["vp2"]
        #arp h2找vp1, 给它vp1的mac
        self.arp_table[self.ip["vp1"]] = self.mac["vp1"]
		
		
    @set_ev_cls(ofp_event.EventOFPSwitchFeatures, CONFIG_DISPATCHER)
    def switch_features_handler(self, ev):
        mac, ip &
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值