If more than one SF is attached to single SFF and SFC is setup with one or more of those SFs, Rendered service Path is setting the same SFF locator for all hops. It seems to choose SFF locator of first SF in the SF dictionary of SFF for all hops.
Example,
Lets say there are 3 SFs, SF1, SF2, SF3 all attached to single SFF, SFF1.
Setup SFC with SF1->SF2-SF3, create SFP (round robin Sched) and RSP.
The RSP shows service-function-forwarder-locator: SFF1-2-dpl for all the hops.
Configuration Details below
--------------------------------
Service-Nodes
----------
{
"service-nodes": {
"service-node": [
,
,
,
,
,
{ "name": "Node06-SN-SF1", "ip-mgmt-address": "172.16.9.33" } ]
}
}
-----------------
Service Function
{
"service-functions": {
"service-function": [
{
"name": "SF3",
"sf-data-plane-locator": [
],
"nsh-aware": true,
"rest-uri": "http://172.16.9.53:5000",
"ip-mgmt-address": "172.16.9.53",
"type": "nat"
},
{
"name": "SF1",
"sf-data-plane-locator": [
],
"nsh-aware": true,
"rest-uri": "http://172.16.9.33:5000",
"ip-mgmt-address": "172.16.9.33",
"type": "dpi"
},
{
"name": "SF2",
"sf-data-plane-locator": [
],
"nsh-aware": true,
"rest-uri": "http://172.16.9.43:5000",
"ip-mgmt-address": "172.16.9.43",
"type": "firewall"
}
]
}
}
-----------------
service function forwarder
{
"service-function-forwarders": {
"service-function-forwarder": [
{
"name": "Node05-SFF1",
"service-node": "Node05-SN-Client",
"sff-data-plane-locator": [
{
"name": "Node05-SFF1-1-dpl",
"data-plane-locator":
,
"service-function-forwarder-ovs:ovs-options":
}
],
"service-function-forwarder-ovs:ovs-bridge":
},
{
"name": "Node06-SFF1",
"service-function-dictionary": [
{
"name": "SF2",
"sff-sf-data-plane-locator":
},
{
"name": "SF3",
"sff-sf-data-plane-locator":
},
{
"name": "SF1",
"sff-sf-data-plane-locator":
}
],
"service-node": "Node06-SN-SFF",
"sff-data-plane-locator": [
{
"name": "Node06-SFF1-2-dpl",
"data-plane-locator":
,
"service-function-forwarder-ovs:ovs-options":
},
{
"name": "Node06-SFF1-3-dpl",
"data-plane-locator":
,
"service-function-forwarder-ovs:ovs-options":
},
{
"name": "Node06-SFF1-1-dpl",
"data-plane-locator":
,
"service-function-forwarder-ovs:ovs-options":
}
],
"service-function-forwarder-ovs:ovs-bridge":
},
{
"name": "Node05-SFF2",
"service-node": "Node05-SN-Server",
"sff-data-plane-locator": [
{
"name": "Node05-SFF2-1-dpl",
"data-plane-locator":
,
"service-function-forwarder-ovs:ovs-options":
}
],
"service-function-forwarder-ovs:ovs-bridge":
}
]
}
}
-----------------
service function chain
{
"service-function-chains": {
"service-function-chain": [
{
"name": "Node06-SFC1",
"symmetric": true,
"sfc-service-function": [
,
{ "name": "SF2", "type": "firewall" } ]
},
{
"name": "Node06-SFC2",
"symmetric": true,
"sfc-service-function": [
,
,
{ "name": "SF3", "type": "nat" } ]
}
]
}
}
-----------
service function path
{
"service-function-paths": {
"service-function-path": [
,
{ "name": "Node06-SFC2-SFP", "context-metadata": "NSH1", "symmetric": true, "service-chain-name": "Node06-SFC2", "starting-index": 255 } ]
}
}
--------------
Rendered Service Path
{
"rendered-service-paths": {
"rendered-service-path": [
{
"name": "RSP-Node06-SFC1",
"service-chain-name": "Node06-SFC1",
"transport-type": "service-locator:vxlan-gpe",
"symmetric-path-id": 8389162,
"starting-index": 255,
"path-id": 554,
"parent-service-function-path": "Node06-SFC1-SFP",
"context-metadata": "NSH1",
"rendered-service-path-hop": [
,
{ "hop-number": 1, "service-function-forwarder": "Node06-SFF1", "service-function-forwarder-locator": "Node06-SFF1-2-dpl", "service-index": 254, "service-function-name": "SF2" } ]
},
{
"name": "RSP-Node06-SFC2-Reverse",
"service-chain-name": "Node06-SFC2",
"transport-type": "service-locator:vxlan-gpe",
"symmetric-path-id": 590,
"starting-index": 255,
"path-id": 8389198,
"parent-service-function-path": "Node06-SFC2-SFP",
"context-metadata": "NSH1",
"rendered-service-path-hop": [
,
,
{ "hop-number": 2, "service-function-forwarder": "Node06-SFF1", "service-function-forwarder-locator": "Node06-SFF1-2-dpl", "service-index": 253, "service-function-name": "SF1" } ]
},
{
"name": "RSP-Node06-SFC2",
"service-chain-name": "Node06-SFC2",
"transport-type": "service-locator:vxlan-gpe",
"symmetric-path-id": 8389198,
"starting-index": 255,
"path-id": 590,
"parent-service-function-path": "Node06-SFC2-SFP",
"context-metadata": "NSH1",
"rendered-service-path-hop": [
,
,
{ "hop-number": 2, "service-function-forwarder": "Node06-SFF1", "service-function-forwarder-locator": "Node06-SFF1-2-dpl", "service-index": 253, "service-function-name": "SF3" } ]
},
{
"name": "RSP-Node06-SFC1-Reverse",
"service-chain-name": "Node06-SFC1",
"transport-type": "service-locator:vxlan-gpe",
"symmetric-path-id": 554,
"starting-index": 255,
"path-id": 8389162,
"parent-service-function-path": "Node06-SFC1-SFP",
"context-metadata": "NSH1",
"rendered-service-path-hop": [
,
{ "hop-number": 1, "service-function-forwarder": "Node06-SFF1", "service-function-forwarder-locator": "Node06-SFF1-2-dpl", "service-index": 254, "service-function-name": "SF1" } ]
}
]
}
}
--------------