diff --git a/internal/bbsim/api/onus_handler.go b/internal/bbsim/api/onus_handler.go
index 3c84380..43b624f 100644
--- a/internal/bbsim/api/onus_handler.go
+++ b/internal/bbsim/api/onus_handler.go
@@ -231,8 +231,9 @@
 	res := &bbsim.Response{}
 
 	logger.WithFields(log.Fields{
-		"OnuSn":     req.OnuReq.SerialNumber,
-		"subAction": req.SubActionVal,
+		"OnuSn":        req.OnuReq.SerialNumber,
+		"subAction":    req.SubActionVal,
+		"GroupAddress": req.GroupAddress,
 	}).Infof("Received igmp request for ONU")
 
 	olt := devices.GetOLT()
@@ -269,7 +270,7 @@
 					"Service": service.Name,
 				}).Debugf("Sending %s event on Service %s", event, service.Name)
 
-				if err := service.IGMPState.Event(event); err != nil {
+				if err := service.IGMPState.Event(event, devices.IgmpMessage{GroupAddress: req.GroupAddress}); err != nil {
 					logger.WithFields(log.Fields{
 						"OnuId":   onu.ID,
 						"IntfId":  onu.PonPortID,
diff --git a/internal/bbsim/devices/messageTypes.go b/internal/bbsim/devices/messageTypes.go
index e103ceb..144e1b9 100644
--- a/internal/bbsim/devices/messageTypes.go
+++ b/internal/bbsim/devices/messageTypes.go
@@ -139,6 +139,10 @@
 	GemPortId  uint32 // this is used by BBR
 }
 
+type IgmpMessage struct {
+	GroupAddress string
+}
+
 type OperState int
 
 const (
diff --git a/internal/bbsim/devices/services.go b/internal/bbsim/devices/services.go
index c7983a4..bd4d13c 100644
--- a/internal/bbsim/devices/services.go
+++ b/internal/bbsim/devices/services.go
@@ -255,19 +255,32 @@
 		},
 		fsm.Callbacks{
 			"igmp_join_start": func(e *fsm.Event) {
+				igmpInfo, _ := e.Args[0].(IgmpMessage)
 				msg := Message{
 					Type: IGMPMembershipReportV2,
+					Data: IgmpMessage{
+						GroupAddress: igmpInfo.GroupAddress,
+					},
 				}
 				service.Channel <- msg
 			},
 			"igmp_leave": func(e *fsm.Event) {
+				igmpInfo, _ := e.Args[0].(IgmpMessage)
 				msg := Message{
-					Type: IGMPLeaveGroup}
+					Type: IGMPLeaveGroup,
+					Data: IgmpMessage{
+						GroupAddress: igmpInfo.GroupAddress,
+					},
+				}
 				service.Channel <- msg
 			},
 			"igmp_join_startv3": func(e *fsm.Event) {
+				igmpInfo, _ := e.Args[0].(IgmpMessage)
 				msg := Message{
 					Type: IGMPMembershipReportV3,
+					Data: IgmpMessage{
+						GroupAddress: igmpInfo.GroupAddress,
+					},
 				}
 				service.Channel <- msg
 			},
@@ -422,29 +435,32 @@
 
 			}
 		case IGMPMembershipReportV2:
+			igmpInfo, _ := msg.Data.(IgmpMessage)
 			serviceLogger.WithFields(log.Fields{
 				"OnuId":  s.Onu.ID,
 				"IntfId": s.Onu.PonPortID,
 				"OnuSn":  s.Onu.Sn(),
 				"Name":   s.Name,
-			}).Debug("Recieved IGMPMembershipReportV2 message on ONU channel")
-			_ = igmp.SendIGMPMembershipReportV2(s.Onu.PonPortID, s.Onu.ID, s.Onu.Sn(), s.Onu.PortNo, s.GemPort, s.HwAddress, s.CTag, s.UsPonCTagPriority, s.Stream)
+			}).Debug("Received IGMPMembershipReportV2 message on ONU channel")
+			_ = igmp.SendIGMPMembershipReportV2(s.Onu.PonPortID, s.Onu.ID, s.Onu.Sn(), s.Onu.PortNo, s.GemPort, s.HwAddress, s.CTag, s.UsPonCTagPriority, s.Stream, igmpInfo.GroupAddress)
 		case IGMPLeaveGroup:
