SDN 实践之floodlight控制器统计流量种类

来源:互联网 发布:阿拉比卡咖啡豆 知乎 编辑:程序博客网 时间:2024/05/21 06:55

                                                                                                                  SDN 实践之floodlight控制器统计流量种类

                                                                                                                                                                                                                                 @温州大学12网工蒋暕青、郑明社

 

 

floodlight控制器统计流量的基础上接着把packedin流量的种类也区分一下。counter这个类琢磨了一个月终于有些会用了。

下面贴代码:

分两个.java

1.

package edu.wzu.steve.trafficanalyser;

 

import java.util.ArrayList;

import java.util.Collection;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import java.util.Map.Entry;

import org.restlet.resource.ResourceException;

import org.restlet.resource.ServerResource;

import net.floodlightcontroller.counter.CounterValue;

import net.floodlightcontroller.counter.ICounter;

import net.floodlightcontroller.packet.Ethernet;

import net.floodlightcontroller.packet.IPv4;

import org.restlet.resource.Get;

import net.floodlightcontroller.core.FloodlightContext;

import net.floodlightcontroller.core.IFloodlightProviderService;

import net.floodlightcontroller.core.IOFMessageListener;

import net.floodlightcontroller.core.IOFSwitch;

import net.floodlightcontroller.core.module.FloodlightModuleContext;

import net.floodlightcontroller.core.module.FloodlightModuleException;

import net.floodlightcontroller.core.module.IFloodlightModule;

import net.floodlightcontroller.core.module.IFloodlightService;

import net.floodlightcontroller.counter.ICounterStoreService;

 

import org.openflow.protocol.OFMessage;

import org.openflow.protocol.OFType;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

 

 

 

 

public class TrafficAnalyser extends ServerResource implements IOFMessageListener, IFloodlightModule{

 

public final static String BROADCAST = "broadcast";

    public final static String MULTICAST = "multicast";

    public final static String UNICAST = "unicast";

 

 

protected ICounterStoreService counterStore;

protected IFloodlightProviderService floodlightProvider;

protected static Logger logger;

 

 @Override

    public String getName() {

        // TODO Auto-generated method stub

 return TrafficAnalyser.class.getSimpleName();

    }

 

    @Override

    public boolean isCallbackOrderingPrereq(OFType type, String name) {

        // TODO Auto-generated method stub

        return false;

    }

 

    @Override

    public boolean isCallbackOrderingPostreq(OFType type, String name) {

        // TODO Auto-generated method stub

        return false;

    }

 

    @Override

    public Collection<Class<? extends IFloodlightService>> getModuleServices() {

        // TODO Auto-generated method stub

        return null;

    }

 

    @Override

    public Map<Class<? extends IFloodlightService>, IFloodlightService> getServiceImpls() {

        // TODO Auto-generated method stub

        return null;

    }

 

    @Override

    public Collection<Class<? extends IFloodlightService>> getModuleDependencies() {

        // TODO Auto-generated method stub

     Collection<Class<? extends IFloodlightService>> l =

            new ArrayList<Class<? extends IFloodlightService>>();

        l.add(IFloodlightProviderService.class);

        return l;

    }

 

    @Override

    public void init(FloodlightModuleContext context)

            throws FloodlightModuleException {

    this.floodlightProvider = context.getServiceImpl(IFloodlightProviderService.class);

    this.counterStore = context.getServiceImpl(ICounterStoreService.class);

    

     

        logger = LoggerFactory.getLogger(TrafficAnalyser.class);

 

    }

 

    @Override

    public void startUp(FloodlightModuleContext context) {

    floodlightProvider.addOFMessageListener(OFType.PACKET_IN, this);

 

    }

    

    @Get("json")

    public Map<String, Object> retrieve(){

    

        Map<String, Object> model = new HashMap<String,Object>();

        CounterValue v;

     

            Map<String, ICounter> counters = this.counterStore.getAll();

            if (counters != null) {

                Iterator<Map.Entry<String, ICounter>> it = 

                    counters.entrySet().iterator();

                while (it.hasNext()) {

                    Entry<String, ICounter> entry = it.next();

                    String counterName = entry.getKey();

                    v = entry.getValue().getCounterValue();

 

                    if (CounterValue.CounterType.LONG == v.getType()) {

                        model.put(counterName, v.getLong());

                    } else if (v.getType() == CounterValue.CounterType.DOUBLE) {

                        model.put(counterName, v.getDouble());

                    }   

                }   

            }   

        

        return model;

    }

   protected List<String> PacketInType(IOFSwitch sw, OFMessage m, Ethernet eth) {

        

       

    

        int l3type = eth.getEtherType() & 0xffff;

        String switchIdHex = sw.getStringId();

        String etherType = String.format("%04x", eth.getEtherType());

        String packetName = m.getType().toClass().getName();

        packetName = packetName.substring(packetName.lastIndexOf('.')+1);

        

        

      

 

        // L2 Type

        String l2Type = null;

        if (eth.isBroadcast()) {

            l2Type = BROADCAST;

        }

        else if (eth.isMulticast()) {

            l2Type = MULTICAST;

        }

        else {

            l2Type = UNICAST;

        }

 

        

       //  Use alias for L3 type

       //  Valid EtherType must be greater than or equal to 0x0600

       //  It is V1 Ethernet Frame if EtherType < 0x0600

         

        if (l3type < 0x0600) {

            etherType = "0599";

        }

        if (TypeAnalyser.l3TypeAliasMap != null &&

        TypeAnalyser.l3TypeAliasMap.containsKey(etherType)) {

            etherType = TypeAnalyser.l3TypeAliasMap.get(etherType);

        }

        else {

            etherType = "L3_" + etherType;

        }

 

 

        // L4 counters

        if (eth.getPayload() instanceof IPv4) {

 

            // resolve protocol alias

            IPv4 ipV4 = (IPv4)eth.getPayload();

            String l4name = String.format("%02x", ipV4.getProtocol());

            if (TypeAnalyser.l4TypeAliasMap != null &&

            TypeAnalyser.l4TypeAliasMap.containsKey(l4name)) {

                l4name = TypeAnalyser.l4TypeAliasMap.get(l4name);

            }

            else {

                l4name = "L4_" + l4name;

            }

            

              List<String>list = new ArrayList<String>();

              list.add(l2Type);

              list.add(etherType);

              list.add(l4name);

              

        //使用Iterator迭代器遍历出集合的元素并打印

        for(Iterator<String> i = list.iterator();i.hasNext(); ){

        String str = (String) i.next();

        System.out.println(str);

        }

        }

return null;

        

       

    }

 

 

    

    

    

    

    

    protected void doInit() throws ResourceException {

        super.doInit();

        counterStore = 

            (ICounterStoreService)getContext().getAttributes().

                get(ICounterStoreService.class.getCanonicalName());

    }

   

    @Override

    public net.floodlightcontroller.core.IListener.Command receive(IOFSwitch sw, OFMessage msg, FloodlightContext cntx) {

         

 

   

    System.out.println(retrieve().toString());

    

 

 return Command.CONTINUE;

         

     }

 

}

 

 

2.另一个

package edu.wzu.steve.trafficanalyser;

import java.util.HashMap;

import java.util.Map;

 

public class TypeAnalyser {

 

/**

 * Class to contain some statically initialized data

 * @author readams

 *

 */

    public static final Map<String,String> l3TypeAliasMap = 

            new HashMap<String, String>();

