ODL源码中的BGP状态机有问题,一些场景下会导致会话状态挂死,这里按照ODL划分的4个状态,给出一个状态机驱动表:
代码语言:txt复制0 IDEL
1 OPEN_SEND
2 OPEN_CONFIRM
3 FINISH
EVENT | 0 | 1 | 2 | 3 |
-------------|-----|-----|-----|-----|
TCP_UP | 1 A | 1 - | 2 - | 3 - |
RECV_OPEN | 2 B | 2 C | 2 - | 3 - |
RECV_KA | 0 - | 1 - | 3 - | 3 - |
OPEN_TIMEOUT | 0 - | 0 D | 2 - | 3 - |
KA_TIMEOUT | 0 - | 1 - | 0 D | 0 D |
TCP_DOWN | 0 - | 0 E | 0 E | 0 E |
RECV_NOTIFY | 0 - | 0 E | 0 E | 0 E |
ACT_A: 发送open消息,启动等待open定时器
ACT_B: 发送open消息,启动等待keepalive定时器
ACT_C: 发送keepalive消息,启动等待keep alive定时器
ACT_D: 发送notify,关闭会话
ACT_E: 关闭会话