Monday, September 8, 2008

Continuation of the project .....

Well it has been a long time since I update this blog.

I was able to complete about 50% of the ICE implementation.
After the candidate gathering phase, The following phases were completed
  • Computing Foundations for the gathered candidates
  • Calculating the priority for the gathered candidates
  • Eliminating redundant candidates
  • Forming CHECK-LIST
I still have to complete the connectivity check and Ice-concluding parts

During the next several days, I'll post the implementation details of the above four parts
Eventhough GSoc time is officially over, I'll work with my mentor Sebastien, to have a full ICE
implementation

Tuesday, July 8, 2008

Completed the CandidateGathering state

I implemented the CandidateGathering state of the IceAgent class
I introduced a separate method in IceAgent class for that
But it should only be called after MediaStreams and their associated Components are created
I provided methods for that as well

Here is a brief summary of how I implemented the CandidateGathering phase

First retrieve all the network interfaces in the host machine
using NetworkInterface.getNetworkInterfaces() method
For all of these interfaces, I check the working interfaces
I also ignore the loopback interface

For the retrieved interfaces, I collect all the IP addresses

Then for each media-stream and for each component in that media-stream
I create a Host type Candidates using all the IP addresses
Then I use the same IP addresses and use the StunClient to get the server-reflexive addresses
Then I create SERVER-REFLEXIVE type Candidates from these mapped addresses

Finally I add all the created candidate for a particular media-stream to a List

There is a single enhancement needed to be done in the implementation of this phase. For the moment I employ a different StunClient just for this task.
I'm in half way of developing a StunClient which uses a single StunStack to send both blocking and non-blocking Stun messages depending on the mode
(I completed the non-blocking part, will complete the rest quickly)

In my next post, I'll talk about the next step of my implementation

Sunday, June 29, 2008

Extending STUN's attributes

Well, it has been a long time since I updated this....

It took me about a week to fully understand the internal workings of stun4j
Then I wrote some simple StunServer and StunClient to test the package and get myself familiar with it.

I also spent about couple of weeks on reading the ICE specification (more than hundred pages technical spec...) and some tutorials on SIP and SDP to have an idea about how to develop my solution.

Then I created the basic design for the ICE implementation. I modeled the ICE state machine and designed the ICE state classes to represent the ICE state machine

I started working on extending the attributes in stun4j to support ICE processing. This included adding four new attribute classes for PRIORITY, USE-CANDIDATE, ICE-CONTROLLING and ICE-CONTROLLED attributes

I'm a bit behind the schedule at the moment with my development. Because it took me a bit more time to fully understand the ICE spec. But since I have grip on the concepts now, I think I can speed up my development and get my schedule back on track

Tuesday, May 6, 2008

Setting up of the testing environment

Well, I thought of setting up the testing environment before coding is a good idea so that when the coding starts, I can directly concentrate more on coding rather than setting up the environment.

What I wanted was a network environment with two NATs. So I installed a virtualisation software and created 4 virtual machines.
I configured 2 of these machines as NATs by using the iptables program (Linux kernel's internal packet filtering program). And I connect the two machines to these two separately so that I have two private networks.
Well it all went fine, I found a lot of information from the internet. But later I found that I cannot run multiple Virtual machines in my PC due to hardware constraints. So now I have only one virtual private network connected to my PC using a NAT. (I think that's enough for now)

Anyway I'm going to have the earlier mentioned network setup in my University's lab.

I talked with Emil, my mentor for the project, and he said concentrate more on the code these days. So now I started studying the stun4j project's source. I think it'll take some time for me to understand it fully. May be another 3 days. I hope I can start on ICE next week

Saturday, April 26, 2008

I'm ready !!!

Well.... I'm really happy that my proposal got accepted. Now its time for me to start working on the project :) and more importantly have constant discussions with my mentors.

My project is to implement an
Interactive Connectivity Establishment protocol and enhance the NAT traversal of SIP communicator. I think it will be a challenging experience for me. Currently I'm looking for a suitable virtual machine software that I can use to set up my testing environment.

More news will follow shortly .....