Class PmooAnalysis

    • Constructor Detail

      • PmooAnalysis

        private PmooAnalysis()
      • PmooAnalysis

        public PmooAnalysis​(ServerGraph server_graph)
    • Method Detail

      • getServiceCurve

        public static ServiceCurve getServiceCurve​(Path path,
                                                   java.util.List<Flow> cross_flow_substitutes)
        Concatenates the service curves along the given path path according to the PMOO approach and returns the result.

        It first decomposes all arrival curves (service curves) into token buckets (rate latency curves), enumerates over all combinations of token buckets and rate latency curves, and calls computePartialPMOOServiceCurve() for each combination. The total PMOO service curve is the maximum of all partial service curves.

        Parameters:
        path - The Path traversed for which a PMOO left-over service curve will be computed.
        cross_flow_substitutes - Flow substitutes according to PMOO's needs and abstracting from the actual cross-flows.
        Returns:
        The PMOO service curve
      • computePartialPMOOServiceCurve

        protected static ServiceCurve computePartialPMOOServiceCurve​(Path path,
                                                                     ServiceCurve[] service_curves,
                                                                     java.util.List<Flow> cross_flow_substitutes,
                                                                     java.util.Map<Flow,​java.lang.Integer> flow_tb_iter_map,
                                                                     int[] server_rl_iters)
        Calculates the partial PMOO service curve for the given flow set by combining all servers having an outgoing turn contained in the given turn path. For each flow considers only one of its token bucket components (selected via the flow_tb_iter_map) and for each service curve considers only one rate latency curve (selected via the server_rl_iters).
        Parameters:
        path - The tandem of servers the left-over service curve holds for.
        service_curves - The service curves on the path.
        cross_flow_substitutes - Flows representing a group of segregated flows.
        flow_tb_iter_map - Defines which token bucket component of a flow's arrival bound to use.
        server_rl_iters - Defines which rate latency component of a server's service curve to use.
        Returns:
        A partial PMOO service curve.
      • performAnalysis

        public void performAnalysis​(Flow flow_of_interest)
                             throws java.lang.Exception
        Performs a pay-multiplexing-only-once (PMOO) analysis for the flow_of_interest.
        Parameters:
        flow_of_interest - the flow for which the end-to-end service curve shall be computed.
        Throws:
        java.lang.Exception
      • performAnalysis

        public void performAnalysis​(Flow flow_of_interest,
                                    Path path)
                             throws java.lang.Exception
        Throws:
        java.lang.Exception
      • getServiceCurves

        public java.util.Set<ServiceCurve> getServiceCurves​(Flow flow_of_interest,
                                                            Path path,
                                                            java.util.Set<Flow> flows_to_serve)
                                                     throws java.lang.Exception
        Throws:
        java.lang.Exception
      • getServiceCurvesFP

        private java.util.Set<ServiceCurve> getServiceCurvesFP​(Flow flow_of_interest,
                                                               Path path,
                                                               java.util.Set<Flow> flows_to_serve)
                                                        throws java.lang.Exception
        Throws:
        java.lang.Exception
      • getProlongationsToSubpaths

        private java.util.Map<java.util.Set<Flow>,​java.util.LinkedList<Path>> getProlongationsToSubpaths​(Path path,
                                                                                                               java.util.Map<Path,​java.util.Set<Flow>> xtx_subpath_grouped_original)
                                                                                                        throws java.lang.Exception
        Throws:
        java.lang.Exception
      • getServiceCurvesStandard

        private java.util.Set<ServiceCurve> getServiceCurvesStandard​(Flow flow_of_interest,
                                                                     Path path,
                                                                     java.util.Set<Flow> flows_to_serve)
                                                              throws java.lang.Exception
        Throws:
        java.lang.Exception
      • xtxSubpathBetas

        private java.util.Set<ServiceCurve> xtxSubpathBetas​(Flow flow_of_interest,
                                                            Path path,
                                                            java.util.Map<Path,​java.util.Set<Flow>> xtx_subpath_grouped)
                                                     throws java.lang.Exception
        Throws:
        java.lang.Exception
      • getLeftOverServiceCurves

        public java.util.Set<ServiceCurve> getLeftOverServiceCurves()