Ingress gateway vs virtual service

Why ingress gateway is needed when there is already virtual service ? I am not understanding the difference and use case of virtual service, and ingress gateway… isn’t that redundant to have both ?

Ingress gateway is to get the traffic from external network like from internet. Virtual service is to route that traffic to particular service/pods.