+			igmpInfo, _ := msg.Data.(IgmpMessage)
 			serviceLogger.WithFields(log.Fields{
 				"OnuId":  s.Onu.ID,
 				"IntfId": s.Onu.PonPortID,
 				"OnuSn":  s.Onu.Sn(),
 				"Name":   s.Name,
-			}).Debug("Recieved IGMPLeaveGroupV2 message on ONU channel")
-			_ = igmp.SendIGMPLeaveGroupV2(s.Onu.PonPortID, s.Onu.ID, s.Onu.Sn(), s.Onu.PortNo, s.GemPort, s.HwAddress, s.CTag, s.UsPonCTagPriority, s.Stream)
+			}).Debug("Received IGMPLeaveGroupV2 message on ONU channel")
+			_ = igmp.SendIGMPLeaveGroupV2(s.Onu.PonPortID, s.Onu.ID, s.Onu.Sn(), s.Onu.PortNo, s.GemPort, s.HwAddress, s.CTag, s.UsPonCTagPriority, s.Stream, igmpInfo.GroupAddress)
 		case IGMPMembershipReportV3:
+			igmpInfo, _ := msg.Data.(IgmpMessage)
 			serviceLogger.WithFields(log.Fields{
 				"OnuId":  s.Onu.ID,
 				"IntfId": s.Onu.PonPortID,
 				"OnuSn":  s.Onu.Sn(),
 				"Name":   s.Name,
-			}).Debug("Recieved IGMPMembershipReportV3 message on ONU channel")
-			_ = igmp.SendIGMPMembershipReportV3(s.Onu.PonPortID, s.Onu.ID, s.Onu.Sn(), s.Onu.PortNo, s.GemPort, s.HwAddress, s.CTag, s.UsPonCTagPriority, s.Stream)
+			}).Debug("Received IGMPMembershipReportV3 message on ONU channel")
+			_ = igmp.SendIGMPMembershipReportV3(s.Onu.PonPortID, s.Onu.ID, s.Onu.Sn(), s.Onu.PortNo, s.GemPort, s.HwAddress, s.CTag, s.UsPonCTagPriority, s.Stream, igmpInfo.GroupAddress)
 
 		}
 	}
diff --git a/internal/bbsim/responders/igmp/igmp.go b/internal/bbsim/responders/igmp/igmp.go
index ae1f36c..15aafb1 100644
--- a/internal/bbsim/responders/igmp/igmp.go
+++ b/internal/bbsim/responders/igmp/igmp.go
@@ -29,13 +29,14 @@
 )
 
 func SendIGMPLeaveGroupV2(ponPortId uint32, onuId uint32, serialNumber string, portNo uint32,
-	gemPortId uint32, macAddress net.HardwareAddr, cTag int, pbit uint8, stream bbsim.Stream) error {
+	gemPortId uint32, macAddress net.HardwareAddr, cTag int, pbit uint8, stream bbsim.Stream, groupAddress string) error {
 	log.WithFields(log.Fields{
 		"OnuId":        onuId,
 		"SerialNumber": serialNumber,
 		"PortNo":       portNo,
+		"GroupAddress": groupAddress,
 	}).Debugf("Entered SendIGMPLeaveGroupV2")
-	igmp := createIGMPV2LeaveRequestPacket()
+	igmp := createIGMPV2LeaveRequestPacket(groupAddress)
 	pkt, err := serializeIgmpPacket(ponPortId, onuId, cTag, macAddress, pbit, igmp)
 
 	if err != nil {
@@ -43,6 +44,7 @@
 			"OnuId":        onuId,
 			"IntfId":       ponPortId,
 			"SerialNumber": serialNumber,
+			"GroupAddress": groupAddress,
 		}).Errorf("Seriliazation of igmp packet failed :  %s", err)
 		return err
 	}