    static {

        l3TypeAliasMap.put("0599", "L3_V1Ether");

        l3TypeAliasMap.put("0800", "L3_IPv4");

        l3TypeAliasMap.put("0806", "L3_ARP");

        l3TypeAliasMap.put("8035", "L3_RARP");

        l3TypeAliasMap.put("809b", "L3_AppleTalk");

        l3TypeAliasMap.put("80f3", "L3_AARP");

        l3TypeAliasMap.put("8100", "L3_802_1Q");

        l3TypeAliasMap.put("8137", "L3_Novell_IPX");

        l3TypeAliasMap.put("8138", "L3_Novell");

        l3TypeAliasMap.put("86dd", "L3_IPv6");

        l3TypeAliasMap.put("8847", "L3_MPLS_uni");

        l3TypeAliasMap.put("8848", "L3_MPLS_multi");

        l3TypeAliasMap.put("8863", "L3_PPPoE_DS");

        l3TypeAliasMap.put("8864", "L3_PPPoE_SS");

        l3TypeAliasMap.put("886f", "L3_MSFT_NLB");

        l3TypeAliasMap.put("8870", "L3_Jumbo");

        l3TypeAliasMap.put("889a", "L3_HyperSCSI");

        l3TypeAliasMap.put("88a2", "L3_ATA_Ethernet");

        l3TypeAliasMap.put("88a4", "L3_EtherCAT");

        l3TypeAliasMap.put("88a8", "L3_802_1ad");

        l3TypeAliasMap.put("88ab", "L3_Ether_Powerlink");

        l3TypeAliasMap.put("88cc", "L3_LLDP");

        l3TypeAliasMap.put("88cd", "L3_SERCOS_III");

        l3TypeAliasMap.put("88e5", "L3_802_1ae");

        l3TypeAliasMap.put("88f7", "L3_IEEE_1588");

        l3TypeAliasMap.put("8902", "L3_802_1ag_CFM");

        l3TypeAliasMap.put("8906", "L3_FCoE");

        l3TypeAliasMap.put("9000", "L3_Loop");

        l3TypeAliasMap.put("9100", "L3_Q_in_Q");

        l3TypeAliasMap.put("cafe", "L3_LLT");

    }

    

    protected static final Map<String,String> l4TypeAliasMap = 

            new HashMap<String, String>();

