Skip to content

P2MP connection problem: the intermediate node w/ an end host in the tree doesn't forward traffic between its parent and child nodes.  #165

@congwang09

Description

@congwang09

Multipoint request on renci testbed that includes 4 sites. Duke is not correctly forwarding traffic to/from NCSU.
In this example, Duke is both endpoint switch and tree node (see the diagram below), the code here in L2MultipointPolicy.py, first checks the endpoint switch, which is skipped in the following tree nodes breakdown rule.

if node in covered_nodes:

L2MultipointEndpointLCRule does generate a set of flood ports to flood the traffic, so need to check the detailed flow entries.

Request:

curl \
-X POST http://atlanticwave-sdx-controller.renci.ben:5000/api/v1/policies/type/L2Multipoint \
-b cookie-mcevik.txt \
-H "Content-Type: application/json" \
--data-binary @- <<EOF
{
    "L2Multipoint":
    {
    "starttime":"2020-09-04T10:00:00",
    "endtime":"2025-10-09T15:59:00",
    "endpoints":
    [{"switch":"uncs1","port":12,"vlan":1423},
    {"switch":"rencis2","port":8,"vlan":1425},
    {"switch":"ncsus1","port":12,"vlan":1424},
    {"switch":"dukes1","port":12,"vlan":1422}],
    "bandwidth":8000
    }
}
EOF

Tree structure:

2020-10-01 17:48:49,657 debug.sdxcontroller.topologymanager: 139622684415744 DEBUG    find_valid_steiner_tree: Successful [('rencis1', 'rencis2'), ('rencis1', 'dukes1'), ('rencis1', 'uncs1'), ('dukes1', 'ncsus1')]
2020-10-01 17:48:49,658 debug.sdxcontroller.topologymanager: 139622684415744 DEBUG    find_vlan_on_tree: ['rencis1', 'rencis2', 'dukes1', 'ncsus1', 'uncs1']
2020-10-01 17:48:49,659 debug.sdxcontroller.topologymanager: 139622684415744 DEBUG    find_vlan_on_tree returning 1

Rules:

