Ryu中基于时延的最短路径转发算法(SPF)

本文介绍如何使用Ryu SDN控制器进行网络时延测量,包括主机发现、链路时延测量方法、Switches.py的修改等内容,并展示了如何计算LLDP报文时延。

目录

1.主机发现

2.链路时延测量[2]

3. ryu/topology/Switches.py修改

3.1 PortData类

3.2 lldp_packet_in_handler()

3.3 重新编译安装Ryu

4.获取lldp_delay

5.图存储与最短路径计算

参考文献


  • 环路广播风暴问题

对于存在环路的网络拓扑结构,首先需要解决ARP包的洪泛问题,一种解决思路是:Ryu可以将交换机的端口信息记录下来,发现全局的拓扑信息。当控制器收到一个未学习的ARP Request时,直接发给所有交换机连接主机的那些端口,从而减少了在交换机与交换机间的洪泛[1]。

1.主机发现

Ryu通过LLDP报文发现拓扑中的交换机,主机发现则需要主机主动发包

from ryu.base import app_manager
from ryu.ofproto import ofproto_v1_3
from ryu.controller.handler import set_ev_cls
from ryu.controller.handler import MAIN_DISPATCHER, CONFIG_DISPATCHER
from ryu.controller import ofp_event
from ryu.lib.packet import packet
from ryu.lib.packet import ethernet
from ryu.lib import hub
from ryu.topology.api import get_all_host, get_all_link, get_all_switch


class NetworkAwareness(app_manager.RyuApp):
    OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]

    def __init__(self, *args, **kwargs):
        super(NetworkAwareness, self).__init__(*args, **kwargs)
        self.dpid_mac_port = {}
        self.topo_thread = hub.spawn(self._get_topology)

    def add_flow(self, datapath, priority, match, actions):
        dp = datapath
        ofp = dp.ofproto
        parser = dp.ofproto_parser

        inst = [parser.OFPInstructionActions(ofp.OFPIT_APPLY_ACTIONS, actions)]
        mod = parser.OFPFlowMod(datapath=dp, priority=priority, match=match, instructions=inst)
        dp.send_msg(mod)

    @set_ev_cls(ofp_event.EventOFPSwitchFeatures, CONFIG_DISPATCHER)
    def switch_features_handler(self, ev):
        msg = ev.msg
        dp = msg.datapath
        ofp = dp.ofproto
        parse
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值