diff --git a/api/bbsim/bbsim.pb.go b/api/bbsim/bbsim.pb.go
index c827cd4..1a36b63 100644
--- a/api/bbsim/bbsim.pb.go
+++ b/api/bbsim/bbsim.pb.go
@@ -7,6 +7,7 @@
 	context "context"
 	fmt "fmt"
 	proto "github.com/golang/protobuf/proto"
+	openolt "github.com/opencord/voltha-protos/v2/go/openolt"
 	tech_profile "github.com/opencord/voltha-protos/v2/go/tech_profile"
 	grpc "google.golang.org/grpc"
 	codes "google.golang.org/grpc/codes"
@@ -930,6 +931,53 @@
 	return SubActionTypes_JOIN
 }
 
+type Flows struct {
+	FlowCount            uint32          `protobuf:"varint,1,opt,name=flow_count,json=flowCount,proto3" json:"flow_count,omitempty"`
+	Flows                []*openolt.Flow `protobuf:"bytes,2,rep,name=flows,proto3" json:"flows,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
+}
+
+func (m *Flows) Reset()         { *m = Flows{} }
+func (m *Flows) String() string { return proto.CompactTextString(m) }
+func (*Flows) ProtoMessage()    {}
+func (*Flows) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ef7750073d18011b, []int{15}
+}
+
+func (m *Flows) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Flows.Unmarshal(m, b)
+}
+func (m *Flows) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Flows.Marshal(b, m, deterministic)
+}
+func (m *Flows) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Flows.Merge(m, src)
+}
+func (m *Flows) XXX_Size() int {
+	return xxx_messageInfo_Flows.Size(m)
+}
+func (m *Flows) XXX_DiscardUnknown() {
+	xxx_messageInfo_Flows.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Flows proto.InternalMessageInfo
+
+func (m *Flows) GetFlowCount() uint32 {
+	if m != nil {
+		return m.FlowCount
+	}
+	return 0
+}
+
+func (m *Flows) GetFlows() []*openolt.Flow {
+	if m != nil {
+		return m.Flows
+	}
+	return nil
+}
+
 type Empty struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -940,7 +988,7 @@
 func (m *Empty) String() string { return proto.CompactTextString(m) }
 func (*Empty) ProtoMessage()    {}
 func (*Empty) Descriptor() ([]byte, []int) {
-	return fileDescriptor_ef7750073d18011b, []int{15}
+	return fileDescriptor_ef7750073d18011b, []int{16}
 }
 
 func (m *Empty) XXX_Unmarshal(b []byte) error {
@@ -979,90 +1027,95 @@
 	proto.RegisterType((*LogLevel)(nil), "bbsim.LogLevel")
 	proto.RegisterType((*Response)(nil), "bbsim.Response")
 	proto.RegisterType((*IgmpRequest)(nil), "bbsim.IgmpRequest")
+	proto.RegisterType((*Flows)(nil), "bbsim.Flows")
 	proto.RegisterType((*Empty)(nil), "bbsim.Empty")
 }
 
 func init() { proto.RegisterFile("api/bbsim/bbsim.proto", fileDescriptor_ef7750073d18011b) }
 
 var fileDescriptor_ef7750073d18011b = []byte{
-	// 1221 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0xcd, 0x6e, 0xdb, 0x46,
-	0x17, 0x95, 0x2c, 0xeb, 0xef, 0xca, 0x96, 0xe9, 0x49, 0xec, 0x08, 0xfe, 0x8c, 0x2f, 0x02, 0x91,
-	0x16, 0x4e, 0xd0, 0x3a, 0x8d, 0xdd, 0xa2, 0xe9, 0x92, 0x96, 0x68, 0x85, 0x8d, 0x3c, 0x14, 0x86,
-	0x94, 0x83, 0xac, 0x08, 0x4a, 0x1a, 0x5b, 0x04, 0x48, 0x51, 0x21, 0x47, 0x09, 0xf2, 0x00, 0x7d,
-	0x91, 0x3e, 0x51, 0x17, 0xed, 0xb6, 0xef, 0xd1, 0x5d, 0x31, 0xc3, 0x21, 0x45, 0x5a, 0x4e, 0x61,
-	0x74, 0xd3, 0x8d, 0x30, 0xf7, 0xcc, 0x39, 0x77, 0xee, 0xcf, 0xcc, 0xa5, 0xe0, 0xc0, 0x5d, 0x7a,
-	0x2f, 0x27, 0x93, 0xd8, 0x0b, 0x92, 0xdf, 0xd3, 0x65, 0x14, 0xb2, 0x10, 0x55, 0x85, 0x71, 0xd4,
-	0xfd, 0x18, 0xfa, 0x6c, 0xee, 0x3a, 0x02, 0x8c, 0x5f, 0x32, 0x3a, 0x9d, 0xf3, 0xf5, 0x8d, 0xe7,
-	0xd3, 0x84, 0xa8, 0xfe, 0x08, 0xf5, 0x91, 0x89, 0x47, 0x61, 0xc4, 0x50, 0x1b, 0xb6, 0x8c, 0x7e,
-	0xa7, 0xdc, 0x2d, 0x9f, 0x54, 0xc9, 0x96, 0xd1, 0x47, 0xc7, 0xd0, 0x34, 0x97, 0x34, 0xb2, 0x98,
-	0xcb, 0x68, 0x67, 0xab, 0x5b, 0x3e, 0x69, 0x92, 0x35, 0xc0, 0x85, 0x18, 0x1b, 0xff, 0x42, 0xf8,
-	0x47, 0x19, 0x2a, 0xa6, 0xbf, 0xa9, 0x52, 0x61, 0xc7, 0xa2, 0x91, 0xe7, 0xfa, 0x78, 0x15, 0x4c,
-	0x68, 0x24, 0x85, 0x05, 0xac, 0xe8, 0xb9, 0x72, 0xc7, 0x33, 0x7a, 0x06, 0xbb, 0xc6, 0x82, 0xd1,
-	0x68, 0xe1, 0xfa, 0x09, 0x63, 0x5b, 0x30, 0x8a, 0x20, 0x7a, 0x01, 0x0d, 0x19, 0x78, 0xdc, 0xa9,
-	0x76, 0x2b, 0x27, 0xad, 0xb3, 0xf6, 0x69, 0x52, 0x3a, 0x09, 0x93, 0x6c, 0x9f, 0x73, 0x65, 0x75,
-	0xe2, 0x4e, 0xad, 0xc0, 0x95, 0x30, 0xc9, 0xf6, 0xd5, 0xbf, 0x78, 0x5e, 0x78, 0xfc, 0x9f, 0xe5,
-	0x75, 0x0c, 0xcd, 0x51, 0xb8, 0xe0, 0xb1, 0x18, 0xfd, 0x4e, 0x55, 0x1c, 0xbf, 0x06, 0x10, 0x82,
-	0x6d, 0xcb, 0x76, 0x6f, 0x3b, 0x35, 0xb1, 0x21, 0xd6, 0x1c, 0xeb, 0x71, 0xac, 0x9e, 0x60, 0x7c,
-	0xcd, 0xbd, 0xbc, 0xf9, 0xa4, 0xcd, 0x66, 0x11, 0x8d, 0xe3, 0x4e, 0x23, 0x89, 0x24, 0x03, 0xd0,
-	0x21, 0xd4, 0xb8, 0x3f, 0x1c, 0x76, 0x9a, 0x42, 0x23, 0x2d, 0xd5, 0x85, 0xc7, 0x26, 0x1e, 0xdb,
-	0x91, 0x7b, 0x73, 0xe3, 0x4d, 0xad, 0xe9, 0x9c, 0xce, 0x56, 0x3e, 0x8d, 0x62, 0x64, 0xc0, 0x1e,
-	0xe3, 0xe0, 0x1a, 0x12, 0x85, 0x69, 0x9d, 0x3d, 0x3d, 0x2d, 0xdc, 0xc5, 0x0d, 0x25, 0xb9, 0xab,
-	0x53, 0x4f, 0x60, 0xdb, 0xc4, 0xe3, 0x18, 0x75, 0xa1, 0xea, 0x31, 0x1a, 0x70, 0x47, 0xbc, 0x1f,
-	0x20, 0xfb, 0x61, 0xe2, 0x31, 0x49, 0x36, 0xd4, 0xef, 0x00, 0xb8, 0x45, 0x3f, 0xac, 0x68, 0xcc,
-	0x36, 0xca, 0x5f, 0xde, 0x2c, 0xbf, 0xfa, 0x67, 0x05, 0x9a, 0x9a, 0xef, 0x46, 0x81, 0xfd, 0x79,
-	0x49, 0xd5, 0xdf, 0x2a, 0x50, 0xe5, 0x8b, 0x18, 0xd5, 0xa1, 0x32, 0x34, 0x2d, 0xa5, 0x84, 0xda,
-	0x00, 0xfd, 0xf7, 0x06, 0x1e, 0x38, 0x03, 0xcd, 0x1a, 0x29, 0x65, 0xb4, 0x0b, 0x4d, 0x13, 0x8f,
-	0x1d, 0x6d, 0xa8, 0x91, 0x2b, 0x65, 0x0b, 0x3d, 0x81, 0x47, 0xdc, 0xb4, 0x6c, 0x8d, 0xd8, 0xe3,
-	0x91, 0x73, 0xa9, 0x19, 0xc3, 0x31, 0xd1, 0x95, 0x0a, 0x3a, 0x04, 0x24, 0x36, 0x8c, 0x01, 0xd6,
-	0x86, 0x4e, 0x5f, 0x1f, 0x10, 0xad, 0xaf, 0x2b, 0xdb, 0xa9, 0xa0, 0x4f, 0x8c, 0x4b, 0xdb, 0x31,
-	0x2f, 0x9d, 0x77, 0x06, 0xee, 0x9b, 0xef, 0x94, 0x2a, 0x3a, 0x86, 0x0e, 0xdf, 0x18, 0x9a, 0x96,
-	0xc5, 0x71, 0xf3, 0xaa, 0x67, 0x38, 0xbd, 0x37, 0x1a, 0xc6, 0xfa, 0x50, 0xa9, 0x65, 0xe7, 0x08,
-	0x77, 0x56, 0x76, 0x4e, 0x1d, 0x3d, 0x87, 0xaf, 0xf8, 0x86, 0x4d, 0x34, 0x6c, 0x5d, 0x19, 0x96,
-	0x65, 0x98, 0xd8, 0x31, 0xb0, 0xad, 0x93, 0x4b, 0x9d, 0xe8, 0xb8, 0xa7, 0x3b, 0xef, 0x34, 0x82,
-	0x0d, 0x3c, 0x50, 0x1a, 0xe8, 0x08, 0x0e, 0x45, 0xe8, 0x3d, 0xdb, 0xb8, 0xd6, 0x6c, 0x4e, 0x4c,
-	0xdd, 0x34, 0x51, 0x47, 0xb4, 0xd1, 0x19, 0x11, 0xb3, 0xa7, 0x5b, 0x16, 0xcf, 0x57, 0x27, 0xc4,
-	0x24, 0x0a, 0xa0, 0x2e, 0x1c, 0xe7, 0xe3, 0x7a, 0xab, 0xbf, 0x77, 0xac, 0xf7, 0xb8, 0x97, 0x69,
-	0x5b, 0xe8, 0x00, 0xf6, 0x39, 0xc3, 0xb0, 0xc7, 0xce, 0xc8, 0xc4, 0xbc, 0x16, 0xb6, 0xa5, 0xec,
-	0xa0, 0x7d, 0xd8, 0xcd, 0x2a, 0xc5, 0xe5, 0xca, 0xee, 0x5d, 0xe8, 0x42, 0x69, 0xa7, 0x89, 0xa5,
-	0xd0, 0xa8, 0xe7, 0xf0, 0x2c, 0x94, 0xbd, 0xb4, 0x1e, 0x85, 0x8d, 0x9e, 0x8c, 0x4a, 0x41, 0x08,
-	0xda, 0xf9, 0xdd, 0x4b, 0x43, 0xd9, 0x47, 0x8f, 0x60, 0x2f, 0x8f, 0x69, 0x57, 0x86, 0x82, 0xd4,
-	0xd7, 0xd0, 0x16, 0xfd, 0x1d, 0xb9, 0x91, 0x1b, 0x50, 0x46, 0x23, 0xa4, 0x40, 0xe5, 0x2d, 0xfd,
-	0x2c, 0x6f, 0x03, 0x5f, 0xa2, 0xc7, 0x50, 0xbd, 0x76, 0xfd, 0x55, 0x3a, 0xb1, 0x12, 0x43, 0xfd,
-	0xb5, 0x2c, 0xfc, 0x09, 0x75, 0x7a, 0xa5, 0x8e, 0x73, 0xb7, 0x45, 0x7a, 0x58, 0x03, 0x0f, 0x7a,
-	0xef, 0x87, 0x50, 0xe3, 0x8f, 0x76, 0x15, 0xcb, 0xc7, 0x2e, 0x2d, 0xf4, 0x03, 0x40, 0x16, 0x62,
-	0xdc, 0xd9, 0x16, 0x37, 0xfc, 0x40, 0xde, 0xf0, 0x62, 0x02, 0x24, 0x47, 0x54, 0x3f, 0xc0, 0x9e,
-	0x39, 0xb4, 0x0b, 0x31, 0x76, 0xa1, 0x25, 0xc6, 0xc3, 0x8d, 0x3b, 0xa5, 0x72, 0x1c, 0xed, 0x92,
-	0x3c, 0x94, 0x4d, 0x15, 0x6e, 0x8a, 0x4c, 0xb6, 0x72, 0x53, 0x25, 0x05, 0xbf, 0x14, 0xa9, 0xfa,
-	0x4b, 0x19, 0x76, 0xaf, 0x69, 0x14, 0x7b, 0xe1, 0x42, 0xe6, 0xd4, 0x81, 0xfa, 0xc7, 0x04, 0x90,
-	0x35, 0x49, 0x4d, 0x5e, 0xaf, 0xc9, 0xca, 0xf3, 0x67, 0xb6, 0x17, 0x64, 0xdf, 0x83, 0x0c, 0x40,
-	0xff, 0x07, 0x98, 0x86, 0x41, 0xe0, 0xb1, 0x37, 0x6e, 0x3c, 0x97, 0xa7, 0xe4, 0x10, 0xae, 0xbe,
-	0xf5, 0x98, 0x0c, 0x22, 0x99, 0x7c, 0x6b, 0x40, 0x7d, 0x0d, 0x8d, 0x61, 0x78, 0x3b, 0xa4, 0x1f,
-	0xa9, 0xcf, 0x3b, 0xe8, 0xf3, 0x85, 0x3c, 0x3f, 0x31, 0x78, 0x06, 0x53, 0xd7, 0xf7, 0x65, 0x27,
-	0x1a, 0x44, 0x5a, 0xaa, 0x0e, 0x0d, 0x42, 0xe3, 0x65, 0xb8, 0x88, 0x29, 0x7a, 0x0a, 0xad, 0x58,
-	0xf8, 0x73, 0xa6, 0xe1, 0x8c, 0xca, 0xe1, 0x0d, 0x09, 0xd4, 0x0b, 0x67, 0x94, 0x27, 0x17, 0xd0,
-	0x38, 0x76, 0x6f, 0xd3, 0x04, 0x52, 0x53, 0x8d, 0xa1, 0x65, 0xdc, 0x06, 0xcb, 0xb4, 0xee, 0xcf,
-	0xa1, 0x66, 0x2e, 0x56, 0x84, 0x7e, 0x90, 0x83, 0x6e, 0x3f, 0x37, 0x9f, 0x12, 0x0a, 0x91, 0x04,
-	0xf4, 0x13, 0xec, 0x58, 0xab, 0x89, 0x36, 0x65, 0x5e, 0xb8, 0xb8, 0x76, 0x7d, 0xe1, 0xb8, 0x9d,
-	0xb5, 0x3b, 0xdb, 0x12, 0xa3, 0x88, 0x14, 0xa8, 0x6a, 0x1d, 0xaa, 0x7a, 0xb0, 0x64, 0x9f, 0x5f,
-	0xbc, 0x82, 0x76, 0x91, 0x88, 0x1a, 0xb0, 0xfd, 0xb3, 0x69, 0x60, 0xa5, 0x84, 0x9a, 0x50, 0x1d,
-	0xea, 0xda, 0xb5, 0xae, 0x94, 0x11, 0x40, 0x8d, 0x83, 0xd7, 0xe7, 0xca, 0xd6, 0xd9, 0xef, 0x35,
-	0xa8, 0x5e, 0x5c, 0x58, 0x5e, 0x80, 0x5e, 0x42, 0x5d, 0xb6, 0x10, 0xed, 0xc8, 0x53, 0x85, 0xd7,
-	0xa3, 0xc7, 0xd2, 0x2a, 0x34, 0x58, 0x2d, 0xa1, 0x67, 0x50, 0x1b, 0x50, 0xc6, 0x3f, 0xde, 0x45,
-	0x7e, 0x36, 0x84, 0x7d, 0xa6, 0x96, 0xd0, 0xb7, 0x00, 0xa3, 0xf0, 0x13, 0x8d, 0xc2, 0xc5, 0x26,
-	0x73, 0x4f, 0x5a, 0x69, 0xe5, 0xd5, 0x12, 0x3a, 0x85, 0x96, 0x35, 0x5f, 0xb1, 0x59, 0xf8, 0xe9,
-	0x61, 0xfc, 0x6f, 0xa0, 0x49, 0xe8, 0x24, 0x0c, 0xd9, 0x83, 0xd8, 0x5f, 0x43, 0x9d, 0x87, 0xcc,
-	0xbf, 0x1c, 0x45, 0x6e, 0x6b, 0xdd, 0x98, 0x58, 0x2d, 0xf1, 0xbe, 0x25, 0x3c, 0xb4, 0xd9, 0xb1,
-	0xa3, 0xdc, 0x47, 0x46, 0x2d, 0xa1, 0x57, 0xd0, 0xb2, 0x28, 0xcb, 0x6e, 0x5d, 0x7a, 0x68, 0x0a,
-	0x1c, 0xdd, 0x05, 0xd4, 0x12, 0x3a, 0xcf, 0xe5, 0x78, 0xff, 0x11, 0xf7, 0x84, 0x7e, 0xb6, 0xae,
-	0xe3, 0x83, 0x35, 0xdf, 0xc3, 0x0e, 0xa1, 0x31, 0x73, 0x23, 0xa6, 0xbb, 0xcb, 0xd0, 0x7f, 0xa0,
-	0xea, 0x1c, 0x5a, 0x52, 0xd5, 0x9f, 0x4f, 0x97, 0x0f, 0x14, 0x5d, 0xc0, 0x81, 0x45, 0x99, 0xb9,
-	0x58, 0x89, 0xb9, 0x63, 0x2c, 0x66, 0xde, 0xd4, 0xe5, 0xd7, 0x10, 0x1d, 0xae, 0xe5, 0xf9, 0x91,
-	0xf4, 0x0f, 0x3e, 0x7c, 0xf6, 0x45, 0x1f, 0xc5, 0xb1, 0x76, 0x9f, 0x8f, 0xd7, 0xb0, 0xd7, 0x9b,
-	0xbb, 0x8b, 0x5b, 0xca, 0x9f, 0x61, 0xf2, 0x57, 0x08, 0x49, 0x56, 0xee, 0x61, 0xde, 0xa7, 0x7c,
-	0x0b, 0x4f, 0x06, 0x22, 0x83, 0xcd, 0x3f, 0x2e, 0xf7, 0x94, 0xe0, 0x7f, 0x6b, 0x68, 0x83, 0xaf,
-	0x96, 0x26, 0x35, 0xf1, 0x7f, 0xfa, 0xfc, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0xb1, 0x13,
-	0x0e, 0x91, 0x0b, 0x00, 0x00,
+	// 1290 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0x4d, 0x6f, 0xdb, 0x46,
+	0x13, 0xd6, 0x87, 0xf5, 0x35, 0xb2, 0x64, 0x7a, 0x13, 0x3b, 0x82, 0xe3, 0xf7, 0x8d, 0xc0, 0xa6,
+	0x85, 0x13, 0x34, 0x4e, 0x63, 0xb7, 0x68, 0x7a, 0xa4, 0x25, 0x5a, 0x61, 0x2d, 0x93, 0xc2, 0x92,
+	0x72, 0x90, 0x13, 0x41, 0x49, 0x6b, 0x8b, 0x00, 0x45, 0x2a, 0xe4, 0x2a, 0x46, 0xce, 0x45, 0xff,
+	0x48, 0x7f, 0x51, 0x2f, 0xbd, 0xf6, 0x7f, 0xf4, 0x56, 0xec, 0x72, 0x49, 0x91, 0x96, 0x53, 0x18,
+	0xbd, 0xf4, 0x22, 0xec, 0x3c, 0xf3, 0xcc, 0xec, 0x7c, 0x71, 0xb4, 0xb0, 0xe7, 0x2c, 0xdd, 0xd7,
+	0x93, 0x49, 0xe4, 0x2e, 0xe2, 0xdf, 0xe3, 0x65, 0x18, 0xd0, 0x00, 0x55, 0xb8, 0x70, 0xf0, 0xf4,
+	0x53, 0xe0, 0xd1, 0xb9, 0x63, 0x73, 0x30, 0x7a, 0x1d, 0x2c, 0x89, 0x1f, 0x78, 0x34, 0xe6, 0x1c,
+	0x74, 0xf3, 0x4a, 0x4a, 0xa6, 0x73, 0x76, 0xbe, 0x76, 0x3d, 0x12, 0x33, 0xe4, 0x1f, 0xa1, 0x36,
+	0x32, 0xf4, 0x51, 0x10, 0x52, 0xd4, 0x86, 0x92, 0xd6, 0xef, 0x14, 0xbb, 0xc5, 0xa3, 0x0a, 0x2e,
+	0x69, 0x7d, 0x74, 0x08, 0x0d, 0x63, 0x49, 0x42, 0x93, 0x3a, 0x94, 0x74, 0x4a, 0xdd, 0xe2, 0x51,
+	0x03, 0xaf, 0x01, 0x66, 0xa8, 0xeb, 0xda, 0xbf, 0x30, 0xfc, 0xa3, 0x08, 0x65, 0xc3, 0xdb, 0xb4,
+	0x92, 0x61, 0xdb, 0x24, 0xa1, 0xeb, 0x78, 0xfa, 0x6a, 0x31, 0x21, 0xa1, 0x30, 0xcc, 0x61, 0x79,
+	0xcf, 0xe5, 0x3b, 0x9e, 0xd1, 0x73, 0x68, 0x69, 0x3e, 0x25, 0xa1, 0xef, 0x78, 0x31, 0x63, 0x8b,
+	0x33, 0xf2, 0x20, 0x7a, 0x09, 0x75, 0x11, 0x78, 0xd4, 0xa9, 0x74, 0xcb, 0x47, 0xcd, 0x93, 0xf6,
+	0x71, 0x5c, 0x57, 0x01, 0xe3, 0x54, 0xcf, 0xb8, 0xa2, 0x3a, 0x51, 0xa7, 0x9a, 0xe3, 0x0a, 0x18,
+	0xa7, 0x7a, 0xf9, 0x2f, 0x96, 0x97, 0x3e, 0xfe, 0xcf, 0xf2, 0x3a, 0x84, 0xc6, 0x28, 0xf0, 0x59,
+	0x2c, 0x5a, 0xbf, 0x53, 0xe1, 0xd7, 0xaf, 0x01, 0x84, 0x60, 0xcb, 0xb4, 0x9c, 0x9b, 0x4e, 0x95,
+	0x2b, 0xf8, 0x99, 0x61, 0x3d, 0x86, 0xd5, 0x62, 0x8c, 0x9d, 0x99, 0x97, 0x77, 0xb7, 0xca, 0x6c,
+	0x16, 0x92, 0x28, 0xea, 0xd4, 0xe3, 0x48, 0x52, 0x00, 0xed, 0x43, 0x95, 0xf9, 0xd3, 0x83, 0x4e,
+	0x83, 0xdb, 0x08, 0x49, 0x76, 0xe0, 0xb1, 0xa1, 0x8f, 0xad, 0xd0, 0xb9, 0xbe, 0x76, 0xa7, 0xe6,
+	0x74, 0x4e, 0x66, 0x2b, 0x8f, 0x84, 0x11, 0xd2, 0x60, 0x87, 0x32, 0x70, 0x0d, 0xf1, 0xc2, 0x34,
+	0x4f, 0x9e, 0x1d, 0xe7, 0x66, 0x71, 0xc3, 0x12, 0xdf, 0xb5, 0x93, 0x8f, 0x60, 0xcb, 0xd0, 0xc7,
+	0x11, 0xea, 0x42, 0xc5, 0xa5, 0x64, 0xc1, 0x1c, 0xb1, 0x7e, 0x80, 0xe8, 0x87, 0xa1, 0x8f, 0x71,
+	0xac, 0x90, 0xbf, 0x03, 0x60, 0x12, 0xf9, 0xb8, 0x22, 0x11, 0xdd, 0x28, 0x7f, 0x71, 0xb3, 0xfc,
+	0xf2, 0x9f, 0x65, 0x68, 0x28, 0x9e, 0x13, 0x2e, 0xac, 0xcf, 0x4b, 0x22, 0xff, 0x5e, 0x86, 0x0a,
+	0x3b, 0x44, 0xa8, 0x06, 0xe5, 0xa1, 0x61, 0x4a, 0x05, 0xd4, 0x06, 0xe8, 0x7f, 0xd0, 0xf4, 0x81,
+	0x3d, 0x50, 0xcc, 0x91, 0x54, 0x44, 0x2d, 0x68, 0x18, 0xfa, 0xd8, 0x56, 0x86, 0x0a, 0xbe, 0x94,
+	0x4a, 0xe8, 0x09, 0x3c, 0x62, 0xa2, 0x69, 0x29, 0xd8, 0x1a, 0x8f, 0xec, 0x73, 0x45, 0x1b, 0x8e,
+	0xb1, 0x2a, 0x95, 0xd1, 0x3e, 0x20, 0xae, 0xd0, 0x06, 0xba, 0x32, 0xb4, 0xfb, 0xea, 0x00, 0x2b,
+	0x7d, 0x55, 0xda, 0x4a, 0x0c, 0xfa, 0x58, 0x3b, 0xb7, 0x6c, 0xe3, 0xdc, 0x7e, 0xaf, 0xe9, 0x7d,
+	0xe3, 0xbd, 0x54, 0x41, 0x87, 0xd0, 0x61, 0x8a, 0xa1, 0x61, 0x9a, 0x0c, 0x37, 0x2e, 0x7b, 0x9a,
+	0xdd, 0x7b, 0xa7, 0xe8, 0xba, 0x3a, 0x94, 0xaa, 0xe9, 0x3d, 0xdc, 0x9d, 0x99, 0xde, 0x53, 0x43,
+	0x2f, 0xe0, 0x6b, 0xa6, 0xb0, 0xb0, 0xa2, 0x9b, 0x97, 0x9a, 0x69, 0x6a, 0x86, 0x6e, 0x6b, 0xba,
+	0xa5, 0xe2, 0x73, 0x15, 0xab, 0x7a, 0x4f, 0xb5, 0xdf, 0x2b, 0x58, 0xd7, 0xf4, 0x81, 0x54, 0x47,
+	0x07, 0xb0, 0xcf, 0x43, 0xef, 0x59, 0xda, 0x95, 0x62, 0x31, 0x62, 0xe2, 0xa6, 0x81, 0x3a, 0xbc,
+	0x8d, 0xf6, 0x08, 0x1b, 0x3d, 0xd5, 0x34, 0x59, 0xbe, 0x2a, 0xc6, 0x06, 0x96, 0x00, 0x75, 0xe1,
+	0x30, 0x1b, 0xd7, 0x85, 0xfa, 0xc1, 0x36, 0x3f, 0xe8, 0xbd, 0xd4, 0xb6, 0x89, 0xf6, 0x60, 0x97,
+	0x31, 0x34, 0x6b, 0x6c, 0x8f, 0x0c, 0x9d, 0xd5, 0xc2, 0x32, 0xa5, 0x6d, 0xb4, 0x0b, 0xad, 0xb4,
+	0x52, 0xcc, 0x5c, 0x6a, 0xdd, 0x85, 0xce, 0xa4, 0x76, 0x92, 0x58, 0x02, 0x8d, 0x7a, 0x36, 0xcb,
+	0x42, 0xda, 0x49, 0xea, 0x91, 0x53, 0xf4, 0x44, 0x54, 0x12, 0x42, 0xd0, 0xce, 0x6a, 0xcf, 0x35,
+	0x69, 0x17, 0x3d, 0x82, 0x9d, 0x2c, 0xa6, 0x5c, 0x6a, 0x12, 0x92, 0xdf, 0x42, 0x9b, 0xf7, 0x77,
+	0xe4, 0x84, 0xce, 0x82, 0x50, 0x12, 0x22, 0x09, 0xca, 0x17, 0xe4, 0xb3, 0x98, 0x06, 0x76, 0x44,
+	0x8f, 0xa1, 0x72, 0xe5, 0x78, 0xab, 0x64, 0x63, 0xc5, 0x82, 0xfc, 0x5b, 0x91, 0xfb, 0xe3, 0xd6,
+	0xc9, 0x48, 0x1d, 0x66, 0xa6, 0x45, 0x78, 0x58, 0x03, 0x0f, 0xfa, 0xde, 0xf7, 0xa1, 0xca, 0x3e,
+	0xda, 0x55, 0x24, 0x3e, 0x76, 0x21, 0xa1, 0x1f, 0x00, 0xd2, 0x10, 0xa3, 0xce, 0x16, 0x9f, 0xf0,
+	0x3d, 0x31, 0xe1, 0xf9, 0x04, 0x70, 0x86, 0x28, 0x7f, 0x84, 0x1d, 0x63, 0x68, 0xe5, 0x62, 0xec,
+	0x42, 0x93, 0xaf, 0x87, 0x6b, 0x67, 0x4a, 0xc4, 0x3a, 0x6a, 0xe1, 0x2c, 0x94, 0x6e, 0x15, 0x26,
+	0xf2, 0x4c, 0x4a, 0x99, 0xad, 0x92, 0x80, 0x5f, 0x8a, 0x54, 0xfe, 0xb5, 0x08, 0xad, 0x2b, 0x12,
+	0x46, 0x6e, 0xe0, 0x8b, 0x9c, 0x3a, 0x50, 0xfb, 0x14, 0x03, 0xa2, 0x26, 0x89, 0xc8, 0xea, 0x35,
+	0x59, 0xb9, 0xde, 0xcc, 0x72, 0x17, 0xe9, 0xff, 0x41, 0x0a, 0xa0, 0xff, 0x03, 0x4c, 0x83, 0xc5,
+	0xc2, 0xa5, 0xef, 0x9c, 0x68, 0x2e, 0x6e, 0xc9, 0x20, 0xcc, 0xfa, 0xc6, 0xa5, 0x22, 0x88, 0x78,
+	0xf3, 0xad, 0x01, 0xf9, 0x2d, 0xd4, 0x87, 0xc1, 0xcd, 0x90, 0x7c, 0x22, 0x1e, 0xeb, 0xa0, 0xc7,
+	0x0e, 0xe2, 0xfe, 0x58, 0x60, 0x19, 0x4c, 0x1d, 0xcf, 0x13, 0x9d, 0xa8, 0x63, 0x21, 0xc9, 0x2a,
+	0xd4, 0x31, 0x89, 0x96, 0x81, 0x1f, 0x11, 0xf4, 0x0c, 0x9a, 0x11, 0xf7, 0x67, 0x4f, 0x83, 0x19,
+	0x11, 0xcb, 0x1b, 0x62, 0xa8, 0x17, 0xcc, 0x08, 0x4b, 0x6e, 0x41, 0xa2, 0xc8, 0xb9, 0x49, 0x12,
+	0x48, 0x44, 0x39, 0x82, 0xa6, 0x76, 0xb3, 0x58, 0x26, 0x75, 0x7f, 0x01, 0x55, 0xc3, 0x5f, 0x61,
+	0xf2, 0x51, 0x2c, 0xba, 0xdd, 0xcc, 0x7e, 0x8a, 0x29, 0x58, 0x10, 0xd0, 0x4f, 0xb0, 0x6d, 0xae,
+	0x26, 0xca, 0x94, 0xba, 0x81, 0x7f, 0xe5, 0x78, 0xdc, 0x71, 0x3b, 0x6d, 0x77, 0xaa, 0xe2, 0xab,
+	0x08, 0xe7, 0xa8, 0xf2, 0x05, 0x54, 0xce, 0xbd, 0xe0, 0x36, 0x42, 0xff, 0x03, 0xb8, 0xf6, 0x82,
+	0x5b, 0x7b, 0x1a, 0xac, 0x7c, 0x2a, 0xba, 0xdc, 0x60, 0x48, 0x8f, 0x01, 0xe8, 0x2b, 0xa8, 0x30,
+	0x21, 0xea, 0x94, 0xf8, 0x28, 0xb5, 0x8e, 0x93, 0xe7, 0x01, 0xb3, 0xc6, 0xb1, 0x4e, 0xae, 0x41,
+	0x45, 0x5d, 0x2c, 0xe9, 0xe7, 0x97, 0x6f, 0xa0, 0x9d, 0xbf, 0x15, 0xd5, 0x61, 0xeb, 0x67, 0x43,
+	0xd3, 0xa5, 0x02, 0x6a, 0x40, 0x65, 0xa8, 0x2a, 0x57, 0xaa, 0x54, 0x44, 0x00, 0x55, 0x06, 0x5e,
+	0x9d, 0x4a, 0xa5, 0x93, 0x5f, 0x6a, 0x50, 0x39, 0x3b, 0x33, 0xdd, 0x05, 0x7a, 0x0d, 0x35, 0x31,
+	0x0f, 0x68, 0x5b, 0xa4, 0xc0, 0xbd, 0x1e, 0x3c, 0x16, 0x52, 0x6e, 0x5a, 0xe4, 0x02, 0x7a, 0x0e,
+	0xd5, 0x01, 0xa1, 0xec, 0x25, 0x90, 0xe7, 0xa7, 0x1b, 0xdd, 0xa3, 0x72, 0x01, 0xbd, 0x02, 0x18,
+	0x05, 0xb7, 0x24, 0x0c, 0xfc, 0x4d, 0xe6, 0x8e, 0x90, 0x92, 0x36, 0xca, 0x05, 0x74, 0x0c, 0x4d,
+	0x73, 0xbe, 0xa2, 0xb3, 0xe0, 0xf6, 0x61, 0xfc, 0x6f, 0xa1, 0x81, 0xc9, 0x24, 0x08, 0xe8, 0x83,
+	0xd8, 0xdf, 0x40, 0x8d, 0x85, 0xcc, 0xfe, 0x86, 0xf2, 0xdc, 0xe6, 0xba, 0xcb, 0x91, 0x5c, 0x60,
+	0x43, 0x10, 0xf3, 0xd0, 0x66, 0xfb, 0x0f, 0x32, 0xff, 0x58, 0x72, 0x01, 0xbd, 0x81, 0xa6, 0x49,
+	0x68, 0x3a, 0xc2, 0xc9, 0xa5, 0x09, 0x70, 0x70, 0x17, 0x90, 0x0b, 0xe8, 0x34, 0x93, 0xe3, 0xfd,
+	0x57, 0xdc, 0x13, 0xfa, 0xc9, 0xba, 0x8e, 0x0f, 0xb6, 0xf9, 0x1e, 0xb6, 0x31, 0x89, 0xa8, 0x13,
+	0x52, 0xd5, 0x59, 0x06, 0xde, 0x03, 0xad, 0x4e, 0xa1, 0x29, 0xac, 0xfa, 0xf3, 0xe9, 0xf2, 0x81,
+	0x46, 0x67, 0xb0, 0x67, 0x12, 0x6a, 0xf8, 0x2b, 0xbe, 0xc4, 0x34, 0x7f, 0xe6, 0x4e, 0x1d, 0x36,
+	0x86, 0x68, 0x7f, 0x6d, 0x9e, 0xdd, 0x6f, 0xff, 0xe0, 0xc3, 0xa3, 0x5f, 0xf4, 0x91, 0xdf, 0x91,
+	0xf7, 0xf9, 0x78, 0x05, 0xf5, 0x01, 0xa1, 0xf1, 0xb7, 0x75, 0x4f, 0xe4, 0x49, 0xd7, 0x39, 0x41,
+	0x2e, 0xa0, 0xb7, 0xb0, 0xd3, 0x9b, 0x3b, 0xfe, 0x0d, 0x61, 0x2b, 0x20, 0x7e, 0x86, 0x21, 0x41,
+	0xc9, 0x2c, 0x85, 0xfb, 0x2e, 0xba, 0x80, 0x27, 0x03, 0x9e, 0xf0, 0xe6, 0xa3, 0xe9, 0x9e, 0x7b,
+	0x9f, 0xae, 0xa1, 0x0d, 0xbe, 0x5c, 0x98, 0x54, 0xf9, 0x5b, 0xfe, 0xf4, 0xef, 0x00, 0x00, 0x00,
+	0xff, 0xff, 0x54, 0xe5, 0xac, 0xa2, 0x2a, 0x0c, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -1091,6 +1144,7 @@
 	RestartDhcp(ctx context.Context, in *ONURequest, opts ...grpc.CallOption) (*Response, error)
 	SetOnuAlarmIndication(ctx context.Context, in *ONUAlarmRequest, opts ...grpc.CallOption) (*Response, error)
 	SetOltAlarmIndication(ctx context.Context, in *OLTAlarmRequest, opts ...grpc.CallOption) (*Response, error)
+	GetFlows(ctx context.Context, in *ONURequest, opts ...grpc.CallOption) (*Flows, error)
 	ChangeIgmpState(ctx context.Context, in *IgmpRequest, opts ...grpc.CallOption) (*Response, error)
 	GetOnuTrafficSchedulers(ctx context.Context, in *ONURequest, opts ...grpc.CallOption) (*ONUTrafficSchedulers, error)
 }
@@ -1229,6 +1283,15 @@
 	return out, nil
 }
 
+func (c *bBSimClient) GetFlows(ctx context.Context, in *ONURequest, opts ...grpc.CallOption) (*Flows, error) {
+	out := new(Flows)
+	err := c.cc.Invoke(ctx, "/bbsim.BBSim/GetFlows", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 func (c *bBSimClient) ChangeIgmpState(ctx context.Context, in *IgmpRequest, opts ...grpc.CallOption) (*Response, error) {
 	out := new(Response)
 	err := c.cc.Invoke(ctx, "/bbsim.BBSim/ChangeIgmpState", in, out, opts...)
@@ -1263,6 +1326,7 @@
 	RestartDhcp(context.Context, *ONURequest) (*Response, error)
 	SetOnuAlarmIndication(context.Context, *ONUAlarmRequest) (*Response, error)
 	SetOltAlarmIndication(context.Context, *OLTAlarmRequest) (*Response, error)
+	GetFlows(context.Context, *ONURequest) (*Flows, error)
 	ChangeIgmpState(context.Context, *IgmpRequest) (*Response, error)
 	GetOnuTrafficSchedulers(context.Context, *ONURequest) (*ONUTrafficSchedulers, error)
 }
@@ -1313,6 +1377,9 @@
 func (*UnimplementedBBSimServer) SetOltAlarmIndication(ctx context.Context, req *OLTAlarmRequest) (*Response, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method SetOltAlarmIndication not implemented")
 }
+func (*UnimplementedBBSimServer) GetFlows(ctx context.Context, req *ONURequest) (*Flows, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetFlows not implemented")
+}
 func (*UnimplementedBBSimServer) ChangeIgmpState(ctx context.Context, req *IgmpRequest) (*Response, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method ChangeIgmpState not implemented")
 }
@@ -1576,6 +1643,24 @@
 	return interceptor(ctx, in, info, handler)
 }
 
+func _BBSim_GetFlows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ONURequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(BBSimServer).GetFlows(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/bbsim.BBSim/GetFlows",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(BBSimServer).GetFlows(ctx, req.(*ONURequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _BBSim_ChangeIgmpState_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(IgmpRequest)
 	if err := dec(in); err != nil {
@@ -1673,6 +1758,10 @@
 			Handler:    _BBSim_SetOltAlarmIndication_Handler,
 		},
 		{
+			MethodName: "GetFlows",
+			Handler:    _BBSim_GetFlows_Handler,
+		},
+		{
 			MethodName: "ChangeIgmpState",
 			Handler:    _BBSim_ChangeIgmpState_Handler,
 		},
diff --git a/api/bbsim/bbsim.pb.gw.go b/api/bbsim/bbsim.pb.gw.go
index d15e5a7..f02b22f 100644
--- a/api/bbsim/bbsim.pb.gw.go
+++ b/api/bbsim/bbsim.pb.gw.go
@@ -476,6 +476,93 @@
 
 }
 
+func request_BBSim_GetFlows_0(ctx context.Context, marshaler runtime.Marshaler, client BBSimClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq ONURequest
+	var metadata runtime.ServerMetadata
+
+	var (
+		val string
+		ok  bool
+		err error
+		_   = err
+	)
+
+	val, ok = pathParams["SerialNumber"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "SerialNumber")
+	}
+
+	protoReq.SerialNumber, err = runtime.String(val)
+
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "SerialNumber", err)
+	}
+
+	msg, err := client.GetFlows(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+	return msg, metadata, err
+
+}
+
+func local_request_BBSim_GetFlows_0(ctx context.Context, marshaler runtime.Marshaler, server BBSimServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq ONURequest
+	var metadata runtime.ServerMetadata
+
+	var (
+		val string
+		ok  bool
+		err error
+		_   = err
+	)
+
+	val, ok = pathParams["SerialNumber"]
+	if !ok {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "SerialNumber")
+	}
+
+	protoReq.SerialNumber, err = runtime.String(val)
+
+	if err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "SerialNumber", err)
+	}
+
+	msg, err := server.GetFlows(ctx, &protoReq)
+	return msg, metadata, err
+
+}
+
+var (
+	filter_BBSim_GetFlows_1 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
+)
+
+func request_BBSim_GetFlows_1(ctx context.Context, marshaler runtime.Marshaler, client BBSimClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq ONURequest
+	var metadata runtime.ServerMetadata
+
+	if err := req.ParseForm(); err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+	if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_BBSim_GetFlows_1); err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+
+	msg, err := client.GetFlows(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+	return msg, metadata, err
+
+}
+
+func local_request_BBSim_GetFlows_1(ctx context.Context, marshaler runtime.Marshaler, server BBSimServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+	var protoReq ONURequest
+	var metadata runtime.ServerMetadata
+
+	if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_BBSim_GetFlows_1); err != nil {
+		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+	}
+
+	msg, err := server.GetFlows(ctx, &protoReq)
+	return msg, metadata, err
+
+}
+
 func request_BBSim_GetOnuTrafficSchedulers_0(ctx context.Context, marshaler runtime.Marshaler, client BBSimClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
 	var protoReq ONURequest
 	var metadata runtime.ServerMetadata
@@ -715,6 +802,46 @@
 
 	})
 
+	mux.Handle("GET", pattern_BBSim_GetFlows_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+		ctx, cancel := context.WithCancel(req.Context())
+		defer cancel()
+		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+		resp, md, err := local_request_BBSim_GetFlows_0(rctx, inboundMarshaler, server, req, pathParams)
+		ctx = runtime.NewServerMetadataContext(ctx, md)
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+
+		forward_BBSim_GetFlows_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+	})
+
+	mux.Handle("GET", pattern_BBSim_GetFlows_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+		ctx, cancel := context.WithCancel(req.Context())
+		defer cancel()
+		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+		resp, md, err := local_request_BBSim_GetFlows_1(rctx, inboundMarshaler, server, req, pathParams)
+		ctx = runtime.NewServerMetadataContext(ctx, md)
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+
+		forward_BBSim_GetFlows_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+	})
+
 	mux.Handle("GET", pattern_BBSim_GetOnuTrafficSchedulers_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
 		ctx, cancel := context.WithCancel(req.Context())
 		defer cancel()
@@ -956,6 +1083,46 @@
 
 	})
 
+	mux.Handle("GET", pattern_BBSim_GetFlows_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+		ctx, cancel := context.WithCancel(req.Context())
+		defer cancel()
+		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+		rctx, err := runtime.AnnotateContext(ctx, mux, req)
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+		resp, md, err := request_BBSim_GetFlows_0(rctx, inboundMarshaler, client, req, pathParams)
+		ctx = runtime.NewServerMetadataContext(ctx, md)
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+
+		forward_BBSim_GetFlows_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+	})
+
+	mux.Handle("GET", pattern_BBSim_GetFlows_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+		ctx, cancel := context.WithCancel(req.Context())
+		defer cancel()
+		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+		rctx, err := runtime.AnnotateContext(ctx, mux, req)
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+		resp, md, err := request_BBSim_GetFlows_1(rctx, inboundMarshaler, client, req, pathParams)
+		ctx = runtime.NewServerMetadataContext(ctx, md)
+		if err != nil {
+			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+			return
+		}
+
+		forward_BBSim_GetFlows_1(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+	})
+
 	mux.Handle("GET", pattern_BBSim_GetOnuTrafficSchedulers_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
 		ctx, cancel := context.WithCancel(req.Context())
 		defer cancel()
@@ -998,6 +1165,10 @@
 
 	pattern_BBSim_SetOltAlarmIndication_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 2, 5, 2, 6, 1, 0, 4, 1, 5, 7}, []string{"v1", "olt", "ports", "InterfaceType", "InterfaceID", "alarms", "los", "Status"}, "", runtime.AssumeColonVerbOpt(true)))
 
+	pattern_BBSim_GetFlows_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"v1", "olt", "onus", "SerialNumber", "flows"}, "", runtime.AssumeColonVerbOpt(true)))
+
+	pattern_BBSim_GetFlows_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "olt", "flows"}, "", runtime.AssumeColonVerbOpt(true)))
+
 	pattern_BBSim_GetOnuTrafficSchedulers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"v1", "olt", "onus", "SerialNumber", "trafficschedulers"}, "", runtime.AssumeColonVerbOpt(true)))
 )
 
@@ -1020,5 +1191,9 @@
 
 	forward_BBSim_SetOltAlarmIndication_0 = runtime.ForwardResponseMessage
 
+	forward_BBSim_GetFlows_0 = runtime.ForwardResponseMessage
+
+	forward_BBSim_GetFlows_1 = runtime.ForwardResponseMessage
+
 	forward_BBSim_GetOnuTrafficSchedulers_0 = runtime.ForwardResponseMessage
 )
diff --git a/api/bbsim/bbsim.proto b/api/bbsim/bbsim.proto
index 57e1de7..d862c54 100644
--- a/api/bbsim/bbsim.proto
+++ b/api/bbsim/bbsim.proto
@@ -15,6 +15,7 @@
 syntax = "proto3";
 package bbsim;
 
+import "voltha_protos/openolt.proto";
 import "voltha_protos/tech_profile.proto";
 // Models
 
@@ -146,6 +147,11 @@
 	SubActionTypes SubActionVal = 2;
 }
 
+message Flows {
+    uint32 flow_count = 1;
+    repeated openolt.Flow flows = 2;
+}
+
 message Empty {}
 
 service BBSim {
@@ -163,6 +169,7 @@
     rpc RestartDhcp (ONURequest) returns (Response) {}
     rpc SetOnuAlarmIndication (ONUAlarmRequest) returns (Response) {}
     rpc SetOltAlarmIndication (OLTAlarmRequest) returns (Response) {}
+    rpc GetFlows(ONURequest) returns(Flows) {} 
     rpc ChangeIgmpState (IgmpRequest) returns (Response) {}
     rpc GetOnuTrafficSchedulers (ONURequest) returns (ONUTrafficSchedulers) {}
 }
diff --git a/api/bbsim/bbsim.yaml b/api/bbsim/bbsim.yaml
index 1d69552..0c23240 100644
--- a/api/bbsim/bbsim.yaml
+++ b/api/bbsim/bbsim.yaml
@@ -31,6 +31,10 @@
     delete: "/v1/olt/onus/{SerialNumber}"
   - selector: bbsim.BBSim.PoweronONU
     post: "/v1/olt/onus/{SerialNumber}"
+  - selector: bbsim.BBSim.GetFlows
+    get: "/v1/olt/onus/{SerialNumber}/flows"
+    additional_bindings:
+      - get: "/v1/olt/flows"
   - selector: bbsim.BBSim.SetOnuAlarmIndication
     post: "/v1/olt/onus/{SerialNumber}/alarms/{AlarmType}/{Status}"
   - selector: bbsim.BBSim.GetOnuTrafficSchedulers