2020-10-01 17:48:49,637 sdxcontroller.rest: 139622684415744 INFO       - JSON data {u'L2Multipoint': {u'endpoints': [{u'switch': u'uncs1', u'vlan': 1423, u'port': 12}, {u'switch': u'rencis2', u'vlan': 1425, u'port': 8}, {u'switch': u'ncsus1', u'vlan': 1424, u'port': 12}, {u'switch': u'dukes1', u'vlan': 1422, u'port': 12}], u'bandwidth': 8000, u'endtime': u'2025-10-09T15:59:00', u'starttime': u'2020-09-04T10:00:00'}}
2020-10-01 17:48:49,644 sdxcontroller.rulemanager: 139622684415744 INFO     add_rule: Beging with rule: L2Multipoint(2020-09-04T10:00:00,2025-10-09T15:59:00,[{'switch': 'uncs1', 'vlan': 1423, 'port': 12}, {'switch': 'rencis2', 'vlan': 1425, 'port': 8}, {'switch': 'ncsus1', 'vlan': 1424, 'port': 12}, {'switch': 'dukes1', 'vlan': 1422, 'port': 12}])
2020-10-01 17:48:49,666 sdxcontroller.rulemanager: 139622684415744 DEBUG    _reserve_resources: VLAN Tree: ,1
2020-10-01 17:48:49,667 sdxcontroller.rulemanager: 139622684415744 DEBUG    _reserve_resources: B/W Tree: ,8000
2020-10-01 17:48:49,668 sdxcontroller.rulemanager: 139622684415744 DEBUG    _reserve_resources: VLAN Port: ('uncs1', 12),1423
2020-10-01 17:48:49,669 sdxcontroller.rulemanager: 139622684415744 DEBUG    _reserve_resources: B/W Port: ('uncs1', 12),8000
2020-10-01 17:48:49,671 sdxcontroller.rulemanager: 139622684415744 DEBUG    _reserve_resources: VLAN Port: ('rencis2', 8),1425
2020-10-01 17:48:49,672 sdxcontroller.rulemanager: 139622684415744 DEBUG    _reserve_resources: B/W Port: ('rencis2', 8),8000
2020-10-01 17:48:49,674 sdxcontroller.rulemanager: 139622684415744 DEBUG    _reserve_resources: VLAN Port: ('ncsus1', 12),1424
2020-10-01 17:48:49,676 sdxcontroller.rulemanager: 139622684415744 DEBUG    _reserve_resources: B/W Port: ('ncsus1', 12),8000
2020-10-01 17:48:49,678 sdxcontroller.rulemanager: 139622684415744 DEBUG    _reserve_resources: VLAN Port: ('dukes1', 12),1422
2020-10-01 17:48:49,679 sdxcontroller.rulemanager: 139622684415744 DEBUG    _reserve_resources: B/W Port: ('dukes1', 12),8000
2020-10-01 17:48:49,681 sdxcontroller.rulemanager: 139622684415744 DEBUG    Sending install breakdown: <shared.UserPolicy.UserPolicyBreakdown object at 0x7efc7103b250>
2020-10-01 17:48:49,681 sdxcontroller.rulemanager: 139622684415744 DEBUG        L2MultipointEndpointLCRule: switch 203, 8:([1]), ([(12, 1423)]), 1, 8000
2020-10-01 17:48:49,682 sdxcontroller.rulemanager: 139622684415744 DEBUG    Sending install breakdown: <shared.UserPolicy.UserPolicyBreakdown object at 0x7efc7103b290>
2020-10-01 17:48:49,682 sdxcontroller.rulemanager: 139622684415744 DEBUG        L2MultipointEndpointLCRule: switch 205, 8:([23]), ([(8, 1425)]), 1, 8000
2020-10-01 17:48:49,683 sdxcontroller.rulemanager: 139622684415744 DEBUG    Sending install breakdown: <shared.UserPolicy.UserPolicyBreakdown object at 0x7efc71032b10>
2020-10-01 17:48:49,683 sdxcontroller.rulemanager: 139622684415744 DEBUG        L2MultipointEndpointLCRule: switch 204, 8:([1]), ([(12, 1424)]), 1, 8000
2020-10-01 17:48:49,684 sdxcontroller.rulemanager: 139622684415744 DEBUG    Sending install breakdown: <shared.UserPolicy.UserPolicyBreakdown object at 0x7efc71032f90>
2020-10-01 17:48:49,684 sdxcontroller.rulemanager: 139622684415744 DEBUG        L2MultipointEndpointLCRule: switch 202, 8:([1, 2]), ([(12, 1422)]), 1, 8000
2020-10-01 17:48:49,685 sdxcontroller.rulemanager: 139622684415744 DEBUG    Sending install breakdown: <shared.UserPolicy.UserPolicyBreakdown object at 0x7efc71032a90>
2020-10-01 17:48:49,686 sdxcontroller.rulemanager: 139622684415744 DEBUG        L2MultipointFloodLCRule: switch 201, 8:([23, 2, 1]), 1

P2MP Tree created:

image

Connectivity between end host pairs:

               renci2     duke    unc    ncsu
renci2.       --           ok        ok       no
duke          ok           --        ok       ok
unc            ok           ok        --      no
ncsu          no           ok        no       --

Flow table of br22 in dukes1:

corsa-1# show openflow flow br22 full 
                                                                                                                                  count : 25
  +-------+-------+---------------------------+---------------------------+--------+---------+--------
  | table | prio  |           match           |          actions          | cookie | packets |  
  +-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     0 |     0 | -                         | goto_table:1              |    0x0 |    2282 |  147182 |         
  +-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     0 |   100 | in_port=1,dl_vlan=1411    | output:2,output:11        |    0x0 |   
  +-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     0 |   100 | in_port=2,dl_vlan=1411    | output:1,output:11        |    0x0 |   
  +-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     0 |   100 | in_port=11,dl_vlan=1411   | output:1,output:2         |    0x0 |   
  +-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     0 |     1 | in_port=12,dl_vlan=1422   | set_field:4097->vlan_vid, |    0x4 |      
  |       |       |                           | goto_table:1              |        |         |         |           |           
 	+-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     1 |     0 | -                         | goto_table:2              |    0x0 |    2306 |  149348 |         
