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

Reply via email to