@@ -63,6 +65,7 @@
 			"SerialNumber": serialNumber,
 			"PortNo":       portNo,
 			"IntfId":       ponPortId,
+			"GroupAddress": groupAddress,
 			"err":          err,
 		}).Error("Fail to send IGMP PktInd indication for ONU")
 		return err
@@ -71,9 +74,9 @@
 }
 
 func SendIGMPMembershipReportV2(ponPortId uint32, onuId uint32, serialNumber string, portNo uint32,
-	gemPortId uint32, macAddress net.HardwareAddr, cTag int, pbit uint8, stream bbsim.Stream) error {
+	gemPortId uint32, macAddress net.HardwareAddr, cTag int, pbit uint8, stream bbsim.Stream, groupAddress string) error {
 
-	igmp := createIGMPV2MembershipReportPacket()
+	igmp := createIGMPV2MembershipReportPacket(groupAddress)
 	pkt, err := serializeIgmpPacket(ponPortId, onuId, cTag, macAddress, pbit, igmp)
 
 	if err != nil {
@@ -81,6 +84,7 @@
 			"OnuId":        onuId,
 			"IntfId":       ponPortId,
 			"SerialNumber": serialNumber,
+			"GroupAddress": groupAddress,
 		}).Errorf("Seriliazation of igmp packet failed :  %s", err)
 		return err
 	}
@@ -101,6 +105,7 @@
 			"SerialNumber": serialNumber,
 			"PortNo":       portNo,
 			"IntfId":       ponPortId,
+			"GroupAddress": groupAddress,
 			"err":          err,
 		}).Errorf("Fail to send IGMP PktInd indication")
 		return err
@@ -110,18 +115,21 @@
 		"OnuId":        onuId,
 		"SerialNumber": serialNumber,
 		"PortNo":       portNo,
+		"GroupAddress": groupAddress,
 	}).Debugf("Sent SendIGMPMembershipReportV2")
 	return nil
 }
 
 func SendIGMPMembershipReportV3(ponPortId uint32, onuId uint32, serialNumber string, portNo uint32,
-	gemPortId uint32, macAddress net.HardwareAddr, cTag int, pbit uint8, stream bbsim.Stream) error {
+	gemPortId uint32, macAddress net.HardwareAddr, cTag int, pbit uint8, stream bbsim.Stream, groupAddress string) error {
+
 	log.WithFields(log.Fields{
 		"OnuId":        onuId,
 		"SerialNumber": serialNumber,
 		"PortNo":       portNo,
+		"GroupAddress": groupAddress,
 	}).Debugf("Entered SendIGMPMembershipReportV3")
-	igmp := createIGMPV3MembershipReportPacket()
+	igmp := createIGMPV3MembershipReportPacket(groupAddress)
 	pkt, err := serializeIgmpPacket(ponPortId, onuId, cTag, macAddress, pbit, igmp)
 
 	if err != nil {
@@ -129,6 +137,7 @@
 			"OnuId":        onuId,
 			"IntfId":       ponPortId,
 			"SerialNumber": serialNumber,
+			"GroupAddress": groupAddress,
 		}).Errorf("Seriliazation of igmp packet failed :  %s", err)
 		return err
 	}
@@ -148,6 +157,7 @@
 			"OnuId":        onuId,
 			"IntfId":       ponPortId,
 			"SerialNumber": serialNumber,
+			"GroupAddress": groupAddress,
 			"err":          err,
 		}).Errorf("Fail to send IGMP PktInd indication")
 		return err
@@ -176,13 +186,14 @@
 	igmp := igmpLayer.(*layers.IGMPv1or2)
 
 	if igmp.Type == layers.IGMPMembershipQuery {
-		_ = SendIGMPMembershipReportV2(ponPortId, onuId, serialNumber, portNo, gemPortId, macAddress, cTag, pbit, stream)
+		_ = SendIGMPMembershipReportV2(ponPortId, onuId, serialNumber, portNo, gemPortId, macAddress,
+			cTag, pbit, stream, igmp.GroupAddress.String())
 	}
 
 	return nil
 }
 
-func createIGMPV3MembershipReportPacket() *IGMP {
+func createIGMPV3MembershipReportPacket(groupAddress string) *IGMP {
 
 	groupRecord1 := IGMPv3GroupRecord{
 		Type:             IGMPv3GroupRecordType(IGMPIsIn),
@@ -206,7 +217,7 @@
 		Type:                    layers.IGMPMembershipReportV3, //IGMPV3 Membership Report
 		MaxResponseTime:         time.Duration(1),
 		Checksum:                0,
-		GroupAddress:            net.IPv4(224, 0, 0, 22),
+		GroupAddress:            net.ParseIP(groupAddress),
 		SupressRouterProcessing: false,
 		RobustnessValue:         0,
 		IntervalTime:            time.Duration(1),
@@ -220,21 +231,21 @@
 	return igmpDefault
 }
 
-func createIGMPV2MembershipReportPacket() *IGMP {
+func createIGMPV2MembershipReportPacket(groupAddress string) *IGMP {
 	return &IGMP{
 		Type:         layers.IGMPMembershipReportV2, //IGMPV2 Membership Report
 		Checksum:     0,
-		GroupAddress: net.IPv4(224, 0, 0, 22),
+		GroupAddress: net.ParseIP(groupAddress),
 		Version:      2,
 	}
 }
 
-func createIGMPV2LeaveRequestPacket() *IGMP {
+func createIGMPV2LeaveRequestPacket(groupAddress string) *IGMP {
 	return &IGMP{
 		Type:            layers.IGMPLeaveGroup, //IGMPV2 Leave Group
 		MaxResponseTime: time.Duration(1),
 		Checksum:        0,
-		GroupAddress:    net.IPv4(224, 0, 0, 22),
+		GroupAddress:    net.ParseIP(groupAddress),
 		Version:         2,
 	}
 }
@@ -258,7 +269,7 @@
 		Id:       0,
 		TTL:      128,
 		SrcIP:    []byte{0, 0, 0, 0},
-		DstIP:    []byte{224, 0, 0, 22},
+		DstIP:    igmp.GroupAddress,
 		Protocol: layers.IPProtocolIGMP,
 		Options:  []layers.IPv4Option{{OptionType: 148, OptionLength: 4, OptionData: make([]byte, 0)}}, //Adding router alert option
 	}
diff --git a/internal/bbsimctl/commands/onu.go b/internal/bbsimctl/commands/onu.go
index 5f6874b..da841cd 100644
--- a/internal/bbsimctl/commands/onu.go
+++ b/internal/bbsimctl/commands/onu.go
@@ -40,6 +40,7 @@
 
 type OnuSnString string
 type IgmpSubAction string
+type GroupAddress string
 
 const IgmpJoinKey string = "join"
 const IgmpLeaveKey string = "leave"
@@ -90,8 +91,9 @@
 
 type ONUIgmp struct {
 	Args struct {
-		OnuSn     OnuSnString
-		SubAction IgmpSubAction
+		OnuSn        OnuSnString
+		SubAction    IgmpSubAction
+		GroupAddress GroupAddress
 	} `positional-args:"yes" required:"yes"`
 }
 
@@ -331,6 +333,7 @@
 	igmpReq := pb.IgmpRequest{
 		OnuReq:       &req,
 		SubActionVal: subActionVal,
+		GroupAddress: string(options.Args.GroupAddress),
 	}
 	res, err := client.GetONU(ctx, igmpReq.OnuReq)
 	if err != nil {
@@ -340,7 +343,7 @@
 	}
 	log.WithFields(log.Fields{
 		"SerialNumber": igmpReq.OnuReq.SerialNumber,
-	}).Debugf("ONU has indentified : %s", res)
+	}).Debugf("ONU has identified : %s", res)
 
 	igmpRes, igmpErr := client.ChangeIgmpState(ctx, &igmpReq)
 	if igmpErr != nil {