+-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     2 |     0 | -                         | goto_table:3              |    0x0 |    2306 |  149348 |         +-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     3 |     0 | -                         | goto_table:4              |    0x0 |    2282 |  147182 |         
 	+-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     3 |     0 | in_port=11                | CONTROLLER:65509,         |    0x3 |       0 |       
  |       |       |                           | goto_table:4              |        |         |         |           |           
 +-------+-------+---------------------------+---------------------------+--------+---------+-------
  |     3 |     0 | in_port=12                | CONTROLLER:65509,         |    0x2 |       0 |       
  |       |       |                           | goto_table:4              |        |         |         |           |           
+-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     3 |     2 | in_port=12,dl_vlan=1      | CONTROLLER:65509,         |    0x4 |      
  |       |       |                           | goto_table:4              |        |         |         |           |           +-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     4 |     0 | -                         | clear_actions             |    0x0 |       0 |       0 |         
+-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     4 |     0 | in_port=1                 | clear_actions             |    0x0 |       0 |       0 |         
+-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     4 |     1 | in_port=1,                | output:2,output:11,       |    0x1 |       0 |       0 
  |       |       | dl_dst=ff:ff:ff:ff:ff:ff  | output:12                 |        |         |         |           |           
+-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     4 |     3 | in_port=1,dl_vlan=1       | output:2,                 |    0x4 |      35 |    
  |       |       |                           | set_field:5518->vlan_vid, |        |         |         |           
  |       |       |                           | output:12                 |        |         |         |           |           
+-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     4 |     4 | in_port=1,dl_vlan=1,      | output:2,                 |    0x4 |    1126 |   
  |       |       | dl_dst=ff:ff:ff:ff:ff:ff  | set_field:5518->vlan_vid, |        |         |         |           
  |       |       |                           | output:12                 |        |         |         |           |           
+-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     4 |     0 | in_port=2                 | clear_actions             |    0x0 |       0 |       0 |         
+-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     4 |     1 | in_port=2,                | output:1,output:11,       |    0x1 |       0 |       0 
  |       |       | dl_dst=ff:ff:ff:ff:ff:ff  | output:12                 |        |         |         |           |           
+-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     4 |     3 | in_port=2,dl_vlan=1       | output:1,                 |    0x4 |      11 |     
  |       |       |                           | set_field:5518->vlan_vid, |        |         |         |           
  |       |       |                           | output:12                 |        |         |         |           |           
+-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     4 |     4 | in_port=2,dl_vlan=1,      | output:1,                 |    0x4 |    1110 |   
  |       |       | dl_dst=ff:ff:ff:ff:ff:ff  | set_field:5518->vlan_vid, |        |         |         |           
  |       |       |                           | output:12                 |        |         |         |           |           
+-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     4 |     0 | in_port=11                | clear_actions             |    0x0 |       0 |       0 |         
+-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     4 |     1 | in_port=11,               | output:1,output:2,        |    0x1 |       0 |       0 
  |       |       | dl_dst=ff:ff:ff:ff:ff:ff  | output:12                 |        |         |         |           |           
+-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     4 |     1 | in_port=12,               | output:1,output:2,        |    0x1 |       0 |       0 
  |       |       | dl_dst=ff:ff:ff:ff:ff:ff  | output:11                 |        |         |         |           |           
+-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     4 |     3 | in_port=12,dl_vlan=1      | output:1,output:2         |    0x4 |      24 |     +-------+-------+---------------------------+---------------------------+--------+---------+--------
  |     4 |     4 | in_port=12,dl_vlan=1,     | output:1,output:2         |    0x4 |       0 |       
  |       |       | dl_dst=ff:ff:ff:ff:ff:ff  |                           |        |         |         |           |           
 +-------+-------+---------------------------+---------------------------+--------+---------+--------

Metadata

Metadata

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions