You will need a selenium server , either your own or browserstack / SauceLabs . If you plan to do it yourself, in a word, you will need to configure the selenium grid and register the nodes, one of the nodes should be a Windows machine, where you will run tests against IE.
Personally, I have successfully run protractor e2e tests in several browsers, including different versions of Chrome , Firefox and IE on the browser. Here's the configuration I'm using (it also includes jasmine junit reporter , this one is for CI):
'use strict'; var browserstackUser = 'user'; var browserstackKey = 'key'; exports.config = { multiCapabilities: [ { 'browserstack.user': browserstackUser, 'browserstack.key': browserstackKey, 'browserstack.local': 'true', 'browserstack.debug': 'true', 'browserName': 'Chrome', 'os': 'Windows', 'os_version': '8', 'resolution': '1024x768', specs: [ '*.spec.js' ], exclude: [ 'footer.disabledCookies.spec.js' ] }, { 'browserstack.user': browserstackUser, 'browserstack.key': browserstackKey, 'browserstack.local': 'true', 'browserstack.debug': 'true', 'browser': 'Internet Explorer', 'browser_version': '8.0', 'os': 'Windows', 'os_version': '7', 'resolution': '1024x768', specs: [ '*.spec.js' ] }, { 'browserstack.user': browserstackUser, 'browserstack.key': browserstackKey, 'browserstack.local': 'true', 'browserstack.debug': 'true', 'browserName': 'Internet Explorer', 'browser_version': '9.0', 'os': 'Windows', 'os_version': '7', 'resolution': '1024x768', specs: [ '*.spec.js' ], exclude: [ 'footer.disabledCookies.spec.js' ] } ], // Browserstack selenium server address seleniumAddress: 'http://hub.browserstack.com/wd/hub', framework: 'jasmine', allScriptsTimeout: 300000, baseUrl: 'http://localhost:9001', onPrepare: function () { require('jasmine-reporters'); var capsPromise = browser.getCapabilities(); capsPromise.then(function (caps) { var browserName = caps.caps_.browserName.toUpperCase(); var browserVersion = caps.caps_.version; var prePendStr = browserName + "-" + browserVersion + "-"; jasmine.getEnv().addReporter(new jasmine.JUnitXmlReporter("test-results", true, true, prePendStr)); }); }, jasmineNodeOpts: { showColors: true, isVerbose: true, includeStackTrace: true, defaultTimeoutInterval: 3600000 } };