Heat a large pot over medium heat. Add the onion and ginger and cook for about 5 minutes, stirring occasionally. Add the garlic, star anise, cinnamon sticks, coriander seeds, and fennel seeds. Cook for another minute or two until fragrant.
Add the fish sauce (if using), soy sauce, and broth. Bring to a boil then reduce heat to low and simmer for 30 minutes.
Strain the soup through a fine mesh sieve into a clean pot or bowl. Discard the solids.
Serve hot with desired toppings such as bean sprouts, fresh herbs (like cilantro or basil), lime wedges, jalapenos, etc.