    static {

        l4TypeAliasMap.put("00", "L4_HOPOPT");

        l4TypeAliasMap.put("01", "L4_ICMP");

        l4TypeAliasMap.put("02", "L4_IGAP_IGMP_RGMP");

        l4TypeAliasMap.put("03", "L4_GGP");

        l4TypeAliasMap.put("04", "L4_IP");

        l4TypeAliasMap.put("05", "L4_ST");

        l4TypeAliasMap.put("06", "L4_TCP");

        l4TypeAliasMap.put("07", "L4_UCL");

        l4TypeAliasMap.put("08", "L4_EGP");

        l4TypeAliasMap.put("09", "L4_IGRP");

        l4TypeAliasMap.put("0a", "L4_BBN");

        l4TypeAliasMap.put("0b", "L4_NVP");

        l4TypeAliasMap.put("0c", "L4_PUP");

        l4TypeAliasMap.put("0d", "L4_ARGUS");

        l4TypeAliasMap.put("0e", "L4_EMCON");

        l4TypeAliasMap.put("0f", "L4_XNET");

        l4TypeAliasMap.put("10", "L4_Chaos");

        l4TypeAliasMap.put("11", "L4_UDP");

        l4TypeAliasMap.put("12", "L4_TMux");

        l4TypeAliasMap.put("13", "L4_DCN");

        l4TypeAliasMap.put("14", "L4_HMP");

        l4TypeAliasMap.put("15", "L4_Packet_Radio");

        l4TypeAliasMap.put("16", "L4_XEROX_NS_IDP");

        l4TypeAliasMap.put("17", "L4_Trunk_1");

        l4TypeAliasMap.put("18", "L4_Trunk_2");

        l4TypeAliasMap.put("19", "L4_Leaf_1");

        l4TypeAliasMap.put("1a", "L4_Leaf_2");

        l4TypeAliasMap.put("1b", "L4_RDP");

        l4TypeAliasMap.put("1c", "L4_IRTP");

        l4TypeAliasMap.put("1d", "L4_ISO_TP4");

        l4TypeAliasMap.put("1e", "L4_NETBLT");

        l4TypeAliasMap.put("1f", "L4_MFE");

        l4TypeAliasMap.put("20", "L4_MERIT");

        l4TypeAliasMap.put("21", "L4_DCCP");

        l4TypeAliasMap.put("22", "L4_Third_Party_Connect");

        l4TypeAliasMap.put("23", "L4_IDPR");

        l4TypeAliasMap.put("24", "L4_XTP");

        l4TypeAliasMap.put("25", "L4_Datagram_Delivery");

        l4TypeAliasMap.put("26", "L4_IDPR");

        l4TypeAliasMap.put("27", "L4_TP");

        l4TypeAliasMap.put("28", "L4_ILTP");

        l4TypeAliasMap.put("29", "L4_IPv6_over_IPv4");

        l4TypeAliasMap.put("2a", "L4_SDRP");

        l4TypeAliasMap.put("2b", "L4_IPv6_RH");

        l4TypeAliasMap.put("2c", "L4_IPv6_FH");

        l4TypeAliasMap.put("2d", "L4_IDRP");

        l4TypeAliasMap.put("2e", "L4_RSVP");

        l4TypeAliasMap.put("2f", "L4_GRE");

        l4TypeAliasMap.put("30", "L4_DSR");

        l4TypeAliasMap.put("31", "L4_BNA");

        l4TypeAliasMap.put("32", "L4_ESP");

        l4TypeAliasMap.put("33", "L4_AH");

        l4TypeAliasMap.put("34", "L4_I_NLSP");

        l4TypeAliasMap.put("35", "L4_SWIPE");

        l4TypeAliasMap.put("36", "L4_NARP");

        l4TypeAliasMap.put("37", "L4_Minimal_Encapsulation");

        l4TypeAliasMap.put("38", "L4_TLSP");

        l4TypeAliasMap.put("39", "L4_SKIP");

        l4TypeAliasMap.put("3a", "L4_ICMPv6");

        l4TypeAliasMap.put("3b", "L4_IPv6_No_Next_Header");

        l4TypeAliasMap.put("3c", "L4_IPv6_Destination_Options");

        l4TypeAliasMap.put("3d", "L4_Any_host_IP");

        l4TypeAliasMap.put("3e", "L4_CFTP");

        l4TypeAliasMap.put("3f", "L4_Any_local");

        l4TypeAliasMap.put("40", "L4_SATNET");

        l4TypeAliasMap.put("41", "L4_Kryptolan");

        l4TypeAliasMap.put("42", "L4_MIT_RVDP");

        l4TypeAliasMap.put("43", "L4_Internet_Pluribus");

        l4TypeAliasMap.put("44", "L4_Distributed_FS");

        l4TypeAliasMap.put("45", "L4_SATNET");

        l4TypeAliasMap.put("46", "L4_VISA");

        l4TypeAliasMap.put("47", "L4_IP_Core");

        l4TypeAliasMap.put("4a", "L4_Wang_Span");

        l4TypeAliasMap.put("4b", "L4_Packet_Video");

        l4TypeAliasMap.put("4c", "L4_Backroom_SATNET");

        l4TypeAliasMap.put("4d", "L4_SUN_ND");

        l4TypeAliasMap.put("4e", "L4_WIDEBAND_Monitoring");

        l4TypeAliasMap.put("4f", "L4_WIDEBAND_EXPAK");

        l4TypeAliasMap.put("50", "L4_ISO_IP");

        l4TypeAliasMap.put("51", "L4_VMTP");

        l4TypeAliasMap.put("52", "L4_SECURE_VMTP");

        l4TypeAliasMap.put("53", "L4_VINES");

        l4TypeAliasMap.put("54", "L4_TTP");

        l4TypeAliasMap.put("55", "L4_NSFNET_IGP");

        l4TypeAliasMap.put("56", "L4_Dissimilar_GP");

        l4TypeAliasMap.put("57", "L4_TCF");

        l4TypeAliasMap.put("58", "L4_EIGRP");

        l4TypeAliasMap.put("59", "L4_OSPF");

        l4TypeAliasMap.put("5a", "L4_Sprite_RPC");

        l4TypeAliasMap.put("5b", "L4_Locus_ARP");

        l4TypeAliasMap.put("5c", "L4_MTP");

        l4TypeAliasMap.put("5d", "L4_AX");

        l4TypeAliasMap.put("5e", "L4_IP_within_IP");

        l4TypeAliasMap.put("5f", "L4_Mobile_ICP");

        l4TypeAliasMap.put("61", "L4_EtherIP");

        l4TypeAliasMap.put("62", "L4_Encapsulation_Header");

        l4TypeAliasMap.put("64", "L4_GMTP");

        l4TypeAliasMap.put("65", "L4_IFMP");

        l4TypeAliasMap.put("66", "L4_PNNI");

        l4TypeAliasMap.put("67", "L4_PIM");

        l4TypeAliasMap.put("68", "L4_ARIS");

        l4TypeAliasMap.put("69", "L4_SCPS");

        l4TypeAliasMap.put("6a", "L4_QNX");

        l4TypeAliasMap.put("6b", "L4_Active_Networks");

        l4TypeAliasMap.put("6c", "L4_IPPCP");

        l4TypeAliasMap.put("6d", "L4_SNP");

        l4TypeAliasMap.put("6e", "L4_Compaq_Peer_Protocol");

        l4TypeAliasMap.put("6f", "L4_IPX_in_IP");

        l4TypeAliasMap.put("70", "L4_VRRP");

        l4TypeAliasMap.put("71", "L4_PGM");

        l4TypeAliasMap.put("72", "L4_0_hop");

        l4TypeAliasMap.put("73", "L4_L2TP");

        l4TypeAliasMap.put("74", "L4_DDX");

        l4TypeAliasMap.put("75", "L4_IATP");

        l4TypeAliasMap.put("76", "L4_ST");

        l4TypeAliasMap.put("77", "L4_SRP");

        l4TypeAliasMap.put("78", "L4_UTI");

        l4TypeAliasMap.put("79", "L4_SMP");

        l4TypeAliasMap.put("7a", "L4_SM");

        l4TypeAliasMap.put("7b", "L4_PTP");

        l4TypeAliasMap.put("7c", "L4_ISIS");

        l4TypeAliasMap.put("7d", "L4_FIRE");

        l4TypeAliasMap.put("7e", "L4_CRTP");

        l4TypeAliasMap.put("7f", "L4_CRUDP");

        l4TypeAliasMap.put("80", "L4_SSCOPMCE");

        l4TypeAliasMap.put("81", "L4_IPLT");

        l4TypeAliasMap.put("82", "L4_SPS");

        l4TypeAliasMap.put("83", "L4_PIPE");

        l4TypeAliasMap.put("84", "L4_SCTP");

        l4TypeAliasMap.put("85", "L4_Fibre_Channel");

        l4TypeAliasMap.put("86", "L4_RSVP_E2E_IGNORE");

        l4TypeAliasMap.put("87", "L4_Mobility_Header");

        l4TypeAliasMap.put("88", "L4_UDP_Lite");

        l4TypeAliasMap.put("89", "L4_MPLS");

        l4TypeAliasMap.put("8a", "L4_MANET");

        l4TypeAliasMap.put("8b", "L4_HIP");

        l4TypeAliasMap.put("8c", "L4_Shim6");

        l4TypeAliasMap.put("8d", "L4_WESP");

        l4TypeAliasMap.put("8e", "L4_ROHC");

    }

}

 

 

