diff --git a/README.md b/README.md
index d7a2db2..ccf9f34 100644
--- a/README.md
+++ b/README.md
@@ -84,6 +84,7 @@
 | `WITH_ONOS`                             | yes                                                   | Deploy ONOS (yes/no) or service:port of external ONOS |
 | `WITH_KAFKA`                            | yes                                                   | Deploy private Kafka (yes/no) or k8s servce:port of external Kafka |
 | `WITH_ETCD`                             | yes                                                   | Deploy private etcd (yes/no) or k8s service:port of external etcd |
+| `WITH_TRACING`                          | no                                                    | Should Jaeger All-in-one POD be deployed for analysis of Traces? |
 | `WITH_RADIUS`                           | no                                                    | Deploy sample RADIUS server (yes/no) or a k8s service:port of external RADIUS |
 | `WITH_EAPOL`                            | no                                                    | Configure the OLT app to push EAPOL flows |
 | `WITH_DHCP`                             | no                                                    | Configure the OLT app to push DCHP flows |
@@ -119,6 +120,8 @@
 | `KIBANA_CHART_VERSION`                  | latest                                                | Version of Helm chart to install kibana |
 | `FLUENTD_ELSTICSEARCH_CHART`            | kiwigrid/fluentd-elasticsearch                        | Helm chart to use to install fluentd-elasticsearch |
 | `FLUENTD_ELASTICSEARCH_CHART_VERSION`   | latest                                                | Version of Helm chart to install fluentd-elasticsearch |
+| `VOLTHA_TRACING_CHART`                  | onf/voltha-tracing                                    | Helm chart to use to install voltha tracing |
+| `VOLTHA_TRACING_CHART_VERSION`          | latest                                                | Version of Helm chart to install voltha tracing |
 | `VOLTHA_ADAPTER_OPEN_OLT_CHART`         | onf/voltha-adapter-openolt                            | Helm chart to use to install OpenOlt adapter |
 | `VOLTHA_ADAPTER_OPEN_OLT_CHART_VERSION` | latest                                                | Version of Helm chart to install OpenOlt adapter |
 | `VOLTHA_ADAPTER_OPEN_ONU_CHART`         | onf/voltha-adapter-openonu                            | Helm chart to use to install OpenOnu adapter |
@@ -206,6 +209,13 @@
 including indexes triming. When planning to deploy an EFK stack to production you should fully understand
 the recommendations as described in the product documenation: https://www.elastic.co/guide/index.html
 
+### Jaeger Tracing Stack for analyzing Voltha Component Traces
+If Tracing is selected for deployment with VOLTHA using `WITH_TRACING=yes` option, then a single Jaeger
+all-in-one instance will be deployed using Memory as Storage backend for traces sent by Voltha conatiners.
+
+Additionally a port-forward will be established so that you can access Jaeger GUI(`16686`) from outside the
+ Kubernetes cluster using URL `http://localhost:16686`.
+
 ### Controlling VOLTHA with an ONOS cluster
 
 To provide HA, resilinecy and failover ONOS can be configured in cluster mode.
diff --git a/VERSION b/VERSION
index 4de34c3..76e9e61 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-5.1.4-dev
+5.1.4
diff --git a/values.yaml b/values.yaml
index 8d04ec9..117dc57 100644
--- a/values.yaml
+++ b/values.yaml
@@ -219,6 +219,11 @@
     hosts: ["elasticsearch-master:9200"]
     sslVerify: false
 
+# Increase maxTraces to retain Traces for longer duration
+# But tracing pod will consume more memory
+tracing:
+  maxTraces: 500000
+
 # SHOCK THE MONKEY OR LET LOSE THE DOGS OF WAR
 # The VOLTHA charts have support for adding extra labels to deployments and
 # pods. These extra labels can be used to integrate with other utilities
