I can send the following as .pdf if needed>
UDP Broadcast Using HP3800 Switch in OpenFlow Mode
D Butler
19 July 2016
1 Introduction
This work is part of investigation into IP Production on a SDN using Source Specific Multicast for live TV production.
2 Test Setup
The HP3800 switches with version KA.15.15.0006 firmware, configured in OF 1.3 mode, are connected in 4 switch mesh, as shown in Figure 2.1. A second, traditional, network using a separate IP range is employed to connect the SDN controller and SDN switches. The traditional network is also employed for SSH access to the source/ destination servers.
Figure 2.1: Test Network Setup
A source on one server streams UDP test packets or SSM video, using IPERF or VLC, which are received by one or more destination servers.
e.g. Using IPERF on the source server 10.0.0.100, to generate a 800Mb/s UDP stream:
$ iperf –u –p 5004 –c 232.13.1 –b 800M –t 86400
------------------------------------------------------------------
Client connecting to 232.1.3.1, UDP port 5004
Sending 1470 byte datagrams
Sending multicast TTL to 1
UDP buffer size: 208 KByte (default)
------------------------------------------------------------------
[ 3] local 10.0.0.100 port 3745 connected with 232.1.3.1 port 5004
[ID] Interval Transfer Bandwidth
[ 3] 0.0–24.8 sec 2.32 GBytes 803 Mbits/sec
[ 3] Sent 1692709 datagrams
$
e.g. Using VLC to stream a video file:
$ cvlc -vvv big.mov --sout "#rtp{proto=udp,mux=ts,name=big,sdp=sap,dst=232.1.6.1,port=5004}" --sout-keep --ttl 5 --loop
Destinations join and leave SSM streams using IGMPv3 messages which are processed by the 10.0.0.110 server, which in programmes flows using the REST interface on the HP VAN 2.0 SDN controller.
At the destinations, a simple multicast client counts dropped / repeated / out-of-order packets using the sequence number in the IPERF UDP packet payload:
$ ./ssmmeter 10.0.0140 10.0.0.100 232.1.3.1
Video streams are received and played using VLC:
$ vlc rtp://10.0.0.100@232.1.3.1:5004
A network tap and Wireshark are employed for investigating anomalous behaviour.
3 Anomalous Switch Behaviour
The HP3800 switches with version KA.15.15.0006 firmware have shown anomalous behaviour when modifying flows. The specific test setup is as show in Figure 3.1.
Figure 3.1: Test Setup Showing Anomalous Network Behaviour
If servers Dest1 (on SW2) and Dest2 (on SW4) have joined a multicast stream from Source1 (on SW1), when Dest2 leaves the stream, there are no repeat packets received by Dest1.
However, if servers Dest1, Dest2 (on SW4) and Dest3 (SW4) have all joined a multicast stream from Source1 (on SW1), when only Dest2 leaves the stream, repeat packets are received by Dest1.
The equivalent curl commands for the switches are to receive the stream at Dest1, 2 and 3 are:
SW1> $ curl --header "X-Auth-Token:$AUTH_TOKEN" -H "Content-Type:application/json" -ksS --url "https://192.168.40.200:8443/sdn/v2.0/of/datapaths/00:02:c8:cb:b8:3e:fe:40/flows" -d "{\"flow\": {\"priority\": 20000,\"table_id\":100,\"idle_timeout\": 60000,\"match\": [{\"ipv4_src\":\"10.0.0.100\"},{\"ipv4_dst\":\"224.1.3.1\"},{\"eth_type\": \"ipv4\"}],\"instructions\": [{\"apply_actions\": [{\"output\": 25}, {\"output\": 26}]}]}}" --request POST
SW2> $ curl --header "X-Auth-Token:$AUTH_TOKEN" -H "Content-Type:application/json" -ksS --url "https://192.168.40.200:8443/sdn/v2.0/of/datapaths/00:02:6c:3b:e5:62:b2:80/flows" -d "{\"flow\": {\"priority\": 20000,\"table_id\":100,\"idle_timeout\": 60000,\"match\": [{\"ipv4_src\":\"10.0.0.100\"},{\"ipv4_dst\":\"224.1.3.1\"},{\"eth_type\": \"ipv4\"}],\"instructions\": [{\"apply_actions\": [{\"output\": 17}]}]}}" --request POST
SW3> $ curl --header "X-Auth-Token:$AUTH_TOKEN" -H "Content-Type:application/json" -ksS --url "https://192.168.40.200:8443/sdn/v2.0/of/datapaths/00:02:34:64:a9:59:8a:00/flows" -d "{\"flow\": {\"priority\": 20000,\"table_id\":100,\"idle_timeout\": 60000,\"match\": [{\"ipv4_src\":\"10.0.0.100\"},{\"ipv4_dst\":\"224.1.3.1\"},{\"eth_type\": \"ipv4\"}],\"instructions\": [{\"apply_actions\": [{\"output\": 11}, {\"output\": 13}]}]}}" --request POST
Screen shots of the OpenFlow Monitor in the SDN Controller are shown in Figures 3.2, 3.3 and 3.4. The flows for 224.0.0.1 and 242.0.0.2 are for IGMP messages. The lower priority flow for 232.0.0.0/24 is to drop unjointed streams.
Figure 3.2: OF Monitor View for SW1
Figure 3.3: OF Monitor View for SW2
Figure 3.4: OF Monitor View for SW4
When Dest2 leaves the stream, port 13 is removed from the flow in SW4. All other flows are unchanged. The equivalent curl commands for the switches are to receive the stream at Dest1 and 3 are:
SW1> $ curl --header "X-Auth-Token:$AUTH_TOKEN" -H "Content-Type:application/json" -ksS --url "https://192.168.40.200:8443/sdn/v2.0/of/datapaths/00:02:c8:cb:b8:3e:fe:40/flows" -d "{\"flow\": {\"priority\": 20000,\"table_id\":100,\"idle_timeout\": 60000,\"match\": [{\"ipv4_src\":\"10.0.0.100\"},{\"ipv4_dst\":\"224.1.3.1\"},{\"eth_type\": \"ipv4\"}],\"instructions\": [{\"apply_actions\": [{\"output\": 25}, {\"output\": 26}]}]}}" --request POST
SW2> $ curl --header "X-Auth-Token:$AUTH_TOKEN" -H "Content-Type:application/json" -ksS --url "https://192.168.40.200:8443/sdn/v2.0/of/datapaths/00:02:6c:3b:e5:62:b2:80/flows" -d "{\"flow\": {\"priority\": 20000,\"table_id\":100,\"idle_timeout\": 60000,\"match\": [{\"ipv4_src\":\"10.0.0.100\"},{\"ipv4_dst\":\"224.1.3.1\"},{\"eth_type\": \"ipv4\"}],\"instructions\": [{\"apply_actions\": [{\"output\": 17}]}]}}" --request POST
SW3> $ curl --header "X-Auth-Token:$AUTH_TOKEN" -H "Content-Type:application/json" -ksS --url "https://192.168.40.200:8443/sdn/v2.0/of/datapaths/00:02:34:64:a9:59:8a:00/flows" -d "{\"flow\": {\"priority\": 20000,\"table_id\":100,\"idle_timeout\": 60000,\"match\": [{\"ipv4_src\":\"10.0.0.100\"},{\"ipv4_dst\":\"224.1.3.1\"},{\"eth_type\": \"ipv4\"}],\"instructions\": [{\"apply_actions\": [{\"output\": 11}]}]}}" --request POST
The Screen shot of the OpenFlow Monitor for SW4 is shown in Figures 3.5. Others are unchanged.
Figure 3.5: OF Monitor View for SW4 (after port removal).
Using a network tap and Wireshark, as shown in Figure 3.1, repeat packets are detected on the link SW4 to SW2. The Wireshark capture results are shown in Figure 3.6.
Figure 3.6: Wireshark Capture of Repeat Packets
As shown in Figure 3.7, the number of repeated packets increases with stream bit rate (from 10Mb/s to 900Mb/s). The duration of repeated packets is around 0.1ms for all stream rates.
Figure 3.7: Repeated Packets for Live Flow Movement using Individual Priorities
In a traditional Layer 2 network switch, multicast packets are broadcasts on all ports. In a SDN switch, packets should not be broadcast without a flow table rule to implement this. Packets should be forwarded to the SDN controller, which should then programme flows.
For a period of 0.1ms, it appears that the SDN switch is directing packets as a traditional switch.
When 1 of the 2 destinations on SW4 (Dest2 or Dest3) leaves the multicast stream, a burst of packets are broadcast on the SW4 links to SW2 and SW3. These are detected using a network tap and Wireshark.
The flow table rule for the multicast stream in SW2 direct these packets to Dest1, so the destination receives a burst of repeated packets.
Since the flow table rule for the multicast stream does not specify an incoming switch source port, incoming packets from port 7 and port 5 are delivered to Dest1 via port 17.
The rule used to drop packets from un-joined multicast streams is not applied, as it is at a lower priority.
Note:
The anomalous broadcast behaviour in the switch occurs when a flow rule is modified to remove a port from one of multiple output ports for an active stream.
If no flow rules are programmed in any switch, UDP packets are broadcast.
If the IGMP Proxy Application in server 10.0.0.110 is not running and there are no flows programmed or visible in the SDN VAN controller OF Monitor, then UDP packets are broadcast.
When packets are stream using IPERF from server 10.0.0.100:
1. Broadcast packets are detected using Wireshark and the network tap.
2. No flow rules are visible in the SDN VAN controller OF Monitor (the controller does not appear to add any rules of its own).
3. If ‘drop’ packets rule is programmed in SW4, using a curl command, the broadcasts detected by Wireshark stop.
4 SW4 Configuration and Flows
HP-3800-48G-4SFPP-4# show config
Startup configuration: 7
; J9576A Configuration Editor; Created on release #KA.15.15.0006
; Ver #05:19.ff.ff.3f.ef:cc
hostname "HP-3800-48G-4SFPP-4"
module 1 type j9576y
module 2 type j9576x
interface 49
flow-control
exit
snmp-server community "public" unrestricted
openflow
controller-id 1 ip 192.168.40.200 controller-interface oobm
instance "sdnm"
member vlan 2
controller-id 1
version 1.3 only
mode passive
enable
exit
enable
exit
oobm
ip address 192.168.40.74 255.255.255.0
exit
vlan 1
name "DEFAULT_VLAN"
no untagged 3-52
untagged 1-2
ip address 192.168.40.34 255.255.255.0
exit
vlan 2
name "VLAN2"
untagged 3-52
no ip address
exit
no autorun
no dhcp config-file-update
no dhcp image-file-update
HP-3800-48G-4SFPP-4# show openflow instance sdnm flows
OpenFlow Flow Table
Flow 1
Match
Incoming Port : Any Ethernet Type : Any
Source MAC : Any Destination MAC : Any
VLAN ID : Any VLAN priority : Any
Source Protocol Address : Any
Target Protocol Address : Any
IP Protocol : Any
IP ECN : Any IP DSCP : Any
Source Port : Any Destination Port : Any
Attributes
Priority : 0 Duration : 5270018 seconds
Hard Timeout : 0 seconds Idle Timeout : 0 seconds
Byte Count : 0 Packet Count : NA
Flow Table ID : 0 Controller ID : NA
Activity Count: NA Cookie : 0x0
Hardware Index : NA
Instructions
Goto Table ID : 100
Flow 2
Match
Incoming Port : Any Ethernet Type : IP
Source MAC : Any Destination MAC : Any
VLAN ID : Any VLAN priority : Any
Source Protocol Address : Any
Target Protocol Address : 224.0.0.1/32
IP Protocol : Any
IP ECN : Any IP DSCP : Any
Source Port : Any Destination Port : Any
Attributes
Priority : 20000 Duration : 6442 seconds
Hard Timeout : 0 seconds Idle Timeout : 0 seconds
Byte Count : NA Packet Count : 21
Flow Table ID : 100 Controller ID : 1
Activity Count: NA Cookie : 0x0
Hardware Index : 17
Instructions
Apply Actions
Output : 11
Output : 13
Flow 3
Match
Incoming Port : Any Ethernet Type : IP
Source MAC : Any Destination MAC : Any
VLAN ID : Any VLAN priority : Any
Source Protocol Address : Any
Target Protocol Address : 224.0.0.22/32
IP Protocol : Any
IP ECN : Any IP DSCP : Any
Source Port : Any Destination Port : Any
Attributes
Priority : 20000 Duration : 6440 seconds
Hard Timeout : 0 seconds Idle Timeout : 0 seconds
Byte Count : NA Packet Count : 10
Flow Table ID : 100 Controller ID : 1
Activity Count: NA Cookie : 0x0
Hardware Index : 18
Instructions
Apply Actions
Output : 5
Flow 4
Match
Incoming Port : Any Ethernet Type : IP
Source MAC : Any Destination MAC : Any
VLAN ID : Any VLAN priority : Any
Source Protocol Address : 10.0.0.100/32
Target Protocol Address : 232.1.3.1/32
IP Protocol : Any
IP ECN : Any IP DSCP : Any
Source Port : Any Destination Port : Any
Attributes
Priority : 20000 Duration : 3234 seconds
Hard Timeout : 0 seconds Idle Timeout : 0 seconds
Byte Count : NA Packet Count : 26891052
Flow Table ID : 100 Controller ID : 1
Activity Count: NA Cookie : 0x0
Hardware Index : 19
Instructions
Apply Actions
Output : 11
Flow 5
Match
Incoming Port : Any Ethernet Type : IP
Source MAC : Any Destination MAC : Any
VLAN ID : Any VLAN priority : Any
Source Protocol Address : Any
Target Protocol Address : 232.0.0.0/8
IP Protocol : Any
IP ECN : Any IP DSCP : Any
Source Port : Any Destination Port : Any
Attributes
Priority : 19999 Duration : 6444 seconds
Hard Timeout : 0 seconds Idle Timeout : 0 seconds
Byte Count : NA Packet Count : 8
Flow Table ID : 100 Controller ID : 1
Activity Count: NA Cookie : 0x0
Hardware Index : 0
Instructions
Drop
Flow 6
Match
Incoming Port : Any Ethernet Type : Any
Source MAC : Any Destination MAC : Any
VLAN ID : Any VLAN priority : Any
Source Protocol Address : Any
Target Protocol Address : Any
IP Protocol : Any
IP ECN : Any IP DSCP : Any
Source Port : Any Destination Port : Any
Attributes
Priority : 0 Duration : 4915674 seconds
Hard Timeout : 0 seconds Idle Timeout : 0 seconds
Byte Count : NA Packet Count : 23613373
Flow Table ID : 100 Controller ID : 1
Activity Count: NA Cookie : 0x0
Hardware Index : NA
Instructions
Goto Table ID : 200
Flow 7
Match
Incoming Port : Any Ethernet Type : Any
Source MAC : Any Destination MAC : Any
VLAN ID : Any VLAN priority : Any
Source Protocol Address : Any
Target Protocol Address : Any
IP Protocol : Any
IP ECN : Any IP DSCP : Any
Source Port : Any Destination Port : Any
Attributes
Priority : 0 Duration : 4915673 seconds
Hard Timeout : 0 seconds Idle Timeout : 0 seconds
Byte Count : 31997721733 Packet Count : 21873745
Flow Table ID : 200 Controller ID : 1
Activity Count: NA Cookie : 0x0
Hardware Index : NA
Instructions
Apply Actions
Controller Port
HP-3800-48G-4SFPP-4#