Hello Glend You can confgure a vxlan gpe transport zone using the Genius ITM rest api. That will setup the tunnel for you. I couldn't find good reference documentation for this, so my best guess for you would be to read the endpoint [1] and reuse one of the existing transport zones as the new one with a different name, appropriate tunnel type and dpns. In carbon also you need to make sure that the last SF and the traffic destination have neutron provided connectivity.
Your best option though is to use Nitrogen. There you would only need to change two configuration parameters before starting ODL: - use-of-tunnels set to true in netvirt-elanmanager-config.xml - gpe-extension-enabled to true in genius-itm-config.xml You might also be interested in taking a look into the OPNFV SFC project [2], which probably is the current main driver of OS + ODL SFC integration. And into the OPNFV XCI project [3], with which you can easily deploy a reference scenario. [1] http://{{ip}}:8181/restconf/config/itm:transport-zones/ [2] https://wiki.opnfv.org/display/sfc/Service+Function+Chaining+Home [3] http://docs.opnfv.org/en/latest/infrastructure/xci.html BR Jaime. On Wed, 2017-12-13 at 19:06 +0800, Glend REN wrote: > hi: > I have deployed the odl carbon integrated with openstack ocata and > it works well . the neutron network function is controlled by the odl > and the vm can ping with each other very well. > the environment is : > openstack controller: 192.168.100.1 > openatck compute1:192.168.100.12 > openatck compute2:192.168.100.13 > odl:192.168.100.14 > > and I boot four vms : > client: on compute1 > server:on compute1 > fw1: on compute2 > fw2: on compute2 > > now I want to create a service function chain with logical sff to > make the flow go through > client ->fw1->fw2->server > > but after my configure ,the odl genius has error > 2017-12-13 04:52:38,972 | ERROR | on-dispatcher-56 | > SfcGeniusRpcClient | 396 - org.opendaylight.sfc.genius > - 0.5.1.Carbon | > getTargetInterfaceFromGeniusRPC(GetTunnelInterfaceNameInput > [_destinationDpid=150631136117309, _sourceDpid=62195975568613, > _tunnelType=class > org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager > .rev160406.TunnelTypeVxlanGpe, augmentation=[]]) failed > > > It means the compute1 and compute2 do not have a vxlangpe tunnel. So > what should I do to solve the problem.?should I create a vxlan-gpe > port mananally? or how can I configure the vxlangpe tunnel. The > logical sff can not create the vxlanppe port automatically. > > my configure information: > def get_service_functions_uri(): > return "/restconf/config/service-function:service-functions" > > def get_service_functions_data(): > return { > "service-functions": { > "service-function": [ > { > "name": "dpi-1", > > "type": "dpi", > "sf-data-plane-locator": [ > { > "name": "dpi-1-dpl", > "interface-name":"710c4476-8bd8-4a08-aa69- > 0e66b3373d1d", > "transport": "service-locator:eth-nsh", > "service-function-forwarder": "SFF1" > } > ] > }, > { > "name": "firewall-1", > > > "type": "firewall", > "sf-data-plane-locator": [ > { > "name": "firewall-1-dpl", > "interface-name":"14ee6ffc-e4ff-4ed4-8d20- > e33a8afb5bbb", > "transport": "service-locator:eth-nsh", > "service-function-forwarder": "SFF1" > } > ] > } > ] > } > } > > def get_service_function_forwarders_uri(): > return "/restconf/config/service-function-forwarder:service- > function-forwarders" > > def get_service_function_forwarders_data(): > return { > "service-function-forwarders": { > "service-function-forwarder": [ > { > "name":"Classifier1" > }, > > { > "name": "SFF1", > > > > } > ] > } > } > > def get_service_function_chains_uri(): > return "/restconf/config/service-function-chain:service-function- > chains/" > > def get_service_function_chains_data(): > return { > "service-function-chains": { > "service-function-chain": [ > { > "name": "SFC1", > "sfc-service-function": [ > { > "name": "dpi-abstract1", > "type": "dpi" > }, > { > "name": "firewall-abstract1", > "type": "firewall" > } > ] > } > ] > } > } > > def get_service_function_paths_uri(): > return "/restconf/config/service-function-path:service-function- > paths/" > > def get_service_function_paths_data(): > return { > "service-function-paths": { > "service-function-path": [ > { > "name": "SFP1", > "service-chain-name": "SFC1", > "starting-index": 255, > "transport-type": "service-locator:vxlan-gpe", > > "symmetric": "true", > "context-metadata": "NSH1", > "service-path-hop": [ > { > "hop-number": 0, > "service-function-name": "dpi-1" > }, > { > "hop-number": 1, > "service-function-name": "firewall-1" > } > ] > } > ] > } > } > > def get_service_function_metadata_uri(): > return "/restconf/config/service-function-path-metadata:service- > function-metadata/" > > def get_service_function_metadata_data(): > return { > "service-function-metadata": { > "context-metadata": [ > { > "name": "NSH1", > "context-header1": "1", > "context-header2": "2", > "context-header3": "3", > "context-header4": "4" > } > ] > } > } > > def get_rendered_service_path_uri(): > return "/restconf/operations/rendered-service-path:create- > rendered-path/" > > def get_rendered_service_path_data(): > return { > "input": { > "name": "RSP1", > "parent-service-function-path": "SFP1" > } > } > > def get_service_function_acl_uri(): > return "/restconf/config/ietf-access-control-list:access-lists/" > > def get_service_function_acl_data(): > return { > "access-lists": { > "acl": [ > { > "acl-name": "ACL1", > "acl-type": "ietf-access-control-list:ipv4-acl", > "access-list-entries": { > "ace": [ > { > "rule-name": "ACE1", > "actions": { > "service-function-acl:rendered-service-path": "RSP1" > }, > "matches": { > "destination-ipv4-network": "10.10.5.10/32", > "source-ipv4-network": "10.10.5.8/32", > "protocol": "1" > > } > } > ] > } > }, > { > "acl-name": "ACL2", > "acl-type": "ietf-access-control-list:ipv4-acl", > "access-list-entries": { > "ace": [ > { > "rule-name": "ACE2", > "actions": { > "service-function-acl:rendered-service-path": "RSP1- > Reverse" > }, > "matches": { > "destination-ipv4-network": "10.10.5.8/32", > "source-ipv4-network": "10.10.5.10/32", > "protocol": "1" > > } > } > ] > } > } > ] > } > } > > def get_service_function_classifiers_uri(): > return "/restconf/config/service-function-classifier:service- > function-classifiers/" > > def get_service_function_classifiers_data(): > return { > "service-function-classifiers": { > "service-function-classifier": [ > { > "name": "Classifier1", > "scl-service-function-forwarder": [ > { > "name": "Classifier1", > "interface": "9027e9a7-f3eb-42d2-8fbe-ce26a02a5c78" > } > ], > "acl": { > "name": "ACL1", > "type": "ietf-access-control-list:ipv4-acl" > } > }, > { > "name": "Classifier2", > "scl-service-function-forwarder": [ > { > "name": "Classifier1", > "interface": "127cf4a4-44e6-427d-b970-8b7b1b00c85d" > } > ], > "acl": { > "name": "ACL2", > "type": "ietf-access-control-list:ipv4-acl" > } > } > ] > } > } > > > > Thanks ! > > Glend Ren > Best regards! > > > > > > _______________________________________________ > sfc-dev mailing list > [email protected] > https://lists.opendaylight.org/mailman/listinfo/sfc-dev _______________________________________________ sfc-dev mailing list [email protected] https://lists.opendaylight.org/mailman/listinfo/sfc-dev
