diff --git a/src/test/setup/cord-test.py b/src/test/setup/cord-test.py
index 854c007..6f4257e 100755
--- a/src/test/setup/cord-test.py
+++ b/src/test/setup/cord-test.py
@@ -126,6 +126,8 @@
     @classmethod
     def build_image(cls, image):
         print('Building test container docker image %s' %image)
+        ovs_version = '2.5.0'
+        image_format = (ovs_version,)*4
         dockerfile = '''
 FROM ubuntu:14.04
 MAINTAINER chetan@ciena.com
@@ -135,9 +137,9 @@
 RUN apt-get -y install openvswitch-common openvswitch-switch
 RUN mkdir -p /root/ovs
 WORKDIR /root
-RUN wget http://openvswitch.org/releases/openvswitch-2.4.0.tar.gz -O /root/ovs/openvswitch-2.4.0.tar.gz && \
-(cd /root/ovs && tar zxpvf openvswitch-2.4.0.tar.gz && \
- cd openvswitch-2.4.0 && \
+RUN wget http://openvswitch.org/releases/openvswitch-{}.tar.gz -O /root/ovs/openvswitch-{}.tar.gz && \
+(cd /root/ovs && tar zxpvf openvswitch-{}.tar.gz && \
+ cd openvswitch-{} && \
  ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-ssl && make && make install)
 RUN service openvswitch-switch restart || /bin/true
 RUN apt-get -y install python-twisted python-sqlite sqlite3 python-pexpect telnet
@@ -154,7 +156,7 @@
 RUN mv /usr/sbin/tcpdump /sbin/
 RUN ln -sf /sbin/tcpdump /usr/sbin/tcpdump
 CMD ["/bin/bash"]
-'''
+'''.format(*image_format)
         super(CordTester, cls).build_image(dockerfile, image)
         print('Done building docker image %s' %image)
 
diff --git a/src/test/vrouter/vrouterTest.py b/src/test/vrouter/vrouterTest.py
index e4778fe..c1b77e8 100644
--- a/src/test/vrouter/vrouterTest.py
+++ b/src/test/vrouter/vrouterTest.py
@@ -14,6 +14,13 @@
 import json
 log.setLevel('INFO')
 
+class QuaggaStopWrapper(Container):
+
+    def __init__(self, name = 'cord-quagga', image = 'cord-test/quagga', tag = 'latest'):
+        super(QuaggaStopWrapper, self).__init__(name, image, tag = tag)
+        if self.exists():
+            self.kill()
+
 class vrouter_exchange(unittest.TestCase):
 
     apps = ('org.onosproject.vrouter', 'org.onosproject.fwd')
@@ -269,15 +276,17 @@
         cls.start_quagga(networks = networks)
         return vrouter_configs
     
-    def vrouter_port_send_recv(self, ingress, egress, dst_mac, dst_ip):
+    def vrouter_port_send_recv(self, ingress, egress, dst_mac, dst_ip, positive_test = True):
         src_mac = '00:00:00:00:00:02'
         src_ip = '1.1.1.1'
-        self.success = False
+        self.success = False if positive_test else True
+        timeout = 5 if positive_test else 1
+        count = 2 if positive_test else 1
         def recv_task():
             def recv_cb(pkt):
                 log.info('Pkt seen with ingress ip %s, egress ip %s' %(pkt[IP].src, pkt[IP].dst))
-                self.success = True
-            sniff(count=2, timeout=5, 
+                self.success = True if positive_test else False
+            sniff(count=count, timeout=timeout,
                   lfilter = lambda p: IP in p and p[IP].dst == dst_ip and p[IP].src == src_ip,
                   prn = recv_cb, iface = self.port_map[ingress])
 
@@ -292,25 +301,26 @@
         t.join()
         assert_equal(self.success, True)
 
-    def vrouter_traffic_verify(self):
+    def vrouter_traffic_verify(self, positive_test = True):
         peers = len(self.peer_list)
         egress = peers + 1
         num = 0
+        num_hosts = 5 if positive_test else 1
         for network in self.network_list:
-            num_ips = 5
+            num_ips = num_hosts
             octets = network.split('.')
             for i in xrange(num_ips):
                 octets[-1] = str(int(octets[-1]) + 1)
                 dst_ip = '.'.join(octets)
-                dst_mac = self.peer_list[ num % peers ] [1] #'00:00:00:00:00:01'
+                dst_mac = self.peer_list[ num % peers ] [1]
                 port = (num % peers)
                 ingress = port + 1
                 #Since peers are on the same network
                 ##Verify if flows are setup by sending traffic across
-                self.vrouter_port_send_recv(ingress, egress, dst_mac, dst_ip)
+                self.vrouter_port_send_recv(ingress, egress, dst_mac, dst_ip, positive_test = positive_test)
             num += 1
     
-    def __vrouter_network_verify(self, networks, peers = 1):
+    def __vrouter_network_verify(self, networks, peers = 1, positive_test = True):
         _, ports_map, egress_map = self.vrouter_configure(networks = networks, peers = peers)
         self.cliEnter()
         ##Now verify
@@ -324,10 +334,30 @@
         #log.info('Flows: %s' %flows)
         assert_not_equal(len(flows), 0)
         self.vrouter_traffic_verify()
+        if positive_test is False:
+            self.__vrouter_network_verify_negative(networks, peers = peers)
         self.cliExit()
         self.vrouter_host_unload()
         return True
 
+    def __vrouter_network_verify_negative(self, networks, peers = 1):
+        ##Stop quagga. Test traffic again to see if flows were removed
+        log.info('Stopping Quagga container')
+        quaggaStop = QuaggaStopWrapper()
+        time.sleep(2)
+        routes = json.loads(self.cli.routes(jsonFormat = True))
+        #Verify routes have been removed
+        if routes and routes.has_key('routes4'):
+            assert_equal(len(routes['routes4']), 0)
+        self.vrouter_traffic_verify(positive_test = False)
+        log.info('OVS flows have been removed successfully after Quagga was stopped')
+        self.start_quagga(networks = networks)
+        ##Verify the flows again after restarting quagga back
+        routes = json.loads(self.cli.routes(jsonFormat = True))
+        assert_equal(len(routes['routes4']), networks)
+        self.vrouter_traffic_verify()
+        log.info('OVS flows have been successfully reinstalled after Quagga was restarted')
+
     def test_vrouter_1(self):
         '''Test vrouter with 5 routes'''
         res = self.__vrouter_network_verify(5, peers = 1)
@@ -389,3 +419,11 @@
         '''Test vrouter with 1000000 routes'''
         res = self.__vrouter_network_verify(1000000, peers = 1)
         assert_equal(res, True)
+
+    def test_vrouter_13(self):
+        '''Test vrouter by installing 5 routes, removing Quagga and re-starting Quagga back'''
+        res = self.__vrouter_network_verify(5, peers = 1, positive_test = False)
+
+    def test_vrouter_14(self):
+        '''Test vrouter by installing 50 routes, removing Quagga and re-starting Quagga back'''
+        res = self.__vrouter_network_verify(50, peers = 1, positive_test = False)
