# Meter bandwidth

Hi there, sorry to bother, i have opendaylight helium and i would like to know per example, how can i limit speed to connection between two hosts and give priority to this connection above others? Can it be done by GUI ? Thanks:)

edit retag close merge delete

Sort by » oldest newest most voted

You can use REST calls for this, there are several tools for doing this, i use curl or the postman plugin for chrome. To enable REST functionality in karaf, please install odl-restconf or odl-restconf-noauth, if you only want to test the REST calls without any authentication.

To create an meter with the band type drop which limits the bandwidth to 50000kbps you can use the following REST call:

PUT http://ip:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/meter/1


XML:

<meter
xmlns="urn:opendaylight:flow:inventory">
<meter-id>1</meter-id>
<container-name>mymeter</container-name>
<meter-name>mymeter</meter-name>
<flags>meter-kbps</flags>
<band-id>0</band-id>
<band-rate>50000</band-rate>
<meter-band-types>
<flags>ofpmbt-drop</flags>
</meter-band-types>
<band-burst-size>0</band-burst-size>
<drop-rate>50000</drop-rate>
<drop-burst-size>0</drop-burst-size>
</meter>


To assign a meter with id 1 to a flow (which should be limited to band of the meter) with id 10, see below. Note, you can also assign some other flows to this meter.

PUT http://ip:8181/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table/100/flow/10


XML:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<flow xmlns="urn:opendaylight:flow:inventory">
<priority>2</priority>
<hard-timeout>0</hard-timeout>
<idle-timeout>0</idle-timeout>
<flow-name>dl_dst-tb7-p2p4</flow-name>
<match>
<ethernet-match>
<ethernet-destination>
</ethernet-destination>
</ethernet-match>
</match>
<id>10</id>
<table_id>100</table_id>
<instructions>
<instruction>
<order>0</order>
<meter>
<meter-id>1</meter-id>
</meter>
</instruction>
<instruction>
<order>1</order>
<apply-actions>
<action>
<order>0</order>
<output-action>
<output-node-connector>openflow:1:31</output-node-connector>
<max-length>60</max-length>
</output-action>
</action>
</apply-actions>
</instruction>
</instructions>
</flow>


There are several other examples in the wiki: OFPlugin1, OFPlugin2

And some others in the OpenflowPlugin git repository. You can clone the repository with:

git clone https://git.opendaylight.org/gerrit/p/openflowplugin.git


The examples are used for Openflowplugin test-scripts and located in "test-scripts" -> "xmls".

more

thanks a lot i would give it a try:) Can you post also a simple Rest call for a flow from a input port to a output port:) i would apreciate it very much. Is that i can't add flow by gui in Helium. i'm gonna do it with postman. Thanks a lot really ...mawil. waiting for your answer.

( 2015-01-30 09:46:54 -0700 )edit

According to the links i posted previously (OFPlugin2, search for "Input Port"). You have to add " <in-port>5</in-port>" inside the "<match>...</match>" tag to match for in-port 5... I would really appreciate if you can upvote and accept (above, little tick on the left) the answer if it works for you :)

( 2015-01-30 10:31:26 -0700 )edit

thanks a lot:)

( 2015-02-02 08:16:38 -0700 )edit

i'm having a trouble adding meters. I can add normal flows by REST(using postman) and they work. I can see them on the switch and on the controller ( ...restconf/operational/...) but when i create a meter, it gives me success putting in but when i'm going to see it in ..restconf/operational... nothing appears and it gives me error - application data-missing Request could not be completed because the relevant data model content does not exist. It gives me the same error creating an flow using the meter (success-ok) but again when going to see it if it's operational , the same error... what you think it is? thanks

( 2015-02-18 02:57:31 -0700 )edit

Are the meters on the switch? Are the flows, to which you have assigned a meter on the switch (e.g. actions=meter:33,output:33)? restconf/operational contains stats of flows/meters/etc. You can check the statistics with restconf/operational/opendaylight-inventory:nodes/node/openflow:1/meter/33

( 2015-02-18 09:21:24 -0700 )edit

Hi , If you are using mininet for network simulation then you can specify speed limit i.e bandwidth through mininet custom topology.

Regards, Ashwini mhatre.

more

i have a real network , and i would like to speed limit bandwidth in diferent connections..thanks for your answer

more

Ashwini mhatre, do you know if it's possible to limiet bandwidth through the controller opendaylight hydrogen?..:)

more

Hi, currently i am using opendaylight helium.in this distribution you can check following classes. Step1: controller/opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/switchmanager under this class there is one method createProperty through which you can create bandwidth as a controller property. step 2: /root/mdsal/controller/opendaylight/switchmanager/implementation/src/main/java/org/opendaylight/controller/switchmanager/internal/ControllerProperties under this class there is setControllerProperty(Property property) method through which you can set bandwidth as a controller property. but i had never tried this approach.its just hint you can try it. and let me know if its working. Regards,

( 2015-01-23 02:29:05 -0700 )edit

Mininet enables specify speed limit and bandwidth, but implementation with OpenVSwitch (--switch ovsk) isn't aware of features of switches. It is a limitation of Linux Kernel ( becasue Mininet uses emulation from kernel) and for now it's impossible to get the real specific of switches, they will appear from controller standard for all type od links. So you shall specify in application the cost of each link. Regards Arthur

more

Really...thanks for all your answers. Well, MIninet is not an option for my situation, I really would like to meter bandwidth between switch and host. For example, let's say i have 10mb connection, i want to give 8 mb to host1 priority1 and the rest to the other host. Of course i would like to do this from the controller. I don't know if it's possbile. Regards José

( 2015-01-30 07:55:55 -0700 )edit

## Stats

Seen: 2,663 times

Last updated: Jan 30 '15