cn-uofbasel / ccn-lite

CCN-lite, a lightweight implementation of the CCNx protocol and its variations
ISC License
74 stars 63 forks source link

CCNx and NDN management #158

Open mfrey opened 6 years ago

mfrey commented 6 years ago

Hi,

as far as I understood CCN-lite supports CCNx management operations (enabled via USE_MGMT flag). Currently, I'm trying to understand how forwarding in CCN-lite works and found in the ccnl_fwd_handleInterest function the following

279 #ifdef USE_SUITE_NDNTLV
280     if ((*pkt)->suite == CCNL_SUITE_NDNTLV && (*pkt)->pfx->compcnt == 4 &&
281         !memcmp((*pkt)->pfx->comp[0], "ccnx", 4)) {
282         DEBUGMSG_CFWD(INFO, "  found a mgmt message\n");
283 #ifdef USE_MGMT
284         ccnl_mgmt(relay, (*pkt)->buf, (*pkt)->pfx, from); // use return value?
285 #endif
286         return 0;
287     }
288 #endif

Basically, this allows to have CCNx management operations handled in NDN? Unfortunately, the CCNx specification is not available anymore, but I can imagine that both (CCNx and NDN management) support face creation, deletion, etc.

Is this intended behaviour or plain and simply wrong?

TIA Michael

mfrey commented 6 years ago

Hmm, somebody pointed out that ccnx binary protocol is used for communication between ccn-lite-relay and the ccn-lite-ctrl util. I skimmed through ccnl_mgmt and ccnl_mgmt_handle which seems to confirm that. Nevertheless, I find it still kind of confusing. Is there some documentation about the internals?

blacksheeep commented 6 years ago

Yes, your second statement is correct. CCN-lite uses CCNb for communication with the ccn-lite-ctrl util.

I think somebody started porting this to NDNTLV but when I look in the code, this seems to be unfinished and broken. This is definitely an issue, the broken code should be removed.

I think there is no documentation, how the MGMT interface works internal, but I think I can answer all questions about that.

blacksheeep commented 6 years ago

Is there any advantage of not using CCNb for MGMT?

I mean, the packet format is outdated, but for MGMT operations, which are not forwarded into the network, I see little advantage of rewriting the code.

blacksheeep commented 6 years ago

See note in the wiki: https://github.com/cn-uofbasel/ccn-lite/wiki/TODO