diff --git a/voltha b/voltha
index 41a8bc1..52a45bf 100755
--- a/voltha
+++ b/voltha
@@ -75,6 +75,7 @@
 WITH_TIMINGS=${WITH_TIMINGS:-no}
 WITH_BBSIM=${WITH_BBSIM:-no}
 WITH_EFK=${WITH_EFK:-no}
+WITH_TRACING=${WITH_TRACING:-no}
 WITH_RADIUS=${WITH_RADIUS:-no}
 WITH_EAPOL=${WITH_EAPOL:-yes}
 WITH_DHCP=${WITH_DHCP:-yes}
@@ -115,6 +116,8 @@
 KIBANA_CHART_VERSION=${KIBANA_CHART_VERSION:-latest}
 FLUENTD_ELASTICSEARCH_CHART=${FLUENTD_ELASTICSEARCH_CHART:-kiwigrid/fluentd-elasticsearch}
 FLUENTD_ELASTICSEARCH_CHART_VERSION=${FLUENTD_ELASTICSEARCH_CHART_VERSION:-latest}
+VOLTHA_TRACING_CHART=${VOLTHA_TRACING_CHART:-onf/voltha-tracing}
+VOLTHA_TRACING_CHART_VERSION=${VOLTHA_TRACING_CHART_VERSION:-latest}
 VOLTHA_ADAPTER_SIM_CHART=${VOLTHA_ADAPTER_SIM_CHART:-onf/voltha-adapter-simulated}
 VOLTHA_ADAPTER_SIM_CHART_VERSION=${VOLTHA_ADAPTER_SIM_CHART_VERSION:-latest}
 VOLTHA_ADAPTER_OPEN_OLT_CHART=${VOLTHA_ADAPTER_OPEN_OLT_CHART:-onf/voltha-adapter-openolt}
@@ -248,6 +251,7 @@
     WITH_TIMINGS \
     WITH_BBSIM \
     WITH_EFK \
+    WITH_TRACING \
     WITH_EAPOL \
     WITH_DHCP \
     WITH_IGMP \
@@ -291,6 +295,8 @@
     VOLTHA_BBSIM_CHART_VERSION \
     BBSIM_SADIS_SERVER_CHART \
     BBSIM_SADIS_SERVER_CHART_VERSION \
+    VOLTHA_TRACING_CHART \
+    VOLTHA_TRACING_CHART_VERSION \
     NUM_OF_BBSIM \
     NUM_OF_WORKER_NODES \
     NUM_OF_CONTROLLER_NODES \
@@ -331,6 +337,7 @@
     VOLTHA_PPROF_PORT \
     OPENOLT_PPROF_PORT \
     OFAGENT_PPROF_PORT \
+    TRACING_GUI_PORT \
     VK_RELEASE \
     KIND_VERSION \
     VOLTCTL_VERSION \
@@ -518,6 +525,7 @@
     OFAGENT_PPROF_PORT=${OFAGENT_PPROF_PORT:-$((60 + DELTA))62}
     ELASTICSEARCH_PORT=${ELASTICSEARCH_PORT:-$((92 + DELTA))00}
     KIBANA_PORT=${KIBANA_PORT:-$((56 + DELTA))01}
+    TRACING_GUI_PORT=${TRACING_GUI_PORT:-1$((66 + DELTA))86}
 else
     VALUES="$(echo "$HAVE" | sed -e 's/\s//g' | cut -d= -f2)"
     ONOS_API_PORT=${ONOS_API_PORT:-$(echo "$VALUES" | cut -d, -f1)}
@@ -531,6 +539,7 @@
     OFAGENT_PPROF_PORT=${OFAGENT_PPROF_PORT:-$(echo "$VALUES" | cut -d, -f9)}
     ELASTICSEARCH_PORT=${ELASTICSEARCH_PORT:-$(echo "$VALUES" | cut -d, -f10)}
     KIBANA_PORT=${KIBANA_PORT:-$(echo "$VALUES" | cut -d, -f11)}
