I2P will work with a firewall and without one. But it’s much faster if you open port 8887 UDP and TCP in your firewall/NAT/internet modem. For more details and further configuration see http://localhost:7657/config.jsp.
It is also important that you set bandwith limits. You can do that at http://localhost:7657/config.jsp. You have to know how fast your internet connection is. To find this out check out the webinterface of your internet modem or if you still don’t know the speed take a web-based speed test (choose one near to you). Essentially for I2P is the up-bandwith, but most connections have less up than down :-(. When you are using I2P at home I recommend to share all your traffic. I2P won’t use the whole every time. It will only use it when it is needed – by others or by you. Most people don’t use their up-traffic. Surfing is almost only down-traffic and i never had problems running I2P with those settings. When you contribute more bandwith to the network (up-bandwith), you are more anonymous, because you route also traffic for other people and this creates “noise” on your connection. This makes it even more difficult to find out wich traffic is your own and wich one is from other people. By the way it also helps the network when you contribute more, because it is faster for all.
Bandwith share percentage sets the limit how much of the bandwith I2P uses comes from others (participating tunnels).