beba-eu / beba-switch

BEBA Software Switch implementation
http://www.beba-project.eu
15 stars 12 forks source link

Problem in connecting to OpenDaylight #27

Open antonmatsiuk opened 7 years ago

antonmatsiuk commented 7 years ago

I am trying to connect the beba-switch to one of the recent releases of ODL (Boron SR-1) and I get two issues there. The first one and a quick fix for it I just described here: https://github.com/CPqD/ofsoftswitch13/issues/237 The second one is caused by improper checking of generation_id in OFPT_ROLE_REQUEST/REPLY messages hin th following function: udatapath/datapath.c static ofl_err dp_check_generation_id(struct datapath *dp, uint64_t new_gen_id)

OpenDaylight sends multiple OFPT_ROLE_REQUEST messages with GEneration ID = 0 which causes (OFPET_ROLE_REQUEST_FAILED, OFPRRFC_STALE) error in dp_check_generation_id() function. To fix this one needs to modify the dp_check_generation_id(struct datapath *dp, uint64_t new_gen_id) according to this file https://github.com/CPqD/ofsoftswitch13/blob/master/udatapath/datapath.c:

static ofl_err dp_check_generation_id(struct datapath *dp, uint64_t new_gen_id){ if(dp->generation_id >= 0 && ((int64_t)(new_gen_id - dp->generation_id) < 0) ){
return ofl_error(OFPET_ROLE_REQUEST_FAILED, OFPRRFC_STALE); } else dp->generation_id = new_gen_id; return 0; }

ccascone commented 7 years ago

Hi @antonmatsiuk, officially we do not support ODL in the scope of the BEBA project, however, it seems that for both issues you already have a solution. I suggest you create a pull request with both fixes. We'd be happy to merge it.

antonmatsiuk commented 7 years ago

The pull request is here: fix OpenDaylight handshake #53