Finally I got it works.
Here is how my network looks like:
- ADSL modem. This is the DHCP server which provides IP addesses to all other devices
- Apple Airport Express wifi access point connected to the above modem. It works in Bridge mode and doesn't provide DHCP service or don't provide IP addresses to any devices.
- Xbox slim wirelessly connected to the access point. It has a fixed IP address provided by the modem (the modem use the xbox's MAC address to reserve a fixed IP for it). Making sure your xbox has a fixed IP is very important or all your port forwarding rules might be useless.
Previously, on the modem I have 2 port forwarding rules:
- TCP: forward port from 3075-3078 to my xbox's IP
- UDP: forward port from 3075-3078 to my xbox's IP
I passed all the tests on the xbox plugin setting screen. However, I still got the "Unable to join game session" error most of the time. Most of the time it doesn't work, rarely it does.
Last night, I opened the Active Session Log (ASL) screen on the modem (you need to log into the configuration/administration page of the modem to access to that screen, it may be called Log or whaterver on your modem, but it's a screen where you can see which IPs are accessing to where and which ports they are using).
Run the plugin port forwading test on xbox, refesh the ASL and notice my xbox does not only use ports in the range 3075-3078, but also many other ports as well. However, I still pass all the tests.
Run Black Ops 2 game, join 1 room in System Link, join a game session (and got the Unable to join error as usual) while keep refreshing the ASL to see the updated info. I found my xbox uses many ports: from 1024 to 6000+. This should be the reason why.
So I changed my port forwarding rules to:
- TCP: forward port from 1000-10000 to my xbox's IP. (Give it to 10K, why not ). The upper port (10K) is not important, but the lower one is important. Make it under 200 might lead you to other issues as it may conflict with other standard ports (.e.g 21 for FTP, 25 and 110 for email, 80 for http web access, 143 for google email if I remember correctly). So you need to look at the ASL to find the right port for the lower one.
- UDP: forward port from 1000-10000 to my xbox's IP
In the FSD Setting Plugin page I uses port 1010-9,990 to make sure they are within my forwarding ports.
Run the xbox plugin test again. All passed.
Back to the game, join a game session and IT WORKS. Join many other game sessions in many rooms and IT WORKS.
Hope this may help you.
BTW, if you happen to see me in Black Ops 2 room, join me and we can play/shoot each other . My nick name is Vietnam Soldier. I'm from Vietnam.