낙양 사람으로 수나라가 건국되자 회주총관이 되었고 이후 위위소경을 지내다가 601년에 자주자사에 임명되어 대뢰진을 공격한 요족들을 설득해 10여만 명을 항복시켰으며, 그 공으로 비단 2천필을 받고 겨울 11월 12일에는 수주총관이 되었다.
612년에 형부상서를 지내면서 고구려 원정에 참가했다가 수양제의 명령으로 유사룡과 함께 요하 동쪽의 백성들을 위로하고 10년의 부세를 면제하고 군현을 설치해 관할하게 했으며, 검교우어위호분랑장이 되어 증지도에서 군사를 이끌고 출발해 다른 장수들과 압록수 서쪽에 합류했다.
살수대첩에서 다른 장수들이 모두 크게 패했을 때 홀로 온전해 금자광록대부에 임명되었으며, 613년에는 형부상서와 경조내사를 겸하여 서경을 지켰다. 고구려 원정을 틈타서 양현감이 반란을 일으키자 군사 4만을 인솔해 동도를 구원했고 양현감을 진압에 힘쓴 공으로 상을 받았으며, 617년에는 각지에서 반란이 일어나면서 이연이 장안으로 향한다는 것을 알고 걱정하고 두려워하다가 병이 나서 정사에 참여하지 않다가 이후 사망했다.