+    TRACING_GUI_PORT=${TRACING_GUI_PORT:-$(echo "$VALUES" | cut -d, -f12)}
 
     # Some ports were added after the .voltha/ports files was created.
     # Calculate the original DELTA from the VOLTHA_SSH_PORT so that it can
@@ -554,15 +563,18 @@
     if [ -z "$ELASTICSEARCH_PORT" ]; then
         ELASTICSEARCH_PORT=${ELASTICSEARCH_PORT:-$((92 + DELTA))00}
     fi
-
     if [ -z "$KIBANA_PORT" ]; then
         KIBANA_PORT=${KIBANA_PORT:-$((56 + DELTA))01}
     fi
+
+    if [ -z "$TRACING_GUI_PORT" ]; then
+      TRACING_GUI_PORT=${TRACING_GUI_PORT:-1$((66 + DELTA))86}
+    fi
 fi
 
 PORTTMP="$(mktemp -u)"
 grep -v "$NAME" .voltha/ports > "$PORTTMP"
-echo "$NAME=$ONOS_API_PORT,$ONOS_SSH_PORT,$VOLTHA_API_PORT,$VOLTHA_SSH_PORT,$VOLTHA_ETCD_PORT,$VOLTHA_KAFKA_PORT,$VOLTHA_PPROF_PORT,$OPENOLT_PPROF_PORT,$OFAGENT_PPROF_PORT,$ELASTICSEARCH_PORT,$KIBANA_PORT" >> "$PORTTMP"
+echo "$NAME=$ONOS_API_PORT,$ONOS_SSH_PORT,$VOLTHA_API_PORT,$VOLTHA_SSH_PORT,$VOLTHA_ETCD_PORT,$VOLTHA_KAFKA_PORT,$VOLTHA_PPROF_PORT,$OPENOLT_PPROF_PORT,$OFAGENT_PPROF_PORT,$ELASTICSEARCH_PORT,$KIBANA_PORT,$TRACING_GUI_PORT" >> "$PORTTMP"
 cp "$PORTTMP" .voltha/ports
 rm -f "$PORTTMP"
 
@@ -999,6 +1011,10 @@
     done
 }
 
