diff --git a/protocols/bgp/server/fsm.go b/protocols/bgp/server/fsm.go
index 1ac3411296377e8cd767ca4559efc786fa4e8747..0a3a96bb6ac9d3a8d642aa76a03ec6ab41567507 100644
--- a/protocols/bgp/server/fsm.go
+++ b/protocols/bgp/server/fsm.go
@@ -125,7 +125,7 @@ func NewFSM(peer *Peer, c config.Peer, rib *locRIB.LocRIB) *FSM {
 		holdTimer:          time.NewTimer(0),
 
 		keepaliveTime:  time.Duration(c.KeepAlive),
-		keepaliveTimer: nil,
+		keepaliveTimer: time.NewTicker(time.Duration(c.KeepAlive)),
 
 		routerID: c.RouterID,
 		remote:   c.PeerAddress,
@@ -461,7 +461,7 @@ func (fsm *FSM) openSent() int {
 					if fsm.keepaliveTimer != nil {
 						fsm.keepaliveTimer.Stop()
 					}
-					fsm.keepaliveTimer = time.NewTicker(fsm.keepaliveTime)
+					fsm.keepaliveTimer = time.NewTicker(fsm.keepaliveTime * time.Second)
 				}
 
 				fsm.processOpenOptions(openMsg.OptParams)