这样运行是没有错的。

然后用mini net建立拓扑接着eclipse控制台里面就又有流量种类又有流量大小了。

具体的信息我贴出来一点:

 

里面是5条信息流

 

{00:00:00:00:00:00:00:01__OFPacketIn=31, 00:00:00:00:00:00:00:01__OFPacketIn__unicast=1, controller__OFPacketIn__unicast=1, controller__OFPacketOut=2, StorageQuery__controller_forwardingconfig=1, 00:00:00:00:00:00:00:01__OFPacketOut=2, 00:00:00:00:00:00:00:01__OFPacketIn__broadcast=3, 00:00:00:00:00:00:00:01__OFPacketIn__multicast=27, StorageQuery=7, StorageQuery__controller_firewallrules=1, StorageQuery__controller_staticflowtableentry=1, StorageQuery__controller_switchconfig=2, StorageQuery__controller_link=1, controller__OFFlowMod=2, 00:00:00:00:00:00:00:01__OFPacketIn__L3_IPv6=27, controller__OFPacketIn__L4_ICMP=1, 00:00:00:00:00:00:00:01__OFPacketIn__L3_IPv4=1, controller__OFPacketIn=31, controller__OFPacketIn__L3_ARP=3, StorageQuery__controller_topologyconfig=1, 00:00:00:00:00:00:00:01__OFFlowMod=2, controller__OFPacketIn__multicast=27, controller__OFPacketIn__broadcast=3, controller__OFPacketIn__L3_IPv4=1, controller__OFPacketIn__L3_IPv6=27, 00:00:00:00:00:00:00:01__OFPacketIn__L4_ICMP=1, 00:00:00:00:00:00:00:01__OFPacketIn__L3_ARP=3}

 

 

 

{00:00:00:00:00:00:00:01__OFPacketIn=32, 00:00:00:00:00:00:00:01__OFPacketIn__unicast=1, controller__OFPacketIn__unicast=1, controller__OFPacketOut=3, StorageQuery__controller_forwardingconfig=1, 00:00:00:00:00:00:00:01__OFPacketOut=3, 00:00:00:00:00:00:00:01__OFPacketIn__broadcast=4, 00:00:00:00:00:00:00:01__OFPacketIn__multicast=27, StorageQuery=7, StorageQuery__controller_firewallrules=1, StorageQuery__controller_staticflowtableentry=1, StorageQuery__controller_switchconfig=2, StorageQuery__controller_link=1, controller__OFFlowMod=3, 00:00:00:00:00:00:00:01__OFPacketIn__L3_IPv6=27, controller__OFPacketIn__L4_ICMP=1, 00:00:00:00:00:00:00:01__OFPacketIn__L3_IPv4=1, controller__OFPacketIn=32, controller__OFPacketIn__L3_ARP=4, StorageQuery__controller_topologyconfig=1, 00:00:00:00:00:00:00:01__OFFlowMod=3, controller__OFPacketIn__multicast=27, controller__OFPacketIn__broadcast=4, controller__OFPacketIn__L3_IPv4=1, controller__OFPacketIn__L3_IPv6=27, 00:00:00:00:00:00:00:01__OFPacketIn__L4_ICMP=1, 00:00:00:00:00:00:00:01__OFPacketIn__L3_ARP=4}

 

 

 

{00:00:00:00:00:00:00:01__OFPacketIn=33, 00:00:00:00:00:00:00:01__OFPacketIn__unicast=2, controller__OFPacketIn__unicast=2, controller__OFPacketOut=4, StorageQuery__controller_forwardingconfig=1, 00:00:00:00:00:00:00:01__OFPacketOut=4, 00:00:00:00:00:00:00:01__OFPacketIn__broadcast=4, 00:00:00:00:00:00:00:01__OFPacketIn__multicast=27, StorageQuery=7, StorageQuery__controller_firewallrules=1, StorageQuery__controller_staticflowtableentry=1, StorageQuery__controller_switchconfig=2, StorageQuery__controller_link=1, controller__OFFlowMod=4, 00:00:00:00:00:00:00:01__OFPacketIn__L3_IPv6=27, controller__OFPacketIn__L4_ICMP=2, 00:00:00:00:00:00:00:01__OFPacketIn__L3_IPv4=2, controller__OFPacketIn=33, controller__OFPacketIn__L3_ARP=4, StorageQuery__controller_topologyconfig=1, 00:00:00:00:00:00:00:01__OFFlowMod=4, controller__OFPacketIn__multicast=27, controller__OFPacketIn__broadcast=4, controller__OFPacketIn__L3_IPv4=2, controller__OFPacketIn__L3_IPv6=27, 00:00:00:00:00:00:00:01__OFPacketIn__L4_ICMP=2, 00:00:00:00:00:00:00:01__OFPacketIn__L3_ARP=4}

 

 

 

 

