• Floodlight下发流表过程分析


    https://blog.csdn.net/vonzhoufz/article/details/32166445

    当一个packet到达openflow交换机,会进行流表的匹配,如果没有找到相应的流表项,就会发送一个packet_in消息
    到达SDN controller端,控制器根据一定的路由算法决策后,会向该路径上的所有交换机下发流表(也就是发送FLOW_MOD消息,里面有对应的action)。这里要知道的是在SDN的环境下,控制器具有全局拓扑信息,每当有链路状态改变时就会跟新拓扑,而路由的计算是需要下发转发规则的时候进行。下面对这个流程进行详细分析。
     
    链路发现模块会关注两种消息 PACKET_IN 和 PORT_STATUS ,从而分析链路的变更。这里看对于PACKET_IN  ,LinkDiscoveryManager的处理过程:
     
    LinkDiscoveryManager完成的工作是增加或更新链路状态,加入到一个LDUpdates队列中,接下来看拓扑管理模块TopologyManager,它在启动的时候会新起一个线程 NewInstanceWorker :首先根据消息类型来增删该链路的状态,然后创建一个计算拓扑的实例TopologyInstance来计算出拓扑并存储,具体过程如下:
     
     
    当完成拓扑计算后,当来了一个packet_in,就会根据源目SW得到路径。
     
    接下来防火墙,负载均衡模块会发挥作用(这里先略过)。
     
    最后路由模块会完成最终的下发流表操作,这里看Forwarding模块中的processPacketInMessage()。
    会从packet中得到相应的源目设备实例IDevice,而后判断是否在同一个openflow island上,如果不在的话就
    doFlood(sw, pi, cntx),这里主要看二者在同一个island的情况。然后得到每个设备的AttachmentPoints,
    然后找到二者能够连通的粘合点,接下来得到路劲,最后构造flow_mod消息,写入通道,下发给SW。
     
     
  • 相关阅读:
    安卓读取SD卡的容量
    Eclipse常用快捷键
    安卓实现记住密码登陆功能
    eclipse DDMS导出文件失败--android Failed to push the item
    LinearLayout线性布局搭配权重属性的使用
    unity 天空盒有缝隙的解决方案
    unity gitignore
    unity 5.6.1 Oculus手柄输入问题
    两个长整形相除等于零
    Unity 获得视频的某一帧,生成缩略图
  • 原文地址:https://www.cnblogs.com/gejuncheng/p/9086094.html
Copyright © 2020-2023  润新知