mirror of
https://github.com/openvswitch/ovs
synced 2025-10-25 15:07:05 +00:00
Traditionally, Open vSwitch has used a variant of 802.1ag "CFM" for interface liveness detection. This has served us well until now, but has several serious drawbacks which have steadily become more inconvenient. First, the 802.1ag standard does not implement several useful features forcing us to (optionally) break compatibility. Second, 802.1.ag is not particularly popular outside of carrier grade networking equipment. Third, 802.1ag is simply quite awkward. In an effort to solve the aforementioned problems, this patch implements BFD which is ubiquitous, well designed, straight forward, and implements required features in a standard way. The initial cut of the protocol focuses on getting the basics of the specification correct, leaving performance optimizations, and advanced features as future work. The protocol should be considered experimental pending future testing. Signed-off-by: Ethan Jackson <ethan@nicira.com>
47 lines
1.4 KiB
C
47 lines
1.4 KiB
C
/* Copyright (c) 2012 Nicira, Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at:
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License. */
|
|
|
|
#ifndef BFD_H
|
|
#define BFD_H 1
|
|
|
|
#define BFD_PACKET_LEN 24
|
|
#define BFD_DEST_PORT 3784
|
|
|
|
#include <stdbool.h>
|
|
#include <inttypes.h>
|
|
|
|
struct bfd;
|
|
struct flow;
|
|
struct ofpbuf;
|
|
struct smap;
|
|
|
|
void bfd_wait(const struct bfd *);
|
|
void bfd_run(struct bfd *);
|
|
|
|
bool bfd_should_send_packet(const struct bfd *);
|
|
void bfd_put_packet(struct bfd *bfd, struct ofpbuf *packet,
|
|
uint8_t eth_src[6]);
|
|
|
|
bool bfd_should_process_flow(const struct flow *);
|
|
void bfd_process_packet(struct bfd *, const struct flow *,
|
|
const struct ofpbuf *);
|
|
|
|
struct bfd *bfd_configure(struct bfd *, const char *name,
|
|
const struct smap *smap);
|
|
|
|
bool bfd_forwarding(const struct bfd *);
|
|
void bfd_get_status(const struct bfd *, struct smap *);
|
|
|
|
#endif /* bfd.h */
|