西汉陇西上圭(今甘肃天水西南)人,字翁孙。武帝、昭帝时,率军反击匈奴贵族的攻扰,任后将军。宣帝即位,封为营平侯。后与羌族贵族作战,并在西北屯田。行军时,远斥候,坚营垒,持重爱士卒,先计而后战,为当时名将。