diff --git a/VERSION b/VERSION
index 88c5fb8..feb40e5 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.4.0
+1.4.1-dev
diff --git a/api/bbsim/bbsim.pb.go b/api/bbsim/bbsim.pb.go
index b4a5f86..ffa0154 100644
--- a/api/bbsim/bbsim.pb.go
+++ b/api/bbsim/bbsim.pb.go
@@ -1191,6 +1191,45 @@
 	return nil
 }
 
+type Timeout struct {
+	Delay                uint32   `protobuf:"varint,1,opt,name=delay,proto3" json:"delay,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Timeout) Reset()         { *m = Timeout{} }
+func (m *Timeout) String() string { return proto.CompactTextString(m) }
+func (*Timeout) ProtoMessage()    {}
+func (*Timeout) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ef7750073d18011b, []int{19}
+}
+
+func (m *Timeout) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Timeout.Unmarshal(m, b)
+}
+func (m *Timeout) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Timeout.Marshal(b, m, deterministic)
+}
+func (m *Timeout) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Timeout.Merge(m, src)
+}
+func (m *Timeout) XXX_Size() int {
+	return xxx_messageInfo_Timeout.Size(m)
+}
+func (m *Timeout) XXX_DiscardUnknown() {
+	xxx_messageInfo_Timeout.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Timeout proto.InternalMessageInfo
+
+func (m *Timeout) GetDelay() uint32 {
+	if m != nil {
+		return m.Delay
+	}
+	return 0
+}
+
 type Empty struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -1201,7 +1240,7 @@
 func (m *Empty) String() string { return proto.CompactTextString(m) }
 func (*Empty) ProtoMessage()    {}
 func (*Empty) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ef7750073d18011b, []int{19}
+	return fileDescriptor_ef7750073d18011b, []int{20}
 }
 
 func (m *Empty) XXX_Unmarshal(b []byte) error {
@@ -1244,108 +1283,112 @@
 	proto.RegisterType((*Response)(nil), "bbsim.Response")
 	proto.RegisterType((*IgmpRequest)(nil), "bbsim.IgmpRequest")
 	proto.RegisterType((*Flows)(nil), "bbsim.Flows")
+	proto.RegisterType((*Timeout)(nil), "bbsim.Timeout")
 	proto.RegisterType((*Empty)(nil), "bbsim.Empty")
 }
 
 func init() { proto.RegisterFile("api/bbsim/bbsim.proto", fileDescriptor_ef7750073d18011b) }
 
 var fileDescriptor_ef7750073d18011b = []byte{
-	// 1519 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0xdd, 0x6e, 0xdb, 0xc6,
-	0x12, 0xd6, 0x8f, 0xf5, 0x37, 0xb2, 0x64, 0x7a, 0x13, 0x3b, 0x82, 0xe3, 0x73, 0x22, 0xf0, 0xe4,
-	0x1c, 0x38, 0xc1, 0x89, 0xd3, 0xd8, 0xfd, 0x49, 0x2e, 0x69, 0x89, 0x56, 0x58, 0xcb, 0x4b, 0x62,
-	0x29, 0x39, 0xc8, 0x15, 0x41, 0x4b, 0x6b, 0x9b, 0x00, 0x45, 0x2a, 0x24, 0x65, 0x23, 0x0f, 0xd0,
-	0x17, 0xe9, 0xcb, 0xf4, 0xb6, 0x4f, 0xd0, 0xbb, 0x3e, 0x40, 0x1f, 0xa0, 0x40, 0xb1, 0xcb, 0x25,
-	0x45, 0x5a, 0x4a, 0xe1, 0xf6, 0xa6, 0x37, 0xc2, 0xce, 0x37, 0xff, 0xb3, 0xc3, 0x99, 0x15, 0xec,
-	0xd8, 0x73, 0xe7, 0xf5, 0xe5, 0x65, 0xe8, 0xcc, 0xe2, 0xdf, 0xc3, 0x79, 0xe0, 0x47, 0x3e, 0xaa,
-	0x70, 0x62, 0xef, 0xe9, 0xad, 0xef, 0x46, 0x37, 0xb6, 0xc5, 0xc1, 0xf0, 0xb5, 0x3f, 0xa7, 0x9e,
-	0xef, 0x46, 0xb1, 0xcc, 0x5e, 0x37, 0xcf, 0x8c, 0xe8, 0xe4, 0x86, 0x9d, 0xaf, 0x1c, 0x97, 0xc6,
-	0x12, 0xf2, 0x77, 0x50, 0x33, 0x74, 0x6c, 0xf8, 0x41, 0x84, 0xda, 0x50, 0xd2, 0xfa, 0x9d, 0x62,
-	0xb7, 0x78, 0x50, 0x21, 0x25, 0xad, 0x8f, 0xf6, 0xa1, 0xa1, 0xcf, 0x69, 0x60, 0x46, 0x76, 0x44,
-	0x3b, 0xa5, 0x6e, 0xf1, 0xa0, 0x41, 0x96, 0x00, 0x53, 0xc4, 0x58, 0xfb, 0x1b, 0x8a, 0xbf, 0x16,
-	0xa1, 0xac, 0xbb, 0xab, 0x5a, 0x32, 0x6c, 0x9a, 0x34, 0x70, 0x6c, 0x17, 0x2f, 0x66, 0x97, 0x34,
-	0x10, 0x8a, 0x39, 0x2c, 0x6f, 0xb9, 0x7c, 0xcf, 0x32, 0x7a, 0x0e, 0x2d, 0xcd, 0x8b, 0x68, 0xe0,
-	0xd9, 0x6e, 0x2c, 0xb1, 0xc1, 0x25, 0xf2, 0x20, 0xf7, 0x6b, 0x74, 0x6a, 0x9c, 0x55, 0xd2, 0x0c,
-	0xf4, 0x12, 0xea, 0x22, 0x91, 0xb0, 0x53, 0xe9, 0x96, 0x0f, 0x9a, 0x47, 0xed, 0xc3, 0xb8, 0xce,
-	0x02, 0x26, 0x29, 0x9f, 0xc9, 0x8a, 0x6a, 0x85, 0x9d, 0x6a, 0x4e, 0x56, 0xc0, 0x24, 0xe5, 0xcb,
-	0xbf, 0xb3, 0x3c, 0xf1, 0xf8, 0x1f, 0xcb, 0x73, 0x1f, 0x1a, 0x86, 0xef, 0xb1, 0x58, 0xb4, 0x7e,
-	0xa7, 0xc2, 0xdd, 0x2f, 0x01, 0xc6, 0x7d, 0x7f, 0xa7, 0x4c, 0xa7, 0x01, 0x0d, 0xc3, 0x4e, 0x3d,
-	0xf6, 0x90, 0x02, 0x68, 0x17, 0xaa, 0x4c, 0x0e, 0xfb, 0x9d, 0x06, 0x57, 0x14, 0x14, 0xcb, 0x3f,
-	0xa4, 0xc1, 0xad, 0x33, 0xa1, 0x61, 0x07, 0x72, 0xf9, 0x9b, 0x31, 0x4c, 0x52, 0xbe, 0xfc, 0x5b,
-	0x09, 0x6a, 0x02, 0x45, 0x08, 0x36, 0xb0, 0x3d, 0xa3, 0xbc, 0x0a, 0x0d, 0xc2, 0xcf, 0xf9, 0x08,
-	0x4a, 0xf7, 0x23, 0x78, 0x0c, 0x15, 0xdd, 0x5b, 0x98, 0x9e, 0xc8, 0x3e, 0x26, 0x98, 0x1d, 0x73,
-	0x64, 0x5f, 0xf3, 0x84, 0x2b, 0x84, 0x9f, 0x19, 0xd6, 0x63, 0x58, 0x9c, 0x22, 0x3f, 0xa3, 0x7f,
-	0x03, 0x60, 0x4a, 0xa7, 0xa1, 0x6a, 0xcf, 0x7d, 0xb7, 0x53, 0xed, 0x16, 0x0f, 0xea, 0x24, 0x83,
-	0x30, 0xdf, 0x9c, 0xea, 0xdf, 0x4c, 0xe6, 0xbc, 0x15, 0xea, 0x64, 0x09, 0xa4, 0x5c, 0xed, 0x7a,
-	0x36, 0xe7, 0xb5, 0x49, 0xb8, 0x0c, 0x40, 0x1d, 0xa8, 0x0d, 0xe8, 0x8c, 0x15, 0x44, 0x14, 0x27,
-	0x21, 0x99, 0x57, 0x6e, 0x3e, 0xbe, 0x14, 0xe0, 0x81, 0x67, 0x10, 0x66, 0x97, 0xd9, 0x8f, 0xd9,
-	0xcd, 0x38, 0xe3, 0x14, 0x58, 0xbd, 0xd5, 0xcd, 0x2f, 0xdc, 0xaa, 0x36, 0x38, 0x37, 0x62, 0x89,
-	0x56, 0x6c, 0x23, 0x05, 0x64, 0x1b, 0x1e, 0xeb, 0x78, 0x3c, 0x0a, 0xec, 0xab, 0x2b, 0x67, 0x62,
-	0x4e, 0x6e, 0xe8, 0x74, 0xe1, 0xd2, 0x20, 0x44, 0x1a, 0x6c, 0x45, 0x0c, 0x5c, 0x42, 0xfc, 0x2a,
-	0x9a, 0x47, 0xcf, 0x0e, 0x73, 0x33, 0x61, 0x45, 0x93, 0xdc, 0xd7, 0x93, 0x0f, 0x60, 0x43, 0xc7,
-	0xe3, 0x10, 0x75, 0xa1, 0xe2, 0x44, 0x74, 0xc6, 0x0c, 0xb1, 0x3e, 0x00, 0xd1, 0x07, 0x3a, 0x1e,
-	0x93, 0x98, 0x21, 0x7f, 0x05, 0x75, 0x71, 0xff, 0x21, 0x7a, 0x9e, 0x97, 0xbe, 0xdf, 0x35, 0xa9,
-	0x06, 0x30, 0x7d, 0xfa, 0x69, 0x41, 0xc3, 0x68, 0xe5, 0x43, 0x29, 0xae, 0x7e, 0x28, 0xf2, 0x4b,
-	0x00, 0x43, 0xc7, 0x89, 0x46, 0xa6, 0xe5, 0xa7, 0x5c, 0xbc, 0xb5, 0x6c, 0xf9, 0xa9, 0xfc, 0x4b,
-	0x19, 0x1a, 0x8a, 0x6b, 0x07, 0xb3, 0xd1, 0xe7, 0x39, 0x95, 0x7f, 0x2e, 0x43, 0x85, 0x1d, 0x42,
-	0x54, 0x83, 0xf2, 0x50, 0x37, 0xa5, 0x02, 0x6a, 0x03, 0xf4, 0x3f, 0x6a, 0x78, 0x60, 0x0d, 0x14,
-	0xd3, 0x90, 0x8a, 0xa8, 0x05, 0x0d, 0x1d, 0x8f, 0x2d, 0x65, 0xa8, 0x90, 0x73, 0xa9, 0x84, 0x9e,
-	0xc0, 0x23, 0x46, 0x9a, 0x23, 0x85, 0x8c, 0xc6, 0x86, 0x75, 0xaa, 0x68, 0xc3, 0x31, 0x51, 0xa5,
-	0x32, 0xda, 0x05, 0xc4, 0x19, 0xda, 0x00, 0x2b, 0x43, 0xab, 0xaf, 0x0e, 0x88, 0xd2, 0x57, 0xa5,
-	0x8d, 0x44, 0xa1, 0x4f, 0xb4, 0xd3, 0x91, 0xa5, 0x9f, 0x5a, 0x1f, 0x34, 0xdc, 0xd7, 0x3f, 0x48,
-	0x15, 0xb4, 0x0f, 0x1d, 0xc6, 0x18, 0xea, 0xa6, 0xc9, 0x70, 0xfd, 0xbc, 0xa7, 0x59, 0xbd, 0xf7,
-	0x0a, 0xc6, 0xea, 0x50, 0xaa, 0xa6, 0x7e, 0xb8, 0x39, 0x33, 0xf5, 0x53, 0x43, 0x2f, 0xe0, 0xbf,
-	0x8c, 0x31, 0x22, 0x0a, 0x36, 0xcf, 0x35, 0xd3, 0xd4, 0x74, 0x6c, 0x69, 0x78, 0xa4, 0x92, 0x53,
-	0x95, 0xa8, 0xb8, 0xa7, 0x5a, 0x1f, 0x14, 0x82, 0x35, 0x3c, 0x90, 0xea, 0x68, 0x0f, 0x76, 0x79,
-	0xe8, 0xbd, 0x91, 0x76, 0xa1, 0x8c, 0x98, 0x60, 0x62, 0xa6, 0x81, 0x3a, 0xbc, 0x49, 0x2c, 0x83,
-	0xe8, 0x3d, 0xd5, 0x34, 0x59, 0xbe, 0x2a, 0x21, 0x3a, 0x91, 0x00, 0x75, 0x61, 0x3f, 0x1b, 0xd7,
-	0x99, 0xfa, 0xd1, 0x32, 0x3f, 0xe2, 0x5e, 0xaa, 0xdb, 0x44, 0x3b, 0xb0, 0xcd, 0x24, 0xb4, 0xd1,
-	0xd8, 0x32, 0x74, 0xcc, 0x6a, 0x31, 0x32, 0xa5, 0x4d, 0xb4, 0x0d, 0xad, 0xb4, 0x52, 0x4c, 0x5d,
-	0x6a, 0xdd, 0x87, 0x4e, 0xa4, 0x76, 0x92, 0x58, 0x02, 0x19, 0x3d, 0x8b, 0x65, 0x21, 0x6d, 0x25,
-	0xf5, 0xc8, 0x31, 0x7a, 0x22, 0x2a, 0x09, 0x21, 0x68, 0x67, 0xb9, 0xa7, 0x9a, 0xb4, 0x8d, 0x1e,
-	0xc1, 0x56, 0x16, 0x53, 0xce, 0x35, 0x09, 0xc9, 0x6f, 0xa1, 0xcd, 0xef, 0xd7, 0xb0, 0x03, 0x7b,
-	0x46, 0x23, 0x1a, 0x20, 0x09, 0xca, 0x67, 0xf4, 0xb3, 0xe8, 0x1c, 0x76, 0x64, 0x73, 0xe5, 0xc2,
-	0x76, 0x17, 0xc9, 0x5e, 0x8a, 0x09, 0xf9, 0xc7, 0x22, 0xb7, 0xc7, 0xb5, 0x33, 0xcd, 0x94, 0x76,
-	0x8b, 0xb0, 0xb0, 0x04, 0x1e, 0x34, 0xc5, 0x77, 0xa1, 0xca, 0x3e, 0xcb, 0x45, 0x28, 0x86, 0x98,
-	0xa0, 0xd0, 0x37, 0x00, 0x69, 0x88, 0x61, 0x67, 0x83, 0x7f, 0x11, 0x3b, 0xe2, 0x8b, 0xc8, 0x27,
-	0x40, 0x32, 0x82, 0xf2, 0x27, 0xd8, 0xd2, 0x87, 0xa3, 0x5c, 0x8c, 0x5d, 0x68, 0xf2, 0xf1, 0x70,
-	0x65, 0x4f, 0xa8, 0x58, 0x32, 0x2d, 0x92, 0x85, 0xd2, 0xa9, 0xc2, 0x48, 0x9e, 0x49, 0x29, 0x33,
-	0x55, 0x12, 0xf0, 0x4b, 0x91, 0xca, 0x3f, 0x14, 0xa1, 0x75, 0x41, 0x83, 0xd0, 0xf1, 0x3d, 0x91,
-	0x53, 0x07, 0x6a, 0xb7, 0x31, 0x20, 0x6a, 0x92, 0x90, 0xac, 0x5e, 0x97, 0x0b, 0xc7, 0x9d, 0x8e,
-	0x9c, 0x59, 0xba, 0xf5, 0x53, 0x80, 0xcd, 0xc6, 0x89, 0x3f, 0x9b, 0x39, 0xd1, 0x7b, 0x3b, 0xbc,
-	0x11, 0x5e, 0x32, 0x08, 0xd3, 0xbe, 0x76, 0x22, 0x11, 0x44, 0xbc, 0xcf, 0x96, 0x80, 0xfc, 0x16,
-	0xea, 0x43, 0xff, 0x7a, 0x48, 0x6f, 0xa9, 0xcb, 0x6e, 0xd0, 0x65, 0x07, 0xe1, 0x3f, 0x26, 0x58,
-	0x06, 0x13, 0xdb, 0x75, 0xc5, 0x4d, 0xd4, 0x89, 0xa0, 0x64, 0x15, 0xea, 0x84, 0x86, 0x73, 0xdf,
-	0x0b, 0x29, 0x7a, 0x06, 0xcd, 0x90, 0xdb, 0xb3, 0x26, 0xfe, 0x94, 0x8a, 0x95, 0x0c, 0x31, 0xd4,
-	0xf3, 0xa7, 0x94, 0x25, 0x37, 0xa3, 0x61, 0x68, 0x5f, 0x27, 0x09, 0x24, 0xa4, 0x1c, 0x42, 0x93,
-	0x0d, 0xff, 0xa4, 0xee, 0x2f, 0xa0, 0xaa, 0x7b, 0x0b, 0x42, 0x3f, 0x89, 0x31, 0xba, 0x9d, 0x99,
-	0x7e, 0xb1, 0x08, 0x11, 0x02, 0xe8, 0x1d, 0x6c, 0x9a, 0x8b, 0x4b, 0x65, 0x12, 0x39, 0xbe, 0x77,
-	0x61, 0xbb, 0xdc, 0x70, 0x3b, 0xbd, 0xee, 0x94, 0xc5, 0x47, 0x11, 0xc9, 0x89, 0xca, 0x67, 0x50,
-	0x39, 0x75, 0xfd, 0xbb, 0x10, 0xfd, 0x0b, 0xe0, 0xca, 0xf5, 0xef, 0xac, 0x89, 0xbf, 0xf0, 0xa2,
-	0x64, 0xb0, 0x31, 0xa4, 0xc7, 0x00, 0xf4, 0x1f, 0xa8, 0x30, 0x82, 0x6d, 0x51, 0xd6, 0x4a, 0xad,
-	0xc3, 0xe4, 0x11, 0xc8, 0xb4, 0x49, 0xcc, 0x93, 0x6b, 0x50, 0x51, 0x67, 0xf3, 0xe8, 0xf3, 0xcb,
-	0x37, 0xd0, 0xce, 0x7b, 0x45, 0x75, 0xd8, 0xf8, 0x5e, 0xd7, 0xb0, 0x54, 0x40, 0x0d, 0xa8, 0x0c,
-	0x55, 0xe5, 0x42, 0x95, 0x8a, 0x08, 0xa0, 0xca, 0xc0, 0x8b, 0x63, 0xa9, 0x74, 0xf4, 0x53, 0x03,
-	0x2a, 0x27, 0x27, 0xa6, 0x33, 0x43, 0xaf, 0xa1, 0x26, 0xfa, 0x01, 0x6d, 0x8a, 0x14, 0xb8, 0xd5,
-	0xbd, 0xc7, 0x82, 0xca, 0x75, 0x8b, 0x5c, 0x40, 0x6f, 0xa0, 0x69, 0xd2, 0x28, 0xbd, 0xbc, 0x2d,
-	0x21, 0x96, 0x00, 0x7b, 0xf7, 0x01, 0xb9, 0x80, 0x9e, 0x43, 0x75, 0x40, 0x23, 0xf6, 0x44, 0xcc,
-	0xbb, 0x48, 0x57, 0x8c, 0x1b, 0xc9, 0x05, 0xf4, 0x0a, 0xc0, 0xf0, 0xef, 0x68, 0xe0, 0x7b, 0xab,
-	0x92, 0x89, 0xd1, 0xe4, 0xe6, 0xe5, 0x02, 0x3a, 0x84, 0xa6, 0x79, 0xb3, 0x88, 0xa6, 0xfe, 0xdd,
-	0xc3, 0xe4, 0xff, 0x0f, 0x0d, 0x42, 0x2f, 0x7d, 0x3f, 0x7a, 0x90, 0xf4, 0x8b, 0x38, 0x64, 0x3c,
-	0x46, 0xab, 0x9d, 0xb0, 0x97, 0x59, 0x8d, 0x72, 0x01, 0xfd, 0x8f, 0x3d, 0x1f, 0x22, 0xbe, 0x42,
-	0xf3, 0x66, 0x9b, 0x4b, 0xb1, 0x30, 0x0e, 0x78, 0x40, 0xa3, 0x74, 0x81, 0xae, 0x0f, 0x21, 0x61,
-	0xcb, 0x05, 0xf4, 0x2d, 0xb4, 0x99, 0x5d, 0x6f, 0x91, 0xaa, 0xac, 0x09, 0x65, 0x8d, 0xde, 0x71,
-	0xa6, 0x30, 0xeb, 0xe3, 0x5f, 0x93, 0xef, 0x11, 0x6c, 0x25, 0x4a, 0x8a, 0xeb, 0xae, 0x49, 0x66,
-	0x8d, 0xce, 0x3b, 0xd8, 0xce, 0x38, 0x0a, 0x75, 0xcf, 0xd0, 0x71, 0xea, 0x6e, 0xb9, 0xc4, 0xd7,
-	0xbb, 0x4b, 0xef, 0xfa, 0xc1, 0x21, 0xbe, 0x81, 0xb6, 0xd0, 0x79, 0x70, 0x84, 0x6f, 0x41, 0x5a,
-	0xba, 0xf9, 0x4b, 0x01, 0x7e, 0x0d, 0x9b, 0x84, 0x86, 0x91, 0x1d, 0x44, 0xf1, 0xfb, 0xf2, 0x61,
-	0x21, 0x1e, 0x43, 0x53, 0x68, 0xf1, 0x67, 0xe7, 0xc3, 0x94, 0x4e, 0x60, 0xc7, 0xe4, 0xf7, 0xcc,
-	0x17, 0x81, 0xe6, 0x4d, 0x9d, 0x89, 0xcd, 0x3e, 0x65, 0xb4, 0xbb, 0x54, 0xcf, 0xee, 0x88, 0x3f,
-	0xb1, 0xe1, 0x46, 0x5f, 0xb4, 0x91, 0xdf, 0x33, 0xeb, 0x6c, 0xbc, 0x82, 0xfa, 0x80, 0x46, 0xf1,
-	0x7c, 0x5a, 0x13, 0x79, 0x52, 0x6c, 0x2e, 0xc0, 0x6b, 0xbb, 0xd5, 0xbb, 0xb1, 0xbd, 0x6b, 0xca,
-	0xc6, 0x68, 0xfc, 0x94, 0x45, 0x42, 0x24, 0x33, 0x58, 0xd7, 0x39, 0x3a, 0x83, 0x27, 0x71, 0x63,
-	0xaf, 0x3e, 0x6b, 0xd7, 0xf8, 0x7d, 0xba, 0x84, 0x56, 0xe4, 0xe5, 0xc2, 0x65, 0x95, 0xff, 0xeb,
-	0x3d, 0xfe, 0x23, 0x00, 0x00, 0xff, 0xff, 0xa3, 0x86, 0x90, 0x8d, 0x54, 0x0f, 0x00, 0x00,
+	// 1563 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0xdb, 0x52, 0xdb, 0xc6,
+	0x1b, 0xf7, 0x01, 0x9f, 0x3e, 0x63, 0x23, 0x36, 0x81, 0x78, 0x08, 0xff, 0x7f, 0x3c, 0x6a, 0xda,
+	0x21, 0x99, 0x86, 0x34, 0xd0, 0x43, 0x72, 0x29, 0x6c, 0xe1, 0xa8, 0x18, 0x49, 0xb3, 0xb2, 0xc9,
+	0xe4, 0x4a, 0x23, 0xec, 0x05, 0x3c, 0x23, 0x4b, 0x8e, 0xb4, 0x86, 0xe1, 0x01, 0xfa, 0x22, 0x7d,
+	0xa2, 0x3e, 0x41, 0xef, 0xda, 0xfb, 0x3e, 0x40, 0x67, 0x3a, 0xbb, 0x5a, 0xc9, 0x12, 0x36, 0x2d,
+	0xe9, 0x4d, 0x6f, 0x18, 0x7d, 0xbf, 0xef, 0x7c, 0xf0, 0xf7, 0x2d, 0xb0, 0xe5, 0xcc, 0x26, 0xaf,
+	0xcf, 0xcf, 0xc3, 0xc9, 0x34, 0xfa, 0xbb, 0x3f, 0x0b, 0x7c, 0xea, 0xa3, 0x12, 0x27, 0x76, 0x9e,
+	0x5e, 0xfb, 0x2e, 0xbd, 0x72, 0x6c, 0x0e, 0x86, 0xaf, 0xfd, 0x19, 0xf1, 0x7c, 0x97, 0x46, 0x32,
+	0x3b, 0xed, 0x2c, 0x93, 0x92, 0xd1, 0x15, 0xfb, 0xbe, 0x98, 0xb8, 0x24, 0x92, 0x90, 0x7f, 0x80,
+	0x8a, 0x69, 0xe8, 0xa6, 0x1f, 0x50, 0xd4, 0x84, 0x82, 0xd6, 0x6d, 0xe5, 0xdb, 0xf9, 0xbd, 0x12,
+	0x2e, 0x68, 0x5d, 0xb4, 0x0b, 0x35, 0x63, 0x46, 0x02, 0x8b, 0x3a, 0x94, 0xb4, 0x0a, 0xed, 0xfc,
+	0x5e, 0x0d, 0x2f, 0x00, 0xa6, 0xa8, 0xeb, 0xda, 0xbf, 0x50, 0xfc, 0x2d, 0x0f, 0x45, 0xc3, 0x5d,
+	0xd6, 0x92, 0x61, 0xdd, 0x22, 0xc1, 0xc4, 0x71, 0xf5, 0xf9, 0xf4, 0x9c, 0x04, 0x42, 0x31, 0x83,
+	0x65, 0x2d, 0x17, 0xef, 0x58, 0x46, 0xcf, 0xa1, 0xa1, 0x79, 0x94, 0x04, 0x9e, 0xe3, 0x46, 0x12,
+	0x6b, 0x5c, 0x22, 0x0b, 0x72, 0xbf, 0x66, 0xab, 0xc2, 0x59, 0x05, 0xcd, 0x44, 0x2f, 0xa1, 0x2a,
+	0x12, 0x09, 0x5b, 0xa5, 0x76, 0x71, 0xaf, 0x7e, 0xd0, 0xdc, 0x8f, 0xea, 0x2c, 0x60, 0x9c, 0xf0,
+	0x99, 0xac, 0xa8, 0x56, 0xd8, 0x2a, 0x67, 0x64, 0x05, 0x8c, 0x13, 0xbe, 0xfc, 0x27, 0xcb, 0x53,
+	0x1f, 0xfe, 0x67, 0x79, 0xee, 0x42, 0xcd, 0xf4, 0x3d, 0x16, 0x8b, 0xd6, 0x6d, 0x95, 0xb8, 0xfb,
+	0x05, 0xc0, 0xb8, 0xef, 0x6f, 0x94, 0xf1, 0x38, 0x20, 0x61, 0xd8, 0xaa, 0x46, 0x1e, 0x12, 0x00,
+	0x6d, 0x43, 0x99, 0xc9, 0xe9, 0x7e, 0xab, 0xc6, 0x15, 0x05, 0xc5, 0xf2, 0x0f, 0x49, 0x70, 0x3d,
+	0x19, 0x91, 0xb0, 0x05, 0x99, 0xfc, 0xad, 0x08, 0xc6, 0x09, 0x5f, 0xfe, 0xa3, 0x00, 0x15, 0x81,
+	0x22, 0x04, 0x6b, 0xba, 0x33, 0x25, 0xbc, 0x0a, 0x35, 0xcc, 0xbf, 0xb3, 0x11, 0x14, 0xee, 0x46,
+	0xf0, 0x18, 0x4a, 0x86, 0x37, 0xb7, 0x3c, 0x91, 0x7d, 0x44, 0x30, 0x3b, 0xd6, 0xc0, 0xb9, 0xe4,
+	0x09, 0x97, 0x30, 0xff, 0x66, 0x58, 0x87, 0x61, 0x51, 0x8a, 0xfc, 0x1b, 0xfd, 0x1f, 0x40, 0x27,
+	0x64, 0x1c, 0xaa, 0xce, 0xcc, 0x77, 0x5b, 0xe5, 0x76, 0x7e, 0xaf, 0x8a, 0x53, 0x08, 0xf3, 0xcd,
+	0xa9, 0xee, 0xd5, 0x68, 0xc6, 0x47, 0xa1, 0x8a, 0x17, 0x40, 0xc2, 0xd5, 0x2e, 0xa7, 0x33, 0x5e,
+	0x9b, 0x98, 0xcb, 0x00, 0xd4, 0x82, 0x4a, 0x8f, 0x4c, 0x59, 0x41, 0x44, 0x71, 0x62, 0x92, 0x79,
+	0xe5, 0xe6, 0xa3, 0xa6, 0x00, 0x0f, 0x3c, 0x85, 0x30, 0xbb, 0xcc, 0x7e, 0xc4, 0xae, 0x47, 0x19,
+	0x27, 0xc0, 0x72, 0x57, 0xd7, 0xef, 0xe9, 0xaa, 0xd6, 0x3b, 0x35, 0x23, 0x89, 0x46, 0x64, 0x23,
+	0x01, 0x64, 0x07, 0x1e, 0x1b, 0xfa, 0x70, 0x10, 0x38, 0x17, 0x17, 0x93, 0x91, 0x35, 0xba, 0x22,
+	0xe3, 0xb9, 0x4b, 0x82, 0x10, 0x69, 0xb0, 0x41, 0x19, 0xb8, 0x80, 0x78, 0x2b, 0xea, 0x07, 0xcf,
+	0xf6, 0x33, 0x3b, 0x61, 0x49, 0x13, 0xdf, 0xd5, 0x93, 0xf7, 0x60, 0xcd, 0xd0, 0x87, 0x21, 0x6a,
+	0x43, 0x69, 0x42, 0xc9, 0x94, 0x19, 0x62, 0x73, 0x00, 0x62, 0x0e, 0x0c, 0x7d, 0x88, 0x23, 0x86,
+	0xfc, 0x0d, 0x54, 0x45, 0xff, 0x43, 0xf4, 0x3c, 0x2b, 0x7d, 0x77, 0x6a, 0x12, 0x0d, 0x60, 0xfa,
+	0xe4, 0xd3, 0x9c, 0x84, 0x74, 0xe9, 0x87, 0x92, 0x5f, 0xfe, 0xa1, 0xc8, 0x2f, 0x01, 0x4c, 0x43,
+	0x8f, 0x35, 0x52, 0x23, 0x3f, 0xe6, 0xe2, 0x8d, 0xc5, 0xc8, 0x8f, 0xe5, 0x5f, 0x8b, 0x50, 0x53,
+	0x5c, 0x27, 0x98, 0x0e, 0x6e, 0x67, 0x44, 0xfe, 0xa5, 0x08, 0x25, 0xf6, 0x11, 0xa2, 0x0a, 0x14,
+	0xfb, 0x86, 0x25, 0xe5, 0x50, 0x13, 0xa0, 0xfb, 0x51, 0xd3, 0x7b, 0x76, 0x4f, 0xb1, 0x4c, 0x29,
+	0x8f, 0x1a, 0x50, 0x33, 0xf4, 0xa1, 0xad, 0xf4, 0x15, 0x7c, 0x2a, 0x15, 0xd0, 0x13, 0x78, 0xc4,
+	0x48, 0x6b, 0xa0, 0xe0, 0xc1, 0xd0, 0xb4, 0x8f, 0x15, 0xad, 0x3f, 0xc4, 0xaa, 0x54, 0x44, 0xdb,
+	0x80, 0x38, 0x43, 0xeb, 0xe9, 0x4a, 0xdf, 0xee, 0xaa, 0x3d, 0xac, 0x74, 0x55, 0x69, 0x2d, 0x56,
+	0xe8, 0x62, 0xed, 0x78, 0x60, 0x1b, 0xc7, 0xf6, 0x07, 0x4d, 0xef, 0x1a, 0x1f, 0xa4, 0x12, 0xda,
+	0x85, 0x16, 0x63, 0xf4, 0x0d, 0xcb, 0x62, 0xb8, 0x71, 0xda, 0xd1, 0xec, 0xce, 0x7b, 0x45, 0xd7,
+	0xd5, 0xbe, 0x54, 0x4e, 0xfc, 0x70, 0x73, 0x56, 0xe2, 0xa7, 0x82, 0x5e, 0xc0, 0x97, 0x8c, 0x31,
+	0xc0, 0x8a, 0x6e, 0x9d, 0x6a, 0x96, 0xa5, 0x19, 0xba, 0xad, 0xe9, 0x03, 0x15, 0x1f, 0xab, 0x58,
+	0xd5, 0x3b, 0xaa, 0xfd, 0x41, 0xc1, 0xba, 0xa6, 0xf7, 0xa4, 0x2a, 0xda, 0x81, 0x6d, 0x1e, 0x7a,
+	0x67, 0xa0, 0x9d, 0x29, 0x03, 0x26, 0x18, 0x9b, 0xa9, 0xa1, 0x16, 0x1f, 0x12, 0xdb, 0xc4, 0x46,
+	0x47, 0xb5, 0x2c, 0x96, 0xaf, 0x8a, 0xb1, 0x81, 0x25, 0x40, 0x6d, 0xd8, 0x4d, 0xc7, 0x75, 0xa2,
+	0x7e, 0xb4, 0xad, 0x8f, 0x7a, 0x27, 0xd1, 0xad, 0xa3, 0x2d, 0xd8, 0x64, 0x12, 0xda, 0x60, 0x68,
+	0x9b, 0x86, 0xce, 0x6a, 0x31, 0xb0, 0xa4, 0x75, 0xb4, 0x09, 0x8d, 0xa4, 0x52, 0x4c, 0x5d, 0x6a,
+	0xdc, 0x85, 0x8e, 0xa4, 0x66, 0x9c, 0x58, 0x0c, 0x99, 0x1d, 0x9b, 0x65, 0x21, 0x6d, 0xc4, 0xf5,
+	0xc8, 0x30, 0x3a, 0x22, 0x2a, 0x09, 0x21, 0x68, 0xa6, 0xb9, 0xc7, 0x9a, 0xb4, 0x89, 0x1e, 0xc1,
+	0x46, 0x1a, 0x53, 0x4e, 0x35, 0x09, 0xc9, 0x6f, 0xa1, 0xc9, 0xfb, 0x6b, 0x3a, 0x81, 0x33, 0x25,
+	0x94, 0x04, 0x48, 0x82, 0xe2, 0x09, 0xb9, 0x15, 0x93, 0xc3, 0x3e, 0xd9, 0x5e, 0x39, 0x73, 0xdc,
+	0x79, 0x7c, 0x97, 0x22, 0x42, 0xfe, 0x39, 0xcf, 0xed, 0x71, 0xed, 0xd4, 0x30, 0x25, 0xd3, 0x22,
+	0x2c, 0x2c, 0x80, 0x07, 0x6d, 0xf1, 0x6d, 0x28, 0xb3, 0x9f, 0xe5, 0x3c, 0x14, 0x4b, 0x4c, 0x50,
+	0xe8, 0x3b, 0x80, 0x24, 0xc4, 0xb0, 0xb5, 0xc6, 0x7f, 0x11, 0x5b, 0xe2, 0x17, 0x91, 0x4d, 0x00,
+	0xa7, 0x04, 0xe5, 0x4f, 0xb0, 0x61, 0xf4, 0x07, 0x99, 0x18, 0xdb, 0x50, 0xe7, 0xeb, 0xe1, 0xc2,
+	0x19, 0x11, 0x71, 0x64, 0x1a, 0x38, 0x0d, 0x25, 0x5b, 0x85, 0x91, 0x3c, 0x93, 0x42, 0x6a, 0xab,
+	0xc4, 0xe0, 0x7d, 0x91, 0xca, 0x3f, 0xe5, 0xa1, 0x71, 0x46, 0x82, 0x70, 0xe2, 0x7b, 0x22, 0xa7,
+	0x16, 0x54, 0xae, 0x23, 0x40, 0xd4, 0x24, 0x26, 0x59, 0xbd, 0xce, 0xe7, 0x13, 0x77, 0x3c, 0x98,
+	0x4c, 0x93, 0xab, 0x9f, 0x00, 0x6c, 0x37, 0x8e, 0xfc, 0xe9, 0x74, 0x42, 0xdf, 0x3b, 0xe1, 0x95,
+	0xf0, 0x92, 0x42, 0x98, 0xf6, 0xe5, 0x84, 0x8a, 0x20, 0xa2, 0x7b, 0xb6, 0x00, 0xe4, 0xb7, 0x50,
+	0xed, 0xfb, 0x97, 0x7d, 0x72, 0x4d, 0x5c, 0xd6, 0x41, 0x97, 0x7d, 0x08, 0xff, 0x11, 0xc1, 0x32,
+	0x18, 0x39, 0xae, 0x2b, 0x3a, 0x51, 0xc5, 0x82, 0x92, 0x55, 0xa8, 0x62, 0x12, 0xce, 0x7c, 0x2f,
+	0x24, 0xe8, 0x19, 0xd4, 0x43, 0x6e, 0xcf, 0x1e, 0xf9, 0x63, 0x22, 0x4e, 0x32, 0x44, 0x50, 0xc7,
+	0x1f, 0x13, 0x96, 0xdc, 0x94, 0x84, 0xa1, 0x73, 0x19, 0x27, 0x10, 0x93, 0x72, 0x08, 0x75, 0xb6,
+	0xfc, 0xe3, 0xba, 0xbf, 0x80, 0xb2, 0xe1, 0xcd, 0x31, 0xf9, 0x24, 0xd6, 0xe8, 0x66, 0x6a, 0xfb,
+	0x45, 0x22, 0x58, 0x08, 0xa0, 0x77, 0xb0, 0x6e, 0xcd, 0xcf, 0x95, 0x11, 0x9d, 0xf8, 0xde, 0x99,
+	0xe3, 0x72, 0xc3, 0xcd, 0xa4, 0xdd, 0x09, 0x8b, 0xaf, 0x22, 0x9c, 0x11, 0x95, 0x4f, 0xa0, 0x74,
+	0xec, 0xfa, 0x37, 0x21, 0xfa, 0x1f, 0xc0, 0x85, 0xeb, 0xdf, 0xd8, 0x23, 0x7f, 0xee, 0xd1, 0x78,
+	0xb1, 0x31, 0xa4, 0xc3, 0x00, 0xf4, 0x05, 0x94, 0x18, 0xc1, 0xae, 0x28, 0x1b, 0xa5, 0xc6, 0x7e,
+	0xfc, 0x08, 0x64, 0xda, 0x38, 0xe2, 0xc9, 0xcf, 0xa0, 0xc2, 0x1a, 0xe1, 0xcf, 0x29, 0xab, 0xe0,
+	0x98, 0xb8, 0xce, 0xad, 0xb0, 0x14, 0x11, 0x72, 0x05, 0x4a, 0xea, 0x74, 0x46, 0x6f, 0x5f, 0xbe,
+	0x81, 0x66, 0x36, 0x2c, 0x54, 0x85, 0xb5, 0x1f, 0x0d, 0x4d, 0x97, 0x72, 0xa8, 0x06, 0xa5, 0xbe,
+	0xaa, 0x9c, 0xa9, 0x52, 0x1e, 0x01, 0x94, 0x19, 0x78, 0x76, 0x28, 0x15, 0x0e, 0x7e, 0x07, 0x28,
+	0x1d, 0x1d, 0x59, 0x93, 0x29, 0x7a, 0x0d, 0x15, 0x31, 0x30, 0x68, 0x5d, 0xe4, 0xc8, 0xad, 0xee,
+	0x3c, 0x16, 0x54, 0x66, 0x9c, 0xe4, 0x1c, 0x7a, 0x03, 0x75, 0x8b, 0xd0, 0xa4, 0xbb, 0x1b, 0x42,
+	0x2c, 0x06, 0x76, 0xee, 0x02, 0x72, 0x0e, 0x3d, 0x87, 0x72, 0x8f, 0x50, 0xf6, 0x86, 0xcc, 0xba,
+	0x48, 0x6e, 0x90, 0x4b, 0xe5, 0x1c, 0x7a, 0x05, 0x60, 0xfa, 0x37, 0x24, 0xf0, 0xbd, 0x65, 0xc9,
+	0xd8, 0x68, 0x3c, 0x1a, 0x72, 0x0e, 0xed, 0x43, 0xdd, 0xba, 0x9a, 0xd3, 0xb1, 0x7f, 0xf3, 0x30,
+	0xf9, 0xaf, 0xa1, 0x86, 0xc9, 0xb9, 0xef, 0xd3, 0x07, 0x49, 0xb3, 0x9a, 0x52, 0x7f, 0x76, 0x89,
+	0xcd, 0x0e, 0xbb, 0x79, 0x24, 0xf8, 0x67, 0x95, 0x03, 0xd8, 0xb0, 0xa8, 0x13, 0xd0, 0xcf, 0xd1,
+	0xf9, 0x1e, 0x36, 0x31, 0x09, 0xef, 0x68, 0xc5, 0xc7, 0x56, 0xb4, 0x7f, 0x95, 0xde, 0x8b, 0xa8,
+	0xa2, 0xfa, 0x10, 0x2d, 0x4f, 0xf2, 0x4e, 0xea, 0xb4, 0xcb, 0x39, 0xf4, 0x15, 0x7b, 0xfe, 0x50,
+	0xfe, 0x04, 0xc8, 0x86, 0x53, 0x5f, 0x88, 0x85, 0x51, 0x3d, 0x7b, 0x84, 0x26, 0x0f, 0x80, 0xd5,
+	0xa1, 0xc7, 0x6c, 0x1e, 0x7a, 0x93, 0xd9, 0xf5, 0xe6, 0x89, 0xca, 0x8a, 0x50, 0x56, 0xe8, 0x1d,
+	0xa6, 0xfa, 0xb6, 0x3a, 0xfe, 0x7b, 0x6a, 0x2b, 0x94, 0x14, 0xd7, 0x5d, 0x91, 0xcc, 0x0a, 0x9d,
+	0x77, 0xb0, 0x99, 0x72, 0x14, 0x1a, 0x9e, 0x69, 0xe8, 0x89, 0xbb, 0xc5, 0x23, 0x64, 0xb5, 0xbb,
+	0x64, 0x14, 0x1f, 0x1c, 0xe2, 0x1b, 0x68, 0x0a, 0x9d, 0x07, 0x47, 0xf8, 0x16, 0xa4, 0x85, 0x9b,
+	0xcf, 0x0a, 0xf0, 0x5b, 0x58, 0x17, 0x73, 0x13, 0xbd, 0x8f, 0x1f, 0x16, 0xe2, 0x21, 0xd4, 0x85,
+	0x16, 0x7f, 0x36, 0x3f, 0x4c, 0xe9, 0x08, 0xb6, 0x2c, 0xde, 0x67, 0x7e, 0xc8, 0x34, 0x6f, 0x3c,
+	0x19, 0x39, 0x6c, 0xd3, 0xa0, 0xed, 0x85, 0x7a, 0xfa, 0xc6, 0xfd, 0x8d, 0x0d, 0x97, 0xde, 0x6b,
+	0x23, 0x7b, 0x27, 0x57, 0xd9, 0x78, 0x05, 0xd5, 0x1e, 0xa1, 0xd1, 0x7e, 0x5d, 0x11, 0x79, 0x5c,
+	0x6c, 0x2e, 0xc0, 0x6b, 0xbb, 0xd1, 0xb9, 0x72, 0xbc, 0x4b, 0xc2, 0xce, 0x40, 0xf4, 0x14, 0x47,
+	0x42, 0x24, 0x75, 0x18, 0x56, 0x39, 0x3a, 0x81, 0x27, 0xd1, 0x60, 0x2f, 0x3f, 0xcb, 0x57, 0xf8,
+	0x7d, 0xba, 0x80, 0x96, 0xe4, 0xe5, 0xdc, 0x79, 0x99, 0xff, 0xd7, 0x7e, 0xf8, 0x57, 0x00, 0x00,
+	0x00, 0xff, 0xff, 0xc4, 0x09, 0x64, 0x71, 0x14, 0x10, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -1372,6 +1415,12 @@
 	ShutdownOlt(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Response, error)
 	// Reboot OLT
 	RebootOlt(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Response, error)
+	// Closes the Openolt gRPC server
+	StopgRPCServer(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Response, error)
+	// Start the Openolt gRPC server
+	StartgRPCServer(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Response, error)
+	// Start the Openolt gRPC server
+	RestartgRPCServer(ctx context.Context, in *Timeout, opts ...grpc.CallOption) (*Response, error)
 	// Get status of an ONU by serial number
 	GetONU(ctx context.Context, in *ONURequest, opts ...grpc.CallOption) (*ONU, error)
 	// Get status of all ONUs
@@ -1470,6 +1519,33 @@
 	return out, nil
 }
 
+func (c *bBSimClient) StopgRPCServer(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Response, error) {
+	out := new(Response)
+	err := c.cc.Invoke(ctx, "/bbsim.BBSim/StopgRPCServer", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *bBSimClient) StartgRPCServer(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Response, error) {
+	out := new(Response)
+	err := c.cc.Invoke(ctx, "/bbsim.BBSim/StartgRPCServer", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *bBSimClient) RestartgRPCServer(ctx context.Context, in *Timeout, opts ...grpc.CallOption) (*Response, error) {
+	out := new(Response)
+	err := c.cc.Invoke(ctx, "/bbsim.BBSim/RestartgRPCServer", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 func (c *bBSimClient) GetONU(ctx context.Context, in *ONURequest, opts ...grpc.CallOption) (*ONU, error) {
 	out := new(ONU)
 	err := c.cc.Invoke(ctx, "/bbsim.BBSim/GetONU", in, out, opts...)
@@ -1637,6 +1713,12 @@
 	ShutdownOlt(context.Context, *Empty) (*Response, error)
 	// Reboot OLT
 	RebootOlt(context.Context, *Empty) (*Response, error)
+	// Closes the Openolt gRPC server
+	StopgRPCServer(context.Context, *Empty) (*Response, error)
+	// Start the Openolt gRPC server
+	StartgRPCServer(context.Context, *Empty) (*Response, error)
+	// Start the Openolt gRPC server
+	RestartgRPCServer(context.Context, *Timeout) (*Response, error)
 	// Get status of an ONU by serial number
 	GetONU(context.Context, *ONURequest) (*ONU, error)
 	// Get status of all ONUs
@@ -1695,6 +1777,15 @@
 func (*UnimplementedBBSimServer) RebootOlt(ctx context.Context, req *Empty) (*Response, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method RebootOlt not implemented")
 }
+func (*UnimplementedBBSimServer) StopgRPCServer(ctx context.Context, req *Empty) (*Response, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method StopgRPCServer not implemented")
+}
+func (*UnimplementedBBSimServer) StartgRPCServer(ctx context.Context, req *Empty) (*Response, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method StartgRPCServer not implemented")
+}
+func (*UnimplementedBBSimServer) RestartgRPCServer(ctx context.Context, req *Timeout) (*Response, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method RestartgRPCServer not implemented")
+}
 func (*UnimplementedBBSimServer) GetONU(ctx context.Context, req *ONURequest) (*ONU, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method GetONU not implemented")
 }
@@ -1859,6 +1950,60 @@
 	return interceptor(ctx, in, info, handler)
 }
 
+func _BBSim_StopgRPCServer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(BBSimServer).StopgRPCServer(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/bbsim.BBSim/StopgRPCServer",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(BBSimServer).StopgRPCServer(ctx, req.(*Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _BBSim_StartgRPCServer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Empty)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(BBSimServer).StartgRPCServer(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/bbsim.BBSim/StartgRPCServer",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(BBSimServer).StartgRPCServer(ctx, req.(*Empty))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _BBSim_RestartgRPCServer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(Timeout)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(BBSimServer).RestartgRPCServer(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/bbsim.BBSim/RestartgRPCServer",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(BBSimServer).RestartgRPCServer(ctx, req.(*Timeout))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _BBSim_GetONU_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(ONURequest)
 	if err := dec(in); err != nil {
@@ -2194,6 +2339,18 @@
 			Handler:    _BBSim_RebootOlt_Handler,
 		},
 		{
+			MethodName: "StopgRPCServer",
+			Handler:    _BBSim_StopgRPCServer_Handler,
+		},
+		{
+			MethodName: "StartgRPCServer",
+			Handler:    _BBSim_StartgRPCServer_Handler,
+		},
+		{
+			MethodName: "RestartgRPCServer",
+			Handler:    _BBSim_RestartgRPCServer_Handler,
+		},
+		{
 			MethodName: "GetONU",
 			Handler:    _BBSim_GetONU_Handler,
 		},
diff --git a/api/bbsim/bbsim.proto b/api/bbsim/bbsim.proto
index da329f7..39e7cea 100644
--- a/api/bbsim/bbsim.proto
+++ b/api/bbsim/bbsim.proto
@@ -176,6 +176,10 @@
     repeated openolt.Flow flows = 2;
 }
 
+message Timeout {
+    uint32 delay = 1;
+}
+
 message Empty {
 }
 
@@ -199,6 +203,15 @@
     // Reboot OLT
     rpc RebootOlt (Empty) returns (Response) {
     }
+    // Closes the Openolt gRPC server
+    rpc StopgRPCServer (Empty) returns (Response) {
+    }
+    // Start the Openolt gRPC server
+    rpc StartgRPCServer (Empty) returns (Response) {
+    }
+    // Restart the Openolt gRPC server after the given timeout
+    rpc RestartgRPCServer (Timeout) returns (Response) {
+    }
 
     // Get status of an ONU by serial number
     rpc GetONU (ONURequest) returns (ONU) {
diff --git a/internal/bbsim/api/grpc_api_server.go b/internal/bbsim/api/grpc_api_server.go
index 7ed8f8d..84d3478 100644
--- a/internal/bbsim/api/grpc_api_server.go
+++ b/internal/bbsim/api/grpc_api_server.go
@@ -20,6 +20,7 @@
 	"context"
 	"fmt"
 	"strings"
+	"time"
 
 	"github.com/opencord/bbsim/api/bbsim"
 	"github.com/opencord/bbsim/internal/bbsim/alarmsim"
@@ -128,6 +129,58 @@
 	return res, nil
 }
 
+func (s BBSimServer) StopgRPCServer(ctx context.Context, req *bbsim.Empty) (*bbsim.Response, error) {
+	res := &bbsim.Response{}
+	res.StatusCode = int32(codes.OK)
+	res.Message = fmt.Sprintf("Openolt gRPC server stopped")
+	o := devices.GetOLT()
+
+	logger.Infof("Received request to stop Openolt gRPC Server")
+
+	o.StopOltServer()
+
+	return res, nil
+}
+
+func (s BBSimServer) StartgRPCServer(ctx context.Context, req *bbsim.Empty) (*bbsim.Response, error) {
+	res := &bbsim.Response{}
+	res.StatusCode = int32(codes.OK)
+	res.Message = fmt.Sprintf("Openolt gRPC server started")
+	o := devices.GetOLT()
+
+	logger.Infof("Received request to start Openolt gRPC Server")
+
+	_, err := o.StartOltServer()
+	if err != nil {
+		return nil, err
+	}
+
+	return res, nil
+}
+
+func (s BBSimServer) RestartgRPCServer(ctx context.Context, req *bbsim.Timeout) (*bbsim.Response, error) {
+	o := devices.GetOLT()
+	logger.Infof("Received request to restart Openolt gRPC Server in %v seconds", req.Delay)
+	o.StopOltServer()
+
+	res := &bbsim.Response{}
+	res.StatusCode = int32(codes.OK)
+	res.Message = fmt.Sprintf("Openolt gRPC server stopped, restarting in %v", req.Delay)
+
+	go func() {
+		time.Sleep(time.Duration(req.Delay) * time.Second)
+		_, err := o.StartOltServer()
+		if err != nil {
+			logger.WithFields(log.Fields{
+				"err": err,
+			}).Error("Cannot restart Openolt gRPC server")
+		}
+		logger.Infof("Openolt gRPC Server restarted after %v seconds", req.Delay)
+	}()
+
+	return res, nil
+}
+
 func (s BBSimServer) SetLogLevel(ctx context.Context, req *bbsim.LogLevel) (*bbsim.LogLevel, error) {
 
 	common.SetLogLevel(log.StandardLogger(), req.Level, req.Caller)
diff --git a/internal/bbsim/devices/olt.go b/internal/bbsim/devices/olt.go
index beeffce..008e3be 100644
--- a/internal/bbsim/devices/olt.go
+++ b/internal/bbsim/devices/olt.go
@@ -48,6 +48,7 @@
 
 type OltDevice struct {
 	sync.Mutex
+	oltServer *grpc.Server
 
 	// BBSIM Internals
 	ID                   int
@@ -79,7 +80,6 @@
 }
 
 var olt OltDevice
-var oltServer *grpc.Server
 
 func GetOLT() *OltDevice {
 	return &olt
@@ -224,10 +224,9 @@
 
 func (o *OltDevice) InitOlt() {
 
-	if oltServer == nil {
-		oltServer, _ = o.newOltServer()
+	if o.oltServer == nil {
+		o.oltServer, _ = o.StartOltServer()
 	} else {
-		// FIXME there should never be a server running if we are initializing the OLT
 		oltLogger.Fatal("OLT server already running.")
 	}
 
@@ -267,12 +266,8 @@
 		return err
 	}
 
-	// TODO handle hard poweroff (i.e. no indications sent to Voltha) vs soft poweroff
 	time.Sleep(1 * time.Second) // we need to give the OLT the time to respond to all the pending gRPC request before stopping the server
-	if err := o.StopOltServer(); err != nil {
-		oltLogger.Errorf("Error in stopping OLT server")
-		return err
-	}
+	o.StopOltServer()
 
 	if softReboot {
 		for _, pon := range o.Pons {
@@ -341,18 +336,28 @@
 	return grpcServer, nil
 }
 
+// StartOltServer will create the grpc server that VOLTHA uses
+// to communicate with the device
+func (o *OltDevice) StartOltServer() (*grpc.Server, error) {
+	oltServer, err := o.newOltServer()
+	if err != nil {
+		oltLogger.WithFields(log.Fields{
+			"err": err,
+		}).Error("Cannot OLT gRPC server")
+		return nil, err
+	}
+	return oltServer, nil
+}
+
 // StopOltServer stops the OpenOLT grpc server
-func (o *OltDevice) StopOltServer() error {
-	// TODO handle poweroff vs graceful shutdown
-	if oltServer != nil {
+func (o *OltDevice) StopOltServer() {
+	if o.oltServer != nil {
 		oltLogger.WithFields(log.Fields{
 			"oltId": o.SerialNumber,
 		}).Warnf("Stopping OLT gRPC server")
-		oltServer.Stop()
-		oltServer = nil
+		o.oltServer.Stop()
+		o.oltServer = nil
 	}
-
-	return nil
 }
 
 // Device Methods
diff --git a/internal/bbsimctl/commands/olt.go b/internal/bbsimctl/commands/olt.go
index 5f6747e..bed3733 100644
--- a/internal/bbsimctl/commands/olt.go
+++ b/internal/bbsimctl/commands/olt.go
@@ -49,6 +49,15 @@
 
 type OltReboot struct{}
 
+type StopGrpcServer struct{}
+
+type StartGrpcServer struct{}
+type RestartGrpcServer struct {
+	Args struct {
+		Delay uint32
+	} `positional-args:"yes" required:"yes"`
+}
+
 type OltFlows struct{}
 
 type OltPoweronAllOnus struct{}
@@ -66,6 +75,9 @@
 	Flows           OltFlows           `command:"flows"`
 	PoweronAllOnus  OltPoweronAllOnus  `command:"poweronAllONUs"`
 	ShutdownAllOnus OltShutdownAllOnus `command:"shutdownAllONUs"`
+	StopServer      StopGrpcServer     `command:"stopServer"`
+	StartServer     StartGrpcServer    `command:"startServer"`
+	RestartServer   RestartGrpcServer  `command:"restartServer"`
 }
 
 func RegisterOltCommands(parser *flags.Parser) {
@@ -184,6 +196,63 @@
 	return nil
 }
 
+func (o *StopGrpcServer) Execute(args []string) error {
+	client, conn := connect()
+	defer conn.Close()
+
+	ctx, cancel := context.WithTimeout(context.Background(), config.GlobalConfig.Grpc.Timeout)
+	defer cancel()
+
+	res, err := client.StopgRPCServer(ctx, &pb.Empty{})
+
+	if err != nil {
+		log.Fatalf("Cannot stop Openolt server: %v", err)
+		return err
+	}
+
+	fmt.Println(fmt.Sprintf("[Status: %d] %s", res.StatusCode, res.Message))
+	return nil
+}
+
+func (o *StartGrpcServer) Execute(args []string) error {
+	client, conn := connect()
+	defer conn.Close()
+
+	ctx, cancel := context.WithTimeout(context.Background(), config.GlobalConfig.Grpc.Timeout)
+	defer cancel()
+
+	res, err := client.StartgRPCServer(ctx, &pb.Empty{})
+
+	if err != nil {
+		log.Fatalf("Cannot start Openolt server: %v", err)
+		return err
+	}
+
+	fmt.Println(fmt.Sprintf("[Status: %d] %s", res.StatusCode, res.Message))
+	return nil
+}
+
+func (o *RestartGrpcServer) Execute(args []string) error {
+	req := &pb.Timeout{
+		Delay: o.Args.Delay,
+	}
+	client, conn := connect()
+	defer conn.Close()
+
+	ctx, cancel := context.WithTimeout(context.Background(), config.GlobalConfig.Grpc.Timeout)
+	defer cancel()
+
+	res, err := client.RestartgRPCServer(ctx, req)
+
+	if err != nil {
+		log.Fatalf("Cannot restart Openolt server: %v", err)
+		return err
+	}
+
+	fmt.Println(fmt.Sprintf("[Status: %d] %s", res.StatusCode, res.Message))
+	return nil
+}
+
 func (o *OltFlows) Execute(args []string) error {
 	client, conn := connect()
 	defer conn.Close()
