func (a *sidAllocator) Restore(requestID, sid string) {
	parsedSID := net.ParseIP(sid)
	intSID := binary.BigEndian.Uint16(parsedSID[len(parsedSID)-2:])
	a.lastSID[requestID] = uint32(intSID)
}
Restore value of last SID based on connections we have at the moment
package sid
import (
	"encoding/binary"
	"fmt"
	"net"
	"sync"
	"github.com/sirupsen/logrus"
)
const SIDPrefix = "fd25::"
type Allocator interface {
	SID(requestID string) string
	Restore(hardwareAddr, sid string)
}
type sidAllocator struct {
	lastSID map[string]uint32
	sync.Mutex
}
func NewSIDAllocator() Allocator {
	return &sidAllocator{
		lastSID: make(map[string]uint32),
	}
}
func (a *sidAllocator) SID(requestID string) string {
	lastSID := a.lastSID[requestID] + 1
	if lastSID < 2 {
		lastSID = 2
	}
	a.lastSID[requestID] = lastSID
	return fmt.Sprintf("%s:%x", transformRequestID(requestID), lastSID)
}