+resolve_chart_name() {
+    helm inspect chart "$1" | grep "^name:" | awk '{print $2}'
+}
+
 resolve_chart_version() {
     [ "$2" != "latest" ] && echo "$2" && return
     helm inspect chart "$1" | grep "^version:" | awk '{print $2}'
@@ -1047,6 +1063,12 @@
         fi
     fi
 
+    if [ "$WITH_TRACING" == "yes" ]; then
+        sspin "Remove port-forwards: tracing-$NAME$CEOL"
+        VOLTHA_TRACING_CHART_NAME=$(resolve_chart_name "$VOLTHA_TRACING_CHART")
+        kill_port_forward "tracing-${VOLTHA_TRACING_CHART_NAME}-jaeger-gui"
+    fi
+
     espin "$VERIFIED Remove port-forwards$CEOL"
     if [ "$DEPLOY_K8S" == "yes" ]; then
         if [ -x ./bin/kind ]; then
@@ -1084,6 +1106,9 @@
         if [ "$WITH_EFK" == "yes" ]; then
             EXPECT+=" elasticsearch kibana fluentd"
         fi
+        if [ "$WITH_TRACING" == "yes" ]; then
+            EXPECT+=" tracing"
+        fi
         if [ "$WITH_OPEN_ADAPTERS" == "yes" ]; then
             EXPECT+=" open-olt open-onu"
         fi
@@ -1130,6 +1155,9 @@
             if [ "$WITH_OPEN_ADAPTERS" ] || [ "$WITH_SIM_ADAPTERS" ]; then
                 ADAPT_PODS+=" adapter-*"
             fi
+            if [ "$WITH_TRACING" == "yes" ]; then
+                INFRA_PODS+=" jaeger.*"
+            fi
             if is_in "$WITH_ONOS" "yes,legacy,classic"; then
                 INFRA_PODS+=" onos-.*"
             fi
@@ -1224,7 +1252,7 @@
 LOG="install-$NAME.log"
 PFLOG="port-forward-$NAME.log"
 date > "$LOG"
-echo "PORTS=$ONOS_API_PORT,$ONOS_SSH_PORT,$VOLTHA_API_PORT,$VOLTHA_SSH_PORT,$VOLTHA_ETCD_PORT,$ELASTICSEARCH_PORT,$KIBANA_PORT" >> "$LOG"
+echo "PORTS=$ONOS_API_PORT,$ONOS_SSH_PORT,$VOLTHA_API_PORT,$VOLTHA_SSH_PORT,$VOLTHA_ETCD_PORT,$VOLTHA_KAFKA_PORT,$VOLTHA_PPROF_PORT,$OPENOLT_PPROF_PORT,$OFAGENT_PPROF_PORT,$ELASTICSEARCH_PORT,$KIBANA_PORT,$TRACING_GUI_PORT" >> "$LOG"
 
 # Output install options to log
 echo "OPTIONS" >> "$LOG"
@@ -1735,6 +1763,7 @@
 # Resolve chart versions and log them for debug/support
 RESOLVED_VOLTHA_CHART_VERSION=$(resolve_chart_version "$VOLTHA_CHART" "$VOLTHA_CHART_VERSION")
 RESOLVED_VOLTHA_BBSIM_CHART_VERSION=$(resolve_chart_version "$VOLTHA_BBSIM_CHART" "$VOLTHA_BBSIM_CHART_VERSION")
+RESOLVED_VOLTHA_TRACING_CHART_VERSION=$(resolve_chart_version "$VOLTHA_TRACING_CHART" "$VOLTHA_TRACING_CHART_VERSION")
 RESOLVED_VOLTHA_ADAPTER_SIM_CHART_VERSION=$(resolve_chart_version "$VOLTHA_ADAPTER_SIM_CHART" "$VOLTHA_ADAPTER_SIM_CHART_VERSION")
 RESOLVED_VOLTHA_ADAPTER_OPEN_OLT_CHART_VERSION=$(resolve_chart_version "$VOLTHA_ADAPTER_OPEN_OLT_CHART" "$VOLTHA_ADAPTER_OPEN_OLT_CHART_VERSION")
 RESOLVED_VOLTHA_ADAPTER_OPEN_ONU_CHART_VERSION=$(resolve_chart_version "$VOLTHA_ADAPTER_OPEN_ONU_CHART" "$VOLTHA_ADAPTER_OPEN_ONU_CHART_VERSION")
@@ -1750,6 +1779,7 @@
 Resolved helm charts and versions:
     $VOLTHA_CHART:$RESOLVED_VOLTHA_CHART_VERSION
     $VOLTHA_BBSIM_CHART:$RESOLVED_VOLTHA_BBSIM_CHART_VERSION
+    $VOLTHA_TRACING_CHART:$RESOLVED_VOLTHA_TRACING_CHART_VERSION
     $VOLTHA_ADAPTER_SIM_CHART:$RESOLVED_VOLTHA_ADAPTER_SIM_CHART_VERSION
     $VOLTHA_ADAPTER_OPEN_OLT_CHART:$RESOLVED_VOLTHA_ADAPTER_OPEN_OLT_CHART_VERSION
     $VOLTHA_ADAPTER_OPEN_ONU_CHART:$RESOLVED_VOLTHA_ADAPTER_OPEN_ONU_CHART_VERSION
@@ -2118,6 +2148,24 @@
     rm -rf "$_TMP"
 fi
 
+if [ "$WITH_TRACING" == "yes" ]; then
+    STIME="$(date +%s)"
+    echo -e "Verify Jaeger Tracing $PLUG"
+    bspin - "Verify Jaeger Tracing Installed"
+    if [ "$HELM_USE_UPGRADE" == "yes" ] || [ "$(helm_is_deployed "$INFRA_NS" "^tracing\$")" -ne 1 ]; then
+        espin - "$NOT_VERIFIED"
+        INTERNAL_EXTRA_HELM_INSTALL_ARGS=
+        helm_install - "$INFRA_NS" tracing "$VOLTHA_TRACING_CHART" "$VOLTHA_TRACING_CHART_VERSION" tracing "$_HELM_DESC Jaeger Tracing"
+    else
+        espin - "$VERIFIED"
+    fi
+    wait_for_pods - "$INFRA_NS" 1 "includes" "Waiting for Jaeger Tracing to start" "$NO_LABEL" "jaeger*"
+    if [ "$WITH_TIMINGS" == "yes" ]; then
+        NOW="$(date +%s)"
+        printtime $((NOW - STIME))
+    fi
+fi
+
 STIME="$(date +%s)"
 EXPECT=2
 # therecanbeonlyone set hardcoded to true for backward compatibility
@@ -2182,6 +2230,13 @@
     INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set services.controller.address=$_HOST:$_PORT"
 fi
 
+if [ "$WITH_TRACING" == "yes" ]; then
+    VOLTHA_TRACING_CHART_NAME=$(resolve_chart_name "$VOLTHA_TRACING_CHART")
+    _HOST="tracing-${VOLTHA_TRACING_CHART_NAME}-jaeger-agent.$INFRA_NS.svc"
+    _PORT=6831
+    INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set tracing.enabled=true --set services.tracing_agent.address=$_HOST:$_PORT"
+fi
+
 bspin "Verify VOLTHA installed $HIGH_VOLTAGE"
 if [ "$HELM_USE_UPGRADE" == "yes" ] || [ "$(helm_is_deployed "$VOLTHA_NS" "^voltha\$")" -ne 1 ]; then
     espin "$NOT_VERIFIED"
@@ -2227,6 +2282,12 @@
         INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set kafka_broker=$_HOST:$_PORT --set services.kafka.adapter.service=$_HOST --set services.kafka.adapter.port=$_PORT --set services.kafka.cluster.service=$_HOST --set services.kafka.cluster.port=$_PORT"
         INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set services.kafka.adapter.address=$_HOST:$_PORT --set services.kafka.cluster.address=$_HOST:$_PORT"
     fi
+    if [ "$WITH_TRACING" == "yes" ]; then
+        VOLTHA_TRACING_CHART_NAME=$(resolve_chart_name "$VOLTHA_TRACING_CHART")
+        _HOST="tracing-${VOLTHA_TRACING_CHART_NAME}-jaeger-agent.$INFRA_NS.svc"
+        _PORT=6831
+        INTERNAL_EXTRA_HELM_INSTALL_ARGS+=" --set tracing.enabled=true --set services.tracing_agent.address=$_HOST:$_PORT"
+    fi
     echo -e "Verify Adapters $PLUG"
     if [ "$WITH_SIM_ADAPTERS" == "yes" ]; then
         bspin - "Verify Simulated Adapters installed"
@@ -2482,6 +2543,13 @@
         port_forward "$VOLTHA_NS" "${VOLTHA_PREFIX}voltha-of-agent-profiler" "$OFAGENT_PPROF_PORT:6060"
         espin - "$VERIFIED"
     fi
+    if [ "$WITH_TRACING" == "yes" ]; then
+        bspin - "Forward VOLTHA Tracing GUI port $FORWARD"
+        VOLTHA_TRACING_CHART_NAME=$(resolve_chart_name "$VOLTHA_TRACING_CHART")
+        kill_port_forward "tracing-${VOLTHA_TRACING_CHART_NAME}-jaeger-gui"
+        port_forward "$INFRA_NS" "tracing-${VOLTHA_TRACING_CHART_NAME}-jaeger-gui" "$TRACING_GUI_PORT:16686"
+        espin - "$VERIFIED"
+    fi
     if [ "$WITH_TIMINGS" == "yes" ]; then
         NOW="$(date +%s)"
         printtime $((NOW - STIME))
