1
0
Fork 0
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:
Madhu Venugopal 2016-07-21 01:43:18 -07:00 committed by GitHub
commit 46caa4c813
2 changed files with 18 additions and 4 deletions

View file

@ -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
}

View file

@ -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
} }