A source told ESPN.com the deal was worth $12 million in total, paying $7 million next season and $5 million in 2017-18.
Plekanec, who will earn $5 million this season, was slated to be an unrestricted free agent July 1. He turns 33 on Oct. 31.
The contract does not include a no-trade or no-movement clause, the source said.
Plekanec has scored four goals in five games as the Canadiens have started the season 5-0-0 for the first time in franchise history.