[ovs-dev] [PATCH ovn] controller: bfd: improve debugging logs

Mark Michelson mmichels at redhat.com
Mon May 17 19:57:49 UTC 2021


On 5/10/21 5:05 PM, Mark Michelson wrote:
> Thanks Lorenzo, it looks good to me.
> 
> Acked-by: Mark Michelson <mmichels at redhat.com>
> 

I pushed this to master.

> On 4/24/21 8:46 AM, Lorenzo Bianconi wrote:
>> Add new debug logs in pinctrl_handle_bfd_msg flow path useful for
>> debugging
>>
>> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
>> ---
>>   controller/pinctrl.c | 28 +++++++++++++++++++++++++---
>>   1 file changed, 25 insertions(+), 3 deletions(-)
>>
>> diff --git a/controller/pinctrl.c b/controller/pinctrl.c
>> index 523a45b9a..bef9b23fa 100644
>> --- a/controller/pinctrl.c
>> +++ b/controller/pinctrl.c
>> @@ -6819,54 +6819,71 @@ next:
>>   static bool
>>   pinctrl_check_bfd_msg(const struct flow *ip_flow, struct dp_packet 
>> *pkt_in)
>>   {
>> +    static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(30, 30);
>>       if (ip_flow->dl_type != htons(ETH_TYPE_IP) &&
>>           ip_flow->dl_type != htons(ETH_TYPE_IPV6)) {
>> +        VLOG_DBG_RL(&rl, "BFD action on non-IP packet (%"PRIx16")",
>> +                    ntohs(ip_flow->dl_type));
>>           return false;
>>       }
>>       if (ip_flow->nw_proto != IPPROTO_UDP) {
>> +        VLOG_DBG_RL(&rl, "BFD action on non-UDP packet %02x",
>> +                    ip_flow->nw_proto);
>>           return false;
>>       }
>>       struct udp_header *udp_hdr = dp_packet_l4(pkt_in);
>>       if (udp_hdr->udp_dst != htons(BFD_DEST_PORT)) {
>> +        VLOG_DBG_RL(&rl, "BFD action on wrong UDP dst port (%"PRIx16")",
>> +                    ntohs(udp_hdr->udp_dst));
>>           return false;
>>       }
>>       const struct bfd_msg *msg = dp_packet_get_udp_payload(pkt_in);
>>       uint8_t version = msg->vers_diag >> 5;
>>       if (version != BFD_VERSION) {
>> +        VLOG_DBG_RL(&rl, "BFD action: unsupported version %d", version);
>>           return false;
>>       }
>>       enum bfd_flags flags = msg->flags & BFD_FLAGS_MASK;
>>       if (flags & BFD_FLAG_AUTH) {
>>           /* AUTH not supported yet */
>> +        VLOG_DBG_RL(&rl, "BFD action: AUTH not supported yet");
>>           return false;
>>       }
>>       if (msg->length < BFD_PACKET_LEN) {
>> +        VLOG_DBG_RL(&rl, "BFD action: packet is too short %d", 
>> msg->length);
>>           return false;
>>       }
>>       if (!msg->mult) {
>> +        VLOG_DBG_RL(&rl, "BFD action: multiplier not set");
>>           return false;
>>       }
>>       if (flags & BFD_FLAG_MULTIPOINT) {
>> +        VLOG_DBG_RL(&rl, "BFD action: MULTIPOINT not supported yet");
>>           return false;
>>       }
>>       if (!msg->my_disc) {
>> +        VLOG_DBG_RL(&rl, "BFD action: my_disc not set");
>>           return false;
>>       }
>>       if ((flags & BFD_FLAG_FINAL) && (flags & BFD_FLAG_POLL)) {
>> +        VLOG_DBG_RL(&rl, "BFD action: wrong flags combination %08x", 
>> flags);
>>           return false;
>>       }
>>       enum bfd_state peer_state = msg->flags >> 6;
>>       if (peer_state >= BFD_STATE_INIT && !msg->your_disc) {
>> +        VLOG_DBG_RL(&rl,
>> +                    "BFD action: remote state is %s and your_disc is 
>> not set",
>> +                    bfd_get_status(peer_state));
>>           return false;
>>       }
>> @@ -6879,8 +6896,6 @@ pinctrl_handle_bfd_msg(struct rconn *swconn, 
>> const struct flow *ip_flow,
>>       OVS_REQUIRES(pinctrl_mutex)
>>   {
>>       if (!pinctrl_check_bfd_msg(ip_flow, pkt_in)) {
>> -        static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 5);
>> -        VLOG_WARN_RL(&rl, "BFD packet discarded");
>>           return;
>>       }
>> @@ -6894,9 +6909,9 @@ pinctrl_handle_bfd_msg(struct rconn *swconn, 
>> const struct flow *ip_flow,
>>       const struct bfd_msg *msg = dp_packet_get_udp_payload(pkt_in);
>>       struct bfd_entry *entry =
>>           pinctrl_find_bfd_monitor_entry_by_disc(ip_src, msg->your_disc);
>> -    free(ip_src);
>>       if (!entry) {
>> +        free(ip_src);
>>           return;
>>       }
>> @@ -6908,6 +6923,13 @@ pinctrl_handle_bfd_msg(struct rconn *swconn, 
>> const struct flow *ip_flow,
>>                                                  entry->local_min_rx);
>>       enum bfd_state peer_state = msg->flags >> 6;
>> +
>> +    static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(30, 30);
>> +    VLOG_DBG_RL(&rl, "rx BFD packets from %s, remote state %s, local 
>> state %s",
>> +                ip_src, bfd_get_status(peer_state),
>> +                bfd_get_status(entry->state));
>> +    free(ip_src);
>> +
>>       if (peer_state == BFD_STATE_ADMIN_DOWN &&
>>           entry->state >= BFD_STATE_INIT) {
>>           entry->state = BFD_STATE_DOWN;
>>
> 



More information about the dev mailing list