目录
-
环路广播风暴问题
对于存在环路的网络拓扑结构,首先需要解决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

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

被折叠的 条评论
为什么被折叠?



