[CONTROLLER-60] Signed Value Used for OpenFlow Port Number Created: 22/Nov/13  Updated: 25/Jul/23  Resolved: 02/Jun/15

Status: Resolved
Project: controller
Component/s: adsal
Affects Version/s: None
Fix Version/s: None

Type: Bug
Reporter: seils Assignee: Venkata Siva Vijayendra Bhamidipati
Resolution: Won't Do Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: Linux
Platform: PC


Attachments: PNG File attachment_for_value>32768_in_mininet.png     PNG File opendaylight_GUI_for_vale>32768.png     PNG File ports_info.png    
External issue ID: 161
Priority: Highest

 Description   

The signed value for OpenFlow port numbers is exposed in the web GUI, which causes problems for port numbers >=32768. Aside from the negative value being confusing, this prevents flow programming when the port is specified.

Steps to Reproduce using OVS:

  • sudo ovs-vsctl add-br C1
  • sudo ovs-vsctl set-controller C1 tcp:<odl-ip>:6633
  • sudo ovs-vsctl add-port C1 eth0 – set Interface eth0 ofport_request=32768


 Comments   
Comment by Rajani Srivastava [ 04/Feb/14 ]

Hi Seils,

The command :
sudo ovs-vsctl add-port C1 eth0 – set Interface eth0 ofport_request=32768
is working fine with mininet version 2.1.0+ and openflow 1.3.
If you run the command :
sudo ovs-vsctl add-port C1 eth0 – set Interface eth0 ofport_request=-212

It will not accept the negative values.So it is working fine.

Comment by seils [ 05/Feb/14 ]

(In reply to Rajani Srivastava from comment #1)
> Hi Seils,
>
> The command :
> sudo ovs-vsctl add-port C1 eth0 – set Interface eth0 ofport_request=32768
> is working fine with mininet version 2.1.0+ and openflow 1.3.
> If you run the command :
> sudo ovs-vsctl add-port C1 eth0 – set Interface eth0 ofport_request=-212
>
> It will not accept the negative values.So it is working fine.

I just tested the Hydrogen base image and the issue still exists. Port numbers >32768 are represented as negative values.

Comment by Rajani Srivastava [ 06/Feb/14 ]

Attachment attachment_for_value>32768_in_mininet.png has been added with description: checked for the value 33333

Comment by Rajani Srivastava [ 06/Feb/14 ]

Attachment opendaylight_GUI_for_vale>32768.png has been added with description: checked in opendaylight GUI

Comment by Rajani Srivastava [ 06/Feb/14 ]

Hi Seils,

I tested it again on Hydrogen base image.And found that for port number > 32768 ,it is working fine in command line as well in Opendaylight GUI.
Please find the attachments and update me where are you getting the negative values.

Comment by Rajani Srivastava [ 06/Feb/14 ]

Attachment ports_info.png has been added with description: checked port number is accepted by ;

Comment by Rajani Srivastava [ 06/Feb/14 ]

Checked that port number is accepted with following commands :

sudo ovs-vsctl list interface
sudo ovs-ofctl dump-ports br1

Comment by Venkata Siva Vijayendra Bhamidipati [ 07/Feb/14 ]

Hi Rajani,

If you pass a port number greater than 32767 when adding an interface to the bridge in ovs, it will show up as a negative integer in the ODL GUI when you look at the port numbers for devices. You will see the right value in ovs-vsctl dump-ports because ovs is fine with it, but ODL currently won't be able to store/discover/parse it correctly, and will show the port as a negative number.

The problem is that the open flow specification sets 16 bits aside for a port in the headers, and the third party openflowj library also accordingly reads/writes 16 bits on the wire, but java on the other hand, treats all short integers as signed. This is causing issues with the openflowj library and all other parts of the ODL code that deals with open flow ports because those 16 bits are treated as signed ints, not unsigned short ints as they should be.

I'm working on the fix for this, and the fix is complicated and will take a while.

Regards,
Vijay

Comment by Ermin Sakic [ 21/May/14 ]

Any updates on this?

Calling TCP/UDP.getSourcePort() for iperf supplied packets very often results in returned negative values. I name iperf since the client does not allow for specifying the source port and instead reserves a random available port thus almost always resulting in problems if port no. needs to be extracted from the packet.

Comment by Carol Sanders [ 04/May/15 ]

This bug is part of the project to Move all ADSAL associated component bugs to ADSAL

Comment by Carol Sanders [ 02/Jun/15 ]

Deprecated code.

Generated at Wed Feb 07 19:52:05 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.