mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Merge pull request #1339 from aboch/sec
Adjust container's veth MTU when encryption is on
This commit is contained in:
commit
46caa4c813
2 changed files with 18 additions and 4 deletions
|
@ -21,6 +21,7 @@ import (
|
||||||
const (
|
const (
|
||||||
mark = uint32(0xD0C4E3)
|
mark = uint32(0xD0C4E3)
|
||||||
timeout = 30
|
timeout = 30
|
||||||
|
pktExpansion = 26 // SPI(4) + SeqN(4) + IV(8) + PadLength(1) + NextHeader(1) + ICV(8)
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -570,3 +571,14 @@ func updateNodeKey(lIP, rIP net.IP, idxs []*spi, curKeys []*key, newIdx, priIdx,
|
||||||
|
|
||||||
return spis
|
return spis
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (n *network) maxMTU() int {
|
||||||
|
mtu := vxlanVethMTU
|
||||||
|
if n.secure {
|
||||||
|
// In case of encryption account for the
|
||||||
|
// esp packet espansion and padding
|
||||||
|
mtu -= pktExpansion
|
||||||
|
mtu -= (mtu % 4)
|
||||||
|
}
|
||||||
|
return mtu
|
||||||
|
}
|
||||||
|
|
|
@ -75,11 +75,13 @@ func (d *driver) Join(nid, eid string, sboxKey string, jinfo driverapi.JoinInfo,
|
||||||
// Set the container interface and its peer MTU to 1450 to allow
|
// Set the container interface and its peer MTU to 1450 to allow
|
||||||
// for 50 bytes vxlan encap (inner eth header(14) + outer IP(20) +
|
// for 50 bytes vxlan encap (inner eth header(14) + outer IP(20) +
|
||||||
// outer UDP(8) + vxlan header(8))
|
// outer UDP(8) + vxlan header(8))
|
||||||
|
mtu := n.maxMTU()
|
||||||
|
|
||||||
veth, err := nlh.LinkByName(overlayIfName)
|
veth, err := nlh.LinkByName(overlayIfName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("cound not find link by name %s: %v", overlayIfName, err)
|
return fmt.Errorf("cound not find link by name %s: %v", overlayIfName, err)
|
||||||
}
|
}
|
||||||
err = nlh.LinkSetMTU(veth, vxlanVethMTU)
|
err = nlh.LinkSetMTU(veth, mtu)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -93,7 +95,7 @@ func (d *driver) Join(nid, eid string, sboxKey string, jinfo driverapi.JoinInfo,
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("could not find link by name %s: %v", containerIfName, err)
|
return fmt.Errorf("could not find link by name %s: %v", containerIfName, err)
|
||||||
}
|
}
|
||||||
err = nlh.LinkSetMTU(veth, vxlanVethMTU)
|
err = nlh.LinkSetMTU(veth, mtu)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue