北魏太武皇帝延和年间，为了防御柔然南侵，在首都平城（今山西省大同市）北侧的长城沿线（今内蒙古南部至河北省北部一线）设置了许多镇，其中最为重要的是怀朔镇（今内蒙古固阳县西南）、武川镇（今内蒙古武川县西）、抚冥镇（今内蒙古四子王旗东南）、柔玄镇（今内蒙古兴和县西北）、沃野镇（今内蒙古鄂尔多斯右翼旗）、怀荒镇（今河北省张北县），合称六镇，又称北镇。由于北魏与柔然关系紧张，双方不时发生军事冲突。北魏朝廷将部分被编入军户的鲜卑贵族迁至六镇，令之为镇民兼军士，「配以高门子弟，以死防遏」，并设有镇将总揽当地军政。彼时六