[ovs-discuss] Distinguish flows based on IP address and port numbers in OvS

Jesse Gross jesse at nicira.com
Thu Jan 10 17:13:53 UTC 2013


You said this before:

"If the following defines the flows, it works.

ovs-ofctl add-flow br0 "in_port=1,priority=0,actions=output:2"
ovs-ofctl add-flow br0 "in_port=2,priority=0,actions=output:1""

Presumably you're missing port 1 in your new rules.

On Wed, Jan 9, 2013 at 7:56 PM, Mathumitha S <cerisierfilix at hotmail.com> wrote:
>
> Hi,
>           Thank you. But if it does not have IP Ethertype, if I use the
> commands
>
>        ovs-ofctl add-flow br0 "in_port=2,priority=0,actions=output:1"
>        ovs-ofctl add-flow br0  "in_port=3,priority=0,actions=output:1"
>
> i.e without specifying the IP address, it should work, right? But that too
> is not working. Can you please help me to define the ARP rules?
>
> Thank you
>
>> From: jesse at nicira.com
>> Date: Wed, 9 Jan 2013 07:51:59 -0800
>> Subject: Re: [ovs-discuss] Distinguish flows based on IP address and port
>> numbers in OvS
>> To: cerisierfilix at hotmail.com
>> CC: discuss at openvswitch.org
>
>>
>> On Wed, Jan 9, 2013 at 1:30 AM, Mathumitha S <cerisierfilix at hotmail.com>
>> wrote:
>> > Hi,
>> > I have OpenvSwitch installed in a computer that
>> > has a quad port. eth3, eth4 and eth5 are connected to br0 with
>> > respective
>> > open flow port numbers as 3,2,1 and the respective IP addresses of the
>> > machines connected to the ports are 10.6.3.2, 10.6.1.2 and 10.6.2.2
>> >
>> > I use eth3 and eth4 i.e ports 2 and 3 as input port and eth5 (port 1) as
>> > output port of OvS. I created 2 queues at eth5 using the following
>> > command:
>> >
>> > ovs-vsctl -- set port eth5 qos=@newqos -- --id=@newqos create qos
>> > type=linux-htb other-config:max-rate=100000000 queues=0=@q0,1=@q1 --
>> > --id=@q0 create queue other-config:min-rate=20000000
>> > other-config:max-rate=100000000 -- --id=@q1 create queue
>> > other-config:min-rate=1000000 other-config:max-rate=100000000
>> >
>> > I then added the following flows in the flow table:
>> >
>> > ovs-ofctl add-flow br0
>> >
>> > "in_port=2,dl_type=0x0800,nw_proto=6,nw_src=10.6.1.2,nw_dst=10.6.2.2,tp_dst=6000,priority=7,actions=enqueue:1:0"
>> > ovs-ofctl add-flow br0
>> >
>> > "in_port=3,dl_type=0x0800,nw_proto=6,nw_src=10.6.3.2,nw_dst=10.6.2.2,tp_dst=6005,priority=7,actions=enqueue:1:1"
>> > ovs-ofctl add-flow br0
>> >
>> > "in_port=1,dl_type=0x0800,nw_proto=6,nw_dst=10.6.1.2,nw_src=10.6.2.2,tp_src=6000,priority=5,actions=output:2"
>> > ovs-ofctl add-flow br0
>> >
>> > "in_port=1,dl_type=0x0800,nw_proto=6,nw_dst=10.6.3.2,nw_src=10.6.2.2,tp_src=6005,priority=5,actions=output:3"
>> > ovs-ofctl add-flow br0
>> > "in_port=2,dl_type=0x0800,nw_src=10.6.1.2,priority=0,actions=output:1"
>> > ovs-ofctl add-flow br0
>> > "in_port=3,dl_type=0x0800,,nw_src=10.6.3.2,priority=0,actions=output:1"
>> >
>> > I use iperf to generate traffic from two machines connected to eth3 and
>> > eth4. I use iperf server in machine connected to eth5 at port 6000 for
>> > machine connected to eth4 and at port 6005 for machine connected to
>> > eth3.
>> > Hence, basically I am trying ti distinguish flows based on IP address
>> > and
>> > destination port number.
>> >
>> > But when I try to generate traffic and test the scenario, I get 'No
>> > route to
>> > host' error.
>> >
>> > I basically need to enqueue different flows from different input ports
>> > in
>> > different queues at output port. So I only need routes for the TCP
>> > packets,
>> > ACK and ARP requests, right? I think I have included these in the rules
>> > I
>> > gave above. Can you please tell me what I am missing? Where am I going
>> > wrong? Earlier, I was able to distinguish flows based on iperf port
>> > numbers
>> > when I used two iperf clients on the same machine i.e when I had just
>> > one
>> > input port and one output port.
>>
>> There are still no ARP rules. ARP does not have an IP EtherType.



More information about the discuss mailing list