{00:00:00:00:00:00:00:01__OFPacketIn=34, 00:00:00:00:00:00:00:01__OFPacketIn__unicast=2, controller__OFPacketIn__unicast=2, controller__OFPacketOut=4, StorageQuery__controller_forwardingconfig=1, 00:00:00:00:00:00:00:01__OFPacketOut=4, 00:00:00:00:00:00:00:01__OFPacketIn__broadcast=5, 00:00:00:00:00:00:00:01__OFPacketIn__multicast=27, StorageQuery=7, StorageQuery__controller_firewallrules=1, StorageQuery__controller_staticflowtableentry=1, StorageQuery__controller_switchconfig=2, StorageQuery__controller_link=1, controller__OFFlowMod=4, 00:00:00:00:00:00:00:01__OFPacketIn__L3_IPv6=27, controller__OFPacketIn__L4_ICMP=2, 00:00:00:00:00:00:00:01__OFPacketIn__L3_IPv4=2, controller__OFPacketIn=34, controller__OFPacketIn__L3_ARP=5, StorageQuery__controller_topologyconfig=1, 00:00:00:00:00:00:00:01__OFFlowMod=4, controller__OFPacketIn__multicast=27, controller__OFPacketIn__broadcast=5, controller__OFPacketIn__L3_IPv4=2, controller__OFPacketIn__L3_IPv6=27, 00:00:00:00:00:00:00:01__OFPacketIn__L4_ICMP=2, 00:00:00:00:00:00:00:01__OFPacketIn__L3_ARP=5}

 

 

 

 

{00:00:00:00:00:00:00:01__OFPacketIn=35, 00:00:00:00:00:00:00:01__OFPacketIn__unicast=2, controller__OFPacketIn__unicast=2, controller__OFPacketOut=5, StorageQuery__controller_forwardingconfig=1, 00:00:00:00:00:00:00:01__OFPacketOut=5, 00:00:00:00:00:00:00:01__OFPacketIn__broadcast=6, 00:00:00:00:00:00:00:01__OFPacketIn__multicast=27, StorageQuery=7, StorageQuery__controller_firewallrules=1, StorageQuery__controller_staticflowtableentry=1, StorageQuery__controller_switchconfig=2, StorageQuery__controller_link=1, controller__OFFlowMod=5, 00:00:00:00:00:00:00:01__OFPacketIn__L3_IPv6=27, controller__OFPacketIn__L4_ICMP=2, 00:00:00:00:00:00:00:01__OFPacketIn__L3_IPv4=2, controller__OFPacketIn=35, controller__OFPacketIn__L3_ARP=6, StorageQuery__controller_topologyconfig=1, 00:00:00:00:00:00:00:01__OFFlowMod=5, controller__OFPacketIn__multicast=27, controller__OFPacketIn__broadcast=6, controller__OFPacketIn__L3_IPv4=2, controller__OFPacketIn__L3_IPv6=27, 00:00:00:00:00:00:00:01__OFPacketIn__L4_ICMP=2, 00:00:00:00:00:00:00:01__OFPacketIn__L3_ARP=6}

 

 

 

有志同道合的可以加群325923393

接下去就是做数据中心的qos了。

0 0
原创粉丝点击