public class VpnServiceChainUtils extends Object
Constructor and Description |
---|
VpnServiceChainUtils() |
Modifier and Type | Method and Description |
---|---|
static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.servicebinding.rev160406.service.bindings.services.info.BoundServices> |
buildBoundServicesIid(short servicePrio,
String ifaceName) |
static org.opendaylight.genius.mdsalutil.FlowEntity |
buildLFibVpnPseudoPortFlow(BigInteger dpId,
Long label,
String nextHop,
int lportTag)
Builds a Flow for the LFIB table that sets the LPortTag of the
VpnPseudoPort and sends to LPortDispatcher table.
|
static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow |
buildLPortDispFlowForVpntoVpn(Integer dstLportTag,
Integer vpnTag)
Creates a Flow that does the trick of moving the packets from one VPN to
another VPN.
|
static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow |
buildLPortDispFromScfToL3VpnFlow(Long vpnId,
BigInteger dpId,
Integer lportTag,
int addOrRemove)
Build the flow that must be inserted when there is a ScHop whose
egressPort is a VPN Pseudo Port.
|
static org.opendaylight.genius.mdsalutil.FlowEntity |
buildLportFlowDispForVpnToScf(BigInteger dpId,
int lportTag,
long scfTag,
short gotoTableId)
Creates the flow that sends the packet from the VPN to the SCF pipeline.
|
static List<org.opendaylight.genius.mdsalutil.MatchInfo> |
buildMatchOnLportTagAndSI(Integer lportTag,
short serviceIndex)
Builds the Match for flows that must match on a given lportTag and
serviceIndex.
|
static List<org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction> |
buildSetVrfTagAndGotoFibInstructions(Integer vpnTag)
Builds a The Instructions that sets the VpnTag in metadata and sends to
FIB table.
|
static String |
buildVpnPseudoPortIfName(Long dpId,
long scfTag,
int scsTag,
int lportTag)
Get fake VPNPseudoPort interface name.
|
static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<VrfTables> |
buildVrfId(String rd) |
static List<String> |
getAllVpnIfaceNames(org.opendaylight.controller.md.sal.binding.api.DataBroker dataBroker,
String vpnName) |
static List<VpnToPseudoPortData> |
getAllVpnToPseudoPortData(org.opendaylight.controller.md.sal.binding.api.DataBroker broker) |
static List<VrfEntry> |
getAllVrfEntries(org.opendaylight.controller.md.sal.binding.api.DataBroker broker,
String rd)
Returns all the VrfEntries that belong to a given VPN.
|
static BigInteger |
getCookieL3(int vpnId) |
static String |
getL3VpnToScfLportDispatcherFlowRef(Integer lportTag)
Id for the Flow that is inserted in LPortDispatcher table that is in
charge of delivering packets from the L3VPN to the SCF Pipeline.
|
static BigInteger |
getMetadataSCF(long scfTag) |
static String |
getScfToL3VpnLportDispatcherFlowRef(Integer lportTag)
Builds an identifier for the flow that is inserted in LPortDispatcher
table and that is in charge of handling packets that are delivered from
the SCF to the L3VPN Pipeline.
|
static long |
getVpnId(org.opendaylight.controller.md.sal.binding.api.DataBroker broker,
String vpnName)
Retrieves the VpnId (datapath id) searching by VpnInstanceName.
|
static com.google.common.base.Optional<VpnInstanceOpDataEntry> |
getVpnInstanceOpData(org.opendaylight.controller.md.sal.binding.api.DataBroker broker,
String rd)
Retrieves from MDSAL the Operational Data of the VPN specified by its
Route-Distinguisher.
|
static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<VpnInstanceOpDataEntry> |
getVpnInstanceOpDataIdentifier(String rd) |
static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<VpnInstance> |
getVpnInstanceToVpnIdIdentifier(String vpnName) |
static com.google.common.base.Optional<Long> |
getVpnPseudoLportTag(org.opendaylight.controller.md.sal.binding.api.DataBroker broker,
String rd) |
static com.google.common.base.Optional<VpnToPseudoPortData> |
getVpnPseudoPortData(org.opendaylight.controller.md.sal.binding.api.DataBroker broker,
String rd) |
static String |
getVpnRd(org.opendaylight.controller.md.sal.binding.api.DataBroker broker,
String vpnName)
Retrieves the VPN's Route Distinguisher out from the VpnName.
|
static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<VpnToDpnList> |
getVpnToDpnListIdentifier(String rd,
BigInteger dpnId) |
static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<VpnToPseudoPortData> |
getVpnToPseudoPortTagIid(String rd) |
static void |
programLFibEntriesForSCF(org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager mdsalMgr,
BigInteger dpId,
List<VrfEntry> vrfEntries,
int lportTag,
int addOrRemove)
Modifies the LFIB table by adding/removing flows that redirects traffic
from a VPN into the SCF via the VpnPseudoLport.
|
static void |
programLPortDispatcherFlowForScfToVpn(org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager mdsalManager,
long vpnId,
BigInteger dpId,
Integer vpnPseudoLportTag,
int addOrRemove)
Installs/removes a flow in LPortDispatcher table that is in charge of
handling packets that falls back from SCF Pipeline to L3Vpn.
|
static void |
programLPortDispatcherFlowForVpnToScf(org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager mdsalManager,
BigInteger dpId,
int lportTag,
long scfTag,
short gotoTableId,
int addOrRemove)
Installs/removes a flow in LPortDispatcher table that is in charge
of sending the traffic to the SCF Pipeline.
|
public static BigInteger getMetadataSCF(long scfTag)
public static BigInteger getCookieL3(int vpnId)
public static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<VpnInstanceOpDataEntry> getVpnInstanceOpDataIdentifier(String rd)
public static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.servicebinding.rev160406.service.bindings.services.info.BoundServices> buildBoundServicesIid(short servicePrio, String ifaceName)
public static com.google.common.base.Optional<VpnInstanceOpDataEntry> getVpnInstanceOpData(org.opendaylight.controller.md.sal.binding.api.DataBroker broker, String rd)
rd
- Route-Distinguisher of the VPNpublic static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<VrfTables> buildVrfId(String rd)
public static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<VpnToDpnList> getVpnToDpnListIdentifier(String rd, BigInteger dpnId)
public static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<VpnInstance> getVpnInstanceToVpnIdIdentifier(String vpnName)
public static org.opendaylight.yangtools.yang.binding.InstanceIdentifier<VpnToPseudoPortData> getVpnToPseudoPortTagIid(String rd)
public static com.google.common.base.Optional<VpnToPseudoPortData> getVpnPseudoPortData(org.opendaylight.controller.md.sal.binding.api.DataBroker broker, String rd)
public static List<VpnToPseudoPortData> getAllVpnToPseudoPortData(org.opendaylight.controller.md.sal.binding.api.DataBroker broker)
public static String buildVpnPseudoPortIfName(Long dpId, long scfTag, int scsTag, int lportTag)
dpId
- Dpn IdscfTag
- Service Function tagscsTag
- Service Chain taglportTag
- Lport tagpublic static long getVpnId(org.opendaylight.controller.md.sal.binding.api.DataBroker broker, String vpnName)
broker
- Reference to the MDSAL Databroker servicevpnName
- The Vpn instance namepublic static String getVpnRd(org.opendaylight.controller.md.sal.binding.api.DataBroker broker, String vpnName)
broker
- Reference to the MDSAL Databroker servicevpnName
- The Vpn Instance Name. Typically the UUID.public static List<VrfEntry> getAllVrfEntries(org.opendaylight.controller.md.sal.binding.api.DataBroker broker, String rd)
broker
- Reference to the MDSAL Databroker servicerd
- Route-distinguisher of the VPNpublic static void programLPortDispatcherFlowForScfToVpn(org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager mdsalManager, long vpnId, BigInteger dpId, Integer vpnPseudoLportTag, int addOrRemove)
mdsalManager
- MDSAL Util API accessorvpnId
- Dataplane identifier of the VPN, the Vrf Tag.dpId
- The DPN where the flow must be installed/removedvpnPseudoLportTag
- Dataplane identifier for the VpnPseudoPortaddOrRemove
- States if the flow must be created or removedpublic static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow buildLPortDispFromScfToL3VpnFlow(Long vpnId, BigInteger dpId, Integer lportTag, int addOrRemove)
Flow matches: VpnPseudo port lPortTag + SI=L3VPN Actions: Write vrfTag in Metadata + goto FIB Table
vpnId
- Dataplane identifier of the VPN, the Vrf Tag.dpId
- The DPN where the flow must be installed/removedlportTag
- Dataplane identifier for the VpnPseudoPortaddOrRemove
- States if it must build a Flow to be created or
removedpublic static List<org.opendaylight.genius.mdsalutil.MatchInfo> buildMatchOnLportTagAndSI(Integer lportTag, short serviceIndex)
public static List<org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction> buildSetVrfTagAndGotoFibInstructions(Integer vpnTag)
vpnTag
- Dataplane identifier of the VPN.public static org.opendaylight.genius.mdsalutil.FlowEntity buildLFibVpnPseudoPortFlow(BigInteger dpId, Long label, String nextHop, int lportTag)
dpId
- DpnIdlabel
- MPLS labelnextHop
- Next Hop IPlportTag
- Pseudo Logical Port tagpublic static void programLFibEntriesForSCF(org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager mdsalMgr, BigInteger dpId, List<VrfEntry> vrfEntries, int lportTag, int addOrRemove)
public static void programLPortDispatcherFlowForVpnToScf(org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager mdsalManager, BigInteger dpId, int lportTag, long scfTag, short gotoTableId, int addOrRemove)
public static org.opendaylight.genius.mdsalutil.FlowEntity buildLportFlowDispForVpnToScf(BigInteger dpId, int lportTag, long scfTag, short gotoTableId)
public static com.google.common.base.Optional<Long> getVpnPseudoLportTag(org.opendaylight.controller.md.sal.binding.api.DataBroker broker, String rd)
public static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow buildLPortDispFlowForVpntoVpn(Integer dstLportTag, Integer vpnTag)
public static String getL3VpnToScfLportDispatcherFlowRef(Integer lportTag)
public static String getScfToL3VpnLportDispatcherFlowRef(Integer lportTag)
Copyright © 2018 OpenDaylight. All rights reserved.